mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-22 20:19:21 +00:00
Can update privacy settings
This commit is contained in:
parent
bb81512f2c
commit
73fb50f8ca
@ -194,6 +194,25 @@ const SettingsInterface = {
|
|||||||
*/
|
*/
|
||||||
getDataConservationPolicy: async function() {
|
getDataConservationPolicy: async function() {
|
||||||
return await api("settings/get_data_conservation_policy", null, true);
|
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
|
// Load server policy
|
||||||
await ServerConfig.ensureLoaded();
|
await ServerConfig.ensureLoaded();
|
||||||
const serverPolicy = ServerConfig.conf;
|
const serverPolicy = ServerConfig.conf.data_conservation_policy;
|
||||||
|
|
||||||
// Use Vue
|
// Use Vue
|
||||||
const oneDay = 60 * 60 * 24;
|
const oneDay = 60 * 60 * 24;
|
||||||
@ -115,7 +115,7 @@ const SettingsPrivacySection = {
|
|||||||
|
|
||||||
let findOptionIndex = (value) => {
|
let findOptionIndex = (value) => {
|
||||||
if (!value) return lifetimeOptions[0].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 = {
|
const DataConservationPolicyVueApp = {
|
||||||
@ -127,41 +127,72 @@ const SettingsPrivacySection = {
|
|||||||
title: tr("Automatically delete unread notification after"),
|
title: tr("Automatically delete unread notification after"),
|
||||||
key: "notification_lifetime",
|
key: "notification_lifetime",
|
||||||
value: findOptionIndex(settings.notification_lifetime),
|
value: findOptionIndex(settings.notification_lifetime),
|
||||||
|
minVal: serverPolicy.min_notification_lifetime,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: tr("Automatically delete your comments after"),
|
title: tr("Automatically delete your comments after"),
|
||||||
key: "comments_lifetime",
|
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"),
|
title: tr("Automatically delete your posts after"),
|
||||||
key: "posts_lifetime",
|
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"),
|
title: tr("Automatically delete your conversation messages after"),
|
||||||
key: "conversation_messages_lifetime",
|
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"),
|
title: tr("Automatically delete your likes after"),
|
||||||
key: "likes_lifetime",
|
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"),
|
title: tr("Automatically delete your account if you have been inactive for"),
|
||||||
key: "inactive_account_lifetime",
|
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);
|
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">
|
<div class="box-header">
|
||||||
<h3 class="box-title">tr("Data conservation policy")</h3>
|
<h3 class="box-title">tr("Data conservation policy")</h3>
|
||||||
</div>
|
</div>
|
||||||
@ -10,18 +10,20 @@
|
|||||||
<div class="form-group" v-for="setting in settings">
|
<div class="form-group" v-for="setting in settings">
|
||||||
<label>{{setting.title}}</label>
|
<label>{{setting.title}}</label>
|
||||||
<select style="width: 100%;" class="form-control select2" v-model="setting.value">
|
<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>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Password confirmation -->
|
<!-- Password confirmation -->
|
||||||
<div class="form-group">
|
<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%;">
|
<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>
|
</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>
|
||||||
</div>
|
</div>
|
Loading…
Reference in New Issue
Block a user