evmux-app-framework 0.0.8 → 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
|
|
|
@@ -78,42 +100,47 @@ let createEventResultObject = (requestName, eventName, result) => {
|
|
|
78
100
|
|
|
79
101
|
let requestObj = {};
|
|
80
102
|
try {
|
|
81
|
-
|
|
103
|
+
if (typeof evt.data === 'string' || evt.data instanceof String){
|
|
104
|
+
requestObj = JSON.parse(evt.data);
|
|
105
|
+
}else{
|
|
106
|
+
requestObj = evt.data
|
|
107
|
+
}
|
|
82
108
|
} catch (error) {
|
|
83
|
-
console.log("xxxx", error)
|
|
84
109
|
}
|
|
85
110
|
|
|
86
111
|
let result = null
|
|
87
112
|
|
|
88
|
-
if (requestObj.request ==
|
|
113
|
+
if (requestObj.request == availableRequests.updateSettings)
|
|
89
114
|
{
|
|
90
115
|
|
|
91
116
|
if (this._userAppInstances[requestObj.userAppInstanceId]) {
|
|
92
117
|
this._eventHandler.publish("updateSettings", requestObj)
|
|
93
|
-
|
|
94
|
-
this.updateAndNotifyAppInstancesOnSettingsUpdate(requestObj.userAppInstanceId, requestObj.data)
|
|
95
|
-
|
|
118
|
+
this._eventHandler.publish("updateEverywhere", requestObj)
|
|
119
|
+
this.updateAndNotifyAppInstancesOnSettingsUpdate(requestObj.userAppInstanceId, requestObj.data, requestObj.componentId)
|
|
96
120
|
}
|
|
97
121
|
}
|
|
98
|
-
else if (requestObj.request ==
|
|
122
|
+
else if (requestObj.request == availableRequests.raiseAppMessagingEvent)
|
|
99
123
|
{
|
|
100
|
-
|
|
101
124
|
if (this._userAppInstances[requestObj.userAppInstanceId]) {
|
|
102
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]) {
|
|
103
133
|
let eventObj = createEventResultObject("EvMessage", "settings", requestObj.data)
|
|
104
|
-
let stringObjToSend = JSON.stringify(eventObj)
|
|
105
134
|
result = (await appsDataManager.getUserAppInstanceById(requestObj.userAppInstanceId, false)).settings
|
|
106
|
-
//this._userAppInstances[requestObj.userAppInstanceId].window.postMessage(stringObjToSend, "*")
|
|
107
|
-
|
|
108
135
|
}
|
|
109
136
|
}
|
|
110
|
-
else if (requestObj.request ==
|
|
137
|
+
else if (requestObj.request == availableRequests.startLoad)
|
|
111
138
|
{
|
|
112
139
|
this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
|
|
113
140
|
this._userAppInstances[requestObj.userAppInstanceId].instances[requestObj.componentId] = { window: evt.source }
|
|
114
|
-
|
|
141
|
+
|
|
115
142
|
}
|
|
116
|
-
else if (requestObj.request ==
|
|
143
|
+
else if (requestObj.request == availableRequests.loaded)
|
|
117
144
|
{
|
|
118
145
|
this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
|
|
119
146
|
|
|
@@ -121,13 +148,13 @@ let createEventResultObject = (requestName, eventName, result) => {
|
|
|
121
148
|
|
|
122
149
|
result = this.getAppSettingsForAppInstanceId(requestObj.userAppInstanceId)
|
|
123
150
|
}
|
|
124
|
-
else if (requestObj.request ==
|
|
151
|
+
else if (requestObj.request == availableRequests.registerEvent)
|
|
125
152
|
{
|
|
126
153
|
// verify that the app can register to this event
|
|
127
154
|
this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
|
|
128
155
|
this._userAppInstances[requestObj.userAppInstanceId].events[requestObj.data.eventName] = true
|
|
129
156
|
}
|
|
130
|
-
else if (requestObj.request ==
|
|
157
|
+
else if (requestObj.request == availableRequests.unregisterEvent)
|
|
131
158
|
{
|
|
132
159
|
this._makeSureAppInstanceExist(requestObj.userAppInstanceId);
|
|
133
160
|
delete this._userAppInstances[requestObj.userAppInstanceId].events[requestObj.data.eventName]
|
|
@@ -142,9 +169,11 @@ let createEventResultObject = (requestName, eventName, result) => {
|
|
|
142
169
|
}
|
|
143
170
|
|
|
144
171
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
172
|
+
|
|
173
|
+
if (requestObj.promisedBased)
|
|
174
|
+
{
|
|
175
|
+
PostMessageManager.respondForPromiseBasedRequest(requestObj, evt.source, evt.origin, result);
|
|
176
|
+
}
|
|
148
177
|
}
|
|
149
178
|
|
|
150
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 }
|