up
This commit is contained in:
+33
-8
@@ -3,7 +3,7 @@ import { createReadStream } from 'node:fs'
|
||||
import { stat } from 'node:fs/promises'
|
||||
import { join } from 'node:path'
|
||||
import { Readable } from 'node:stream'
|
||||
import { Controller } from './controller.js'
|
||||
import { Controller, parseCommand } from './controller.js'
|
||||
import { parseRange } from './range.js'
|
||||
import { PackageStore } from './package-store.js'
|
||||
import { packageMediaResponse } from './package-media.js'
|
||||
@@ -69,16 +69,13 @@ function show(displayId: number) {
|
||||
selectedDisplay = display.id
|
||||
output = new BrowserWindow({ ...windowOptions(), ...display.bounds, show: false })
|
||||
secure(output)
|
||||
controller.output(true)
|
||||
const window = output
|
||||
output.on('closed', () => {
|
||||
if (output !== window) return
|
||||
output = null
|
||||
selectedDisplay = null
|
||||
controller.report({
|
||||
id: controller.state.command?.id ?? '',
|
||||
status: 'error',
|
||||
error: 'Окно показа закрыто',
|
||||
})
|
||||
controller.output(false)
|
||||
})
|
||||
output.once('ready-to-show', () => {
|
||||
if (!window.isDestroyed()) {
|
||||
@@ -190,10 +187,38 @@ app
|
||||
if (typeof id !== 'number') throw new Error('Некорректный дисплей')
|
||||
show(id)
|
||||
})
|
||||
let selectingPackage = false
|
||||
ipcMain.handle('packages', (event) => {
|
||||
requireControl(event)
|
||||
return packages
|
||||
.list()
|
||||
.map((pkg) => ({ key: pkg.key, version: pkg.version, name: pkg.package.game.name }))
|
||||
})
|
||||
ipcMain.handle('select-package', async (event, key: unknown) => {
|
||||
requireControl(event)
|
||||
if (selectingPackage) throw new Error('Подождите проверки пакета')
|
||||
if (key !== null && typeof key !== 'string') throw new Error('Некорректный пакет')
|
||||
selectingPackage = true
|
||||
try {
|
||||
controller.selectPackage(key === null ? null : await packages.verify(key))
|
||||
return controller.state
|
||||
} catch (error) {
|
||||
if (key === controller.state.catalog.key) controller.selectPackage(null)
|
||||
throw error
|
||||
} finally {
|
||||
selectingPackage = false
|
||||
}
|
||||
})
|
||||
ipcMain.handle('command', (event, command: unknown) => {
|
||||
requireControl(event)
|
||||
if (!output) throw new Error('Сначала откройте окно показа')
|
||||
controller.command(command)
|
||||
if (selectingPackage) throw new Error('Подождите проверки пакета')
|
||||
const parsed = parseCommand(command)
|
||||
if (
|
||||
!output &&
|
||||
['play', 'pause', 'resume', 'stop', 'replay', 'seek', 'next'].includes(parsed.action)
|
||||
)
|
||||
throw new Error('Сначала откройте окно показа')
|
||||
controller.command(parsed)
|
||||
})
|
||||
ipcMain.on('report', (event, report: unknown) => {
|
||||
if (
|
||||
|
||||
Reference in New Issue
Block a user