Toggle spell checker in the session rather than the webPreferences.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
Anders Kaseorg
2022-03-08 15:40:16 -08:00
parent c6022e94bb
commit 4ed4328bf8
5 changed files with 18 additions and 19 deletions

View File

@@ -3,6 +3,7 @@ import type {MenuProps, ServerConf} from "./types";
export interface MainMessage { export interface MainMessage {
"clear-app-settings": () => void; "clear-app-settings": () => void;
"configure-spell-checker": () => void;
downloadFile: (url: string, downloadPath: string) => void; downloadFile: (url: string, downloadPath: string) => void;
"error-reporting": () => void; "error-reporting": () => void;
"fetch-user-agent": () => string; "fetch-user-agent": () => string;
@@ -14,7 +15,6 @@ export interface MainMessage {
"realm-name-changed": (serverURL: string, realmName: string) => void; "realm-name-changed": (serverURL: string, realmName: string) => void;
"reload-full-app": () => void; "reload-full-app": () => void;
"save-last-tab": (index: number) => void; "save-last-tab": (index: number) => void;
"set-spellcheck-langs": () => void;
"switch-server-tab": (index: number) => void; "switch-server-tab": (index: number) => void;
"toggle-app": () => void; "toggle-app": () => void;
"toggle-badge-option": (newValue: boolean) => void; "toggle-badge-option": (newValue: boolean) => void;

View File

@@ -174,14 +174,19 @@ function createMainWindow(): Electron.BrowserWindow {
const ses = session.fromPartition("persist:webviewsession"); const ses = session.fromPartition("persist:webviewsession");
ses.setUserAgent(`ZulipElectron/${app.getVersion()} ${ses.getUserAgent()}`); ses.setUserAgent(`ZulipElectron/${app.getVersion()} ${ses.getUserAgent()}`);
ipcMain.on("set-spellcheck-langs", () => { function configureSpellChecker() {
const enable = ConfigUtil.getConfigItem("enableSpellchecker", true);
if (enable && process.platform !== "darwin") {
ses.setSpellCheckerLanguages( ses.setSpellCheckerLanguages(
process.platform === "darwin" ConfigUtil.getConfigItem("spellcheckerLanguages", null) ?? [],
? // Work around https://github.com/electron/electron/issues/30215.
mainWindow.webContents.session.getSpellCheckerLanguages()
: ConfigUtil.getConfigItem("spellcheckerLanguages", null) ?? [],
); );
}); }
ses.setSpellCheckerEnabled(enable);
}
configureSpellChecker();
ipcMain.on("configure-spell-checker", configureSpellChecker);
AppMenu.setMenu({ AppMenu.setMenu({
tabs: [], tabs: [],

View File

@@ -71,13 +71,7 @@ export default class WebView {
? html`` ? html``
: html`preload="${props.preload}"`} : html`preload="${props.preload}"`}
partition="persist:webviewsession" partition="persist:webviewsession"
webpreferences=" webpreferences="contextIsolation, worldSafeExecuteJavaScript=true"
contextIsolation,
spellcheck=${Boolean(
ConfigUtil.getConfigItem("enableSpellchecker", true),
)},
worldSafeExecuteJavaScript=true
"
> >
</webview> </webview>
`; `;

View File

@@ -128,7 +128,6 @@ export class ServerManagerView {
await this.initTabs(); await this.initTabs();
this.initActions(); this.initActions();
this.registerIpcs(); this.registerIpcs();
ipcRenderer.send("set-spellcheck-langs");
} }
async loadProxy(): Promise<void> { async loadProxy(): Promise<void> {

View File

@@ -425,6 +425,7 @@ export function initGeneralSection({$root}: GeneralSectionProps): void {
clickHandler: () => { clickHandler: () => {
const newValue = !ConfigUtil.getConfigItem("enableSpellchecker", true); const newValue = !ConfigUtil.getConfigItem("enableSpellchecker", true);
ConfigUtil.setConfigItem("enableSpellchecker", newValue); ConfigUtil.setConfigItem("enableSpellchecker", newValue);
ipcRenderer.send("configure-spell-checker");
enableSpellchecker(); enableSpellchecker();
const spellcheckerLanguageInput: HTMLElement = const spellcheckerLanguageInput: HTMLElement =
$root.querySelector("#spellcheck-langs")!; $root.querySelector("#spellcheck-langs")!;
@@ -664,7 +665,7 @@ export function initGeneralSection({$root}: GeneralSectionProps): void {
tagField.addEventListener("change", () => { tagField.addEventListener("change", () => {
if (tagField.value.length === 0) { if (tagField.value.length === 0) {
ConfigUtil.setConfigItem("spellcheckerLanguages", []); ConfigUtil.setConfigItem("spellcheckerLanguages", []);
ipcRenderer.send("set-spellcheck-langs"); ipcRenderer.send("configure-spell-checker");
} else { } else {
const data: unknown = JSON.parse(tagField.value); const data: unknown = JSON.parse(tagField.value);
const spellLangs: string[] = z const spellLangs: string[] = z
@@ -672,7 +673,7 @@ export function initGeneralSection({$root}: GeneralSectionProps): void {
.parse(data) .parse(data)
.map((elt) => languagePairs.get(elt.value)!); .map((elt) => languagePairs.get(elt.value)!);
ConfigUtil.setConfigItem("spellcheckerLanguages", spellLangs); ConfigUtil.setConfigItem("spellcheckerLanguages", spellLangs);
ipcRenderer.send("set-spellcheck-langs"); ipcRenderer.send("configure-spell-checker");
} }
}); });
} }