From e5c1751c3dc691458ba9e870d4849e4872db2ff1 Mon Sep 17 00:00:00 2001 From: Stefan Malzner Date: Sat, 8 Dec 2018 22:33:58 +0100 Subject: Minor recipe plugin polishing --- src/webview/contextMenu.js | 12 +++++++++--- src/webview/recipe.js | 12 +++++++++--- src/webview/spellchecker.js | 6 ++++-- 3 files changed, 22 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/webview/contextMenu.js b/src/webview/contextMenu.js index f9afa1913..0349a5d6c 100644 --- a/src/webview/contextMenu.js +++ b/src/webview/contextMenu.js @@ -22,7 +22,7 @@ function delUnusedElements(menuTpl) { }); } -const buildMenuTpl = (props, suggestions, defaultSpellcheckerLanguage, spellcheckerLanguage) => { +const buildMenuTpl = (props, suggestions, isSpellcheckEnabled, defaultSpellcheckerLanguage, spellcheckerLanguage) => { const { editFlags } = props; const textSelection = props.selectionText.trim(); const hasText = textSelection.length > 0; @@ -205,11 +205,14 @@ const buildMenuTpl = (props, suggestions, defaultSpellcheckerLanguage, spellchec }); }); + console.log('isSpellcheckEnabled', isSpellcheckEnabled); + menuTpl.push({ type: 'separator', }, { id: 'spellchecker', - label: 'Spellchecker', + label: 'Spell Checking', + visible: isSpellcheckEnabled, submenu: [ { id: 'spellchecker', @@ -222,6 +225,7 @@ const buildMenuTpl = (props, suggestions, defaultSpellcheckerLanguage, spellchec id: 'resetToDefault', label: `Reset to system default (${SPELLCHECKER_LOCALES[defaultSpellcheckerLanguage]})`, type: 'radio', + visible: defaultSpellcheckerLanguage !== spellcheckerLanguage, click() { debug('Resetting service spellchecker to system default'); ipcRenderer.sendToHost('set-service-spellchecker-language', 'reset'); @@ -229,6 +233,7 @@ const buildMenuTpl = (props, suggestions, defaultSpellcheckerLanguage, spellchec }, { type: 'separator', + visible: defaultSpellcheckerLanguage !== spellcheckerLanguage, }, ...spellcheckingLanguages], }); @@ -249,7 +254,7 @@ const buildMenuTpl = (props, suggestions, defaultSpellcheckerLanguage, spellchec return delUnusedElements(menuTpl); }; -export default function contextMenu(spellcheckProvider, getDefaultSpellcheckerLanguage, getSpellcheckerLanguage) { +export default function contextMenu(spellcheckProvider, isSpellcheckEnabled, getDefaultSpellcheckerLanguage, getSpellcheckerLanguage) { webContents.on('context-menu', (e, props) => { e.preventDefault(); @@ -264,6 +269,7 @@ export default function contextMenu(spellcheckProvider, getDefaultSpellcheckerLa buildMenuTpl( props, suggestions.slice(0, 5), + isSpellcheckEnabled(), getDefaultSpellcheckerLanguage(), getSpellcheckerLanguage(), ), diff --git a/src/webview/recipe.js b/src/webview/recipe.js index a2c157af8..c9117ac72 100644 --- a/src/webview/recipe.js +++ b/src/webview/recipe.js @@ -9,13 +9,18 @@ import { injectDarkModeStyle, isDarkModeStyleInjected, removeDarkModeStyle } fro import contextMenu from './contextMenu'; import './notifications'; +import { DEFAULT_APP_SETTINGS } from '../config'; + const debug = require('debug')('Franz:Plugin'); class RecipeController { @observable settings = { overrideSpellcheckerLanguage: false, - app: {}, - service: {}, + app: DEFAULT_APP_SETTINGS, + service: { + isDarkModeEnabled: false, + spellcheckerLanguage: '', + }, }; spellcheckProvider = null; @@ -49,6 +54,7 @@ class RecipeController { this.spellcheckingProvider = await spellchecker(); contextMenu( this.spellcheckingProvider, + () => this.settings.app.enableSpellchecking, () => this.settings.app.spellcheckerLanguage, () => this.spellcheckerLanguage); @@ -81,10 +87,10 @@ class RecipeController { debug('Setting spellchecker language to', this.spellcheckerLanguage); switchDict(this.spellcheckerLanguage); } else { + debug('Disable spellchecker'); disableSpellchecker(); } - console.log(this.settings.service); if (this.settings.service.isDarkModeEnabled) { debug('Enable dark mode'); injectDarkModeStyle(this.settings.service.recipe.path); diff --git a/src/webview/spellchecker.js b/src/webview/spellchecker.js index f1bae1cd7..becaed449 100644 --- a/src/webview/spellchecker.js +++ b/src/webview/spellchecker.js @@ -4,7 +4,6 @@ import path from 'path'; import { DICTIONARY_PATH } from '../config'; - const debug = require('debug')('Franz:spellchecker'); let provider; @@ -15,6 +14,7 @@ async function loadDictionary(locale) { try { const fileLocation = path.join(DICTIONARY_PATH, `hunspell-dict-${locale}/${locale}`); await provider.loadDictionary(locale, `${fileLocation}.dic`, `${fileLocation}.aff`); + debug('Loaded dictionary', locale, 'from', fileLocation); } catch (err) { console.error('Could not load dictionary', err); } @@ -36,7 +36,9 @@ export async function switchDict(locale) { return; } - provider.unloadDictionary(locale); + if (currentDict) { + provider.unloadDictionary(locale); + } loadDictionary(locale); provider.switchDictionary(locale); -- cgit v1.2.3-70-g09d2