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.js35
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()