Removes UI dependancies in the xmpp module.

This commit is contained in:
hristoterezov 2015-01-23 17:36:17 +02:00
parent 29b3ea07e0
commit 899f0ee83d
10 changed files with 194 additions and 142 deletions

View File

@ -27,14 +27,14 @@
<script src="service/desktopsharing/DesktopSharingEventTypes.js?v=1"></script> <script src="service/desktopsharing/DesktopSharingEventTypes.js?v=1"></script>
<script src="libs/modules/simulcast.bundle.js?v=5"></script> <script src="libs/modules/simulcast.bundle.js?v=5"></script>
<script src="libs/modules/connectionquality.bundle.js?v=2"></script> <script src="libs/modules/connectionquality.bundle.js?v=2"></script>
<script src="libs/modules/UI.bundle.js?v=10"></script> <script src="libs/modules/UI.bundle.js?v=11"></script>
<script src="libs/modules/statistics.bundle.js?v=4"></script> <script src="libs/modules/statistics.bundle.js?v=4"></script>
<script src="libs/modules/RTC.bundle.js?v=6"></script> <script src="libs/modules/RTC.bundle.js?v=6"></script>
<script src="libs/modules/desktopsharing.bundle.js?v=3"></script><!-- desktop sharing --> <script src="libs/modules/desktopsharing.bundle.js?v=3"></script><!-- desktop sharing -->
<script src="libs/modules/xmpp.bundle.js?v=5"></script> <script src="libs/modules/xmpp.bundle.js?v=6"></script>
<script src="libs/modules/keyboardshortcut.bundle.js?v=1"></script> <script src="libs/modules/keyboardshortcut.bundle.js?v=1"></script>
<script src="app.js?v=30"></script><!-- application logic --> <script src="app.js?v=30"></script><!-- application logic -->
<script src="libs/modules/API.bundle.js?v=1"></script> <script src="libs/modules/API.bundle.js?v=2"></script>
<script src="analytics.js?v=1"></script><!-- google analytics plugin --> <script src="analytics.js?v=1"></script><!-- google analytics plugin -->
<link rel="stylesheet" href="css/font.css?v=6"/> <link rel="stylesheet" href="css/font.css?v=6"/>

View File

@ -133,6 +133,20 @@ function processMessage(event)
} }
function setupListeners() {
xmpp.addListener(XMPPEvents.MUC_ENTER, function (from) {
API.triggerEvent("participantJoined", {jid: from});
});
xmpp.addListener(XMPPEvents.MESSAGE_RECEIVED, function (from, nick, txt, myjid) {
if (from != myjid)
API.triggerEvent("incomingMessage",
{"from": from, "nick": nick, "message": txt});
});
xmpp.addListener(XMPPEvents.MUC_LEFT, function (jid) {
API.triggerEvent("participantLeft", {jid: jid});
});
}
var API = { var API = {
/** /**
* Check whether the API should be enabled or not. * Check whether the API should be enabled or not.
@ -161,6 +175,7 @@ var API = {
window.attachEvent('onmessage', processMessage); window.attachEvent('onmessage', processMessage);
} }
sendMessage({type: "system", loaded: true}); sendMessage({type: "system", loaded: true});
setupListeners();
}, },
/** /**
* Checks whether the event is enabled ot not. * Checks whether the event is enabled ot not.

View File

@ -140,6 +140,16 @@ function registerListeners() {
}); });
xmpp.addListener(XMPPEvents.DISPLAY_NAME_CHANGED, onDisplayNameChanged); xmpp.addListener(XMPPEvents.DISPLAY_NAME_CHANGED, onDisplayNameChanged);
xmpp.addListener(XMPPEvents.MUC_JOINED, onMucJoined); xmpp.addListener(XMPPEvents.MUC_JOINED, onMucJoined);
xmpp.addListener(XMPPEvents.LOCALROLE_CHANGED, onLocalRoleChange);
xmpp.addListener(XMPPEvents.MUC_ENTER, onMucEntered);
xmpp.addListener(XMPPEvents.MUC_ROLE_CHANGED, onMucRoleChanged);
xmpp.addListener(XMPPEvents.PRESENCE_STATUS, onMucPresenceStatus);
xmpp.addListener(XMPPEvents.SUBJECT_CHANGED, chatSetSubject);
xmpp.addListener(XMPPEvents.MESSAGE_RECEIVED, updateChatConversation);
xmpp.addListener(XMPPEvents.MUC_LEFT, onMucLeft);
xmpp.addListener(XMPPEvents.PASSWORD_REQUIRED, onPasswordReqiured);
xmpp.addListener(XMPPEvents.CHAT_ERROR_RECEIVED, chatAddError);
xmpp.addListener(XMPPEvents.ETHERPAD, initEtherpad);
} }
function bindEvents() function bindEvents()
@ -291,17 +301,17 @@ UI.toggleSmileys = function () {
Chat.toggleSmileys(); Chat.toggleSmileys();
}; };
UI.chatAddError = function(errorMessage, originalText) function chatAddError(errorMessage, originalText)
{ {
return Chat.chatAddError(errorMessage, originalText); return Chat.chatAddError(errorMessage, originalText);
}; };
UI.chatSetSubject = function(text) function chatSetSubject(text)
{ {
return Chat.chatSetSubject(text); return Chat.chatSetSubject(text);
}; };
UI.updateChatConversation = function (from, displayName, message) { function updateChatConversation(from, displayName, message) {
return Chat.updateChatConversation(from, displayName, message); return Chat.updateChatConversation(from, displayName, message);
}; };
@ -329,11 +339,11 @@ function onMucJoined(jid, info) {
onDisplayNameChanged('localVideoContainer', displayName + ' (me)'); onDisplayNameChanged('localVideoContainer', displayName + ' (me)');
} }
UI.initEtherpad = function (name) { function initEtherpad(name) {
Etherpad.init(name); Etherpad.init(name);
}; };
UI.onMucLeft = function (jid) { function onMucLeft(jid) {
console.log('left.muc', jid); console.log('left.muc', jid);
var displayName = $('#participant_' + Strophe.getResourceFromJid(jid) + var displayName = $('#participant_' + Strophe.getResourceFromJid(jid) +
'>.displayname').html(); '>.displayname').html();
@ -375,23 +385,23 @@ UI.toggleContactList = function () {
return BottomToolbar.toggleContactList(); return BottomToolbar.toggleContactList();
}; };
UI.onLocalRoleChange = function (jid, info, pres) { function onLocalRoleChange(jid, info, pres, isModerator, isExternalAuthEnabled)
{
console.info("My role changed, new role: " + info.role); console.info("My role changed, new role: " + info.role);
var isModerator = xmpp.isModerator(); onModeratorStatusChanged(isModerator);
VideoLayout.showModeratorIndicator(); VideoLayout.showModeratorIndicator();
Toolbar.showAuthenticateButton( Toolbar.showAuthenticateButton(
xmpp.isExternalAuthEnabled() && !isModerator); isExternalAuthEnabled && !isModerator);
if (isModerator) { if (isModerator) {
Authentication.closeAuthenticationWindow(); Authentication.closeAuthenticationWindow();
messageHandler.notify( messageHandler.notify(
'Me', 'connected', 'Moderator rights granted !'); 'Me', 'connected', 'Moderator rights granted !');
} }
}; }
UI.onModeratorStatusChanged = function (isModerator) { function onModeratorStatusChanged(isModerator) {
Toolbar.showSipCallButton(isModerator); Toolbar.showSipCallButton(isModerator);
Toolbar.showRecordingButton( Toolbar.showRecordingButton(
@ -406,7 +416,7 @@ UI.onModeratorStatusChanged = function (isModerator) {
} }
}; };
UI.onPasswordReqiured = function (callback) { function onPasswordReqiured(callback) {
// password is required // password is required
Toolbar.lockLockButton(); Toolbar.lockLockButton();
@ -429,7 +439,35 @@ UI.onPasswordReqiured = function (callback) {
} }
} }
); );
}; }
function onMucEntered(jid, id, displayName) {
messageHandler.notify(displayName || 'Somebody',
'connected',
'connected');
// Add Peer's container
VideoLayout.ensurePeerContainerExists(jid,id);
}
function onMucPresenceStatus( jid, info) {
VideoLayout.setPresenceStatus(
'participant_' + Strophe.getResourceFromJid(jid), info.status);
}
function onMucRoleChanged(role, displayName) {
VideoLayout.showModeratorIndicator();
if (role === 'moderator') {
var displayName = displayName;
if (!displayName) {
displayName = 'Somebody';
}
messageHandler.notify(
displayName,
'connected',
'Moderator rights granted to ' + displayName + '!');
}
}
UI.onAuthenticationRequired = function (intervalCallback) { UI.onAuthenticationRequired = function (intervalCallback) {
Authentication.openAuthenticationDialog( Authentication.openAuthenticationDialog(
@ -446,35 +484,6 @@ UI.inputDisplayNameHandler = function (value) {
VideoLayout.inputDisplayNameHandler(value); VideoLayout.inputDisplayNameHandler(value);
}; };
UI.onMucEntered = function (jid, id, displayName) {
messageHandler.notify(displayName || 'Somebody',
'connected',
'connected');
// Add Peer's container
VideoLayout.ensurePeerContainerExists(jid,id);
};
UI.onMucPresenceStatus = function ( jid, info) {
VideoLayout.setPresenceStatus(
'participant_' + Strophe.getResourceFromJid(jid), info.status);
};
UI.onMucRoleChanged = function (role, displayName) {
VideoLayout.showModeratorIndicator();
if (role === 'moderator') {
var displayName = displayName;
if (!displayName) {
displayName = 'Somebody';
}
messageHandler.notify(
displayName,
'connected',
'Moderator rights granted to ' + displayName + '!');
}
};
UI.updateLocalConnectionStats = function(percent, stats) UI.updateLocalConnectionStats = function(percent, stats)
{ {
VideoLayout.updateLocalConnectionStats(percent, stats); VideoLayout.updateLocalConnectionStats(percent, stats);
@ -2464,10 +2473,10 @@ function setVisualNotification(show) {
var chatBottomButtonElement var chatBottomButtonElement
= document.getElementById('chatBottomButton').parentNode; = document.getElementById('chatBottomButton').parentNode;
var bottomLeftIndent = (Util.getTextWidth(chatBottomButtonElement) - var bottomLeftIndent = (UIUtil.getTextWidth(chatBottomButtonElement) -
Util.getTextWidth(unreadMsgBottomElement)) / 2; UIUtil.getTextWidth(unreadMsgBottomElement)) / 2;
var bottomTopIndent = (Util.getTextHeight(chatBottomButtonElement) - var bottomTopIndent = (UIUtil.getTextHeight(chatBottomButtonElement) -
Util.getTextHeight(unreadMsgBottomElement)) / 2 - 2; UIUtil.getTextHeight(unreadMsgBottomElement)) / 2 - 2;
unreadMsgBottomElement.setAttribute( unreadMsgBottomElement.setAttribute(
'style', 'style',

View File

@ -2855,9 +2855,6 @@ var Moderator = {
init: function (xmpp) { init: function (xmpp) {
this.xmppService = xmpp; this.xmppService = xmpp;
this.onLocalRoleChange = function (from, member, pres) {
UI.onModeratorStatusChanged(Moderator.isModerator());
};
}, },
onMucLeft: function (jid) { onMucLeft: function (jid) {
@ -3333,7 +3330,7 @@ module.exports = function(XMPP, eventEmitter) {
var etherpad = $(pres).find('>etherpad'); var etherpad = $(pres).find('>etherpad');
if (etherpad.length) { if (etherpad.length) {
if (config.etherpad_base && !Moderator.isModerator()) { if (config.etherpad_base && !Moderator.isModerator()) {
UI.initEtherpad(etherpad.text()); eventEmitter.emit(XMPPEvents.ETHERPAD, etherpad.text());
} }
} }
@ -3410,9 +3407,10 @@ module.exports = function(XMPP, eventEmitter) {
if (member.affiliation == 'owner') this.isOwner = true; if (member.affiliation == 'owner') this.isOwner = true;
if (this.role !== member.role) { if (this.role !== member.role) {
this.role = member.role; this.role = member.role;
if (Moderator.onLocalRoleChange)
Moderator.onLocalRoleChange(from, member, pres); eventEmitter.emit(XMPPEvents.LOCALROLE_CHANGED,
UI.onLocalRoleChange(from, member, pres); from, member, pres, Moderator.isModerator(),
Moderator.isExternalAuthEnabled());
} }
if (!this.joined) { if (!this.joined) {
this.joined = true; this.joined = true;
@ -3434,25 +3432,24 @@ module.exports = function(XMPP, eventEmitter) {
if (email.length > 0) { if (email.length > 0) {
id = email.text(); id = email.text();
} }
UI.onMucEntered(from, id, member.displayName); eventEmitter.emit(XMPPEvents.MUC_ENTER, from, id, member.displayName);
API.triggerEvent("participantJoined", {jid: from});
} }
} else { } else {
// Presence update for existing participant // Presence update for existing participant
// Watch role change: // Watch role change:
if (this.members[from].role != member.role) { if (this.members[from].role != member.role) {
this.members[from].role = member.role; this.members[from].role = member.role;
UI.onMucRoleChanged(member.role, member.displayName); eventEmitter.emit(XMPPEvents.MUC_ROLE_CHANGED,
member.role, member.displayName);
} }
} }
// Always trigger presence to update bindings // Always trigger presence to update bindings
$(document).trigger('presence.muc', [from, member, pres]);
this.parsePresence(from, member, pres); this.parsePresence(from, member, pres);
// Trigger status message update // Trigger status message update
if (member.status) { if (member.status) {
UI.onMucPresenceStatus(from, member); eventEmitter.emit(XMPPEvents.PRESENCE_STATUS, from, member);
} }
return true; return true;
@ -3489,7 +3486,7 @@ module.exports = function(XMPP, eventEmitter) {
if ($(pres).find('>error[type="auth"]>not-authorized[xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]').length) { if ($(pres).find('>error[type="auth"]>not-authorized[xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]').length) {
console.log('on password required', from); console.log('on password required', from);
var self = this; var self = this;
UI.onPasswordReqiured(function (value) { eventEmitter.emit(XMPPEvents.PASSWORD_REQUIRED, function (value) {
self.doJoin(from, value); self.doJoin(from, value);
}); });
} else if ($(pres).find( } else if ($(pres).find(
@ -3538,12 +3535,16 @@ module.exports = function(XMPP, eventEmitter) {
onMessage: function (msg) { onMessage: function (msg) {
// FIXME: this is a hack. but jingle on muc makes nickchanges hard // FIXME: this is a hack. but jingle on muc makes nickchanges hard
var from = msg.getAttribute('from'); var from = msg.getAttribute('from');
var nick = $(msg).find('>nick[xmlns="http://jabber.org/protocol/nick"]').text() || Strophe.getResourceFromJid(from); var nick =
$(msg).find('>nick[xmlns="http://jabber.org/protocol/nick"]')
.text() ||
Strophe.getResourceFromJid(from);
var txt = $(msg).find('>body').text(); var txt = $(msg).find('>body').text();
var type = msg.getAttribute("type"); var type = msg.getAttribute("type");
if (type == "error") { if (type == "error") {
UI.chatAddError($(msg).find('>text').text(), txt); eventEmitter.emit(XMPPEvents.CHAT_ERROR_RECEIVED,
$(msg).find('>text').text(), txt);
return true; return true;
} }
@ -3551,7 +3552,7 @@ module.exports = function(XMPP, eventEmitter) {
if (subject.length) { if (subject.length) {
var subjectText = subject.text(); var subjectText = subject.text();
if (subjectText || subjectText == "") { if (subjectText || subjectText == "") {
UI.chatSetSubject(subjectText); eventEmitter.emit(XMPPEvents.SUBJECT_CHANGED, subjectText);
console.log("Subject is changed to " + subjectText); console.log("Subject is changed to " + subjectText);
} }
} }
@ -3559,10 +3560,8 @@ module.exports = function(XMPP, eventEmitter) {
if (txt) { if (txt) {
console.log('chat', nick, txt); console.log('chat', nick, txt);
UI.updateChatConversation(from, nick, txt); eventEmitter.emit(XMPPEvents.MESSAGE_RECEIVED,
if (from != this.myroomjid) from, nick, txt, this.myroomjid);
API.triggerEvent("incomingMessage",
{"from": from, "nick": nick, "message": txt});
} }
return true; return true;
}, },
@ -3689,7 +3688,6 @@ module.exports = function(XMPP, eventEmitter) {
} }
pres.up(); pres.up();
// console.debug(pres.toString());
this.connection.send(pres); this.connection.send(pres);
}, },
addDisplayNameToPresence: function (displayName) { addDisplayNameToPresence: function (displayName) {
@ -3774,9 +3772,8 @@ module.exports = function(XMPP, eventEmitter) {
return null; return null;
}, },
onParticipantLeft: function (jid) { onParticipantLeft: function (jid) {
UI.onMucLeft(jid);
API.triggerEvent("participantLeft", {jid: jid}); eventEmitter.emit(XMPPEvents.MUC_LEFT, jid);
this.connection.jingle.terminateByJid(jid); this.connection.jingle.terminateByJid(jid);

View File

@ -132,6 +132,20 @@ function processMessage(event)
} }
function setupListeners() {
xmpp.addListener(XMPPEvents.MUC_ENTER, function (from) {
API.triggerEvent("participantJoined", {jid: from});
});
xmpp.addListener(XMPPEvents.MESSAGE_RECEIVED, function (from, nick, txt, myjid) {
if (from != myjid)
API.triggerEvent("incomingMessage",
{"from": from, "nick": nick, "message": txt});
});
xmpp.addListener(XMPPEvents.MUC_LEFT, function (jid) {
API.triggerEvent("participantLeft", {jid: jid});
});
}
var API = { var API = {
/** /**
* Check whether the API should be enabled or not. * Check whether the API should be enabled or not.
@ -160,6 +174,7 @@ var API = {
window.attachEvent('onmessage', processMessage); window.attachEvent('onmessage', processMessage);
} }
sendMessage({type: "system", loaded: true}); sendMessage({type: "system", loaded: true});
setupListeners();
}, },
/** /**
* Checks whether the event is enabled ot not. * Checks whether the event is enabled ot not.

View File

@ -139,6 +139,16 @@ function registerListeners() {
}); });
xmpp.addListener(XMPPEvents.DISPLAY_NAME_CHANGED, onDisplayNameChanged); xmpp.addListener(XMPPEvents.DISPLAY_NAME_CHANGED, onDisplayNameChanged);
xmpp.addListener(XMPPEvents.MUC_JOINED, onMucJoined); xmpp.addListener(XMPPEvents.MUC_JOINED, onMucJoined);
xmpp.addListener(XMPPEvents.LOCALROLE_CHANGED, onLocalRoleChange);
xmpp.addListener(XMPPEvents.MUC_ENTER, onMucEntered);
xmpp.addListener(XMPPEvents.MUC_ROLE_CHANGED, onMucRoleChanged);
xmpp.addListener(XMPPEvents.PRESENCE_STATUS, onMucPresenceStatus);
xmpp.addListener(XMPPEvents.SUBJECT_CHANGED, chatSetSubject);
xmpp.addListener(XMPPEvents.MESSAGE_RECEIVED, updateChatConversation);
xmpp.addListener(XMPPEvents.MUC_LEFT, onMucLeft);
xmpp.addListener(XMPPEvents.PASSWORD_REQUIRED, onPasswordReqiured);
xmpp.addListener(XMPPEvents.CHAT_ERROR_RECEIVED, chatAddError);
xmpp.addListener(XMPPEvents.ETHERPAD, initEtherpad);
} }
function bindEvents() function bindEvents()
@ -290,17 +300,17 @@ UI.toggleSmileys = function () {
Chat.toggleSmileys(); Chat.toggleSmileys();
}; };
UI.chatAddError = function(errorMessage, originalText) function chatAddError(errorMessage, originalText)
{ {
return Chat.chatAddError(errorMessage, originalText); return Chat.chatAddError(errorMessage, originalText);
}; };
UI.chatSetSubject = function(text) function chatSetSubject(text)
{ {
return Chat.chatSetSubject(text); return Chat.chatSetSubject(text);
}; };
UI.updateChatConversation = function (from, displayName, message) { function updateChatConversation(from, displayName, message) {
return Chat.updateChatConversation(from, displayName, message); return Chat.updateChatConversation(from, displayName, message);
}; };
@ -328,11 +338,11 @@ function onMucJoined(jid, info) {
onDisplayNameChanged('localVideoContainer', displayName + ' (me)'); onDisplayNameChanged('localVideoContainer', displayName + ' (me)');
} }
UI.initEtherpad = function (name) { function initEtherpad(name) {
Etherpad.init(name); Etherpad.init(name);
}; };
UI.onMucLeft = function (jid) { function onMucLeft(jid) {
console.log('left.muc', jid); console.log('left.muc', jid);
var displayName = $('#participant_' + Strophe.getResourceFromJid(jid) + var displayName = $('#participant_' + Strophe.getResourceFromJid(jid) +
'>.displayname').html(); '>.displayname').html();
@ -374,23 +384,23 @@ UI.toggleContactList = function () {
return BottomToolbar.toggleContactList(); return BottomToolbar.toggleContactList();
}; };
UI.onLocalRoleChange = function (jid, info, pres) { function onLocalRoleChange(jid, info, pres, isModerator, isExternalAuthEnabled)
{
console.info("My role changed, new role: " + info.role); console.info("My role changed, new role: " + info.role);
var isModerator = xmpp.isModerator(); onModeratorStatusChanged(isModerator);
VideoLayout.showModeratorIndicator(); VideoLayout.showModeratorIndicator();
Toolbar.showAuthenticateButton( Toolbar.showAuthenticateButton(
xmpp.isExternalAuthEnabled() && !isModerator); isExternalAuthEnabled && !isModerator);
if (isModerator) { if (isModerator) {
Authentication.closeAuthenticationWindow(); Authentication.closeAuthenticationWindow();
messageHandler.notify( messageHandler.notify(
'Me', 'connected', 'Moderator rights granted !'); 'Me', 'connected', 'Moderator rights granted !');
} }
}; }
UI.onModeratorStatusChanged = function (isModerator) { function onModeratorStatusChanged(isModerator) {
Toolbar.showSipCallButton(isModerator); Toolbar.showSipCallButton(isModerator);
Toolbar.showRecordingButton( Toolbar.showRecordingButton(
@ -405,7 +415,7 @@ UI.onModeratorStatusChanged = function (isModerator) {
} }
}; };
UI.onPasswordReqiured = function (callback) { function onPasswordReqiured(callback) {
// password is required // password is required
Toolbar.lockLockButton(); Toolbar.lockLockButton();
@ -428,7 +438,35 @@ UI.onPasswordReqiured = function (callback) {
} }
} }
); );
}; }
function onMucEntered(jid, id, displayName) {
messageHandler.notify(displayName || 'Somebody',
'connected',
'connected');
// Add Peer's container
VideoLayout.ensurePeerContainerExists(jid,id);
}
function onMucPresenceStatus( jid, info) {
VideoLayout.setPresenceStatus(
'participant_' + Strophe.getResourceFromJid(jid), info.status);
}
function onMucRoleChanged(role, displayName) {
VideoLayout.showModeratorIndicator();
if (role === 'moderator') {
var displayName = displayName;
if (!displayName) {
displayName = 'Somebody';
}
messageHandler.notify(
displayName,
'connected',
'Moderator rights granted to ' + displayName + '!');
}
}
UI.onAuthenticationRequired = function (intervalCallback) { UI.onAuthenticationRequired = function (intervalCallback) {
Authentication.openAuthenticationDialog( Authentication.openAuthenticationDialog(
@ -445,35 +483,6 @@ UI.inputDisplayNameHandler = function (value) {
VideoLayout.inputDisplayNameHandler(value); VideoLayout.inputDisplayNameHandler(value);
}; };
UI.onMucEntered = function (jid, id, displayName) {
messageHandler.notify(displayName || 'Somebody',
'connected',
'connected');
// Add Peer's container
VideoLayout.ensurePeerContainerExists(jid,id);
};
UI.onMucPresenceStatus = function ( jid, info) {
VideoLayout.setPresenceStatus(
'participant_' + Strophe.getResourceFromJid(jid), info.status);
};
UI.onMucRoleChanged = function (role, displayName) {
VideoLayout.showModeratorIndicator();
if (role === 'moderator') {
var displayName = displayName;
if (!displayName) {
displayName = 'Somebody';
}
messageHandler.notify(
displayName,
'connected',
'Moderator rights granted to ' + displayName + '!');
}
};
UI.updateLocalConnectionStats = function(percent, stats) UI.updateLocalConnectionStats = function(percent, stats)
{ {
VideoLayout.updateLocalConnectionStats(percent, stats); VideoLayout.updateLocalConnectionStats(percent, stats);

View File

@ -41,10 +41,10 @@ function setVisualNotification(show) {
var chatBottomButtonElement var chatBottomButtonElement
= document.getElementById('chatBottomButton').parentNode; = document.getElementById('chatBottomButton').parentNode;
var bottomLeftIndent = (Util.getTextWidth(chatBottomButtonElement) - var bottomLeftIndent = (UIUtil.getTextWidth(chatBottomButtonElement) -
Util.getTextWidth(unreadMsgBottomElement)) / 2; UIUtil.getTextWidth(unreadMsgBottomElement)) / 2;
var bottomTopIndent = (Util.getTextHeight(chatBottomButtonElement) - var bottomTopIndent = (UIUtil.getTextHeight(chatBottomButtonElement) -
Util.getTextHeight(unreadMsgBottomElement)) / 2 - 2; UIUtil.getTextHeight(unreadMsgBottomElement)) / 2 - 2;
unreadMsgBottomElement.setAttribute( unreadMsgBottomElement.setAttribute(
'style', 'style',

View File

@ -54,9 +54,6 @@ var Moderator = {
init: function (xmpp) { init: function (xmpp) {
this.xmppService = xmpp; this.xmppService = xmpp;
this.onLocalRoleChange = function (from, member, pres) {
UI.onModeratorStatusChanged(Moderator.isModerator());
};
}, },
onMucLeft: function (jid) { onMucLeft: function (jid) {

View File

@ -104,7 +104,7 @@ module.exports = function(XMPP, eventEmitter) {
var etherpad = $(pres).find('>etherpad'); var etherpad = $(pres).find('>etherpad');
if (etherpad.length) { if (etherpad.length) {
if (config.etherpad_base && !Moderator.isModerator()) { if (config.etherpad_base && !Moderator.isModerator()) {
UI.initEtherpad(etherpad.text()); eventEmitter.emit(XMPPEvents.ETHERPAD, etherpad.text());
} }
} }
@ -181,9 +181,10 @@ module.exports = function(XMPP, eventEmitter) {
if (member.affiliation == 'owner') this.isOwner = true; if (member.affiliation == 'owner') this.isOwner = true;
if (this.role !== member.role) { if (this.role !== member.role) {
this.role = member.role; this.role = member.role;
if (Moderator.onLocalRoleChange)
Moderator.onLocalRoleChange(from, member, pres); eventEmitter.emit(XMPPEvents.LOCALROLE_CHANGED,
UI.onLocalRoleChange(from, member, pres); from, member, pres, Moderator.isModerator(),
Moderator.isExternalAuthEnabled());
} }
if (!this.joined) { if (!this.joined) {
this.joined = true; this.joined = true;
@ -205,25 +206,24 @@ module.exports = function(XMPP, eventEmitter) {
if (email.length > 0) { if (email.length > 0) {
id = email.text(); id = email.text();
} }
UI.onMucEntered(from, id, member.displayName); eventEmitter.emit(XMPPEvents.MUC_ENTER, from, id, member.displayName);
API.triggerEvent("participantJoined", {jid: from});
} }
} else { } else {
// Presence update for existing participant // Presence update for existing participant
// Watch role change: // Watch role change:
if (this.members[from].role != member.role) { if (this.members[from].role != member.role) {
this.members[from].role = member.role; this.members[from].role = member.role;
UI.onMucRoleChanged(member.role, member.displayName); eventEmitter.emit(XMPPEvents.MUC_ROLE_CHANGED,
member.role, member.displayName);
} }
} }
// Always trigger presence to update bindings // Always trigger presence to update bindings
$(document).trigger('presence.muc', [from, member, pres]);
this.parsePresence(from, member, pres); this.parsePresence(from, member, pres);
// Trigger status message update // Trigger status message update
if (member.status) { if (member.status) {
UI.onMucPresenceStatus(from, member); eventEmitter.emit(XMPPEvents.PRESENCE_STATUS, from, member);
} }
return true; return true;
@ -260,7 +260,7 @@ module.exports = function(XMPP, eventEmitter) {
if ($(pres).find('>error[type="auth"]>not-authorized[xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]').length) { if ($(pres).find('>error[type="auth"]>not-authorized[xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"]').length) {
console.log('on password required', from); console.log('on password required', from);
var self = this; var self = this;
UI.onPasswordReqiured(function (value) { eventEmitter.emit(XMPPEvents.PASSWORD_REQUIRED, function (value) {
self.doJoin(from, value); self.doJoin(from, value);
}); });
} else if ($(pres).find( } else if ($(pres).find(
@ -309,12 +309,16 @@ module.exports = function(XMPP, eventEmitter) {
onMessage: function (msg) { onMessage: function (msg) {
// FIXME: this is a hack. but jingle on muc makes nickchanges hard // FIXME: this is a hack. but jingle on muc makes nickchanges hard
var from = msg.getAttribute('from'); var from = msg.getAttribute('from');
var nick = $(msg).find('>nick[xmlns="http://jabber.org/protocol/nick"]').text() || Strophe.getResourceFromJid(from); var nick =
$(msg).find('>nick[xmlns="http://jabber.org/protocol/nick"]')
.text() ||
Strophe.getResourceFromJid(from);
var txt = $(msg).find('>body').text(); var txt = $(msg).find('>body').text();
var type = msg.getAttribute("type"); var type = msg.getAttribute("type");
if (type == "error") { if (type == "error") {
UI.chatAddError($(msg).find('>text').text(), txt); eventEmitter.emit(XMPPEvents.CHAT_ERROR_RECEIVED,
$(msg).find('>text').text(), txt);
return true; return true;
} }
@ -322,7 +326,7 @@ module.exports = function(XMPP, eventEmitter) {
if (subject.length) { if (subject.length) {
var subjectText = subject.text(); var subjectText = subject.text();
if (subjectText || subjectText == "") { if (subjectText || subjectText == "") {
UI.chatSetSubject(subjectText); eventEmitter.emit(XMPPEvents.SUBJECT_CHANGED, subjectText);
console.log("Subject is changed to " + subjectText); console.log("Subject is changed to " + subjectText);
} }
} }
@ -330,10 +334,8 @@ module.exports = function(XMPP, eventEmitter) {
if (txt) { if (txt) {
console.log('chat', nick, txt); console.log('chat', nick, txt);
UI.updateChatConversation(from, nick, txt); eventEmitter.emit(XMPPEvents.MESSAGE_RECEIVED,
if (from != this.myroomjid) from, nick, txt, this.myroomjid);
API.triggerEvent("incomingMessage",
{"from": from, "nick": nick, "message": txt});
} }
return true; return true;
}, },
@ -460,7 +462,6 @@ module.exports = function(XMPP, eventEmitter) {
} }
pres.up(); pres.up();
// console.debug(pres.toString());
this.connection.send(pres); this.connection.send(pres);
}, },
addDisplayNameToPresence: function (displayName) { addDisplayNameToPresence: function (displayName) {
@ -545,9 +546,8 @@ module.exports = function(XMPP, eventEmitter) {
return null; return null;
}, },
onParticipantLeft: function (jid) { onParticipantLeft: function (jid) {
UI.onMucLeft(jid);
API.triggerEvent("participantLeft", {jid: jid}); eventEmitter.emit(XMPPEvents.MUC_LEFT, jid);
this.connection.jingle.terminateByJid(jid); this.connection.jingle.terminateByJid(jid);

View File

@ -8,7 +8,17 @@ var XMPPEvents = {
USER_ID_CHANGED: "xmpp.user_id_changed", USER_ID_CHANGED: "xmpp.user_id_changed",
CHANGED_STREAMS: "xmpp.changed_streams", CHANGED_STREAMS: "xmpp.changed_streams",
MUC_JOINED: "xmpp.muc_joined", MUC_JOINED: "xmpp.muc_joined",
MUC_ENTER: "xmpp.muc_enter",
MUC_ROLE_CHANGED: "xmpp.muc_role_changed",
MUC_LEFT: "xmpp.muc_left",
DISPLAY_NAME_CHANGED: "xmpp.display_name_changed", DISPLAY_NAME_CHANGED: "xmpp.display_name_changed",
REMOTE_STATS: "xmpp.remote_stats" REMOTE_STATS: "xmpp.remote_stats",
LOCALROLE_CHANGED: "xmpp.localrole_changed",
PRESENCE_STATUS: "xmpp.presence_status",
SUBJECT_CHANGED: "xmpp.subject_changed",
MESSAGE_RECEIVED: "xmpp.message_received",
PASSWORD_REQUIRED: "xmpp.password_required",
CHAT_ERROR_RECEIVED: "xmpp.chat_error_received",
ETHERPAD: "xmpp.etherpad"
}; };
//module.exports = XMPPEvents; //module.exports = XMPPEvents;