mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-12-24 18:08:50 +00:00
Can update privacy settings
This commit is contained in:
parent
bb81512f2c
commit
73fb50f8ca
@ -194,6 +194,25 @@ const SettingsInterface = {
|
||||
*/
|
||||
getDataConservationPolicy: async function() {
|
||||
return await api("settings/get_data_conservation_policy", null, true);
|
||||
},
|
||||
|
||||
/**
|
||||
* Update data conservation password
|
||||
*
|
||||
* @param {DataConservationPolicy} policy New policy
|
||||
* @param {String} password User password
|
||||
*/
|
||||
setDataConservationPolicy: async function(policy, password) {
|
||||
let data = {
|
||||
password: password
|
||||
}
|
||||
|
||||
for (let key in policy) {
|
||||
if (policy.hasOwnProperty(key))
|
||||
data[key] = policy[key]
|
||||
}
|
||||
|
||||
await api("settings/set_data_conservation_policy", data, true)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -96,7 +96,7 @@ const SettingsPrivacySection = {
|
||||
|
||||
// Load server policy
|
||||
await ServerConfig.ensureLoaded();
|
||||
const serverPolicy = ServerConfig.conf;
|
||||
const serverPolicy = ServerConfig.conf.data_conservation_policy;
|
||||
|
||||
// Use Vue
|
||||
const oneDay = 60 * 60 * 24;
|
||||
@ -115,7 +115,7 @@ const SettingsPrivacySection = {
|
||||
|
||||
let findOptionIndex = (value) => {
|
||||
if (!value) return lifetimeOptions[0].value;
|
||||
return [...lifetimeOptions].reverse().find(v => v.value <= value).value
|
||||
return lifetimeOptions.find(v => v.value >= value).value
|
||||
}
|
||||
|
||||
const DataConservationPolicyVueApp = {
|
||||
@ -127,41 +127,72 @@ const SettingsPrivacySection = {
|
||||
title: tr("Automatically delete unread notification after"),
|
||||
key: "notification_lifetime",
|
||||
value: findOptionIndex(settings.notification_lifetime),
|
||||
minVal: serverPolicy.min_notification_lifetime,
|
||||
},
|
||||
|
||||
{
|
||||
title: tr("Automatically delete your comments after"),
|
||||
key: "comments_lifetime",
|
||||
value: findOptionIndex(settings.comments_lifetime)
|
||||
value: findOptionIndex(settings.comments_lifetime),
|
||||
minVal: serverPolicy.min_comments_lifetime,
|
||||
},
|
||||
|
||||
{
|
||||
title: tr("Automatically delete your posts after"),
|
||||
key: "posts_lifetime",
|
||||
value: findOptionIndex(settings.posts_lifetime)
|
||||
value: findOptionIndex(settings.posts_lifetime),
|
||||
minVal: serverPolicy.min_posts_lifetime,
|
||||
},
|
||||
|
||||
{
|
||||
title: tr("Automatically delete your conversation messages after"),
|
||||
key: "conversation_messages_lifetime",
|
||||
value: findOptionIndex(settings.conversation_messages_lifetime)
|
||||
value: findOptionIndex(settings.conversation_messages_lifetime),
|
||||
minVal: serverPolicy.min_conversation_messages_lifetime,
|
||||
},
|
||||
|
||||
{
|
||||
title: tr("Automatically delete your likes after"),
|
||||
key: "likes_lifetime",
|
||||
value: findOptionIndex(settings.likes_lifetime)
|
||||
value: findOptionIndex(settings.likes_lifetime),
|
||||
minVal: serverPolicy.min_likes_lifetime,
|
||||
},
|
||||
|
||||
{
|
||||
title: tr("Automatically delete your account if you have been inactive for"),
|
||||
key: "inactive_account_lifetime",
|
||||
value: findOptionIndex(settings.inactive_account_lifetime)
|
||||
value: findOptionIndex(settings.inactive_account_lifetime),
|
||||
minVal: serverPolicy.min_inactive_account_lifetime,
|
||||
}
|
||||
]
|
||||
],
|
||||
password: "",
|
||||
updating: false,
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
async submitUpdate() {
|
||||
try {
|
||||
if (this.password.length < 3)
|
||||
return notify(tr("Please specify your password !"), "danger")
|
||||
|
||||
let newSettings = {}
|
||||
for (let el of this.settings)
|
||||
newSettings[el.key] = el.value;
|
||||
|
||||
this.updating = true;
|
||||
await SettingsInterface.setDataConservationPolicy(newSettings, this.password)
|
||||
}
|
||||
|
||||
catch (e) {
|
||||
console.error(e)
|
||||
notify(tr("Failed to update data conservation policy!"), "danger");
|
||||
}
|
||||
|
||||
this.updating = false
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
Vue.createApp(DataConservationPolicyVueApp).mount(el);
|
||||
},
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div class="box box-primary box-export-account-data-settings">
|
||||
<div class="box box-primary box-data-conservation-policy">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title">tr("Data conservation policy")</h3>
|
||||
</div>
|
||||
@ -10,18 +10,20 @@
|
||||
<div class="form-group" v-for="setting in settings">
|
||||
<label>{{setting.title}}</label>
|
||||
<select style="width: 100%;" class="form-control select2" v-model="setting.value">
|
||||
<option v-for="opt in options" v-bind:value="opt.value">{{ opt.label }}</option>
|
||||
<option v-for="opt in options.filter(v => !v.value || v.value >= setting.minVal)" v-bind:value="opt.value">{{ opt.label }}</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- Password confirmation -->
|
||||
<div class="form-group">
|
||||
<label>Please type your password to update your policy</label>
|
||||
<label>tr("Please type your password to update your policy")</label>
|
||||
<div class="input-group" style="width: 100%;">
|
||||
<input class="form-control" type="password" placeholder="Your password">
|
||||
<input class="form-control" type="password" placeholder="tr("Your password")" v-model="password">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="btn btn-primary">tr("Update settings")</div>
|
||||
<div style="text-align: center;" v-if="!updating">
|
||||
<input type="button" class="btn btn-primary" @click="submitUpdate()" value="tr("Update settings")">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Loading…
Reference in New Issue
Block a user