diff options
Diffstat (limited to 'content/activity_info_server.js')
-rw-r--r-- | content/activity_info_server.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/content/activity_info_server.js b/content/activity_info_server.js index 8435377..81a25fb 100644 --- a/content/activity_info_server.js +++ b/content/activity_info_server.js @@ -11,12 +11,20 @@ * IMPORTS_START * IMPORT listen_for_connection * IMPORT CONNECTION_TYPE + * IMPORT repo_query + * IMPORT subscribe_repo_query_results + * IMPORT unsubscribe_repo_query_results * IMPORTS_END */ var activities = []; var ports = new Set(); +function report_activity_oneshot(name, data, port) +{ + port.postMessage([name, data]); +} + function report_activity(name, data) { const activity = [name, data]; @@ -36,6 +44,22 @@ function report_settings(settings) report_activity("settings", settings); } +function report_repo_query_action(update, port) +{ + report_activity_oneshot("repo_query_action", update, port); +} + +function trigger_repo_query(query_specifier) +{ + repo_query(...query_specifier); +} + +function handle_disconnect(port, report_action) +{ + ports.delete(port) + unsubscribe_repo_query_results(report_action); +} + function new_connection(port) { console.log("new activity info connection!"); @@ -44,6 +68,17 @@ function new_connection(port) for (const activity of activities) port.postMessage(activity); + + const report_action = u => report_repo_query_action(u, port); + subscribe_repo_query_results(report_action); + + /* + * So far the only thing we expect to receive is repo query order. Once more + * possibilities arrive, we will need to complicate this listener. + */ + port.onMessage.addListener(trigger_repo_query); + + port.onDisconnect.addListener(() => handle_disconnect(port, report_action)); } function start_activity_info_server() |