|
@@ -14,6 +14,7 @@ module.exports = function(XMPP, eventEmitter) {
|
14
|
14
|
list_members: [], // so we can elect a new focus
|
15
|
15
|
presMap: {},
|
16
|
16
|
preziMap: {},
|
|
17
|
+ lastPresenceMap: {},
|
17
|
18
|
joined: false,
|
18
|
19
|
isOwner: false,
|
19
|
20
|
role: null,
|
|
@@ -135,6 +136,9 @@ module.exports = function(XMPP, eventEmitter) {
|
135
|
136
|
$(document).trigger('presentationremoved.muc', [from, url]);
|
136
|
137
|
}
|
137
|
138
|
|
|
139
|
+ // store the last presence for participant
|
|
140
|
+ this.lastPresenceMap[from] = {};
|
|
141
|
+
|
138
|
142
|
// Parse audio info tag.
|
139
|
143
|
var audioMuted = $(pres).find('>audiomuted');
|
140
|
144
|
if (audioMuted.length) {
|
|
@@ -145,8 +149,9 @@ module.exports = function(XMPP, eventEmitter) {
|
145
|
149
|
// Parse video info tag.
|
146
|
150
|
var videoMuted = $(pres).find('>videomuted');
|
147
|
151
|
if (videoMuted.length) {
|
148
|
|
- eventEmitter.emit(XMPPEvents.PARTICIPANT_VIDEO_MUTED,
|
149
|
|
- from, (videoMuted.text() === "true"));
|
|
152
|
+ var value = (videoMuted.text() === "true");
|
|
153
|
+ this.lastPresenceMap[from].videoMuted = value;
|
|
154
|
+ eventEmitter.emit(XMPPEvents.PARTICIPANT_VIDEO_MUTED, from, value);
|
150
|
155
|
}
|
151
|
156
|
|
152
|
157
|
var startMuted = $(pres).find('>startmuted');
|
|
@@ -309,6 +314,11 @@ module.exports = function(XMPP, eventEmitter) {
|
309
|
314
|
eventEmitter.emit(XMPPEvents.KICKED);
|
310
|
315
|
}
|
311
|
316
|
}
|
|
317
|
+
|
|
318
|
+ if (this.lastPresenceMap[from] != null) {
|
|
319
|
+ delete this.lastPresenceMap[from];
|
|
320
|
+ }
|
|
321
|
+
|
312
|
322
|
return true;
|
313
|
323
|
},
|
314
|
324
|
onPresenceError: function (pres) {
|