From f037b41d9577451a0fa767cc64bfa16d2aab40b4 Mon Sep 17 00:00:00 2001 From: Justin Obara Date: Wed, 10 Jun 2020 10:11:42 -0400 Subject: [PATCH 1/5] GPII-4218: Send UIO+ settings to Morphic --- src/js/background/background.js | 20 +++++++++++++++++++- src/js/background/wsConnector.js | 25 ++++++++++++++++++------- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/js/background/background.js b/src/js/background/background.js index 44c1c5c..b117f1f 100644 --- a/src/js/background/background.js +++ b/src/js/background/background.js @@ -17,6 +17,20 @@ fluid.defaults("gpii.chrome.morphic", { gradeNames: "uioPlus.chrome.settings", + invokers: { + updateSettings: { + funcName: "gpii.chrome.morphic.updateSettings", + args: ["{that}", "{arguments}.0", "updateSettings"] + } + }, + modelListeners: { + "settings": { + func: "{wsConnector}.sendMessage", + args: ["changeSettings", {settings: "{change}.value"}], + excludeSource: ["init", "updateSettings"], + namespace: "sendToMorphic" + } + }, components: { wsConnector: { type: "gpii.wsConnector", @@ -25,11 +39,15 @@ fluid.defaults("gpii.chrome.morphic", { flowManager: "ws://localhost:8081/browserChannel", retryTime: 10, listeners: { - "{that}.events.onSettingsChange": "{uioPlus.chrome.settings}.updateSettings" + "{that}.events.onSettingsChange": "{gpii.chrome.morphic}.updateSettings" } } } } }); +gpii.chrome.morphic.updateSettings = function (that, settings, source) { + that.applier.change("settings", settings || that.options.defaultSettings, "ADD", source); +}; + gpii.chrome.morphic(); diff --git a/src/js/background/wsConnector.js b/src/js/background/wsConnector.js index f6819bc..e9725bf 100644 --- a/src/js/background/wsConnector.js +++ b/src/js/background/wsConnector.js @@ -42,6 +42,10 @@ fluid.defaults("gpii.wsConnector", { messageHandler: { funcName: "gpii.wsConnector.messageHandler", args: ["{that}", "{arguments}.0"] + }, + sendMessage: { + funcName: "gpii.wsConnector.sendMessage", + args: ["{that}", "{arguments}.0", "{arguments}.1"] } }, events: { @@ -100,12 +104,19 @@ gpii.wsConnector.error = function (that, err) { }; gpii.wsConnector.setup = function (that) { - var authPayload = { - type: "connect", - payload: { - solutionId: that.options.solutionId - } - }; - that.socket.send(JSON.stringify(authPayload)); + that.sendMessage("connect", {solutionId: that.options.solutionId}); that.socket.onmessage = that.messageHandler; }; + +gpii.wsConnector.sendMessage = function (that, type, payload) { + var message = { + type: type, + payload: payload + }; + + if (that.socket) { + that.socket.send(JSON.stringify(message)); + } else { + fluid.log("Unable to send message: " + message + ". No socket connection available."); + } +}; From f3b7cadde93a796d396c72c380e3336535b8c2ea Mon Sep 17 00:00:00 2001 From: Justin Obara Date: Wed, 10 Jun 2020 10:29:43 -0400 Subject: [PATCH 2/5] GPII-4218: Updating to latest dev release of UIO+ --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1c32ca4..6827526 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "dependencies": { "infusion": "3.0.0-dev.20200525T161532Z.fc4d4b3.FLUID-6145", "ws": "7.3.0", - "uio-plus": "0.1.0-dev.20200603T175039Z.86d4551" + "uio-plus": "0.1.0-dev.20200610T141822Z.83bce7f" }, "devDependencies": { "deepmerge": "4.2.2", From 79e9de6a149049a2e645882d73751fdbef3839cf Mon Sep 17 00:00:00 2001 From: Justin Obara Date: Tue, 16 Jun 2020 08:17:05 -0400 Subject: [PATCH 3/5] GPII-4218: Add an event relay for changeSettingsReceived messages. Currently we do not provide any special handling for these messags other than relaying into an event. However, this is a rough in implementation in case we require to wait for or in some other way respond to these confirmations. --- src/js/background/wsConnector.js | 8 ++++++-- tests/node/wsConnectorTests.js | 23 +++++++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/js/background/wsConnector.js b/src/js/background/wsConnector.js index e9725bf..802f3a8 100644 --- a/src/js/background/wsConnector.js +++ b/src/js/background/wsConnector.js @@ -52,7 +52,8 @@ fluid.defaults("gpii.wsConnector", { onConnect: null, onConnectionSucceeded: null, onError: null, - onSettingsChange: null + onSettingsChange: null, + onSettingsReceived: null }, listeners: { "onCreate.connect": "{wsConnector}.connect", @@ -80,8 +81,11 @@ gpii.wsConnector.messageHandler = function (that, ev) { } } else if (msg.type === "onSettingsChanged") { that.events.onSettingsChange.fire(msg.payload ? msg.payload : undefined); + } else if (msg.type === "changeSettingsReceived") { + // confirms that settings sent back across the socket have been received by the server + that.events.onSettingsReceived.fire(msg.payload); } else { - fluid.log("Unrecognized event/message"); + fluid.log("Unrecognized event/message", msg); } }; diff --git a/tests/node/wsConnectorTests.js b/tests/node/wsConnectorTests.js index 2c1bce8..9202034 100644 --- a/tests/node/wsConnectorTests.js +++ b/tests/node/wsConnectorTests.js @@ -66,6 +66,10 @@ fluid.defaults("gpii.chrome.tests.wsConnector.server", { allowClient: { funcName: "gpii.chrome.tests.wsConnector.server.allowClient", args: ["{that}", "{arguments}.0"] + }, + broadcastMessage: { + funcName: "gpii.chrome.tests.wsConnector.server.broadcastMessage", + args: ["{that}", "{arguments}.0", "{arguments}.1"] } }, listeners: { @@ -81,8 +85,8 @@ fluid.defaults("gpii.chrome.tests.wsConnector.server", { }, modelListeners: { "settings": { - funcName: "gpii.chrome.tests.wsConnector.server.broadcastSettings", - args: ["{that}", "{change}.value"], + func: "{that}.broadcastMessage", + args: ["onSettingsChanged", "{change}.value"], namespace: "broadcastSettings", excludeSource: ["init"] } @@ -136,9 +140,9 @@ gpii.chrome.tests.wsConnector.server.setupClient = function (that, client) { client.on("message", that.events.onMessage.fire); }; -gpii.chrome.tests.wsConnector.server.broadcastSettings = function (that, settings) { +gpii.chrome.tests.wsConnector.server.broadcastMessage = function (that, type, settings) { var msg = { - type: "onSettingsChanged", + type: type, payload: settings }; if (that.model.clientSocket) { @@ -287,6 +291,17 @@ fluid.defaults("gpii.chrome.tests.wsConnector.tester", { listener: "gpii.chrome.tests.wsConnector.checkSettings", args: ["{arguments}.0"] }] + }, { + name: "Server sends changeSettingsReceived message", + expect: 1, + sequence: [{ + func: "{server}.broadcastMessage", + args: ["changeSettingsReceived", "{that}.options.payloads.test1.settings"] + }, { + event: "{clientOne}.events.onSettingsReceived", + listener: "gpii.chrome.tests.wsConnector.checkSettings", + args: ["{arguments}.0", "{that}.options.payloads.test1.settings"] + }] }, { name: "Server disconnects client, client reconnects", expect: 2, From 677c0b73168c5910d3d0a4724aa373b8f457f959 Mon Sep 17 00:00:00 2001 From: Justin Obara Date: Wed, 24 Jun 2020 13:08:57 -0400 Subject: [PATCH 4/5] GPII-4218: Added a note about Morhpic Classic compatibility --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index c6e4d36..52981aa 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ https://github.com/fluid-project/uio-plus#ui-options-plus-uio) allows you to cus personal needs and preferences. _**Note**: The ability to apply an adaptation will vary from page to page_ +_**Note**: UIO+ for Morphic is not compatible with Morphic Classic v1.3.5 or earlier_ UI Options Plus for Morphic is the result of a joint effort of the Inclusive Design Research Centre at OCAD University and the Trace R&D Center at University of Maryland under funding for the FLOE Project from the William and Flora Hewlett From b20ef80dc772195a4292b1df9ec3d4df34c032f6 Mon Sep 17 00:00:00 2001 From: Justin Obara Date: Wed, 24 Jun 2020 15:17:12 -0400 Subject: [PATCH 5/5] GPII-4218: bumping version number --- src/manifest.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/manifest.json b/src/manifest.json index b906d43..b97db4a 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,8 @@ { "name": "UI Options Plus (UIO+) for Morphic", "short_name": "UIO+ for Morphic", + "version": "0.2.0", + "version_name": "0.2.0", "browser_action": { "default_title": "UIO+ for Morphic" },