import utils from "../../services/utils.js"; import server from "../../services/server.js"; import toastService from "../../services/toast.js"; const TPL = `

Spell check

These options apply only for desktop builds, browsers will use their own native spell check. App restart is required after change.


Multiple languages can be separated by comma, e.g. en-US, de-DE, cs. Changes to the spell check options will take effect after application restart.

Available language codes:

Image compression

Note erasure timeout

Deleted notes (and attributes, revisions...) are at first only marked as deleted and it is possible to recover them from Recent Notes dialog. After a period of time, deleted notes are "erased" which means their content is not recoverable anymore. This setting allows you to configure the length of the period between deleting and erasing the note.

You can also trigger erasing manually:



Protected session timeout

Protected session timeout is a time period after which the protected session is wiped from the browser's memory. This is measured from the last interaction with protected notes. See wiki for more info.

Note revisions snapshot interval

Note revision snapshot time interval is time in seconds after which a new note revision will be created for the note. See wiki for more info.

Automatic readonly size

Automatic readonly note size is the size after which notes will be displayed in a readonly mode (for performance reasons).

`; export default class ProtectedSessionOptions { constructor() { $("#options-other").html(TPL); this.$spellCheckEnabled = $("#spell-check-enabled"); this.$spellCheckLanguageCode = $("#spell-check-language-code"); this.$spellCheckEnabled.on('change', () => { const opts = { 'spellCheckEnabled': this.$spellCheckEnabled.is(":checked") ? "true" : "false" }; server.put('options', opts).then(() => toastService.showMessage("Options change have been saved.")); return false; }); this.$spellCheckLanguageCode.on('change', () => { const opts = { 'spellCheckLanguageCode': this.$spellCheckLanguageCode.val() }; server.put('options', opts).then(() => toastService.showMessage("Options change have been saved.")); return false; }); this.$availableLanguageCodes = $("#available-language-codes"); if (utils.isElectron()) { const {webContents} = utils.dynamicRequire('electron').remote.getCurrentWindow(); this.$availableLanguageCodes.text(webContents.session.availableSpellCheckerLanguages.join(', ')); } this.$eraseEntitiesAfterTimeInSeconds = $("#erase-entities-after-time-in-seconds"); this.$eraseEntitiesAfterTimeInSeconds.on('change', () => { const eraseEntitiesAfterTimeInSeconds = this.$eraseEntitiesAfterTimeInSeconds.val(); server.put('options', { 'eraseEntitiesAfterTimeInSeconds': eraseEntitiesAfterTimeInSeconds }).then(() => { toastService.showMessage("Options change have been saved."); }); return false; }); this.$eraseDeletedNotesButton = $("#erase-deleted-notes-now-button"); this.$eraseDeletedNotesButton.on('click', () => { server.post('notes/erase-deleted-notes-now').then(() => { toastService.showMessage("Deleted notes have been erased."); }); }); this.$protectedSessionTimeout = $("#protected-session-timeout-in-seconds"); this.$protectedSessionTimeout.on('change', () => { const protectedSessionTimeout = this.$protectedSessionTimeout.val(); server.put('options', { 'protectedSessionTimeout': protectedSessionTimeout }).then(() => { toastService.showMessage("Options change have been saved."); }); return false; }); this.$noteRevisionsTimeInterval = $("#note-revision-snapshot-time-interval-in-seconds"); this.$noteRevisionsTimeInterval.on('change', () => { const opts = { 'noteRevisionSnapshotTimeInterval': this.$noteRevisionsTimeInterval.val() }; server.put('options', opts).then(() => toastService.showMessage("Options change have been saved.")); return false; }); this.$imageMaxWidthHeight = $("#image-max-width-height"); this.$imageJpegQuality = $("#image-jpeg-quality"); this.$imageMaxWidthHeight.on('change', () => { const opts = { 'imageMaxWidthHeight': this.$imageMaxWidthHeight.val() }; server.put('options', opts).then(() => toastService.showMessage("Options change have been saved.")); return false; }); this.$imageJpegQuality.on('change', () => { const opts = { 'imageJpegQuality': this.$imageJpegQuality.val() }; server.put('options', opts).then(() => toastService.showMessage("Options change have been saved.")); return false; }); this.$autoReadonlySizeText = $("#auto-readonly-size-text"); this.$autoReadonlySizeText.on('change', () => { const opts = { 'autoReadonlySizeText': this.$autoReadonlySizeText.val() }; server.put('options', opts).then(() => toastService.showMessage("Options change have been saved.")); return false; }); this.$autoReadonlySizeCode = $("#auto-readonly-size-code"); this.$autoReadonlySizeCode.on('change', () => { const opts = { 'autoReadonlySizeCode': this.$autoReadonlySizeText.val() }; server.put('options', opts).then(() => toastService.showMessage("Options change have been saved.")); return false; }); } optionsLoaded(options) { this.$spellCheckEnabled.prop("checked", options['spellCheckEnabled'] === 'true'); this.$spellCheckLanguageCode.val(options['spellCheckLanguageCode']); this.$eraseEntitiesAfterTimeInSeconds.val(options['eraseEntitiesAfterTimeInSeconds']); this.$protectedSessionTimeout.val(options['protectedSessionTimeout']); this.$noteRevisionsTimeInterval.val(options['noteRevisionSnapshotTimeInterval']); this.$imageMaxWidthHeight.val(options['imageMaxWidthHeight']); this.$imageJpegQuality.val(options['imageJpegQuality']); this.$autoReadonlySizeText.val(options['autoReadonlySizeText']); this.$autoReadonlySizeCode.val(options['autoReadonlySizeCode']); } }