diff --git a/src/components/dialog-display-media/index.tsx b/src/components/dialog-display-media/index.tsx index ddf2f6fd..d887df9c 100644 --- a/src/components/dialog-display-media/index.tsx +++ b/src/components/dialog-display-media/index.tsx @@ -66,7 +66,7 @@ class DisplayMedia extends React.Component button onClick={() => { const { ipcRenderer } = window.remote; - ipcRenderer.send('display-media-selected', source.id); + ipcRenderer.invoke('display-media-selected', source.id); }}> @@ -78,7 +78,7 @@ class DisplayMedia extends React.Component button onClick={() => { const { ipcRenderer } = window.remote; - ipcRenderer.send('display-media-selected', source.id); + ipcRenderer.invoke('display-media-selected', source.id); }}> diff --git a/src/listeners/index.ts b/src/listeners/index.ts index b2d0cecf..1d149d54 100755 --- a/src/listeners/index.ts +++ b/src/listeners/index.ts @@ -28,31 +28,31 @@ const loadListeners = (store: any) => { window.addEventListener('offline', handleOnlineOffline); } - ipcRenderer.on('create-wiki-progress', (event: any, message: any) => { + ipcRenderer.on('create-wiki-progress', (event: Electron.IpcRendererEvent, message: any) => { store.dispatch(setWikiCreationMessage(message)); }); - ipcRenderer.on('log', (e: any, message: any) => { + ipcRenderer.on('log', (_event: Electron.IpcRendererEvent, message: any) => { if (message) console.log(message); // eslint-disable-line no-console }); - ipcRenderer.on('set-preference', (e: any, name: any, value: any) => { + ipcRenderer.on('set-preference', (_event: Electron.IpcRendererEvent, name: any, value: any) => { store.dispatch(setPreference(name, value)); }); - ipcRenderer.on('set-system-preference', (e: any, name: any, value: any) => { + ipcRenderer.on('set-system-preference', (_event: Electron.IpcRendererEvent, name: any, value: any) => { store.dispatch(setSystemPreference(name, value)); }); - ipcRenderer.on('set-workspace', (e: any, id: any, value: any) => { + ipcRenderer.on('set-workspace', (_event: Electron.IpcRendererEvent, id: any, value: any) => { store.dispatch(setWorkspace(id, value)); }); - ipcRenderer.on('set-workspaces', (e: any, newWorkspaces: any) => { + ipcRenderer.on('set-workspaces', (_event: Electron.IpcRendererEvent, newWorkspaces: any) => { store.dispatch(setWorkspaces(newWorkspaces)); }); - ipcRenderer.on('set-workspace-meta', (e: any, id: any, value: any) => { + ipcRenderer.on('set-workspace-meta', (_event: Electron.IpcRendererEvent, id: any, value: any) => { store.dispatch(setWorkspaceMeta(id, value)); }); @@ -60,19 +60,19 @@ const loadListeners = (store: any) => { store.dispatch(setWorkspaceMetas(newWorkspaceMetas)); }); - ipcRenderer.on('update-can-go-back', (e: any, value: any) => { + ipcRenderer.on('update-can-go-back', (_event: Electron.IpcRendererEvent, value: any) => { store.dispatch(updateCanGoBack(value)); }); - ipcRenderer.on('update-address', (e: any, address: any, edited: any) => { + ipcRenderer.on('update-address', (_event: Electron.IpcRendererEvent, address: any, edited: any) => { store.dispatch(updateAddressBarInfo(address, edited)); }); - ipcRenderer.on('update-title', (e: any, title: any) => { + ipcRenderer.on('update-title', (_event: Electron.IpcRendererEvent, title: any) => { store.dispatch(updateTitle(title)); }); - ipcRenderer.on('update-can-go-forward', (e: any, value: any) => { + ipcRenderer.on('update-can-go-forward', (_event: Electron.IpcRendererEvent, value: any) => { store.dispatch(updateCanGoForward(value)); }); @@ -85,22 +85,22 @@ const loadListeners = (store: any) => { store.dispatch(closeFindInPage()); }); - ipcRenderer.on('update-find-in-page-matches', (e: any, activeMatch: any, matches: any) => { + ipcRenderer.on('update-find-in-page-matches', (_event: Electron.IpcRendererEvent, activeMatch: any, matches: any) => { store.dispatch(updateFindInPageMatches(activeMatch, matches)); }); // send back a request with text - ipcRenderer.on('request-back-find-in-page', (e: any, forward: any) => { + ipcRenderer.on('request-back-find-in-page', (_event: Electron.IpcRendererEvent, forward: any) => { const { open, text } = store.getState().findInPage; if (!open) return; requestFindInPage(text, forward); }); - ipcRenderer.on('should-pause-notifications-changed', (e: any, value: any) => { + ipcRenderer.on('should-pause-notifications-changed', (_event: Electron.IpcRendererEvent, value: any) => { store.dispatch(updatePauseNotificationsInfo(value)); }); - ipcRenderer.on('update-updater', (e: any, updaterObject: any) => { + ipcRenderer.on('update-updater', (_event: Electron.IpcRendererEvent, updaterObject: any) => { store.dispatch(updateUpdater(updaterObject)); }); @@ -108,7 +108,7 @@ const loadListeners = (store: any) => { store.dispatch(updateShouldUseDarkColors(getShouldUseDarkColors())); }); - ipcRenderer.on('is-fullscreen-updated', (e: any, value: any) => { + ipcRenderer.on('is-fullscreen-updated', (_event: Electron.IpcRendererEvent, value: any) => { store.dispatch(updateIsFullScreen(value)); }); }; diff --git a/src/senders/index.ts b/src/senders/index.ts index 156f5958..fd180204 100644 --- a/src/senders/index.ts +++ b/src/senders/index.ts @@ -18,32 +18,32 @@ export const requestCloneSubWiki = ( ) => ipcRenderer.invoke('clone-sub-wiki', parentFolderLocation, wikiFolderName, mainWikiPath, githubWikiUrl, userInfo, tagName); export const getSubWikiPluginContent = (mainWikiPath: string): Promise> => ipcRenderer.invoke('get-sub-wiki-plugin-content', mainWikiPath); -export const requestOpen = (uri: string, isDirectory: boolean) => ipcRenderer.send('request-open', uri, !!isDirectory); -export const requestShowMessageBox = (message: string, type: string) => ipcRenderer.send('request-show-message-box', message, type); -export const requestLoadUrl = (url: string, id: string) => ipcRenderer.send('request-load-url', url, id); +export const requestOpen = (uri: string, isDirectory: boolean) => ipcRenderer.invoke('request-open', uri, !!isDirectory); +export const requestShowMessageBox = (message: string, type: string) => ipcRenderer.invoke('request-show-message-box', message, type); +export const requestLoadUrl = (url: string, id: string) => ipcRenderer.invoke('request-load-url', url, id); -export const requestGoHome = () => ipcRenderer.send('request-go-home'); -export const requestGoBack = () => ipcRenderer.send('request-go-back'); -export const requestGoForward = () => ipcRenderer.send('request-go-forward'); -export const requestReload = () => ipcRenderer.send('request-reload'); +export const requestGoHome = () => ipcRenderer.invoke('request-go-home'); +export const requestGoBack = () => ipcRenderer.invoke('request-go-back'); +export const requestGoForward = () => ipcRenderer.invoke('request-go-forward'); +export const requestReload = () => ipcRenderer.invoke('request-reload'); -export const requestQuit = () => ipcRenderer.send('request-quit'); -export const requestCheckForUpdates = (isSilent: boolean) => ipcRenderer.send('request-check-for-updates', isSilent); +export const requestQuit = () => ipcRenderer.invoke('request-quit'); +export const requestCheckForUpdates = (isSilent: boolean) => ipcRenderer.invoke('request-check-for-updates', isSilent); -export const requestShowAboutWindow = () => ipcRenderer.send('request-show-about-window'); -export const requestShowAddWorkspaceWindow = () => ipcRenderer.send('request-show-add-workspace-window'); -export const requestShowCodeInjectionWindow = (type: string) => ipcRenderer.send('request-show-code-injection-window', type); -export const requestShowCustomUserAgentWindow = () => ipcRenderer.send('request-show-custom-user-agent-window'); -export const requestShowEditWorkspaceWindow = (id: string) => ipcRenderer.send('request-show-edit-workspace-window', id); -export const requestShowNotificationsWindow = () => ipcRenderer.send('request-show-notifications-window'); -export const requestShowPreferencesWindow = (scrollTo: string) => ipcRenderer.send('request-show-preferences-window', scrollTo); -export const requestShowProxyWindow = () => ipcRenderer.send('request-show-proxy-window'); -export const requestShowSpellcheckLanguagesWindow = () => ipcRenderer.send('request-show-spellcheck-languages-window'); +export const requestShowAboutWindow = () => ipcRenderer.invoke('request-show-about-window'); +export const requestShowAddWorkspaceWindow = () => ipcRenderer.invoke('request-show-add-workspace-window'); +export const requestShowCodeInjectionWindow = (type: string) => ipcRenderer.invoke('request-show-code-injection-window', type); +export const requestShowCustomUserAgentWindow = () => ipcRenderer.invoke('request-show-custom-user-agent-window'); +export const requestShowEditWorkspaceWindow = (id: string) => ipcRenderer.invoke('request-show-edit-workspace-window', id); +export const requestShowNotificationsWindow = () => ipcRenderer.invoke('request-show-notifications-window'); +export const requestShowPreferencesWindow = (scrollTo: string) => ipcRenderer.invoke('request-show-preferences-window', scrollTo); +export const requestShowProxyWindow = () => ipcRenderer.invoke('request-show-proxy-window'); +export const requestShowSpellcheckLanguagesWindow = () => ipcRenderer.invoke('request-show-spellcheck-languages-window'); // Notifications -export const requestShowNotification = (options: { title: string; body: string }) => ipcRenderer.send('request-show-notification', options); -export const requestUpdatePauseNotificationsInfo = () => ipcRenderer.send('request-update-pause-notifications-info'); -export const getPauseNotificationsInfo = () => ipcRenderer.sendSync('get-pause-notifications-info'); +export const requestShowNotification = (options: { title: string; body: string }) => ipcRenderer.invoke('request-show-notification', options); +export const requestUpdatePauseNotificationsInfo = () => ipcRenderer.invoke('request-update-pause-notifications-info'); +export const getPauseNotificationsInfo = () => ipcRenderer.invokeSync('get-pause-notifications-info'); // Preferences // eslint-disable-next-line no-use-before-define @@ -53,24 +53,24 @@ export interface JsonObject { } interface JsonArray extends Array {} // tslint:disable-line no-empty-interface export function getPreference(name: string): T { - return ipcRenderer.sendSync('get-preference', name); + return ipcRenderer.invokeSync('get-preference', name); } -export const getPreferences = () => ipcRenderer.sendSync('get-preferences'); -export const requestSetPreference = (name: string, value: JsonValue) => ipcRenderer.send('request-set-preference', name, value); -export const requestResetPreferences = () => ipcRenderer.send('request-reset-preferences'); -export const requestShowRequireRestartDialog = () => ipcRenderer.send('request-show-require-restart-dialog'); +export const getPreferences = () => ipcRenderer.invokeSync('get-preferences'); +export const requestSetPreference = (name: string, value: JsonValue) => ipcRenderer.invoke('request-set-preference', name, value); +export const requestResetPreferences = () => ipcRenderer.invoke('request-reset-preferences'); +export const requestShowRequireRestartDialog = () => ipcRenderer.invoke('request-show-require-restart-dialog'); // System Preferences -export const getSystemPreference = (name: string): JsonValue => ipcRenderer.sendSync('get-system-preference', name); -export const getSystemPreferences = (): JsonObject => ipcRenderer.sendSync('get-system-preferences'); -export const requestSetSystemPreference = (name: string, value: JsonValue) => ipcRenderer.send('request-set-system-preference', name, value); +export const getSystemPreference = (name: string): JsonValue => ipcRenderer.invokeSync('get-system-preference', name); +export const getSystemPreferences = (): JsonObject => ipcRenderer.invokeSync('get-system-preferences'); +export const requestSetSystemPreference = (name: string, value: JsonValue) => ipcRenderer.invoke('request-set-system-preference', name, value); // Workspace -export const countWorkspace = () => ipcRenderer.sendSync('count-workspace'); -export const getWorkspace = (id: string) => ipcRenderer.sendSync('get-workspace', id); -export const getWorkspaces = () => ipcRenderer.sendSync('get-workspaces'); +export const countWorkspace = () => ipcRenderer.invokeSync('count-workspace'); +export const getWorkspace = (id: string) => ipcRenderer.invokeSync('get-workspace', id); +export const getWorkspaces = () => ipcRenderer.invokeSync('get-workspaces'); export const getWorkspaceRemote = (wikiFolderPath: string) => ipcRenderer.invoke('get-workspaces-remote', wikiFolderPath); -export const requestClearBrowsingData = () => ipcRenderer.send('request-clear-browsing-data'); +export const requestClearBrowsingData = () => ipcRenderer.invoke('request-clear-browsing-data'); export const requestCreateWorkspace = ( name: string, isSubWiki: boolean, @@ -83,49 +83,49 @@ export const requestCreateWorkspace = ( tagName: string, ) => ipcRenderer.invoke('request-create-workspace', name, isSubWiki, mainWikiToLink, port, homeUrl, gitUrl, picture, transparentBackground, tagName); -export const requestOpenTiddlerInWiki = (tiddlerName: string) => ipcRenderer.send('request-wiki-open-tiddler', tiddlerName); -export const requestWikiSendActionMessage = (actionMessage: string) => ipcRenderer.send('request-wiki-send-action-message', actionMessage); -export const requestHibernateWorkspace = (id: string) => ipcRenderer.send('request-hibernate-workspace', id); -export const requestOpenUrlInWorkspace = (url: string, id: string) => ipcRenderer.send('request-open-url-in-workspace', url, id); -export const requestRealignActiveWorkspace = () => ipcRenderer.send('request-realign-active-workspace'); -export const requestRemoveWorkspace = (id: string) => ipcRenderer.send('request-remove-workspace', id); -export const requestRemoveWorkspacePicture = (id: string) => ipcRenderer.send('request-remove-workspace-picture', id); -export const requestSetActiveWorkspace = (id: string) => ipcRenderer.send('request-set-active-workspace', id); -export const requestGetActiveWorkspace = () => ipcRenderer.sendSync('request-get-active-workspace'); -export const requestSetWorkspace = (id: string, options: any) => ipcRenderer.send('request-set-workspace', id, options); -export const requestSetWorkspaces = (workspaces: any) => ipcRenderer.send('request-set-workspaces', workspaces); -export const requestSetWorkspacePicture = (id: string, picturePath: string) => ipcRenderer.send('request-set-workspace-picture', id, picturePath); -export const requestWakeUpWorkspace = (id: string) => ipcRenderer.send('request-wake-up-workspace', id); +export const requestOpenTiddlerInWiki = (tiddlerName: string) => ipcRenderer.invoke('request-wiki-open-tiddler', tiddlerName); +export const requestWikiSendActionMessage = (actionMessage: string) => ipcRenderer.invoke('request-wiki-send-action-message', actionMessage); +export const requestHibernateWorkspace = (id: string) => ipcRenderer.invoke('request-hibernate-workspace', id); +export const requestOpenUrlInWorkspace = (url: string, id: string) => ipcRenderer.invoke('request-open-url-in-workspace', url, id); +export const requestRealignActiveWorkspace = () => ipcRenderer.invoke('request-realign-active-workspace'); +export const requestRemoveWorkspace = (id: string) => ipcRenderer.invoke('request-remove-workspace', id); +export const requestRemoveWorkspacePicture = (id: string) => ipcRenderer.invoke('request-remove-workspace-picture', id); +export const requestSetActiveWorkspace = (id: string) => ipcRenderer.invoke('request-set-active-workspace', id); +export const requestGetActiveWorkspace = () => ipcRenderer.invokeSync('request-get-active-workspace'); +export const requestSetWorkspace = (id: string, options: any) => ipcRenderer.invoke('request-set-workspace', id, options); +export const requestSetWorkspaces = (workspaces: any) => ipcRenderer.invoke('request-set-workspaces', workspaces); +export const requestSetWorkspacePicture = (id: string, picturePath: string) => ipcRenderer.invoke('request-set-workspace-picture', id, picturePath); +export const requestWakeUpWorkspace = (id: string) => ipcRenderer.invoke('request-wake-up-workspace', id); // eslint-disable-next-line sonarjs/no-duplicate-string -export const getIconPath = () => ipcRenderer.sendSync('get-constant', 'ICON_PATH'); -export const getReactPath = () => ipcRenderer.sendSync('get-constant', 'REACT_PATH'); -export const getDesktopPath = () => ipcRenderer.sendSync('get-constant', 'DESKTOP_PATH'); -export const getLogFolderPath = () => ipcRenderer.sendSync('get-constant', 'LOG_FOLDER'); -export const getIsDevelopment = () => ipcRenderer.sendSync('get-constant', 'isDev'); +export const getIconPath = () => ipcRenderer.invokeSync('get-constant', 'ICON_PATH'); +export const getReactPath = () => ipcRenderer.invokeSync('get-constant', 'REACT_PATH'); +export const getDesktopPath = () => ipcRenderer.invokeSync('get-constant', 'DESKTOP_PATH'); +export const getLogFolderPath = () => ipcRenderer.invokeSync('get-constant', 'LOG_FOLDER'); +export const getIsDevelopment = () => ipcRenderer.invokeSync('get-constant', 'isDev'); // call path -export const getBaseName = (pathString: string): string => ipcRenderer.sendSync('get-basename', pathString); -export const getDirectoryName = (pathString: string): string => ipcRenderer.sendSync('get-dirname', pathString); +export const getBaseName = (pathString: string): string => ipcRenderer.invokeSync('get-basename', pathString); +export const getDirectoryName = (pathString: string): string => ipcRenderer.invokeSync('get-dirname', pathString); // Workspace Meta -export const getWorkspaceMeta = (id: string) => ipcRenderer.sendSync('get-workspace-meta', id); -export const getWorkspaceMetas = () => ipcRenderer.sendSync('get-workspace-metas'); +export const getWorkspaceMeta = (id: string) => ipcRenderer.invokeSync('get-workspace-meta', id); +export const getWorkspaceMetas = () => ipcRenderer.invokeSync('get-workspace-metas'); // Workspace Git export const initWikiGit = (wikiFolderPath: string, githubRepoUrl: string, userInfo: Object, isMainWiki: boolean) => ipcRenderer.invoke('request-init-wiki-git', wikiFolderPath, githubRepoUrl, userInfo, isMainWiki); // Find In Page -export const requestFindInPage = (text: string, forward: boolean) => ipcRenderer.send('request-find-in-page', text, !!forward); -export const requestStopFindInPage = (close: boolean) => ipcRenderer.send('request-stop-find-in-page', !!close); +export const requestFindInPage = (text: string, forward: boolean) => ipcRenderer.invoke('request-find-in-page', text, !!forward); +export const requestStopFindInPage = (close: boolean) => ipcRenderer.invoke('request-stop-find-in-page', !!close); // Auth export const requestValidateAuthIdentity = (windowId: string, username: string, password: string) => - ipcRenderer.send('request-validate-auth-identity', windowId, username, password); + ipcRenderer.invoke('request-validate-auth-identity', windowId, username, password); // Native Theme -export const getShouldUseDarkColors = () => ipcRenderer.sendSync('get-should-use-dark-colors'); +export const getShouldUseDarkColors = () => ipcRenderer.invokeSync('get-should-use-dark-colors'); // Online Status -export const signalOnlineStatusChanged = (online: boolean) => ipcRenderer.send('online-status-changed', online); +export const signalOnlineStatusChanged = (online: boolean) => ipcRenderer.invoke('online-status-changed', online); diff --git a/src/services/constants/listeners.ts b/src/services/constants/listeners.ts index 5e8dff64..a289c5b4 100644 --- a/src/services/constants/listeners.ts +++ b/src/services/constants/listeners.ts @@ -9,9 +9,9 @@ ipcMain.handle( return pathConstants[key]; }, ); -ipcMain.on('get-basename', (event, pathString: string) => { +ipcMain.handle('get-basename', (event, pathString: string) => { event.returnValue = path.basename(pathString); }); -ipcMain.on('get-dirname', (event, pathString: string) => { +ipcMain.handle('get-dirname', (event, pathString: string) => { event.returnValue = path.dirname(pathString); }); diff --git a/src/services/libs/i18n/i18next-electron-fs-backend.ts b/src/services/libs/i18n/i18next-electron-fs-backend.ts index d8d3ef7f..ab229545 100644 --- a/src/services/libs/i18n/i18next-electron-fs-backend.ts +++ b/src/services/libs/i18n/i18next-electron-fs-backend.ts @@ -19,7 +19,7 @@ const preloadBindings = function (ipcRenderer: any) { send: (channel: any, data: any) => { const validChannels = [readFileRequest, writeFileRequest]; if (validChannels.includes(channel)) { - ipcRenderer.send(channel, data); + ipcRenderer.invoke(channel, data); } }, onReceive: (channel: any, function_: any) => { @@ -41,7 +41,7 @@ const preloadBindings = function (ipcRenderer: any) { // This is the code that will go into the main.js file // in order to set up the ipc main bindings const mainBindings = function (ipcMain: any, browserWindow: any) { - ipcMain.on(readFileRequest, (IpcMainEvent: any, arguments_: any) => { + ipcMain.handle(readFileRequest, (IpcMainEvent: any, arguments_: any) => { const localeFilePath = path.join(LOCALIZATION_FOLDER, arguments_.filename); fs.readFile(localeFilePath, 'utf8', (error: any, data: any) => { sendToAllWindows(readFileResponse, { @@ -52,7 +52,7 @@ const mainBindings = function (ipcMain: any, browserWindow: any) { }); }); - ipcMain.on(writeFileRequest, (IpcMainEvent: any, arguments_: any) => { + ipcMain.handle(writeFileRequest, (IpcMainEvent: any, arguments_: any) => { const localeFilePath = path.join(LOCALIZATION_FOLDER, arguments_.filename); const localeFileFolderPath = path.dirname(localeFilePath); // @ts-expect-error ts-migrate(2769) FIXME: No overload matches this call. diff --git a/src/services/listeners/index.ts b/src/services/listeners/index.ts index bfcf82d7..afd0e897 100755 --- a/src/services/listeners/index.ts +++ b/src/services/listeners/index.ts @@ -44,19 +44,19 @@ const loadListeners = () => { - ipcMain.on('request-wiki-open-tiddler', (event, tiddlerName) => { + ipcMain.handle('request-wiki-open-tiddler', (event, tiddlerName) => { const browserView = getActiveBrowserView(); if (browserView) { browserView.webContents.send('wiki-open-tiddler', tiddlerName); } }); - ipcMain.on('request-wiki-send-action-message', (event, actionMessage) => { + ipcMain.handle('request-wiki-send-action-message', (event, actionMessage) => { const browserView = getActiveBrowserView(); if (browserView) { browserView.webContents.send('wiki-send-action-message', actionMessage); } }); - ipcMain.on('request-open', (_, uri, isDirectory) => { + ipcMain.handle('request-open', (_, uri, isDirectory) => { if (isDirectory) { shell.showItemInFolder(uri); } else { @@ -64,14 +64,14 @@ const loadListeners = () => { } }); // Find In Page - ipcMain.on('request-find-in-page', (_, text, forward) => { + ipcMain.handle('request-find-in-page', (_, text, forward) => { // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'. const contents = mainWindow.get().getBrowserView().webContents; contents.findInPage(text, { forward, }); }); - ipcMain.on('request-stop-find-in-page', (_, close) => { + ipcMain.handle('request-stop-find-in-page', (_, close) => { const win = mainWindow.get(); // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'. const view = win.getBrowserView(); @@ -93,16 +93,16 @@ const loadListeners = () => { createWorkspaceView(name, isSubWiki, mainWikiToLink, port, homeUrl, gitUrl, picture, transparentBackground, tagName); createMenu(); }); - ipcMain.on('request-set-active-workspace', (_, id) => { + ipcMain.handle('request-set-active-workspace', (_, id) => { if (getWorkspace(id)) { setActiveWorkspaceView(id); createMenu(); } }); - ipcMain.on('request-get-active-workspace', (event) => { + ipcMain.handle('request-get-active-workspace', (event) => { event.returnValue = getActiveWorkspace(); }); - ipcMain.on('request-realign-active-workspace', () => { + ipcMain.handle('request-realign-active-workspace', () => { const { sidebar, titleBar, navigationBar } = getPreferences(); global.sidebar = sidebar; global.titleBar = titleBar; @@ -113,7 +113,7 @@ const loadListeners = () => { realignActiveWorkspaceView(); createMenu(); }); - ipcMain.on('request-open-url-in-workspace', (_, url, id) => { + ipcMain.handle('request-open-url-in-workspace', (_, url, id) => { if (id) { // if id is defined, switch to that workspace setActiveWorkspaceView(id); @@ -124,32 +124,32 @@ const loadListeners = () => { loadURL(url, activeWorkspace.id); } }); - ipcMain.on('request-wake-up-workspace', (_, id) => { + ipcMain.handle('request-wake-up-workspace', (_, id) => { wakeUpWorkspaceView(id); }); - ipcMain.on('request-hibernate-workspace', (_, id) => { + ipcMain.handle('request-hibernate-workspace', (_, id) => { hibernateWorkspaceView(id); }); - ipcMain.on('request-set-workspace', (_, id, options) => { + ipcMain.handle('request-set-workspace', (_, id, options) => { setWorkspaceView(id, options); createMenu(); }); - ipcMain.on('request-set-workspaces', (_, workspaces) => { + ipcMain.handle('request-set-workspaces', (_, workspaces) => { setWorkspaceViews(workspaces); createMenu(); }); - ipcMain.on('request-set-workspace-picture', (_, id, picturePath) => { + ipcMain.handle('request-set-workspace-picture', (_, id, picturePath) => { setWorkspacePicture(id, picturePath); }); - ipcMain.on('request-remove-workspace-picture', (_, id) => { + ipcMain.handle('request-remove-workspace-picture', (_, id) => { removeWorkspacePicture(id); }); - ipcMain.on('request-load-url', (_, url, id) => { + ipcMain.handle('request-load-url', (_, url, id) => { loadURL(url, id); }); - ipcMain.on('request-go-home', () => { + ipcMain.handle('request-go-home', () => { const win = mainWindow.get(); if (win !== undefined && win.getBrowserView() !== undefined) { // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'. @@ -161,7 +161,7 @@ const loadListeners = () => { (win as any).send('update-can-go-forward', contents.canGoForward()); } }); - ipcMain.on('request-go-back', () => { + ipcMain.handle('request-go-back', () => { const win = mainWindow.get(); if (win !== undefined && win.getBrowserView() !== undefined) { // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'. @@ -173,7 +173,7 @@ const loadListeners = () => { } } }); - ipcMain.on('request-go-forward', () => { + ipcMain.handle('request-go-forward', () => { const win = mainWindow.get(); if (win !== undefined && win.getBrowserView() !== undefined) { // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'. @@ -185,14 +185,14 @@ const loadListeners = () => { } } }); - ipcMain.on('request-reload', () => { + ipcMain.handle('request-reload', () => { const win = mainWindow.get(); if (win !== undefined) { // @ts-expect-error ts-migrate(2531) FIXME: Object is possibly 'null'. win.getBrowserView().webContents.reload(); } }); - ipcMain.on('request-show-message-box', (_, message, type) => { + ipcMain.handle('request-show-message-box', (_, message, type) => { dialog // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'BrowserWindow | undefined' is no... Remove this comment to see the full error message .showMessageBox(mainWindow.get(), { @@ -204,17 +204,17 @@ const loadListeners = () => { }) .catch(console.log); }); - ipcMain.on('create-menu', () => { + ipcMain.handle('create-menu', () => { createMenu(); }); - ipcMain.on('request-show-display-media-window', (e) => { + ipcMain.handle('request-show-display-media-window', (e) => { const viewId = (BrowserView as any).fromWebContents(e.sender).id; displayMediaWindow.show(viewId); }); - ipcMain.on('request-quit', () => { + ipcMain.handle('request-quit', () => { app.quit(); }); - ipcMain.on('request-check-for-updates', (e, isSilent) => { + ipcMain.handle('request-check-for-updates', (e, isSilent) => { // https://github.com/electron-userland/electron-builder/issues/4028 if (!autoUpdater.isUpdaterActive()) { return; @@ -260,19 +260,19 @@ const loadListeners = () => { autoUpdater.checkForUpdates(); }); // Native Theme - ipcMain.on('get-should-use-dark-colors', (event) => { + ipcMain.handle('get-should-use-dark-colors', (event) => { event.returnValue = nativeTheme.shouldUseDarkColors; }); - ipcMain.on('request-reload-views-dark-reader', () => { + ipcMain.handle('request-reload-views-dark-reader', () => { reloadViewsDarkReader(); }); // if global.forceNewWindow = true // the next external link request will be opened in new window - ipcMain.on('request-set-global-force-new-window', (_, value) => { + ipcMain.handle('request-set-global-force-new-window', (_, value) => { (global as any).forceNewWindow = value; }); // https://www.electronjs.org/docs/tutorial/online-offline-events - ipcMain.on('online-status-changed', (_, online) => { + ipcMain.handle('online-status-changed', (_, online) => { if (online) { reloadViewsWebContentsIfDidFailLoad(); } diff --git a/src/services/preferences.ts b/src/services/preferences.ts index 3c858424..240769d8 100755 --- a/src/services/preferences.ts +++ b/src/services/preferences.ts @@ -97,7 +97,7 @@ export class Preference { } init(): void { - ipcMain.on(PreferenceChannel.requestResetPreferences, () => { + ipcMain.handle(PreferenceChannel.requestResetPreferences, () => { const preferenceWindow = this.windowService.get(WindowNames.preferences); if (preferenceWindow !== undefined) { dialog @@ -116,7 +116,7 @@ export class Preference { .catch(console.error); } }); - ipcMain.on(PreferenceChannel.requestClearBrowsingData, () => { + ipcMain.handle(PreferenceChannel.requestClearBrowsingData, () => { const availableWindowToShowDialog = this.windowService.get(WindowNames.preferences) ?? this.windowService.get(WindowNames.main); if (availableWindowToShowDialog !== undefined) { dialog @@ -135,13 +135,13 @@ export class Preference { } }); - ipcMain.on(PreferenceChannel.getPreference, (event, name: keyof IPreferences) => { + ipcMain.handle(PreferenceChannel.getPreference, (event, name: keyof IPreferences) => { event.returnValue = this.get(name); }); - ipcMain.on(PreferenceChannel.getPreferences, (event) => { + ipcMain.handle(PreferenceChannel.getPreferences, (event) => { event.returnValue = this.cachedPreferences; }); - ipcMain.on(PreferenceChannel.requestSetPreference, (_: unknown, key: K, value: IPreferences[K]): void => { + ipcMain.handle(PreferenceChannel.requestSetPreference, (_: unknown, key: K, value: IPreferences[K]): void => { void this.set(key, value); }); } diff --git a/src/services/preload/common/require-nodejs.ts b/src/services/preload/common/require-nodejs.ts index fdd13dbd..3c7ba735 100644 --- a/src/services/preload/common/require-nodejs.ts +++ b/src/services/preload/common/require-nodejs.ts @@ -10,9 +10,9 @@ contextBridge.exposeInMainWorld('remote', { // @ts-expect-error ts-migrate(7019) FIXME: Rest parameter 'arguments_' implicitly has an 'any... Remove this comment to see the full error message invoke: (channel: any, ...arguments_) => ipcRenderer.invoke(channel, ...arguments_), // @ts-expect-error ts-migrate(7019) FIXME: Rest parameter 'arguments_' implicitly has an 'any... Remove this comment to see the full error message - send: (channel: any, ...arguments_) => ipcRenderer.send(channel, ...arguments_), + send: (channel: any, ...arguments_) => ipcRenderer.invoke(channel, ...arguments_), // @ts-expect-error ts-migrate(7019) FIXME: Rest parameter 'arguments_' implicitly has an 'any... Remove this comment to see the full error message - sendSync: (channel: any, ...arguments_) => ipcRenderer.sendSync(channel, ...arguments_), + sendSync: (channel: any, ...arguments_) => ipcRenderer.invokeSync(channel, ...arguments_), // @ts-expect-error ts-migrate(7019) FIXME: Rest parameter 'arguments_' implicitly has an 'any... Remove this comment to see the full error message removeListener: (channel: any, ...arguments_) => ipcRenderer.removeListener(channel, ...arguments_), // @ts-expect-error ts-migrate(7019) FIXME: Rest parameter 'arguments_' implicitly has an 'any... Remove this comment to see the full error message diff --git a/src/services/preload/view.ts b/src/services/preload/view.ts index 026363ed..d9a9a1dc 100644 --- a/src/services/preload/view.ts +++ b/src/services/preload/view.ts @@ -16,10 +16,10 @@ const handleLoaded = (event: string) => { // eslint-disable-next-line no-console console.log(`Preload script is loading on ${event}...`); const loadDarkReader = () => { - const shouldUseDarkColor = ipcRenderer.sendSync('get-should-use-dark-colors'); - const darkReader = ipcRenderer.sendSync('get-preference', 'darkReader'); + const shouldUseDarkColor = ipcRenderer.invokeSync('get-should-use-dark-colors'); + const darkReader = ipcRenderer.invokeSync('get-preference', 'darkReader'); if (shouldUseDarkColor && darkReader) { - const { darkReaderBrightness, darkReaderContrast, darkReaderGrayscale, darkReaderSepia } = ipcRenderer.sendSync('get-preferences'); + const { darkReaderBrightness, darkReaderContrast, darkReaderGrayscale, darkReaderSepia } = ipcRenderer.invokeSync('get-preferences'); enableDarkMode({ brightness: darkReaderBrightness, contrast: darkReaderContrast, @@ -34,9 +34,9 @@ const handleLoaded = (event: string) => { ipcRenderer.on('reload-dark-reader', () => { loadDarkReader(); }); - const jsCodeInjection = ipcRenderer.sendSync('get-preference', 'jsCodeInjection'); - const allowNodeInJsCodeInjection = ipcRenderer.sendSync('get-preference', 'allowNodeInJsCodeInjection'); - const cssCodeInjection = ipcRenderer.sendSync('get-preference', 'cssCodeInjection'); + const jsCodeInjection = ipcRenderer.invokeSync('get-preference', 'jsCodeInjection'); + const allowNodeInJsCodeInjection = ipcRenderer.invokeSync('get-preference', 'allowNodeInJsCodeInjection'); + const cssCodeInjection = ipcRenderer.invokeSync('get-preference', 'cssCodeInjection'); if (jsCodeInjection && jsCodeInjection.trim().length > 0) { if (allowNodeInJsCodeInjection) { try { @@ -80,7 +80,7 @@ const handleLoaded = (event: string) => { new MenuItem({ label: i18next.t('ContextMenu.OpenLinkInNewWindow'), click: () => { - ipcRenderer.send('request-set-global-force-new-window', true); + ipcRenderer.invoke('request-set-global-force-new-window', true); window.open(info.linkURL); }, }), @@ -122,16 +122,16 @@ const handleLoaded = (event: string) => { submenu: [ { label: i18next.t('ContextMenu.About'), - click: () => ipcRenderer.send('request-show-about-window'), + click: () => ipcRenderer.invoke('request-show-about-window'), }, { type: 'separator' }, { label: i18next.t('ContextMenu.CheckForUpdates'), - click: () => ipcRenderer.send('request-check-for-updates'), + click: () => ipcRenderer.invoke('request-check-for-updates'), }, { label: i18next.t('ContextMenu.Preferences'), - click: () => ipcRenderer.send('request-show-preferences-window'), + click: () => ipcRenderer.invoke('request-show-preferences-window'), }, { type: 'separator' }, { @@ -145,7 +145,7 @@ const handleLoaded = (event: string) => { { type: 'separator' }, { label: i18next.t('ContextMenu.Quit'), - click: () => ipcRenderer.send('request-quit'), + click: () => ipcRenderer.invoke('request-quit'), }, ], }), @@ -190,18 +190,18 @@ window.addEventListener('message', (e) => { return; } if (e.data.type === 'get-display-media-id') { - ipcRenderer.send('request-show-display-media-window'); + ipcRenderer.invoke('request-show-display-media-window'); } // set workspace to active when its notification is clicked if (e.data.type === 'focus-workspace') { - ipcRenderer.send('request-set-active-workspace', e.data.workspaceId); + ipcRenderer.invoke('request-set-active-workspace', e.data.workspaceId); } }); // Fix Can't show file list of Google Drive // https://github.com/electron/electron/issues/16587 // Fix chrome.runtime.sendMessage is undefined for FastMail // https://github.com/atomery/singlebox/issues/21 -const initialShouldPauseNotifications = ipcRenderer.sendSync('get-pause-notifications-info') != undefined; +const initialShouldPauseNotifications = ipcRenderer.invokeSync('get-pause-notifications-info') != undefined; // @ts-expect-error ts-migrate(2339) FIXME: Property 'workspaceId' does not exist on type 'Web... Remove this comment to see the full error message const { workspaceId } = remote.getCurrentWebContents(); webFrame.executeJavaScript(` diff --git a/src/services/preload/wiki-operation.ts b/src/services/preload/wiki-operation.ts index 5068807d..0a6c4b47 100644 --- a/src/services/preload/wiki-operation.ts +++ b/src/services/preload/wiki-operation.ts @@ -13,14 +13,14 @@ ipcRenderer.on('wiki-add-tiddler', async (event, title, text, meta) => { `); // wait for fs to be settle await (Promise as any).delay(1000); - ipcRenderer.send('wiki-add-tiddler-done'); + ipcRenderer.invoke('wiki-add-tiddler-done'); }); // get tiddler text ipcRenderer.on('wiki-get-tiddler-text', async (event, title) => { const tiddlerText = await webFrame.executeJavaScript(` $tw.wiki.getTiddlerText('${title}'); `); - ipcRenderer.send('wiki-get-tiddler-text-done', tiddlerText); + ipcRenderer.invoke('wiki-get-tiddler-text-done', tiddlerText); }); // add snackbar to notify user ipcRenderer.on('wiki-sync-progress', (event, message) => { diff --git a/src/services/systemPreferences.ts b/src/services/systemPreferences.ts index 57a0a709..a7efc80d 100644 --- a/src/services/systemPreferences.ts +++ b/src/services/systemPreferences.ts @@ -16,14 +16,14 @@ export class SystemPreference { } init(): void { - ipcMain.on('get-system-preference', (event, key: keyof IUsedElectionSettings) => { + ipcMain.handle('get-system-preference', (event, key: keyof IUsedElectionSettings) => { event.returnValue = this.get(key); }); - ipcMain.on('get-system-preferences', (event) => { + ipcMain.handle('get-system-preferences', (event) => { const preferences = this.getSystemPreferences(); event.returnValue = preferences; }); - ipcMain.on('request-set-system-preference', (_: unknown, key: K, value: IUsedElectionSettings[K]) => { + ipcMain.handle('request-set-system-preference', (_: unknown, key: K, value: IUsedElectionSettings[K]) => { this.setSystemPreference(key, value); }); } diff --git a/src/services/windows/auth.ts b/src/services/windows/auth.ts index 7bae4129..c7c41bc7 100644 --- a/src/services/windows/auth.ts +++ b/src/services/windows/auth.ts @@ -70,7 +70,7 @@ const create = (id: any) => { ipcMain.removeListener('request-validate-auth-identity', identityValidationListener); }); - ipcMain.on('request-validate-auth-identity', identityValidationListener); + ipcMain.handle('request-validate-auth-identity', identityValidationListener); }; const show = (id: any) => { diff --git a/src/services/windows/index.ts b/src/services/windows/index.ts index f5675655..94431cac 100644 --- a/src/services/windows/index.ts +++ b/src/services/windows/index.ts @@ -21,7 +21,7 @@ export class Window { } init(): void { - ipcMain.on(WindowChannel.requestShowRequireRestartDialog, () => { + ipcMain.handle(WindowChannel.requestShowRequireRestartDialog, () => { const availableWindowToShowDialog = this.get(WindowNames.preferences) ?? this.get(WindowNames.main); if (availableWindowToShowDialog !== undefined) { dialog @@ -42,34 +42,34 @@ export class Window { } }); - ipcMain.on(WindowChannel.requestShowCodeInjectionWindow, (_, codeInjectionType: string) => { + ipcMain.handle(WindowChannel.requestShowCodeInjectionWindow, (_, codeInjectionType: string) => { // FIXME: make codeInjectionType enum, and find places use this codeInjectionType void this.open(WindowNames.codeInjection, { codeInjectionType }); }); - ipcMain.on(WindowChannel.requestShowCustomUserAgentWindow, () => { + ipcMain.handle(WindowChannel.requestShowCustomUserAgentWindow, () => { void this.open(WindowNames.userAgent); }); - ipcMain.on(WindowChannel.requestShowAboutWindow, () => { + ipcMain.handle(WindowChannel.requestShowAboutWindow, () => { void this.open(WindowNames.about); }); - ipcMain.on(WindowChannel.requestShowPreferencesWindow, (_, scrollTo: string) => { + ipcMain.handle(WindowChannel.requestShowPreferencesWindow, (_, scrollTo: string) => { // FIXME: make scrollTo enum, and find places use this scrollTo void this.open(WindowNames.preferences, { scrollTo }); }); - ipcMain.on(WindowChannel.requestShowEditWorkspaceWindow, (_, workspaceID: string) => { + ipcMain.handle(WindowChannel.requestShowEditWorkspaceWindow, (_, workspaceID: string) => { void this.open(WindowNames.editWorkspace, { workspaceID }); }); - ipcMain.on(WindowChannel.requestShowAddWorkspaceWindow, () => { + ipcMain.handle(WindowChannel.requestShowAddWorkspaceWindow, () => { void this.open(WindowNames.addWorkspace); }); - ipcMain.on(WindowChannel.requestShowNotificationsWindow, () => { + ipcMain.handle(WindowChannel.requestShowNotificationsWindow, () => { void this.open(WindowNames.notification); }); - ipcMain.on(WindowChannel.requestShowProxyWindow, () => { + ipcMain.handle(WindowChannel.requestShowProxyWindow, () => { void this.open(WindowNames.proxy); }); - ipcMain.on(WindowChannel.requestShowSpellcheckLanguagesWindow, () => { + ipcMain.handle(WindowChannel.requestShowSpellcheckLanguagesWindow, () => { void this.open(WindowNames.spellcheck); }); } diff --git a/src/services/workspaces.ts b/src/services/workspaces.ts index 464dc55a..f32772d0 100644 --- a/src/services/workspaces.ts +++ b/src/services/workspaces.ts @@ -39,20 +39,20 @@ export class Workspace { init(): void { // Workspace Metas - ipcMain.on('get-workspace-meta', (event, id) => { + ipcMain.handle('get-workspace-meta', (event, id) => { event.returnValue = this.getMetaData(id); }); - ipcMain.on('get-workspace-metas', (event) => { + ipcMain.handle('get-workspace-metas', (event) => { event.returnValue = this.getAllMetaData(); }); // Workspaces - ipcMain.on('count-workspace', (event) => { + ipcMain.handle('count-workspace', (event) => { event.returnValue = this.countWorkspaces(); }); - ipcMain.on('get-workspace', (event, id) => { + ipcMain.handle('get-workspace', (event, id) => { event.returnValue = this.get(id); }); - ipcMain.on('get-workspaces', (event) => { + ipcMain.handle('get-workspaces', (event) => { event.returnValue = this.getWorkspaces(); }); }