| 
									
										
										
										
											2017-11-04 19:38:50 -04:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 13:41:29 -04:00
										 |  |  | import protectedSessionService from '../services/protected_session.js'; | 
					
						
							| 
									
										
										
										
											2018-03-25 13:02:39 -04:00
										 |  |  | import utils from '../services/utils.js'; | 
					
						
							|  |  |  | import server from '../services/server.js'; | 
					
						
							| 
									
										
										
										
											2017-09-12 23:04:17 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | const $dialog = $("#settings-dialog"); | 
					
						
							|  |  |  | const $tabs = $("#settings-tabs"); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | const settingModules = []; | 
					
						
							| 
									
										
										
										
											2017-09-10 23:10:32 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | function addModule(module) { | 
					
						
							|  |  |  |     settingModules.push(module); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-11-04 17:03:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | async function showDialog() { | 
					
						
							|  |  |  |     glob.activeDialog = $dialog; | 
					
						
							| 
									
										
										
										
											2017-09-10 23:10:32 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |     const settings = await server.get('settings'); | 
					
						
							| 
									
										
										
										
											2017-09-12 22:23:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |     $dialog.dialog({ | 
					
						
							|  |  |  |         modal: true, | 
					
						
							|  |  |  |         width: 900 | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-09-12 22:23:57 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |     $tabs.tabs(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     for (const module of settingModules) { | 
					
						
							|  |  |  |         if (module.settingsLoaded) { | 
					
						
							|  |  |  |             module.settingsLoaded(settings); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | async function saveSettings(settingName, settingValue) { | 
					
						
							|  |  |  |     await server.post('settings', { | 
					
						
							|  |  |  |         name: settingName, | 
					
						
							|  |  |  |         value: settingValue | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  |     utils.showMessage("Settings change have been saved."); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | export default { | 
					
						
							|  |  |  |     showDialog, | 
					
						
							| 
									
										
										
										
											2018-03-25 19:49:33 -04:00
										 |  |  |     saveSettings | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | }; | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | addModule((function() { | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     const $form = $("#change-password-form"); | 
					
						
							|  |  |  |     const $oldPassword = $("#old-password"); | 
					
						
							|  |  |  |     const $newPassword1 = $("#new-password1"); | 
					
						
							|  |  |  |     const $newPassword2 = $("#new-password2"); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function settingsLoaded(settings) { | 
					
						
							| 
									
										
										
										
											2017-09-12 22:23:57 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $form.submit(() => { | 
					
						
							|  |  |  |         const oldPassword = $oldPassword.val(); | 
					
						
							|  |  |  |         const newPassword1 = $newPassword1.val(); | 
					
						
							|  |  |  |         const newPassword2 = $newPassword2.val(); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |         $oldPassword.val(''); | 
					
						
							|  |  |  |         $newPassword1.val(''); | 
					
						
							|  |  |  |         $newPassword2.val(''); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (newPassword1 !== newPassword2) { | 
					
						
							|  |  |  |             alert("New passwords are not the same."); | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  |         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
 | 
					
						
							| 
									
										
										
										
											2018-03-25 13:41:29 -04:00
										 |  |  |                 protectedSessionService.resetProtectedSession(); | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  |             } | 
					
						
							|  |  |  |             else { | 
					
						
							| 
									
										
										
										
											2018-03-24 23:37:55 -04:00
										 |  |  |                 utils.showError(result.message); | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  |             } | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return false; | 
					
						
							| 
									
										
										
										
											2017-09-12 22:23:57 -04:00
										 |  |  |     }); | 
					
						
							| 
									
										
										
										
											2017-09-10 23:10:32 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |     return { | 
					
						
							|  |  |  |         settingsLoaded | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | })()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | addModule((function() { | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     const $form = $("#protected-session-timeout-form"); | 
					
						
							|  |  |  |     const $protectedSessionTimeout = $("#protected-session-timeout-in-seconds"); | 
					
						
							| 
									
										
										
										
											2017-11-14 22:44:45 -05:00
										 |  |  |     const settingName = 'protected_session_timeout'; | 
					
						
							| 
									
										
										
										
											2017-09-12 23:04:17 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |     function settingsLoaded(settings) { | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |         $protectedSessionTimeout.val(settings[settingName]); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2017-09-12 23:04:17 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $form.submit(() => { | 
					
						
							|  |  |  |         const protectedSessionTimeout = $protectedSessionTimeout.val(); | 
					
						
							| 
									
										
										
										
											2017-09-23 10:59:36 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-14 22:44:45 -05:00
										 |  |  |         settings.saveSettings(settingName, protectedSessionTimeout).then(() => { | 
					
						
							| 
									
										
										
										
											2018-03-25 13:41:29 -04:00
										 |  |  |             protectedSessionService.setProtectedSessionTimeout(protectedSessionTimeout); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |         }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return false; | 
					
						
							| 
									
										
										
										
											2017-09-12 23:04:17 -04:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |     return { | 
					
						
							|  |  |  |         settingsLoaded | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | })()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | addModule((function () { | 
					
						
							| 
									
										
										
										
											2018-03-25 20:52:38 -04:00
										 |  |  |     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-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function settingsLoaded(settings) { | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |         $timeInterval.val(settings[settingName]); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $form.submit(() => { | 
					
						
							|  |  |  |         settings.saveSettings(settingName, $timeInterval.val()); | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return false; | 
					
						
							| 
									
										
										
										
											2017-09-24 20:50:14 -04:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-13 23:35:23 -05:00
										 |  |  |     return { | 
					
						
							|  |  |  |         settingsLoaded | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | })()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | addModule((async function () { | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     const $appVersion = $("#app-version"); | 
					
						
							|  |  |  |     const $dbVersion = $("#db-version"); | 
					
						
							|  |  |  |     const $buildDate = $("#build-date"); | 
					
						
							|  |  |  |     const $buildRevision = $("#build-revision"); | 
					
						
							| 
									
										
										
										
											2017-11-13 23:35:23 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-28 20:52:38 -05:00
										 |  |  |     const appInfo = await server.get('app-info'); | 
					
						
							| 
									
										
										
										
											2017-11-13 23:35:23 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05: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 00:25:53 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-13 23:03:48 -05:00
										 |  |  |     return {}; | 
					
						
							|  |  |  | })()); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-25 11:09:17 -04:00
										 |  |  | addModule((async function () { | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     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 () => { | 
					
						
							| 
									
										
										
										
											2017-12-13 23:03:48 -05:00
										 |  |  |         await server.post('sync/force-full-sync'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-24 23:37:55 -04:00
										 |  |  |         utils.showMessage("Full sync triggered"); | 
					
						
							| 
									
										
										
										
											2017-12-13 23:03:48 -05:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $fillSyncRowsButton.click(async () => { | 
					
						
							| 
									
										
										
										
											2017-12-19 22:04:51 -05:00
										 |  |  |         await server.post('sync/fill-sync-rows'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-24 23:37:55 -04:00
										 |  |  |         utils.showMessage("Sync rows filled successfully"); | 
					
						
							| 
									
										
										
										
											2017-12-19 22:04:51 -05:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-12-16 00:05:37 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $anonymizeButton.click(async () => { | 
					
						
							| 
									
										
										
										
											2017-12-16 00:05:37 -05:00
										 |  |  |         await server.post('anonymization/anonymize'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-24 23:37:55 -04:00
										 |  |  |         utils.showMessage("Created anonymized database"); | 
					
						
							| 
									
										
										
										
											2017-12-16 00:05:37 -05:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $cleanupSoftDeletedButton.click(async () => { | 
					
						
							| 
									
										
										
										
											2017-12-23 09:35:00 -05:00
										 |  |  |         if (confirm("Do you really want to clean up soft-deleted items?")) { | 
					
						
							|  |  |  |             await server.post('cleanup/cleanup-soft-deleted-items'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-24 23:37:55 -04:00
										 |  |  |             utils.showMessage("Soft deleted items have been cleaned up"); | 
					
						
							| 
									
										
										
										
											2017-12-23 09:35:00 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $cleanupUnusedImagesButton.click(async () => { | 
					
						
							| 
									
										
										
										
											2018-01-07 14:07:59 -05:00
										 |  |  |         if (confirm("Do you really want to clean up unused images?")) { | 
					
						
							|  |  |  |             await server.post('cleanup/cleanup-unused-images'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-24 23:37:55 -04:00
										 |  |  |             utils.showMessage("Unused images have been cleaned up"); | 
					
						
							| 
									
										
										
										
											2018-01-07 14:07:59 -05:00
										 |  |  |         } | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-10 08:44:34 -05:00
										 |  |  |     $vacuumDatabaseButton.click(async () => { | 
					
						
							| 
									
										
										
										
											2017-12-23 09:35:00 -05:00
										 |  |  |         await server.post('cleanup/vacuum-database'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-24 23:37:55 -04:00
										 |  |  |         utils.showMessage("Database has been vacuumed"); | 
					
						
							| 
									
										
										
										
											2017-12-23 09:35:00 -05:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-21 00:25:53 -05:00
										 |  |  |     return {}; | 
					
						
							| 
									
										
										
										
											2017-11-04 14:31:53 -04:00
										 |  |  | })()); |