From df47679c7ff2fee911019ebf4831e0f768a3d46a Mon Sep 17 00:00:00 2001 From: zadam Date: Fri, 30 Dec 2022 17:10:07 +0100 Subject: [PATCH] added option for help sha256 --- src/services/help_import.js | 28 ++++++++++++++----- src/services/options_init.js | 1 + src/services/resource_dir.js | 7 +++-- src/services/scheduler.js | 2 +- .../search/expressions/note_flat_text.js | 2 +- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/services/help_import.js b/src/services/help_import.js index 23eb20d22..959b7ad9f 100644 --- a/src/services/help_import.js +++ b/src/services/help_import.js @@ -1,8 +1,6 @@ "use strict" -const cls = require("./cls"); const becca = require("../becca/becca"); -const beccaLoader = require("../becca/becca_loader"); const fs = require("fs").promises; const Attribute = require('../becca/entities/attribute'); const utils = require('./utils'); @@ -14,14 +12,30 @@ const path = require('path'); const yauzl = require("yauzl"); const htmlSanitizer = require('./html_sanitizer'); const sql = require('./sql'); +const options = require('./options'); +const {HELP_ZIP_DIR} = require('./resource_dir'); -const HELP_FILE_PATH = '/home/adam/Downloads/Help4.zip'; +async function importHelpIfNeeded() { + const helpSha256HashInDb = options.getOption('helpSha256Hash'); + let helpSha256HashInFile = await fs.readFile(HELP_ZIP_DIR + "/help.zip.sha256"); + + if (!helpSha256HashInFile || helpSha256HashInFile.byteLength < 64) { + return; + } + + helpSha256HashInFile = helpSha256HashInFile.toString().substr(0, 64); + + if (helpSha256HashInDb === helpSha256HashInFile) { + // help file has been already imported and is up to date + return; + } -async function importHelp() { const hiddenRoot = becca.getNote("_hidden"); - const data = await fs.readFile(HELP_FILE_PATH, "binary"); + const data = await fs.readFile(HELP_ZIP_DIR + "/" + "help.zip", "binary"); await importZip(Buffer.from(data, 'binary'), hiddenRoot); + + options.setOption('helpSha256Hash', helpSha256HashInFile); } async function importZip(fileBuffer, importRootNote) { @@ -477,5 +491,5 @@ function readZipFile(buffer, processEntryCallback) { } module.exports = { - importHelp -} + importHelpIfNeeded +}; diff --git a/src/services/options_init.js b/src/services/options_init.js index fd66718f8..630c5ea2f 100644 --- a/src/services/options_init.js +++ b/src/services/options_init.js @@ -89,6 +89,7 @@ const defaultOptions = [ { name: 'minTocHeadings', value: '5', isSynced: true }, { name: 'checkForUpdates', value: 'true', isSynced: true }, { name: 'disableTray', value: 'false', isSynced: false }, + { name: 'helpSha256Hash', value: '', isSynced: true }, ]; function initStartupOptions() { diff --git a/src/services/resource_dir.js b/src/services/resource_dir.js index ba05b70e7..fd98be4c3 100644 --- a/src/services/resource_dir.js +++ b/src/services/resource_dir.js @@ -20,9 +20,12 @@ if (!fs.existsSync(MIGRATIONS_DIR)) { process.exit(1); } +const HELP_ZIP_DIR = path.resolve(RESOURCE_DIR, "tmp"); + module.exports = { RESOURCE_DIR, MIGRATIONS_DIR, DB_INIT_DIR, - ELECTRON_APP_ROOT_DIR -}; \ No newline at end of file + ELECTRON_APP_ROOT_DIR, + HELP_ZIP_DIR +}; diff --git a/src/services/scheduler.js b/src/services/scheduler.js index 82b17dd4d..25a769d21 100644 --- a/src/services/scheduler.js +++ b/src/services/scheduler.js @@ -55,7 +55,7 @@ sqlInit.dbReady.then(() => { cls.init(() => { hiddenSubtreeService.checkHiddenSubtree(); - helpImportService.importHelp(); + helpImportService.importHelpIfNeeded(); }); if (!process.env.TRILIUM_SAFE_MODE) { diff --git a/src/services/search/expressions/note_flat_text.js b/src/services/search/expressions/note_flat_text.js index 002992a51..670b34d4b 100644 --- a/src/services/search/expressions/note_flat_text.js +++ b/src/services/search/expressions/note_flat_text.js @@ -123,7 +123,7 @@ class NoteFlatTextExp extends Expression { * Returns noteIds which have at least one matching tokens * * @param {NoteSet} noteSet - * @return {String[]} + * @return {Note[]} */ getCandidateNotes(noteSet) { const candidateNotes = [];