fix(stage-tamagotchi): incorrect unicode used

This commit is contained in:
Neko Ayaka
2026-06-20 00:43:41 +08:00
parent 911572fe80
commit 92178b9598
2 changed files with 68 additions and 64 deletions
@@ -57,68 +57,72 @@ function isFromWindow(options: InvokeOptions | undefined, window: BrowserWindow)
* -> {@link WidgetsWindowManager.pushWidget}
*/
export function createWidgetsService(params: { context: ReturnType<typeof createContext>['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))
},
})
)
}
@@ -256,7 +256,7 @@ async function toggleAlwaysOnTop() {
>
<div
:class="[
'size-4',
'size-3',
widget.alwaysOnTop ? 'i-solar:pin-bold' : 'i-solar:pin-linear opacity-80',
]"
/>
@@ -270,7 +270,7 @@ async function toggleAlwaysOnTop() {
:aria-label="t('tamagotchi.stage.widgets.close')"
@click="handleClose"
>
x
<span class="size-6">×</span>
</button>
</div>
<div v-if="!widgetId" :class="['h-full flex items-center justify-center p-6']">