mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-27 16:26:31 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			205 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			205 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| const settings = (function() {
 | |
|     const dialogEl = $("#settings-dialog");
 | |
|     const tabsEl = $("#settings-tabs");
 | |
| 
 | |
|     const settingModules = [];
 | |
| 
 | |
|     function addModule(module) {
 | |
|         settingModules.push(module);
 | |
|     }
 | |
| 
 | |
|     async function showDialog() {
 | |
|         glob.activeDialog = dialogEl;
 | |
| 
 | |
|         const settings = await server.get('settings');
 | |
| 
 | |
|         dialogEl.dialog({
 | |
|             modal: true,
 | |
|             width: 900
 | |
|         });
 | |
| 
 | |
|         tabsEl.tabs();
 | |
| 
 | |
|         for (const module of settingModules) {
 | |
|             if (module.settingsLoaded) {
 | |
|                 module.settingsLoaded(settings);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     async function saveSettings(settingName, settingValue) {
 | |
|         await server.post('settings', {
 | |
|             name: settingName,
 | |
|             value: settingValue
 | |
|         });
 | |
| 
 | |
|         showMessage("Settings change have been saved.");
 | |
|     }
 | |
| 
 | |
|     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) {
 | |
|     }
 | |
| 
 | |
|     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;
 | |
|         }
 | |
| 
 | |
|         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
 | |
|                 protected_session.resetProtectedSession();
 | |
|             }
 | |
|             else {
 | |
|                 showError(result.message);
 | |
|             }
 | |
|         });
 | |
| 
 | |
|         return false;
 | |
|     });
 | |
| 
 | |
|     return {
 | |
|         settingsLoaded
 | |
|     };
 | |
| })());
 | |
| 
 | |
| settings.addModule((function() {
 | |
|     const formEl = $("#protected-session-timeout-form");
 | |
|     const protectedSessionTimeoutEl = $("#protected-session-timeout-in-seconds");
 | |
|     const settingName = 'protected_session_timeout';
 | |
| 
 | |
|     function settingsLoaded(settings) {
 | |
|         protectedSessionTimeoutEl.val(settings[settingName]);
 | |
|     }
 | |
| 
 | |
|     formEl.submit(() => {
 | |
|         const protectedSessionTimeout = protectedSessionTimeoutEl.val();
 | |
| 
 | |
|         settings.saveSettings(settingName, protectedSessionTimeout).then(() => {
 | |
|             protected_session.setProtectedSessionTimeout(protectedSessionTimeout);
 | |
|         });
 | |
| 
 | |
|         return false;
 | |
|     });
 | |
| 
 | |
|     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;
 | |
|     });
 | |
| 
 | |
|     return {
 | |
|         settingsLoaded
 | |
|     };
 | |
| })());
 | |
| 
 | |
| settings.addModule((async function () {
 | |
|     const appVersionEl = $("#app-version");
 | |
|     const dbVersionEl = $("#db-version");
 | |
|     const buildDateEl = $("#build-date");
 | |
|     const buildRevisionEl = $("#build-revision");
 | |
| 
 | |
|     const appInfo = await server.get('app-info');
 | |
| 
 | |
|     appVersionEl.html(appInfo.app_version);
 | |
|     dbVersionEl.html(appInfo.db_version);
 | |
|     buildDateEl.html(appInfo.build_date);
 | |
|     buildRevisionEl.html(appInfo.build_revision);
 | |
|     buildRevisionEl.attr('href', 'https://github.com/zadam/trilium/commit/' + appInfo.build_revision);
 | |
| 
 | |
|     return {};
 | |
| })());
 | |
| 
 | |
| settings.addModule((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');
 | |
| 
 | |
|         showMessage("Full sync triggered");
 | |
|     });
 | |
| 
 | |
|     fillSyncRowsButton.click(async () => {
 | |
|         await server.post('sync/fill-sync-rows');
 | |
| 
 | |
|         showMessage("Sync rows filled successfully");
 | |
|     });
 | |
| 
 | |
| 
 | |
|     anonymizeButton.click(async () => {
 | |
|         await server.post('anonymization/anonymize');
 | |
| 
 | |
|         showMessage("Created anonymized database");
 | |
|     });
 | |
| 
 | |
|     cleanupSoftDeletedButton.click(async () => {
 | |
|         if (confirm("Do you really want to clean up soft-deleted items?")) {
 | |
|             await server.post('cleanup/cleanup-soft-deleted-items');
 | |
| 
 | |
|             showMessage("Soft deleted items have been cleaned up");
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     cleanupUnusedImagesButton.click(async () => {
 | |
|         if (confirm("Do you really want to clean up unused images?")) {
 | |
|             await server.post('cleanup/cleanup-unused-images');
 | |
| 
 | |
|             showMessage("Unused images have been cleaned up");
 | |
|         }
 | |
|     });
 | |
| 
 | |
|     vacuumDatabaseButton.click(async () => {
 | |
|         await server.post('cleanup/vacuum-database');
 | |
| 
 | |
|         showMessage("Database has been vacuumed");
 | |
|     });
 | |
| 
 | |
|     return {};
 | |
| })()); |