'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 }