From ad99490def126f39c5b1e98a59e3ca996672b1f9 Mon Sep 17 00:00:00 2001 From: Guillermo Gabarrin Date: Wed, 1 Mar 2023 08:51:23 -0300 Subject: [PATCH] Add command for saving notes to local database --- package.json | 6 +++++- src/extension.ts | 14 +++++++++++--- src/handlers/saveNotesToFile.ts | 7 +++++++ src/persistence/local-db/index.ts | 7 +++---- 4 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 src/handlers/saveNotesToFile.ts diff --git a/package.json b/package.json index ab99057..8bd4fe7 100644 --- a/package.json +++ b/package.json @@ -76,6 +76,10 @@ { "command": "security-notes.setNoteStatusToDo", "title": "Mark as To-Do" + }, + { + "command": "security-notes.saveNotesToFile", + "title": "Security-Notes: Save Notes to Local Database" } ], "configuration": { @@ -266,4 +270,4 @@ "rethinkdb": "^2.4.2", "uuid": "^9.0.0" } -} \ No newline at end of file +} diff --git a/src/extension.ts b/src/extension.ts index c87a2b1..3a3b4f5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -7,6 +7,7 @@ import { Resource } from './reactions/resource'; import { ImportToolResultsWebview } from './webviews/importToolResultsWebview'; import { commentController } from './controllers/comments'; import { reactionHandler } from './handlers/reaction'; +import { saveNotesToFileHandler } from './handlers/saveNotesToFile'; import { getSetting, saveNoteComment, @@ -14,7 +15,7 @@ import { syncNoteMapWithRemote, } from './helpers'; import { RemoteDb } from './persistence/remote-db'; -import { loadCommentsFromFile, saveCommentsToFile } from './persistence/local-db'; +import { loadNotesFromFile, saveNotesToFile } from './persistence/local-db'; const noteMap = new Map(); let remoteDb: RemoteDb | undefined; @@ -53,6 +54,13 @@ export function activate(context: vscode.ExtensionContext) { // reaction handler commentController.reactionHandler = reactionHandler; + // save notes to file handler + context.subscriptions.push( + vscode.commands.registerCommand('security-notes.saveNotesToFile', () => + saveNotesToFileHandler(noteMap), + ), + ); + // create note button context.subscriptions.push( vscode.commands.registerCommand( @@ -222,7 +230,7 @@ export function activate(context: vscode.ExtensionContext) { ); // load persisted comments from file - const persistedThreads = loadCommentsFromFile(); + const persistedThreads = loadNotesFromFile(); persistedThreads.forEach((thread) => { noteMap.set(thread.contextValue ? thread.contextValue : '', thread); }); @@ -239,5 +247,5 @@ export function activate(context: vscode.ExtensionContext) { export function deactivate(context: vscode.ExtensionContext) { // persist comments in file - saveCommentsToFile(noteMap); + saveNotesToFile(noteMap); } diff --git a/src/handlers/saveNotesToFile.ts b/src/handlers/saveNotesToFile.ts new file mode 100644 index 0000000..834ec28 --- /dev/null +++ b/src/handlers/saveNotesToFile.ts @@ -0,0 +1,7 @@ +'use strict'; + +import { CommentThread } from 'vscode'; +import { saveNotesToFile } from '../persistence/local-db'; + +export const saveNotesToFileHandler = (noteMap: Map) => + saveNotesToFile(noteMap); diff --git a/src/persistence/local-db/index.ts b/src/persistence/local-db/index.ts index e7948ab..4d02618 100644 --- a/src/persistence/local-db/index.ts +++ b/src/persistence/local-db/index.ts @@ -4,16 +4,15 @@ import * as fs from 'fs'; import { Serializer } from '../serialization/serializer'; import { Deserializer } from '../serialization/deserializer'; import { CommentThread } from 'vscode'; -import { getSetting } from '../../helpers'; import { getLocalDbFilePath } from '../../utils'; const persistenceFile = getLocalDbFilePath(); -export const saveCommentsToFile = (noteList: Map) => { - fs.writeFileSync(persistenceFile, JSON.stringify(Serializer.serialize(noteList))); +export const saveNotesToFile = (noteMap: Map) => { + fs.writeFileSync(persistenceFile, JSON.stringify(Serializer.serialize(noteMap))); }; -export const loadCommentsFromFile = (): CommentThread[] => { +export const loadNotesFromFile = (): CommentThread[] => { // Check if persistence file exists and load comments if (fs.existsSync(persistenceFile)) { const jsonFile = fs.readFileSync(persistenceFile).toString();