Skip to content

Commit 144a77d

Browse files
committed
fix(stage-tamagotchi): missing register of widgets for chat window
1 parent b4a1015 commit 144a77d

File tree

3 files changed

+46
-2
lines changed

3 files changed

+46
-2
lines changed

apps/stage-tamagotchi/src/main/index.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,14 +126,19 @@ app.whenReady().then(async () => {
126126
injeca.setLogger(createLoggLogger(useLogg('injeca').useGlobalConfig()))
127127

128128
const channelServerModule = injeca.provide('modules:channel-server', async () => setupChannelServer())
129-
const chatWindow = injeca.provide('windows:chat', { build: () => setupChatWindowReusableFunc() })
130129
const widgetsManager = injeca.provide('windows:widgets', { build: () => setupWidgetsWindowManager() })
131130
const noticeWindow = injeca.provide('windows:notice', { build: () => setupNoticeWindowManager() })
132131

133132
// BeatSync will create a background window to capture and process audio.
134133
const beatSync = injeca.provide('windows:beat-sync', {
135134
build: () => setupBeatSync(),
136135
})
136+
137+
const chatWindow = injeca.provide('windows:chat', {
138+
dependsOn: { widgetsManager },
139+
build: ({ dependsOn }) => setupChatWindowReusableFunc(dependsOn),
140+
})
141+
137142
const settingsWindow = injeca.provide('windows:settings', {
138143
dependsOn: { widgetsManager, beatSync },
139144
build: async ({ dependsOn }) => async () => {

apps/stage-tamagotchi/src/main/windows/chat/index.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import type { WidgetsWindowManager } from '../widgets'
2+
13
import { join, resolve } from 'node:path'
24

35
import { BrowserWindow, shell } from 'electron'
@@ -6,8 +8,11 @@ import icon from '../../../../resources/icon.png?asset'
68

79
import { baseUrl, getElectronMainDirname, load, withHashRoute } from '../../libs/electron/location'
810
import { createReusableWindow } from '../../libs/electron/window-manager'
11+
import { setupChatWindowElectronInvokes } from './rpc/index.electron'
912

10-
export function setupChatWindowReusableFunc() {
13+
export function setupChatWindowReusableFunc(params: {
14+
widgetsManager: WidgetsWindowManager
15+
}) {
1116
return createReusableWindow(async () => {
1217
const window = new BrowserWindow({
1318
title: 'Chat',
@@ -29,6 +34,11 @@ export function setupChatWindowReusableFunc() {
2934

3035
await load(window, withHashRoute(baseUrl(resolve(getElectronMainDirname(), '..', 'renderer')), '/chat'))
3136

37+
setupChatWindowElectronInvokes({
38+
window,
39+
widgetsManager: params.widgetsManager,
40+
})
41+
3242
return window
3343
}).getWindow
3444
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import type { BrowserWindow } from 'electron'
2+
3+
import type { WidgetsWindowManager } from '../../widgets'
4+
5+
import { defineInvokeHandler } from '@moeru/eventa'
6+
import { createContext } from '@moeru/eventa/adapters/electron/main'
7+
import { ipcMain } from 'electron'
8+
9+
import { electronOpenMainDevtools } from '../../../../shared/eventa'
10+
import { createWidgetsService } from '../../../services/airi/widgets'
11+
import { createScreenService, createWindowService } from '../../../services/electron'
12+
13+
export function setupChatWindowElectronInvokes(params: {
14+
window: BrowserWindow
15+
widgetsManager: WidgetsWindowManager
16+
}) {
17+
// TODO: once we refactored eventa to support window-namespaced contexts,
18+
// we can remove the setMaxListeners call below since eventa will be able to dispatch and
19+
// manage events within eventa's context system.
20+
ipcMain.setMaxListeners(0)
21+
22+
const { context } = createContext(ipcMain, params.window)
23+
24+
createScreenService({ context, window: params.window })
25+
createWindowService({ context, window: params.window })
26+
createWidgetsService({ context, widgetsManager: params.widgetsManager, window: params.window })
27+
28+
defineInvokeHandler(context, electronOpenMainDevtools, () => params.window.webContents.openDevTools({ mode: 'detach' }))
29+
}

0 commit comments

Comments
 (0)