42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
|
const UserProps = require('./user_property');
|
||
|
|
||
|
module.exports = class ActivityPubSettings {
|
||
|
constructor(obj) {
|
||
|
this.enabled = true; // :TODO: fetch from +op config default
|
||
|
this.manuallyApproveFollowers = false;
|
||
|
this.hideSocialGraph = false; // followers, following
|
||
|
this.showRealName = false;
|
||
|
this.imageUrl = '';
|
||
|
this.iconUrl = '';
|
||
|
|
||
|
if (obj) {
|
||
|
Object.assign(this, obj);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static fromUser(user) {
|
||
|
if (!user.activityPubSettings) {
|
||
|
const settingsProp = user.getProperty(UserProps.ActivityPubSettings);
|
||
|
let settings;
|
||
|
try {
|
||
|
const parsed = JSON.parse(settingsProp);
|
||
|
settings = new ActivityPubSettings(parsed);
|
||
|
} catch (e) {
|
||
|
settings = new ActivityPubSettings();
|
||
|
}
|
||
|
|
||
|
user.activityPubSettings = settings;
|
||
|
}
|
||
|
|
||
|
return user.activityPubSettings;
|
||
|
}
|
||
|
|
||
|
persistToUserProperties(user, cb = null) {
|
||
|
return user.persistProperty(
|
||
|
UserProps.ActivityPubSettings,
|
||
|
JSON.stringify(this),
|
||
|
cb
|
||
|
);
|
||
|
}
|
||
|
};
|