mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-11-04 07:01:31 +08:00 
			
		
		
		
	git-subtree-dir: apps/web-clipper git-subtree-mainline: b0e519071893ce9434dd3bb3a568b3e41332c718 git-subtree-split: 786d249a6effe0262859d05e6cb1737e5fc8bdd8
		
			
				
	
	
		
			136 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			136 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const $triliumServerUrl = $("#trilium-server-url");
 | 
						|
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
 | 
						|
        || $triliumServerPassword.val().trim().length === 0) {
 | 
						|
        showError("One or more mandatory inputs are missing. Please fill in server URL 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({
 | 
						|
                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.");
 | 
						|
 | 
						|
        $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('');
 | 
						|
    $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);
 |