Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions packages/insomnia/src/entry.plugin-window-preload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ window.app = {
// Bridge plugin UI calls to the main renderer window via IPC.
// The plugin window has no visible DOM; these methods forward to the main renderer.
window.showAlert = (options?: Record<string, any>) => {
ipcRenderer.send('plugin-ui-alert', options ?? {});
ipcRenderer.send('plugins.uiAlert', options ?? {});
};

window.showWrapper = (options?: Record<string, any>) => {
ipcRenderer.send('plugin-ui-dialog', options ?? {});
ipcRenderer.send('plugins.uiDialog', options ?? {});
};

window.showPrompt = (options?: Record<string, any>) => {
const { onComplete, onHide, ...serializableOptions } = options ?? {};
ipcRenderer.invoke('plugin-ui-prompt', serializableOptions).then((value: string | null) => {
ipcRenderer.invoke('plugins.uiPrompt', serializableOptions).then((value: string | null) => {
if (value !== null && value !== undefined) {
onComplete?.(value);
}
Expand Down
4 changes: 2 additions & 2 deletions packages/insomnia/src/entry.plugin-window.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { ipcRenderer } from 'electron';

import { initDatabase, initServices } from '~/insomnia-data';
import { servicesNodeImpl } from '~/insomnia-data/node';

import { pluginWindowDatabase } from './main/database.plugin-window';
import { invokePluginMethod } from './plugins/invoke-method';
import { servicesProxy } from './ui/renderer-services-proxy';

interface PluginInvokeMessage {
id: string;
Expand All @@ -28,7 +28,7 @@ ipcRenderer.on('plugin-invoke', async (_event, { id, method, args }: PluginInvok
(async () => {
try {
await initDatabase(pluginWindowDatabase);
initServices(servicesNodeImpl);
initServices(servicesProxy);
ipcRenderer.send('plugin-window-ready');
} catch (err) {
console.error('[plugin-window] Initialization failed:', err);
Expand Down
5 changes: 3 additions & 2 deletions packages/insomnia/src/entry.preload.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import type {
ApplyResponseHooksArgs,
ExecutePluginActionArgs,
ExecutePluginMainActionArgs,
PluginBridgeMetrics,
PluginsBridgeAPI,
RunTemplateTagActionArgs,
} from './plugins/bridge-types';
Expand Down Expand Up @@ -379,10 +380,10 @@ const main: Window['main'] = {
hasResponseHooks: () => invokePluginBridgeMethod('hasResponseHooks'),
applyRequestHooks: (args: ApplyRequestHooksArgs) => invokePluginBridgeMethod('applyRequestHooks', args),
applyResponseHooks: (args: ApplyResponseHooksArgs) => invokePluginBridgeMethod('applyResponseHooks', args),
getBridgeMetrics: () => invokeWithNormalizedError('plugins.getBridgeMetrics'),
getBridgeMetrics: () => ipcRenderer.invoke('plugins.getBridgeMetrics') as Promise<PluginBridgeMetrics>,
},
notifyPluginPromptResult: (id: string, value: string | null) =>
ipcRenderer.send('plugin-ui-prompt-result', { id, value }),
ipcRenderer.send('plugins.uiPromptResult', { id, value }),
};

ipcRenderer.on('hidden-browser-window-response-listener', event => {
Expand Down
10 changes: 5 additions & 5 deletions packages/insomnia/src/main/ipc/electron.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ export type HandleChannels =
| 'plugins.getThemes'
| 'plugins.getWorkspaceActions'
| 'plugins.reloadPlugins'
| 'plugin-ui-prompt'
| 'plugins.uiPrompt'
| 'openPath'
| 'parseImport'
| 'readCurlResponse'
Expand Down Expand Up @@ -217,15 +217,15 @@ export type MainOnChannels =
| 'sync.cancelConflict'
| 'sync.resolveConflict'
| 'mcp.sendMCPRequest'
| 'plugin-ui-prompt-result'
| 'plugins.uiPromptResult'
| 'writeText';

export type RendererOnChannels =
| 'contextMenuCommand'
| 'db.changes'
| 'plugin-ui-alert'
| 'plugin-ui-dialog'
| 'plugin-ui-prompt'
| 'plugins.uiAlert'
| 'plugins.uiDialog'
| 'plugins.uiPrompt'
| 'grpc.data'
| 'grpc.end'
| 'grpc.error'
Expand Down
18 changes: 11 additions & 7 deletions packages/insomnia/src/main/plugin-window.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,21 +88,21 @@ function ensureIpcListeners() {
console.log(`[plugin-bridge] window_ready startup_ms=${startupMs}`);
});

ipcMain.on('plugin-ui-alert', (event, options: Record<string, unknown>) => {
ipcMain.on('plugins.uiAlert', (event, options: Record<string, unknown>) => {
if (event.sender !== pluginWindow?.webContents) {
return;
}
getMainWindow()?.webContents.send('plugin-ui-alert', options);
getMainWindow()?.webContents.send('plugins.uiAlert', options);
});

ipcMain.on('plugin-ui-dialog', (event, options: Record<string, unknown>) => {
ipcMain.on('plugins.uiDialog', (event, options: Record<string, unknown>) => {
if (event.sender !== pluginWindow?.webContents) {
return;
}
getMainWindow()?.webContents.send('plugin-ui-dialog', options);
getMainWindow()?.webContents.send('plugins.uiDialog', options);
});

ipcMain.handle('plugin-ui-prompt', async (event, options: Record<string, unknown>) => {
ipcMain.handle('plugins.uiPrompt', async (event, options: Record<string, unknown>) => {
if (event.sender !== pluginWindow?.webContents) {
return null;
}
Expand All @@ -120,11 +120,15 @@ function ensureIpcListeners() {
clearTimeout(timeout);
resolve(value);
});
mainWindow.webContents.send('plugin-ui-prompt', id, options);
mainWindow.webContents.send('plugins.uiPrompt', id, options);
});
});

ipcMain.on('plugin-ui-prompt-result', (_event, { id, value }: { id: string; value: string | null }) => {
ipcMain.on('plugins.uiPromptResult', (event, { id, value }: { id: string; value: string | null }) => {
const mainWindow = getMainWindow();
if (!mainWindow || event.sender !== mainWindow.webContents) {
return;
}
const resolve = promptPendingRequests.get(id);
if (!resolve) {
return;
Expand Down
5 changes: 2 additions & 3 deletions packages/insomnia/src/root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import { useLatest } from 'react-use';
import { EXTERNAL_VAULT_PLUGIN_NAME, isDevelopment } from '~/common/constants';
import type { Settings, UserSession } from '~/insomnia-data';
import { models, services } from '~/insomnia-data';
import { executePluginMainAction } from '~/plugins';
import { createPlugin } from '~/plugins/create';
import { setTheme } from '~/plugins/misc';
import { plugins } from '~/plugins/renderer-bridge';
Expand Down Expand Up @@ -544,11 +543,11 @@ const Root = () => {
if (urlWithoutParams === 'insomnia://oauth/azure/authenticate') {
const { code, ...restParams } = params;
if (code && typeof code === 'string') {
const authResult = await executePluginMainAction({
const authResult = await plugins.executePluginMainAction({
pluginName: EXTERNAL_VAULT_PLUGIN_NAME,
actionName: 'exchangeCode',
params: { provider: 'azure', code },
});
}) as any;
const { success, result, error } = authResult;
if (success) {
const { account, uniqueId } = result!;
Expand Down
6 changes: 3 additions & 3 deletions packages/insomnia/src/ui/renderer-listeners.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ window.main.on('show-toast', (_, options: { content: RAToastContent; options?: {
showToast(options.content, options.options);
});

window.main.on('plugin-ui-alert', (_, options: Record<string, any>) => {
window.main.on('plugins.uiAlert', (_, options: Record<string, any>) => {
window.showAlert?.(options);
});

window.main.on('plugin-ui-dialog', (_, options: Record<string, any>) => {
window.main.on('plugins.uiDialog', (_, options: Record<string, any>) => {
window.showWrapper?.(options);
});

window.main.on('plugin-ui-prompt', (_, id: string, options: Record<string, any>) => {
window.main.on('plugins.uiPrompt', (_, id: string, options: Record<string, any>) => {
window.showPrompt?.({
...options,
onComplete: (value: string) => {
Expand Down
Loading