mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-30 18:05:55 +01:00 
			
		
		
		
	
		
			
	
	
		
			140 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			140 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | const $triliumServerUrl = $("#trilium-server-url"); | ||
|  | const $triliumServerUsername = $("#trilium-server-username"); | ||
|  | const $triliumServerPassword = $("#trilium-server-password"); | ||
|  | 
 | ||
|  | const $errorMessage = $("#error-message"); | ||
|  | const $successMessage = $("#success-message"); | ||
|  | 
 | ||
|  | function showError(message) { | ||
|  |     $errorMessage.html(message).show(); | ||
|  |     $successMessage.hide(); | ||
|  | } | ||
|  | 
 | ||
|  | function showSuccess(message) { | ||
|  |     $successMessage.html(message).show(); | ||
|  |     $errorMessage.hide(); | ||
|  | } | ||
|  | 
 | ||
|  | async function saveTriliumServerSetup(e) { | ||
|  |     e.preventDefault(); | ||
|  | 
 | ||
|  |     if ($triliumServerUrl.val().trim().length === 0 | ||
|  |         || $triliumServerUsername.val().trim().length === 0 | ||
|  |         || $triliumServerPassword.val().trim().length === 0) { | ||
|  |         showError("One or more mandatory inputs are missing. Please fill in server URL, username and password."); | ||
|  | 
 | ||
|  |         return; | ||
|  |     } | ||
|  | 
 | ||
|  |     let resp; | ||
|  | 
 | ||
|  |     try { | ||
|  |         resp = await fetch($triliumServerUrl.val() + '/api/login/token', { | ||
|  |             method: "POST", | ||
|  |             headers: { | ||
|  |                 'Accept': 'application/json', | ||
|  |                 'Content-Type': 'application/json' | ||
|  |             }, | ||
|  |             body: JSON.stringify({ | ||
|  |                 username: $triliumServerUsername.val(), | ||
|  |                 password: $triliumServerPassword.val() | ||
|  |             }) | ||
|  |         }); | ||
|  |     } | ||
|  |     catch (e) { | ||
|  |         showError("Unknown error: " + e.message); | ||
|  |         return; | ||
|  |     } | ||
|  | 
 | ||
|  |     if (resp.status === 401) { | ||
|  |         showError("Incorrect credentials."); | ||
|  |     } | ||
|  |     else if (resp.status !== 200) { | ||
|  |         showError("Unrecognised response with status code " + resp.status); | ||
|  |     } | ||
|  |     else { | ||
|  |         const json = await resp.json(); | ||
|  | 
 | ||
|  |         showSuccess("Authentication against Trilium server has been successful."); | ||
|  | 
 | ||
|  |         $triliumServerUsername.val(''); | ||
|  |         $triliumServerPassword.val(''); | ||
|  | 
 | ||
|  |         browser.storage.sync.set({ | ||
|  |             triliumServerUrl: $triliumServerUrl.val(), | ||
|  |             authToken: json.token | ||
|  |         }); | ||
|  | 
 | ||
|  |         await restoreOptions(); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | const $triliumServerSetupForm = $("#trilium-server-setup-form"); | ||
|  | const $triliumServerConfiguredDiv = $("#trilium-server-configured"); | ||
|  | const $triliumServerLink = $("#trilium-server-link"); | ||
|  | const $resetTriliumServerSetupLink = $("#reset-trilium-server-setup"); | ||
|  | 
 | ||
|  | $resetTriliumServerSetupLink.on("click", e => { | ||
|  |     e.preventDefault(); | ||
|  | 
 | ||
|  |     browser.storage.sync.set({ | ||
|  |         triliumServerUrl: '', | ||
|  |         authToken: '' | ||
|  |     }); | ||
|  | 
 | ||
|  |     restoreOptions(); | ||
|  | }); | ||
|  | 
 | ||
|  | $triliumServerSetupForm.on("submit", saveTriliumServerSetup); | ||
|  | 
 | ||
|  | const $triliumDesktopPort = $("#trilium-desktop-port"); | ||
|  | const $triilumDesktopSetupForm = $("#trilium-desktop-setup-form"); | ||
|  | 
 | ||
|  | $triilumDesktopSetupForm.on("submit", e => { | ||
|  |     e.preventDefault(); | ||
|  | 
 | ||
|  |     const port = $triliumDesktopPort.val().trim(); | ||
|  |     const portNum = parseInt(port); | ||
|  | 
 | ||
|  |     if (port && (isNaN(portNum) || portNum <= 0 || portNum >= 65536)) { | ||
|  |         showError(`Please enter valid port number.`); | ||
|  |         return; | ||
|  |     } | ||
|  | 
 | ||
|  |     browser.storage.sync.set({ | ||
|  |         triliumDesktopPort: port | ||
|  |     }); | ||
|  | 
 | ||
|  |     showSuccess(`Port number has been saved.`); | ||
|  | }); | ||
|  | 
 | ||
|  | async function restoreOptions() { | ||
|  |     const {triliumServerUrl} = await browser.storage.sync.get("triliumServerUrl"); | ||
|  |     const {authToken} = await browser.storage.sync.get("authToken"); | ||
|  | 
 | ||
|  |     $errorMessage.hide(); | ||
|  |     $successMessage.hide(); | ||
|  | 
 | ||
|  |     $triliumServerUrl.val(''); | ||
|  |     $triliumServerUsername.val(''); | ||
|  |     $triliumServerPassword.val(''); | ||
|  | 
 | ||
|  |     if (triliumServerUrl && authToken) { | ||
|  |         $triliumServerSetupForm.hide(); | ||
|  |         $triliumServerConfiguredDiv.show(); | ||
|  | 
 | ||
|  |         $triliumServerLink | ||
|  |             .attr("href", triliumServerUrl) | ||
|  |             .text(triliumServerUrl); | ||
|  |     } | ||
|  |     else { | ||
|  |         $triliumServerSetupForm.show(); | ||
|  |         $triliumServerConfiguredDiv.hide(); | ||
|  |     } | ||
|  | 
 | ||
|  |     const {triliumDesktopPort} = await browser.storage.sync.get("triliumDesktopPort"); | ||
|  | 
 | ||
|  |     $triliumDesktopPort.val(triliumDesktopPort); | ||
|  | } | ||
|  | 
 | ||
|  | $(restoreOptions); |