From 7f368d46ea06164da025c1ac4ed9a65ad23b25ef Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Wed, 12 May 2021 16:00:09 +0200 Subject: stop using js modules --- background/storage_server.js | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 background/storage_server.js (limited to 'background/storage_server.js') diff --git a/background/storage_server.js b/background/storage_server.js new file mode 100644 index 0000000..05f616b --- /dev/null +++ b/background/storage_server.js @@ -0,0 +1,65 @@ +/** +* Myext storage through connection (server side) +* +* Copyright (C) 2021 Wojtek Kosior +* +* Dual-licensed under: +* - 0BSD license +* - GPLv3 or (at your option) any later version +*/ + +"use strict"; + +(() => { + const listen_for_connection = window.listen_for_connection; + const get_storage = window.get_storage; + const TYPE_PREFIX = window.TYPE_PREFIX; + const CONNECTION_TYPE = window.CONNECTION_TYPE; + + var storage; + + async function handle_remote_call(port, message) + { + let [call_id, func, args] = message; + + try { + let result = await Promise.resolve(storage[func](...args)); + port.postMessage({call_id, result}); + } catch (error) { + error = error + ''; + port.postMessage({call_id, error}); + } + } + + function remove_storage_listener(cb) { + storage.remove_change_listener(cb); + } + + function new_connection(port) + { + console.log("new remote storage connection!"); + + port.postMessage({ + [TYPE_PREFIX.SCRIPT] : storage.get_all(TYPE_PREFIX.SCRIPT), + [TYPE_PREFIX.BUNDLE] : storage.get_all(TYPE_PREFIX.BUNDLE), + [TYPE_PREFIX.PAGE] : storage.get_all(TYPE_PREFIX.PAGE) + }); + + let handle_change = change => port.postMessage(change); + + storage.add_change_listener(handle_change); + + port.onMessage.addListener(m => handle_remote_call(port, m)); + port.onDisconnect.addListener(() => + remove_storage_listener(handle_change)); + } + + async function start() + { + storage = await get_storage(); + + listen_for_connection(CONNECTION_TYPE.REMOTE_STORAGE, new_connection); + } + + window.start_storage_server = start; +})(); -- cgit v1.2.3