diff --git a/apps/stage-tamagotchi/src/main/services/airi/widgets/index.ts b/apps/stage-tamagotchi/src/main/services/airi/widgets/index.ts index 60a3c7816..886202f2a 100644 --- a/apps/stage-tamagotchi/src/main/services/airi/widgets/index.ts +++ b/apps/stage-tamagotchi/src/main/services/airi/widgets/index.ts @@ -57,68 +57,72 @@ function isFromWindow(options: InvokeOptions | undefined, window: BrowserWindow) * -> {@link WidgetsWindowManager.pushWidget} */ export function createWidgetsService(params: { context: ReturnType['context'], widgetsManager: WidgetsWindowManager, window: BrowserWindow }) { - defineInvokeHandlers(params.context, { - widgetsPrepareWindow, - widgetsOpenWindow, - widgetsHideWindow, - widgetsAdd, - widgetsUpdate, - widgetsRemove, - widgetsClear, - widgetsFetch, - widgetsIframePublish, - }, { - widgetsPrepareWindow: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - const id = normalizeOptionalWidgetId(payload?.id) - return params.widgetsManager.prepareWidgetWindow(id ? { id } : undefined) + defineInvokeHandlers( + params.context, + { + widgetsPrepareWindow, + widgetsOpenWindow, + widgetsHideWindow, + widgetsAdd, + widgetsUpdate, + widgetsRemove, + widgetsClear, + widgetsFetch, + widgetsIframePublish, }, - widgetsOpenWindow: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - const id = normalizeOptionalWidgetId(payload?.id) - return params.widgetsManager.openWindow(id ? { id } : undefined) + { + widgetsPrepareWindow: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + const id = normalizeOptionalWidgetId(payload?.id) + return params.widgetsManager.prepareWidgetWindow(id ? { id } : undefined) + }, + widgetsOpenWindow: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + const id = normalizeOptionalWidgetId(payload?.id) + return params.widgetsManager.openWindow(id ? { id } : undefined) + }, + widgetsHideWindow: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + return params.widgetsManager!.hideWindow(payload ?? undefined) + }, + widgetsAdd: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + return params.widgetsManager.pushWidget(validateWidgetsAddPayload(payload)) + }, + widgetsUpdate: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + return params.widgetsManager.updateWidget(validateWidgetsUpdatePayload(payload)) + }, + widgetsRemove: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + return params.widgetsManager.removeWidget( + normalizeRequiredWidgetId(payload?.id, 'id is required to remove a widget.'), + ) + }, + widgetsClear: async (_payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + return params.widgetsManager.clearWidgets() + }, + widgetsFetch: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + return params.widgetsManager.getWidgetSnapshot( + normalizeRequiredWidgetId(payload?.id, 'id is required to fetch a widget snapshot.'), + ) + }, + widgetsIframePublish: async (payload, options) => { + if (!isFromWindow(options as InvokeOptions, params.window)) + return undefined + const id = normalizeRequiredWidgetId(payload?.id, 'id is required to publish a widget iframe event.') + params.widgetsManager.publishWidgetEvent(id, validateWidgetIframeEvent(payload?.event)) + }, }, - widgetsHideWindow: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - return params.widgetsManager!.hideWindow(payload ?? undefined) - }, - widgetsAdd: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - return params.widgetsManager.pushWidget(validateWidgetsAddPayload(payload)) - }, - widgetsUpdate: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - return params.widgetsManager.updateWidget(validateWidgetsUpdatePayload(payload)) - }, - widgetsRemove: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - return params.widgetsManager.removeWidget( - normalizeRequiredWidgetId(payload?.id, 'id is required to remove a widget.'), - ) - }, - widgetsClear: async (_payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - return params.widgetsManager.clearWidgets() - }, - widgetsFetch: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - return params.widgetsManager.getWidgetSnapshot( - normalizeRequiredWidgetId(payload?.id, 'id is required to fetch a widget snapshot.'), - ) - }, - widgetsIframePublish: async (payload, options) => { - if (!isFromWindow(options as InvokeOptions, params.window)) - return undefined - const id = normalizeRequiredWidgetId(payload?.id, 'id is required to publish a widget iframe event.') - params.widgetsManager.publishWidgetEvent(id, validateWidgetIframeEvent(payload?.event)) - }, - }) + ) } diff --git a/apps/stage-tamagotchi/src/renderer/pages/widgets.vue b/apps/stage-tamagotchi/src/renderer/pages/widgets.vue index f0d918b8f..0ac30427e 100644 --- a/apps/stage-tamagotchi/src/renderer/pages/widgets.vue +++ b/apps/stage-tamagotchi/src/renderer/pages/widgets.vue @@ -256,7 +256,7 @@ async function toggleAlwaysOnTop() { >
@@ -270,7 +270,7 @@ async function toggleAlwaysOnTop() { :aria-label="t('tamagotchi.stage.widgets.close')" @click="handleClose" > - x + ×