wallpaper.handlers.ts 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. import { ipcMain } from 'electron'
  2. import { IpcChannels } from '@shared/ipc-channels'
  3. import { applyWallpaperMeta, detectEnvironment } from '../services/wallpaper.service'
  4. import { getWallpaper, updateWallpaper } from '../services/library.service'
  5. import { setActiveWallpaperId, getActiveWallpaperId } from '../services/wallpaper-state.service'
  6. import type { ApplyWallpaperOptions } from '@shared/types'
  7. export function registerWallpaperHandlers(): void {
  8. ipcMain.handle(IpcChannels.WALLPAPER_DETECT_ENV, () => {
  9. return detectEnvironment()
  10. })
  11. ipcMain.handle(IpcChannels.WALLPAPER_GET_ACTIVE, () => {
  12. const id = getActiveWallpaperId()
  13. return id ? getWallpaper(id) : null
  14. })
  15. ipcMain.handle(IpcChannels.WALLPAPER_APPLY, async (_e, options: ApplyWallpaperOptions) => {
  16. const wallpaper = getWallpaper(options.wallpaperId)
  17. if (!wallpaper) throw new Error(`Wallpaper ${options.wallpaperId} not found in library`)
  18. const appliedPath = await applyWallpaperMeta(wallpaper, { backend: options.backend })
  19. setActiveWallpaperId(options.wallpaperId)
  20. updateWallpaper(options.wallpaperId, {
  21. appliedCount: (wallpaper.appliedCount ?? 0) + 1,
  22. lastAppliedAt: Date.now()
  23. })
  24. return { ok: true, appliedPath }
  25. })
  26. }