refactor(stage-tamagotchi): re-structure under misc
This commit is contained in:
@@ -1,21 +1,5 @@
|
||||
import type { createContext } from '@unbird/eventa/adapters/electron/main'
|
||||
|
||||
import { defineInvokeHandler } from '@unbird/eventa'
|
||||
import { screen } from 'electron'
|
||||
export function createFadeOnHoverService(_context: ReturnType<typeof createContext>['context']) {
|
||||
|
||||
import { electronCursorPoint, electronStartTrackingCursorPoint } from '../../../shared/eventa'
|
||||
import { onAppBeforeQuit, onAppWindowAllClosed } from '../../libs/bootkit/lifecycle'
|
||||
import { useLoop } from '../../libs/event-loop'
|
||||
|
||||
export function createFadeOnHoverService(context: ReturnType<typeof createContext>['context']) {
|
||||
const { start, stop } = useLoop(() => {
|
||||
const dipPos = screen.getCursorScreenPoint()
|
||||
context.emit(electronCursorPoint, dipPos)
|
||||
}, {
|
||||
autoStart: false,
|
||||
})
|
||||
|
||||
onAppWindowAllClosed(() => stop())
|
||||
onAppBeforeQuit(() => stop())
|
||||
defineInvokeHandler(context, electronStartTrackingCursorPoint, () => start())
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import type { createContext } from '@unbird/eventa/adapters/electron/main'
|
||||
|
||||
import { defineInvokeHandler } from '@unbird/eventa'
|
||||
import { screen } from 'electron'
|
||||
|
||||
import { electronMousePosition, electronStartTrackMousePosition } from '../../../shared/eventa'
|
||||
import { onAppBeforeQuit, onAppWindowAllClosed } from '../../libs/bootkit/lifecycle'
|
||||
import { useLoop } from '../../libs/event-loop'
|
||||
|
||||
export function createMouseService(context: ReturnType<typeof createContext>['context']) {
|
||||
const { start, stop } = useLoop(() => {
|
||||
const dipPos = screen.getCursorScreenPoint()
|
||||
context.emit(electronMousePosition, dipPos)
|
||||
}, {
|
||||
autoStart: false,
|
||||
})
|
||||
|
||||
onAppWindowAllClosed(() => stop())
|
||||
onAppBeforeQuit(() => stop())
|
||||
defineInvokeHandler(context, electronStartTrackMousePosition, () => start())
|
||||
}
|
||||
@@ -6,12 +6,14 @@ import { ipcMain } from 'electron'
|
||||
|
||||
import { electronOpenMainDevtools, electronOpenSettings } from '../../../../shared/eventa'
|
||||
import { createFadeOnHoverService } from '../../../services/fade-on-hover'
|
||||
import { createMouseService } from '../../../services/misc/mouse'
|
||||
import { toggleWindowShow } from '../../shared'
|
||||
|
||||
export function setupMainWindowElectronInvokes(params: { window: BrowserWindow, settingsWindow: () => Promise<BrowserWindow> }) {
|
||||
const { context } = createContext(ipcMain, params.window)
|
||||
|
||||
createFadeOnHoverService(context)
|
||||
createMouseService(context)
|
||||
defineInvokeHandler(context, electronOpenMainDevtools, () => params.window.webContents.openDevTools({ mode: 'detach' }))
|
||||
defineInvokeHandler(context, electronOpenSettings, async () => toggleWindowShow(await params.settingsWindow()))
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import { onMounted, watch } from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
import { RouterView, useRouter } from 'vue-router'
|
||||
|
||||
import { electronOpenSettings, electronStartTrackingCursorPoint } from '../shared/eventa'
|
||||
import { electronOpenSettings, electronStartTrackMousePosition } from '../shared/eventa'
|
||||
import { useWindowMode } from './stores/window-controls'
|
||||
|
||||
useWindowMode()
|
||||
@@ -32,7 +32,7 @@ onMounted(async () => {
|
||||
await settingsStore.initializeStageModel()
|
||||
|
||||
const { context } = createContext(window.electron.ipcRenderer)
|
||||
const startTrackingCursorPoint = defineInvoke(context, electronStartTrackingCursorPoint)
|
||||
const startTrackingCursorPoint = defineInvoke(context, electronStartTrackMousePosition)
|
||||
await startTrackingCursorPoint()
|
||||
|
||||
// Listen for open-settings IPC message from main process
|
||||
|
||||
@@ -3,7 +3,7 @@ import { createContext } from '@unbird/eventa/adapters/electron/renderer'
|
||||
import { useMouse } from '@vueuse/core'
|
||||
import { ref } from 'vue'
|
||||
|
||||
import { electronCursorPoint, electronStartTrackingCursorPoint } from '../../shared/eventa'
|
||||
import { electronMousePosition, electronStartTrackMousePosition } from '../../shared/eventa'
|
||||
|
||||
export function useWindowMouse(options?: { x: number, y: number }) {
|
||||
const eventTarget = useElectronMouseEventTarget()
|
||||
@@ -14,11 +14,11 @@ export function useElectronMouseEventTarget() {
|
||||
const context = ref(createContext(window.electron.ipcRenderer).context)
|
||||
const eventTarget = ref(new EventTarget())
|
||||
|
||||
context.value.on(electronCursorPoint, (event) => {
|
||||
context.value.on(electronMousePosition, (event) => {
|
||||
const e = new MouseEvent('mousemove', { screenX: event.body?.x, screenY: event.body?.y })
|
||||
eventTarget.value.dispatchEvent(e)
|
||||
})
|
||||
|
||||
defineInvoke(context.value!, electronStartTrackingCursorPoint)()
|
||||
defineInvoke(context.value!, electronStartTrackMousePosition)()
|
||||
return eventTarget
|
||||
}
|
||||
|
||||
@@ -13,8 +13,8 @@ interface Point {
|
||||
y: number
|
||||
}
|
||||
|
||||
export const electronCursorPoint = defineEventa<Point>('electron:eventa:event:cursor-point')
|
||||
export const electronStartTrackingCursorPoint = defineInvokeEventa('electron:eventa:invoke:start-tracking-cursor-point')
|
||||
export const electronMousePosition = defineEventa<Point>('electron:eventa:event:mouse-position')
|
||||
export const electronStartTrackMousePosition = defineInvokeEventa('electron:eventa:invoke:start-tracking-mouse-position')
|
||||
export const electronOpenMainDevtools = defineInvokeEventa<void, void>('electron:eventa:invoke:windows:main:devtools:open')
|
||||
export const electronOpenSettings = defineInvokeEventa<void, void>('electron:eventa:invoke:windows:settings:open')
|
||||
export const electronOpenSettingsDevtools = defineInvokeEventa<void, void>('electron:eventa:invoke:windows:settings:devtools:open')
|
||||
|
||||
Reference in New Issue
Block a user