PLWL/src/ipc/lansync.js

42 lines
1.4 KiB
JavaScript

'use strict'
const { ipcMain } = require('electron')
const lansync = require('../lansync')
const { sendToWindow } = require('./games')
function registerLanSyncIpc({ getWindow }) {
ipcMain.handle('lansync:get', () => lansync.getState())
ipcMain.handle('lansync:devices', () => lansync.listDevices())
ipcMain.handle('lansync:rerollDeviceId', () => {
const identity = lansync.rerollDeviceId()
return { deviceId: identity.deviceId }
})
ipcMain.handle('lansync:rerollSyncCode', () => {
const identity = lansync.rerollSyncCode()
return { syncCode: identity.syncCode }
})
ipcMain.handle('lansync:forget', (e, id) => {
lansync.forgetDevice(id)
return { ok: true }
})
ipcMain.handle('lansync:clearHashCache', () => {
lansync.clearHashCache()
return { ok: true }
})
ipcMain.handle('lansync:respondIncoming', (e, requestId, accept) => lansync.respondIncoming(requestId, accept))
ipcMain.handle('lansync:sync', async (e, payload) => {
try {
return await lansync.syncTo({
deviceId: payload && payload.deviceId,
code: payload && payload.code,
categories: payload && payload.categories,
force: !!(payload && payload.force),
onProgress: data => sendToWindow(getWindow(), 'lansync:progress', data)
})
} catch (err) {
return { ok: false, error: String((err && err.message) || err) }
}
})
}
module.exports = { registerLanSyncIpc }