trilium/public/javascripts/dialogs/settings.js

167 lines
4.4 KiB
JavaScript
Raw Normal View History

"use strict";
2017-11-05 02:31:53 +08:00
const settings = (function() {
const dialogEl = $("#settings-dialog");
const tabsEl = $("#settings-tabs");
2017-11-05 02:31:53 +08:00
const settingModules = [];
function addModule(module) {
settingModules.push(module);
}
2017-11-05 02:31:53 +08:00
async function showDialog() {
2017-11-05 05:03:15 +08:00
glob.activeDialog = dialogEl;
2017-11-05 02:31:53 +08:00
const settings = await $.ajax({
url: baseApiUrl + 'settings',
type: 'GET',
2017-11-09 11:33:08 +08:00
error: () => showError("Error getting settings.")
2017-11-05 02:31:53 +08:00
});
2017-11-05 02:31:53 +08:00
dialogEl.dialog({
modal: true,
2017-11-14 12:35:23 +08:00
width: 800
2017-11-05 02:31:53 +08:00
});
2017-09-13 10:23:57 +08:00
2017-11-05 02:31:53 +08:00
tabsEl.tabs();
2017-09-13 10:23:57 +08:00
for (const module of settingModules) {
2017-11-05 02:31:53 +08:00
module.settingsLoaded(settings);
}
}
function saveSettings(settingName, settingValue) {
return $.ajax({
url: baseApiUrl + 'settings',
type: 'POST',
data: JSON.stringify({
name: settingName,
value: settingValue
}),
contentType: "application/json",
success: () => {
2017-11-09 11:33:08 +08:00
showMessage("Settings change have been saved.");
2017-11-05 02:31:53 +08:00
},
error: () => alert("Error occurred during saving settings change.")
});
}
return {
showDialog,
saveSettings,
addModule
};
})();
settings.addModule((function() {
const formEl = $("#change-password-form");
const oldPasswordEl = $("#old-password");
const newPassword1El = $("#new-password1");
const newPassword2El = $("#new-password2");
function settingsLoaded(settings) {
2017-09-13 10:23:57 +08:00
}
2017-11-05 02:31:53 +08:00
formEl.submit(() => {
const oldPassword = oldPasswordEl.val();
const newPassword1 = newPassword1El.val();
const newPassword2 = newPassword2El.val();
oldPasswordEl.val('');
newPassword1El.val('');
newPassword2El.val('');
if (newPassword1 !== newPassword2) {
alert("New passwords are not the same.");
return false;
}
$.ajax({
url: baseApiUrl + 'password/change',
type: 'POST',
data: JSON.stringify({
'current_password': oldPassword,
'new_password': newPassword1
}),
contentType: "application/json",
success: result => {
if (result.success) {
2017-11-07 08:48:02 +08:00
alert("Password has been changed. Trilium will be reloaded after you press OK.");
2017-11-05 02:31:53 +08:00
// encryption password changed so current encryption session is invalid and needs to be cleared
2017-11-15 11:34:33 +08:00
encryption.resetProtectedSession();
2017-11-05 02:31:53 +08:00
}
else {
2017-11-09 11:33:08 +08:00
showError(result.message);
2017-11-05 02:31:53 +08:00
}
},
2017-11-09 11:33:08 +08:00
error: () => showError("Error occurred during changing password.")
2017-11-05 02:31:53 +08:00
});
return false;
2017-09-13 10:23:57 +08:00
});
2017-11-05 02:31:53 +08:00
return {
settingsLoaded
};
})());
settings.addModule((function() {
const formEl = $("#encryption-timeout-form");
const encryptionTimeoutEl = $("#encryption-timeout-in-seconds");
const settingName = 'encryption_session_timeout';
2017-11-05 02:31:53 +08:00
function settingsLoaded(settings) {
encryptionTimeoutEl.val(settings[settingName]);
}
2017-11-05 02:31:53 +08:00
formEl.submit(() => {
const encryptionTimeout = encryptionTimeoutEl.val();
2017-11-05 02:31:53 +08:00
settings.saveSettings(settingName, encryptionTimeout).then(() => {
2017-11-05 06:18:55 +08:00
encryption.setEncryptionSessionTimeout(encryptionTimeout);
2017-11-05 02:31:53 +08:00
});
return false;
});
2017-11-05 02:31:53 +08:00
return {
settingsLoaded
};
})());
settings.addModule((function () {
const formEl = $("#history-snapshot-time-interval-form");
const timeIntervalEl = $("#history-snapshot-time-interval-in-seconds");
const settingName = 'history_snapshot_time_interval';
function settingsLoaded(settings) {
timeIntervalEl.val(settings[settingName]);
}
formEl.submit(() => {
settings.saveSettings(settingName, timeIntervalEl.val());
return false;
});
2017-11-14 12:35:23 +08:00
return {
settingsLoaded
};
})());
settings.addModule((function () {
const buildDateEl = $("#build-date");
const buildRevisionEl = $("#build-revision");
function settingsLoaded(settings) {
buildDateEl.html(settings['buildDate']);
buildRevisionEl.html(settings['buildRevision']);
buildRevisionEl.attr('href', 'https://github.com/zadam/trilium/commit/' + settings['buildRevision']);
}
2017-11-05 02:31:53 +08:00
return {
settingsLoaded
};
})());