Skip to content

Commit 04e8b21

Browse files
committed
feat(stage-tamagotchi): events and invoke handlers for beat-detector in beat-sync preload
1 parent 63a8430 commit 04e8b21

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed
Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,31 @@
1-
// eslint-disable-next-line no-console
2-
console.log('beat-sync preload')
1+
import { electronAPI } from '@electron-toolkit/preload'
2+
import { defineInvoke, defineInvokeHandler } from '@moeru/eventa'
3+
import { createContext } from '@moeru/eventa/adapters/electron/renderer'
4+
import { createDetector, StageEnvironment } from '@proj-airi/stage-shared'
5+
import { ipcRenderer } from 'electron'
6+
7+
import { beatSyncSignalBeat, beatSyncToggle } from '../shared/eventa'
8+
9+
const context = createContext(electronAPI.ipcRenderer).context
10+
const signalBeat = defineInvoke(context, beatSyncSignalBeat)
11+
12+
const detector = createDetector({
13+
env: StageEnvironment.Tamagotchi,
14+
enableLoopbackAudio() {
15+
return ipcRenderer.invoke('enable-loopback-audio')
16+
},
17+
disableLoopbackAudio() {
18+
return ipcRenderer.invoke('disable-loopback-audio')
19+
},
20+
})
21+
22+
detector.on('beat', () => signalBeat())
23+
24+
defineInvokeHandler(context, beatSyncToggle, async (enabled) => {
25+
if (enabled) {
26+
detector.startScreenCapture()
27+
}
28+
else {
29+
detector.stop()
30+
}
31+
})

apps/stage-tamagotchi/src/shared/eventa.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,7 @@ export const widgetsRemoveEvent = defineEventa<{ id: string }>('eventa:event:ele
7171
export const widgetsClearEvent = defineEventa('eventa:event:electron:windows:widgets:clear')
7272
export const widgetsUpdateEvent = defineEventa<{ id: string, componentProps?: Record<string, any> }>('eventa:event:electron:windows:widgets:update')
7373

74+
export const beatSyncToggle = defineInvokeEventa<void, boolean>('eventa:event:electron:beat-sync:toggle')
75+
export const beatSyncSignalBeat = defineInvokeEventa<void, void>('eventa:event:electron:beat-sync:signal-beat')
76+
7477
export { electron } from './electron'

apps/stage-tamagotchi/tsconfig.preload.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"src/preload/**/*.ts",
2828
"src/preload/**/*.d.ts",
2929
"src/preload/**/*.tsx",
30-
"src/preload/**/*.vue"
30+
"src/preload/**/*.vue",
31+
"src/shared/**/*.ts"
3132
]
3233
}

0 commit comments

Comments
 (0)