aboutsummaryrefslogtreecommitdiff
path: root/content/activity_info_server.js
diff options
context:
space:
mode:
Diffstat (limited to 'content/activity_info_server.js')
-rw-r--r--content/activity_info_server.js32
1 files changed, 22 insertions, 10 deletions
diff --git a/content/activity_info_server.js b/content/activity_info_server.js
index a1384e9..81a25fb 100644
--- a/content/activity_info_server.js
+++ b/content/activity_info_server.js
@@ -11,14 +11,20 @@
* IMPORTS_START
* IMPORT listen_for_connection
* IMPORT CONNECTION_TYPE
- * IMPORT set_repo_query_repos
- * IMPORT set_repo_query_callback
+ * 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];
@@ -35,20 +41,23 @@ function report_script(script_data)
function report_settings(settings)
{
- const [pattern, settings_data, repos] = settings;
- set_repo_query_repos(repos);
-
report_activity("settings", settings);
}
-function report_repo_query_result(result)
+function report_repo_query_action(update, port)
{
- report_activity("repo_query_result", result);
+ report_activity_oneshot("repo_query_action", update, port);
}
-function trigger_repo_query()
+function trigger_repo_query(query_specifier)
{
- set_repo_query_callback(report_repo_query_result);
+ repo_query(...query_specifier);
+}
+
+function handle_disconnect(port, report_action)
+{
+ ports.delete(port)
+ unsubscribe_repo_query_results(report_action);
}
function new_connection(port)
@@ -60,13 +69,16 @@ 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(() => ports.delete(port));
+ port.onDisconnect.addListener(() => handle_disconnect(port, report_action));
}
function start_activity_info_server()