mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 16:46:12 +01:00
fix: #7424
This commit is contained in:
@@ -55,9 +55,38 @@ define('chat', [
|
||||
|
||||
newMessage = data.self === 0;
|
||||
if (module.modalExists(data.roomId)) {
|
||||
require(['forum/chats/messages'], function (ChatsMessages) {
|
||||
var modal = module.getModal(data.roomId);
|
||||
addMessageToModal(data);
|
||||
} else if (!ajaxify.data.template.chats) {
|
||||
socket.emit('modules.chats.loadRoom', {
|
||||
roomId: data.roomId,
|
||||
}, function (err, roomData) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
roomData.users = roomData.users.filter(function (user) {
|
||||
return user && parseInt(user.uid, 10) !== parseInt(app.user.uid, 10);
|
||||
});
|
||||
roomData.silent = true;
|
||||
roomData.uid = app.user.uid;
|
||||
roomData.isSelf = isSelf;
|
||||
module.createModal(roomData, function (modal) {
|
||||
if (!isSelf) {
|
||||
updateTitleAndPlaySound(data.message.mid, username);
|
||||
}
|
||||
if (!modal) {
|
||||
addMessageToModal(data);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function addMessageToModal(data) {
|
||||
var modal = module.getModal(data.roomId);
|
||||
var username = data.message.fromUser.username;
|
||||
var isSelf = data.self === 1;
|
||||
require(['forum/chats/messages'], function (ChatsMessages) {
|
||||
ChatsMessages.appendChatMessage(modal.find('.chat-content'), data.message);
|
||||
|
||||
if (modal.is(':visible')) {
|
||||
@@ -77,29 +106,8 @@ define('chat', [
|
||||
});
|
||||
}
|
||||
});
|
||||
} else if (!ajaxify.data.template.chats) {
|
||||
socket.emit('modules.chats.loadRoom', {
|
||||
roomId: data.roomId,
|
||||
}, function (err, roomData) {
|
||||
if (err) {
|
||||
return app.alertError(err.message);
|
||||
}
|
||||
|
||||
roomData.users = roomData.users.filter(function (user) {
|
||||
return user && parseInt(user.uid, 10) !== parseInt(app.user.uid, 10);
|
||||
});
|
||||
roomData.silent = true;
|
||||
roomData.uid = app.user.uid;
|
||||
roomData.isSelf = isSelf;
|
||||
module.createModal(roomData, function () {
|
||||
if (!isSelf) {
|
||||
updateTitleAndPlaySound(data.message.mid, username);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
function updateTitleAndPlaySound(mid, username) {
|
||||
app.alternatingTitle('[[modules:chat.user_has_messaged_you, ' + username + ']]');
|
||||
require(['sounds'], function (sounds) {
|
||||
@@ -128,8 +136,12 @@ define('chat', [
|
||||
};
|
||||
|
||||
module.createModal = function (data, callback) {
|
||||
callback = callback || function () {};
|
||||
require(['scrollStop', 'forum/chats', 'forum/chats/messages'], function (scrollStop, Chats, ChatsMessages) {
|
||||
app.parseAndTranslate('chat', data, function (chatModal) {
|
||||
if (module.modalExists(data.roomId)) {
|
||||
return callback(null);
|
||||
}
|
||||
var uuid = utils.generateUUID();
|
||||
var dragged = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user