trilium/src/public/javascripts/dialogs/settings.js

207 lines
5.7 KiB
JavaScript
Raw Normal View History

"use strict";
import protectedSessionHolder from '../services/protected_session_holder.js';
import utils from '../services/utils.js';
import server from '../services/server.js';
2018-03-26 09:29:35 +08:00
import infoService from "../services/info.js";
const $dialog = $("#settings-dialog");
const $tabs = $("#settings-tabs");
2017-11-05 02:31:53 +08:00
2018-03-28 10:42:46 +08:00
const tabHandlers = [];
2018-03-28 10:42:46 +08:00
function addTabHandler(handler) {
tabHandlers.push(handler);
}
2017-11-05 05:03:15 +08:00
async function showDialog() {
glob.activeDialog = $dialog;
const settings = await server.get('settings');
2017-09-13 10:23:57 +08:00
$dialog.dialog({
modal: true,
width: 900
});
2017-09-13 10:23:57 +08:00
$tabs.tabs();
2018-03-28 10:42:46 +08:00
for (const handler of tabHandlers) {
if (handler.settingsLoaded) {
handler.settingsLoaded(settings);
2017-11-05 02:31:53 +08:00
}
}
}
2017-11-05 02:31:53 +08:00
async function saveSettings(settingName, settingValue) {
await server.post('settings', {
name: settingName,
value: settingValue
});
2018-03-26 09:29:35 +08:00
infoService.showMessage("Settings change have been saved.");
}
2017-11-05 02:31:53 +08:00
export default {
showDialog,
saveSettings
};
2017-11-05 02:31:53 +08:00
2018-03-28 10:42:46 +08:00
addTabHandler((function() {
const $form = $("#change-password-form");
const $oldPassword = $("#old-password");
const $newPassword1 = $("#new-password1");
const $newPassword2 = $("#new-password2");
2017-11-05 02:31:53 +08:00
function settingsLoaded(settings) {
2017-09-13 10:23:57 +08:00
}
$form.submit(() => {
const oldPassword = $oldPassword.val();
const newPassword1 = $newPassword1.val();
const newPassword2 = $newPassword2.val();
2017-11-05 02:31:53 +08:00
$oldPassword.val('');
$newPassword1.val('');
$newPassword2.val('');
2017-11-05 02:31:53 +08:00
if (newPassword1 !== newPassword2) {
alert("New passwords are not the same.");
return false;
}
server.post('password/change', {
'current_password': oldPassword,
'new_password': newPassword1
}).then(result => {
if (result.success) {
alert("Password has been changed. Trilium will be reloaded after you press OK.");
// password changed so current protected session is invalid and needs to be cleared
protectedSessionHolder.resetProtectedSession();
}
else {
2018-03-26 09:29:35 +08:00
infoService.showError(result.message);
}
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
};
})());
2018-03-28 10:42:46 +08:00
addTabHandler((function() {
const $form = $("#protected-session-timeout-form");
const $protectedSessionTimeout = $("#protected-session-timeout-in-seconds");
const settingName = 'protected_session_timeout';
2017-11-05 02:31:53 +08:00
function settingsLoaded(settings) {
$protectedSessionTimeout.val(settings[settingName]);
2017-11-05 02:31:53 +08:00
}
$form.submit(() => {
const protectedSessionTimeout = $protectedSessionTimeout.val();
settings.saveSettings(settingName, protectedSessionTimeout).then(() => {
protectedSessionHolder.setProtectedSessionTimeout(protectedSessionTimeout);
2017-11-05 02:31:53 +08:00
});
return false;
});
2017-11-05 02:31:53 +08:00
return {
settingsLoaded
};
})());
2018-03-28 10:42:46 +08:00
addTabHandler((function () {
const $form = $("#note-revision-snapshot-time-interval-form");
const $timeInterval = $("#note-revision-snapshot-time-interval-in-seconds");
const settingName = 'note_revision_snapshot_time_interval';
2017-11-05 02:31:53 +08:00
function settingsLoaded(settings) {
$timeInterval.val(settings[settingName]);
2017-11-05 02:31:53 +08:00
}
$form.submit(() => {
settings.saveSettings(settingName, $timeInterval.val());
2017-11-05 02:31:53 +08:00
return false;
});
2017-11-14 12:35:23 +08:00
return {
settingsLoaded
};
})());
2018-03-28 10:42:46 +08:00
addTabHandler((async function () {
const $appVersion = $("#app-version");
const $dbVersion = $("#db-version");
const $buildDate = $("#build-date");
const $buildRevision = $("#build-revision");
2017-11-14 12:35:23 +08:00
const appInfo = await server.get('app-info');
2017-11-14 12:35:23 +08:00
$appVersion.html(appInfo.app_version);
$dbVersion.html(appInfo.db_version);
$buildDate.html(appInfo.build_date);
$buildRevision.html(appInfo.build_revision);
$buildRevision.attr('href', 'https://github.com/zadam/trilium/commit/' + appInfo.build_revision);
2017-11-21 13:25:53 +08:00
return {};
})());
2018-03-28 10:42:46 +08:00
addTabHandler((async function () {
const $forceFullSyncButton = $("#force-full-sync-button");
const $fillSyncRowsButton = $("#fill-sync-rows-button");
const $anonymizeButton = $("#anonymize-button");
const $cleanupSoftDeletedButton = $("#cleanup-soft-deleted-items-button");
const $cleanupUnusedImagesButton = $("#cleanup-unused-images-button");
const $vacuumDatabaseButton = $("#vacuum-database-button");
$forceFullSyncButton.click(async () => {
await server.post('sync/force-full-sync');
2018-03-26 09:29:35 +08:00
infoService.showMessage("Full sync triggered");
});
$fillSyncRowsButton.click(async () => {
await server.post('sync/fill-sync-rows');
2018-03-26 09:29:35 +08:00
infoService.showMessage("Sync rows filled successfully");
});
2017-12-16 13:05:37 +08:00
$anonymizeButton.click(async () => {
2017-12-16 13:05:37 +08:00
await server.post('anonymization/anonymize');
2018-03-26 09:29:35 +08:00
infoService.showMessage("Created anonymized database");
2017-12-16 13:05:37 +08:00
});
$cleanupSoftDeletedButton.click(async () => {
if (confirm("Do you really want to clean up soft-deleted items?")) {
await server.post('cleanup/cleanup-soft-deleted-items');
2018-03-26 09:29:35 +08:00
infoService.showMessage("Soft deleted items have been cleaned up");
}
});
$cleanupUnusedImagesButton.click(async () => {
2018-01-08 03:07:59 +08:00
if (confirm("Do you really want to clean up unused images?")) {
await server.post('cleanup/cleanup-unused-images');
2018-03-26 09:29:35 +08:00
infoService.showMessage("Unused images have been cleaned up");
2018-01-08 03:07:59 +08:00
}
});
$vacuumDatabaseButton.click(async () => {
await server.post('cleanup/vacuum-database');
2018-03-26 09:29:35 +08:00
infoService.showMessage("Database has been vacuumed");
});
2017-11-21 13:25:53 +08:00
return {};
2017-11-05 02:31:53 +08:00
})());