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
|
@@ -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
|
-
|
|
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[
|
|
92
|
+
if (this._userAppInstances[userAppInstanceId].events[availableEvents.settingsUpdated])
|
|
68
93
|
{
|
|
69
|
-
let eventObj = createEventResultObject("EvEvent",
|
|
70
|
-
|
|
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 ==
|
|
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 ==
|
|
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 ==
|
|
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
|
-
|
|
141
|
+
|
|
119
142
|
}
|
|
120
|
-
else if (requestObj.request ==
|
|
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 ==
|
|
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 ==
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
89
|
+
request: availableRequests.updateSettings,
|
|
77
90
|
userAppInstanceId: this._userAppInstanceId,
|
|
78
91
|
componentId: this._componentId,
|
|
79
92
|
data: { ...settingsObj }
|