evmux-app-framework 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "evmux-app-framework",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -6,6 +6,20 @@ import PostMessageManager from '../PostMessageManager/PostMessageManager';
6
6
  import appsDataManager from '../AppsDataManager/AppsDataManager';
7
7
  import AppsObserverCommentsHandler from './AppsObserverCommentsHandler'
8
8
 
9
+ import { availableEvents } from '../EvmuxAppsApi/EvmuxAppsApi'
10
+
11
+ export const availableRequests = {
12
+ updateSettings: "updateSettings",
13
+ getSettings: "getSettings",
14
+ startLoad: "startLoad",
15
+ loaded: "loaded",
16
+ registerEvent: "registerEvent",
17
+ unregisterEvent: "unregisterEvent",
18
+ EvEvent: "EvEvent",
19
+ raiseAppMessagingEvent: "raiseAppMessagingEvent",
20
+ }
21
+
22
+
9
23
  let createEventResultObject = (requestName, eventName, result) => {
10
24
 
11
25
  let eventObj = {
@@ -37,15 +51,26 @@ let createEventResultObject = (requestName, eventName, result) => {
37
51
  this._requestHandlers.push(new AppsObserverCommentsHandler(app))
38
52
  }
39
53
 
54
+ _sendPostMessageToUsrAppInstancesComponents(userAppInstanceId, data, originComponentIdToExclude = null) {
55
+ let stringObjToSend = JSON.stringify(data)
56
+ for (const [componentId, instanceWindow] of Object.entries(this._userAppInstances[userAppInstanceId].instances)) {
57
+ if (originComponentIdToExclude != componentId){
58
+ instanceWindow.window.postMessage(stringObjToSend, "*")
59
+ }
60
+ }
61
+ }
62
+
63
+ _raiseEventForSpecificUserAppInstance(userAppInstanceId, eventName, data, originComponentIdToExclude = null) {
64
+ let userAppInstance = this._userAppInstances[userAppInstanceId]
65
+ if (userAppInstance && userAppInstance.events && userAppInstance.events[eventName]) {
66
+ let eventObj = createEventResultObject("EvEvent", eventName, data)
67
+ this._sendPostMessageToUsrAppInstancesComponents(userAppInstanceId, eventObj, originComponentIdToExclude)
68
+ }
69
+ }
70
+
40
71
  raiseEvent(eventName, data) {
41
72
  for (const [userAppInstanceId, userAppInstance] of Object.entries(this._userAppInstances)) {
42
- if (userAppInstance.events && userAppInstance.events[eventName]) {
43
- let eventObj = createEventResultObject("EvEvent", eventName, data)
44
- let stringObjToSend = JSON.stringify(eventObj)
45
- for (const [key, instanceWindow] of Object.entries(this._userAppInstances[userAppInstanceId].instances)) {
46
- instanceWindow.window.postMessage(stringObjToSend, "*")
47
- }
48
- }
73
+ this._raiseEventForSpecificUserAppInstance(userAppInstanceId, eventName, data)
49
74
  }
50
75
  }
51
76
 
@@ -61,16 +86,13 @@ let createEventResultObject = (requestName, eventName, result) => {
61
86
  this._userAppInstances[userAppInstanceId].events = this._userAppInstances[userAppInstanceId].events || {};
62
87
  }
63
88
 
64
- updateAndNotifyAppInstancesOnSettingsUpdate(userAppInstanceId, data)
89
+ updateAndNotifyAppInstancesOnSettingsUpdate(userAppInstanceId, data, originComponentId)
65
90
  {
66
91
  appsDataManager.updateUserAppInstanceSettings(userAppInstanceId, data)
67
- if (this._userAppInstances[userAppInstanceId].events['settingsUpdated'])
92
+ if (this._userAppInstances[userAppInstanceId].events[availableEvents.settingsUpdated])
68
93
  {
69
- let eventObj = createEventResultObject("EvEvent","settingsUpdated", data)
70
- let stringObjToSend = JSON.stringify(eventObj)
71
- for (const [key, instanceWindow] of Object.entries(this._userAppInstances[userAppInstanceId].instances)) {
72
- instanceWindow.window.postMessage(stringObjToSend, "*")
73
- }
94
+ let eventObj = createEventResultObject("EvEvent", availableEvents.settingsUpdated, data)
95
+ this._sendPostMessageToUsrAppInstancesComponents(userAppInstanceId, eventObj, originComponentId)
74
96
  }
75
97
  }
76
98
 
@@ -84,40 +106,41 @@ let createEventResultObject = (requestName, eventName, result) => {
84
106
  requestObj = evt.data
85
107
  }
86
108
  } catch (error) {
87
- console.log("xxxx", error)
88
109
  }
89
110
 
90
111
  let result = null
91
112
 
92
- if (requestObj.request == "updateSettings")
113
+ if (requestObj.request == availableRequests.updateSettings)
93
114
  {
94
115
 
95
116
  if (this._userAppInstances[requestObj.userAppInstanceId]) {
96
117
  this._eventHandler.publish("updateSettings", requestObj)
97
-
98
- this.updateAndNotifyAppInstancesOnSettingsUpdate(requestObj.userAppInstanceId, requestObj.data)
99
-
118
+ this._eventHandler.publish("updateEverywhere", requestObj)
119
+ this.updateAndNotifyAppInstancesOnSettingsUpdate(requestObj.userAppInstanceId, requestObj.data, requestObj.componentId)
100
120
  }
101
121
  }
102
- else if (requestObj.request == "getSettings")
122
+ else if (requestObj.request == availableRequests.raiseAppMessagingEvent)
103
123
  {
104
-
105
124
  if (this._userAppInstances[requestObj.userAppInstanceId]) {
106
125
 
126
+ this._raiseEventForSpecificUserAppInstance(requestObj.userAppInstanceId, availableEvents.appMessaging, requestObj.data, requestObj.componentId)
127
+ this._eventHandler.publish("updateEverywhere", requestObj)
128
+ }
129
+ }
130
+ else if (requestObj.request == availableRequests.getSettings)
131
+ {
132
+ if (this._userAppInstances[requestObj.userAppInstanceId]) {
107
133
  let eventObj = createEventResultObject("EvMessage", "settings", requestObj.data)
108
- let stringObjToSend = JSON.stringify(eventObj)
109
134
  result = (await appsDataManager.getUserAppInstanceById(requestObj.userAppInstanceId, false)).settings
110
- //this._userAppInstances[requestObj.userAppInstanceId].window.postMessage(stringObjToSend, "*")
111
-
112
135
  }
113
136
  }
114
- else if (requestObj.request == "startLoad")
137
+ else if (requestObj.request == availableRequests.startLoad)
115
138
  {
116
139
  this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
117
140
  this._userAppInstances[requestObj.userAppInstanceId].instances[requestObj.componentId] = { window: evt.source }
118
- return;
141
+
119
142
  }
120
- else if (requestObj.request == "loaded")
143
+ else if (requestObj.request == availableRequests.loaded)
121
144
  {
122
145
  this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
123
146
 
@@ -125,13 +148,13 @@ let createEventResultObject = (requestName, eventName, result) => {
125
148
 
126
149
  result = this.getAppSettingsForAppInstanceId(requestObj.userAppInstanceId)
127
150
  }
128
- else if (requestObj.request == "registerEvent")
151
+ else if (requestObj.request == availableRequests.registerEvent)
129
152
  {
130
153
  // verify that the app can register to this event
131
154
  this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
132
155
  this._userAppInstances[requestObj.userAppInstanceId].events[requestObj.data.eventName] = true
133
156
  }
134
- else if (requestObj.request == "unregisterEvent")
157
+ else if (requestObj.request == availableRequests.unregisterEvent)
135
158
  {
136
159
  this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
137
160
  delete this._userAppInstances[requestObj.userAppInstanceId].events[requestObj.data.eventName]
@@ -146,9 +169,11 @@ let createEventResultObject = (requestName, eventName, result) => {
146
169
  }
147
170
 
148
171
  }
149
-
150
- PostMessageManager.respondForPromiseBasedRequest(requestObj, evt.source, evt.origin, result);
151
-
172
+
173
+ if (requestObj.promisedBased)
174
+ {
175
+ PostMessageManager.respondForPromiseBasedRequest(requestObj, evt.source, evt.origin, result);
176
+ }
152
177
  }
153
178
 
154
179
  onUserAppComponentUnload(userAppInstanceId, componentId)
@@ -2,11 +2,14 @@ import PostMessageManager from '../PostMessageManager/PostMessageManager.js'
2
2
 
3
3
  import EvmuxAppsApiComments from './EvmuxAppsApiComments.js'
4
4
 
5
+ import { availableRequests } from '../AppsObserver/AppsObserver.js'
6
+
5
7
  export const availableEvents = {
6
8
  settingsUpdated: "settingsUpdated",
7
9
  viewerCountChanged: "viewerCountChanged",
8
10
  keystroke: "keystroke",
9
- comments: "comments"
11
+ comments: "comments",
12
+ appMessaging: "appMessaging"
10
13
  }
11
14
 
12
15
  export default class EvmuxAppsApi {
@@ -32,7 +35,7 @@ export default class EvmuxAppsApi {
32
35
  this._userAppInstanceId = userAppInstanceId;
33
36
  this._componentId = componentId;
34
37
 
35
- let reqObj = {request: "startLoad", userAppInstanceId: this._userAppInstanceId, componentId: this._componentId}
38
+ let reqObj = {request: availableRequests.startLoad, userAppInstanceId: this._userAppInstanceId, componentId: this._componentId}
36
39
  this._postMessageManager.sendRequest(reqObj);
37
40
 
38
41
  this.comments = new EvmuxAppsApiComments(this);
@@ -42,7 +45,7 @@ export default class EvmuxAppsApi {
42
45
  {
43
46
  this._postMessageManager._messagesEventHandlers.subscribe(eventName, callback)
44
47
 
45
- let reqObj = { request: "registerEvent", userAppInstanceId: this._userAppInstanceId, componentId: this._componentId }
48
+ let reqObj = { request: availableRequests.registerEvent, userAppInstanceId: this._userAppInstanceId, componentId: this._componentId }
46
49
  reqObj.data = {
47
50
  eventName
48
51
  }
@@ -52,7 +55,7 @@ export default class EvmuxAppsApi {
52
55
  async unregisterEvent(eventName, callback)
53
56
  {
54
57
  this._postMessageManager._messagesEventHandlers.unsubscribe(eventName, callback)
55
- let reqObj = { request: "unregisterEvent", userAppInstanceId: this._userAppInstanceId, componentId: this._componentId }
58
+ let reqObj = { request: availableRequests.unregisterEvent, userAppInstanceId: this._userAppInstanceId, componentId: this._componentId }
56
59
  reqObj.data = {
57
60
  eventName
58
61
  }
@@ -60,20 +63,30 @@ export default class EvmuxAppsApi {
60
63
  }
61
64
 
62
65
  async reportLoaded() {
63
- let reqObj = {request: "loaded", userAppInstanceId: this._userAppInstanceId, componentId: this._componentId}
66
+ let reqObj = {request: availableRequests.loaded, userAppInstanceId: this._userAppInstanceId, componentId: this._componentId}
64
67
  return this._postMessageManager.sendRequestAsync(reqObj);
65
68
  }
66
69
 
67
70
  async getSettings() {
68
-
69
- let reqObj = {request: "getSettings", userAppInstanceId: this._userAppInstanceId, componentId: this._componentId}
71
+ let reqObj = {request: availableRequests.getSettings, userAppInstanceId: this._userAppInstanceId, componentId: this._componentId}
70
72
  return this._postMessageManager.sendRequestAsync(reqObj);
71
73
  }
72
74
 
75
+ async raiseAppMessagingEvent(data) {
76
+ let requestObj = {
77
+ request: availableRequests.sendAppMessaging,
78
+ userAppInstanceId: this._userAppInstanceId,
79
+ componentId: this._componentId,
80
+ data
81
+ }
82
+
83
+ return this._postMessageManager.sendRequest(requestObj);
84
+ }
85
+
73
86
  async updateSettings(settingsObj) {
74
87
 
75
88
  let requestObj = {
76
- request: "updateSettings",
89
+ request: availableRequests.updateSettings,
77
90
  userAppInstanceId: this._userAppInstanceId,
78
91
  componentId: this._componentId,
79
92
  data: { ...settingsObj }