|
@@ -68682,7 +68682,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
|
|
|
this.model.on('destroy', this.hide, this);
|
|
|
this.model.on('show', this.show, this);
|
|
|
this.model.occupants.on('add', this.onOccupantAdded, this);
|
|
|
- this.model.occupants.on('remove', this.showLeaveNotification, this);
|
|
|
+ this.model.occupants.on('remove', this.onOccupantRemoved, this);
|
|
|
this.model.occupants.on('change:show', this.showJoinOrLeaveNotification, this);
|
|
|
this.model.occupants.on('change:role', this.informOfOccupantsRoleChange, this);
|
|
|
this.model.occupants.on('change:affiliation', this.informOfOccupantsAffiliationChange, this);
|
|
@@ -69706,6 +69706,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
|
|
|
}
|
|
|
},
|
|
|
|
|
|
+ onOccupantRemoved(occupant) {
|
|
|
+ if (occupant.get('show') === 'online') {
|
|
|
+ this.showLeaveNotification(occupant);
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
showJoinOrLeaveNotification(occupant) {
|
|
|
if (_.includes(occupant.get('states'), '303')) {
|
|
|
return;
|
|
@@ -69772,26 +69778,42 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
|
|
|
|
|
|
const nick = occupant.get('nick'),
|
|
|
stat = occupant.get('status'),
|
|
|
- last_el = this.content.lastElementChild;
|
|
|
+ last_el = this.content.lastElementChild,
|
|
|
+ data = _.get(last_el, 'dataset', {});
|
|
|
|
|
|
- if (last_el && _.includes(_.get(last_el, 'classList', []), 'chat-info') && moment(last_el.getAttribute('data-isodate')).isSame(new Date(), "day") && _.get(last_el, 'dataset', {}).join === `"${nick}"`) {
|
|
|
+ if (last_el && _.includes(_.get(last_el, 'classList', []), 'chat-info') && moment(last_el.getAttribute('data-isodate')).isSame(new Date(), "day") && (data.join === `"${nick}"` || data.leavejoin === `"${nick}"`)) {
|
|
|
let message;
|
|
|
|
|
|
- if (_.isNil(stat)) {
|
|
|
- message = __('%1$s has entered and left the groupchat', nick);
|
|
|
- } else {
|
|
|
- message = __('%1$s has entered and left the groupchat. "%2$s"', nick, stat);
|
|
|
- }
|
|
|
+ if (data.join === `"${nick}"`) {
|
|
|
+ if (_.isNil(stat)) {
|
|
|
+ message = __('%1$s has entered and left the groupchat', nick);
|
|
|
+ } else {
|
|
|
+ message = __('%1$s has entered and left the groupchat. "%2$s"', nick, stat);
|
|
|
+ }
|
|
|
|
|
|
- last_el.outerHTML = tpl_info({
|
|
|
- 'data': `data-joinleave="${nick}"`,
|
|
|
- 'isodate': moment().format(),
|
|
|
- 'extra_classes': 'chat-event',
|
|
|
- 'message': message
|
|
|
- });
|
|
|
- const el = this.content.lastElementChild;
|
|
|
- setTimeout(() => u.addClass('fade-out', el), 5000);
|
|
|
- setTimeout(() => el.parentElement && el.parentElement.removeChild(el), 5250);
|
|
|
+ last_el.outerHTML = tpl_info({
|
|
|
+ 'data': `data-joinleave="${nick}"`,
|
|
|
+ 'isodate': moment().format(),
|
|
|
+ 'extra_classes': 'chat-event',
|
|
|
+ 'message': message
|
|
|
+ });
|
|
|
+ const el = this.content.lastElementChild;
|
|
|
+ setTimeout(() => u.addClass('fade-out', el), 5000);
|
|
|
+ setTimeout(() => el.parentElement && el.parentElement.removeChild(el), 5250);
|
|
|
+ } else if (data.leavejoin === `"${nick}"`) {
|
|
|
+ if (_.isNil(stat)) {
|
|
|
+ message = __('%1$s has left the groupchat', nick);
|
|
|
+ } else {
|
|
|
+ message = __('%1$s has left the groupchat. "%2$s"', nick, stat);
|
|
|
+ }
|
|
|
+
|
|
|
+ last_el.outerHTML = tpl_info({
|
|
|
+ 'data': `data-leave="${nick}"`,
|
|
|
+ 'isodate': moment().format(),
|
|
|
+ 'extra_classes': 'chat-event',
|
|
|
+ 'message': message
|
|
|
+ });
|
|
|
+ }
|
|
|
} else {
|
|
|
let message;
|
|
|
|