fix(stage-tamagotchi): move beat-sync code from preload to renderer
This commit is contained in:
@@ -1,42 +1,3 @@
|
||||
import { electronAPI } from '@electron-toolkit/preload'
|
||||
import { defineInvoke, defineInvokeHandler } from '@moeru/eventa'
|
||||
import { createContext } from '@moeru/eventa/adapters/electron/renderer'
|
||||
import { createDetector, StageEnvironment } from '@proj-airi/stage-shared'
|
||||
import { ipcRenderer } from 'electron'
|
||||
import { expose } from './shared'
|
||||
|
||||
import { beatSyncSignalBeat, beatSyncToggle } from '../shared/eventa'
|
||||
import { exposeWithCustomAPI } from './shared'
|
||||
|
||||
const context = createContext(electronAPI.ipcRenderer).context
|
||||
const signalBeat = defineInvoke(context, beatSyncSignalBeat)
|
||||
|
||||
function enableLoopbackAudio() {
|
||||
return ipcRenderer.invoke('enable-loopback-audio')
|
||||
}
|
||||
|
||||
function disableLoopbackAudio() {
|
||||
return ipcRenderer.invoke('disable-loopback-audio')
|
||||
}
|
||||
|
||||
const detector = createDetector({
|
||||
env: StageEnvironment.Tamagotchi,
|
||||
enableLoopbackAudio,
|
||||
disableLoopbackAudio,
|
||||
})
|
||||
|
||||
detector.on('beat', () => signalBeat())
|
||||
|
||||
defineInvokeHandler(context, beatSyncToggle, async (enabled) => {
|
||||
if (enabled) {
|
||||
detector.startScreenCapture()
|
||||
}
|
||||
else {
|
||||
detector.stop()
|
||||
}
|
||||
})
|
||||
|
||||
exposeWithCustomAPI({
|
||||
enableLoopbackAudio,
|
||||
disableLoopbackAudio,
|
||||
detector,
|
||||
})
|
||||
expose()
|
||||
|
||||
@@ -27,5 +27,6 @@
|
||||
|
||||
<body>
|
||||
<div class="center">Open the DevTools to troubleshoot BeatSync</div>
|
||||
<script type="module" src="/beat-sync.main.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
import { defineInvoke, defineInvokeHandler } from '@moeru/eventa'
|
||||
import { createContext } from '@moeru/eventa/adapters/electron/renderer'
|
||||
import { createDetector, StageEnvironment } from '@proj-airi/stage-shared'
|
||||
|
||||
import { beatSyncSignalBeat, beatSyncToggle } from '../shared/eventa'
|
||||
|
||||
const { ipcRenderer } = window.electron
|
||||
|
||||
const context = createContext(ipcRenderer).context
|
||||
const signalBeat = defineInvoke(context, beatSyncSignalBeat)
|
||||
|
||||
function enableLoopbackAudio() {
|
||||
// electron-audio-loopback currently registers this handler internally
|
||||
return ipcRenderer.invoke('enable-loopback-audio')
|
||||
}
|
||||
|
||||
function disableLoopbackAudio() {
|
||||
// electron-audio-loopback currently registers this handler internally
|
||||
return ipcRenderer.invoke('disable-loopback-audio')
|
||||
}
|
||||
|
||||
const detector = createDetector({
|
||||
env: StageEnvironment.Tamagotchi,
|
||||
enableLoopbackAudio,
|
||||
disableLoopbackAudio,
|
||||
})
|
||||
|
||||
detector.on('beat', () => signalBeat())
|
||||
|
||||
defineInvokeHandler(context, beatSyncToggle, async (enabled) => {
|
||||
if (enabled) {
|
||||
detector.startScreenCapture()
|
||||
}
|
||||
else {
|
||||
detector.stop()
|
||||
}
|
||||
})
|
||||
|
||||
detector.startScreenCapture()
|
||||
Reference in New Issue
Block a user