/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { MonitorAgent: "moz-src:///browser/components/aiwindow/models/agents/MonitorAgent.sys.mjs", TOTAL_NUM_MONITORS: "moz-src:///browser/components/aiwindow/models/agents/Monitor.sys.mjs", TOTAL_NUM_URLS_IN_MONITOR: "moz-src:///browser/components/aiwindow/models/agents/Monitor.sys.mjs", SCHEDULE_TYPES: "moz-src:///browser/components/aiwindow/models/agents/Schedule.sys.mjs", }); /** * JSWindowActor to handle communication between SmartWindowTasks UI and MonitorAgent. */ export class SmartWindowTasksParent extends JSWindowActorParent { #messageHandlers = new Map([ ["SmartWindowTasks:ListMonitors", this.#handleListMonitors.bind(this)], ["SmartWindowTasks:CreateMonitor", this.#handleCreateMonitor.bind(this)], ["SmartWindowTasks:DeleteMonitor", this.#handleDeleteMonitor.bind(this)], ["SmartWindowTasks:UpdateMonitor", this.#handleUpdateMonitor.bind(this)], ["SmartWindowTasks:RunMonitor", this.#handleRunMonitor.bind(this)], ["SmartWindowTasks:PauseMonitor", this.#handlePauseMonitor.bind(this)], ["SmartWindowTasks:GetConstants", this.#handleGetConstants.bind(this)], ]); async receiveMessage({ data, name }) { const handler = this.#messageHandlers.get(name); if (!handler) { console.warn(`SmartWindowTasksParent received unknown message: ${name}`); return null; } return handler(data); } async #handleListMonitors() { try { const monitors = await lazy.MonitorAgent.listMonitors(); return { success: true, monitors }; } catch (error) { console.error("Failed to list monitors:", error); return { success: false, error: error.message }; } } async #handleCreateMonitor(data) { try { const monitor = await lazy.MonitorAgent.createMonitor(data); return { success: true, monitor }; } catch (error) { console.error("Failed to create monitor:", error); return { success: false, error: error.message }; } } async #handleDeleteMonitor(data) { try { await lazy.MonitorAgent.deleteMonitor(data.id); return { success: true }; } catch (error) { console.error("Failed to delete monitor:", error); return { success: false, error: error.message }; } } async #handleUpdateMonitor(data) { try { const monitor = await lazy.MonitorAgent.updateMonitor( data.id, data.updates ); return { success: true, monitor }; } catch (error) { console.error("Failed to update monitor:", error); return { success: false, error: error.message }; } } async #handleRunMonitor(data) { try { const result = await lazy.MonitorAgent.runNow(data.id); return { success: true, result }; } catch (error) { console.error("Failed to run monitor:", error); return { success: false, error: error.message }; } } async #handlePauseMonitor(data) { try { await lazy.MonitorAgent.pauseMonitor(data.id, data.pause); return { success: true }; } catch (error) { console.error("Failed to pause monitor:", error); return { success: false, error: error.message }; } } #handleGetConstants() { return { success: true, constants: { TOTAL_NUM_MONITORS: lazy.TOTAL_NUM_MONITORS, TOTAL_NUM_URLS_IN_MONITOR: lazy.TOTAL_NUM_URLS_IN_MONITOR, SCHEDULE_TYPES: lazy.SCHEDULE_TYPES, }, }; } }