From 797802885c3aac26c6399d90fbcda19079d45b60 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 8 Jul 2020 14:42:54 +1000 Subject: [PATCH 1/4] include joined and kicked members on local groupUpdate also only print name update if the name changed --- js/background.js | 15 ++++++++++++++- js/models/conversations.js | 2 +- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/js/background.js b/js/background.js index 47757e42a..de60cc502 100644 --- a/js/background.js +++ b/js/background.js @@ -630,6 +630,7 @@ groupId, 'group' ); + const oldMembers = convo.get('members'); const ev = { groupDetails: { @@ -709,7 +710,6 @@ const updateObj = { id: groupId, - name: groupName, avatar: nullAvatar, recipients, members, @@ -717,6 +717,19 @@ options, }; + if (!convo.getName() || convo.getName() !== groupName) { + updateObj.name = groupName; + } + + const addedMembers = _.difference(updateObj.members, oldMembers); + if (addedMembers.length > 0) { + updateObj.joined = addedMembers; + } + // Check if anyone got kicked: + const removedMembers = _.difference(oldMembers, updateObj.members); + if (removedMembers.length > 0) { + updateObj.kicked = removedMembers; + } // Send own sender keys and group secret key if (isMediumGroup) { const { chainKey, keyIdx } = await window.SenderKeyAPI.getSenderKeys( diff --git a/js/models/conversations.js b/js/models/conversations.js index eb724f58f..ca9932fa9 100644 --- a/js/models/conversations.js +++ b/js/models/conversations.js @@ -1858,7 +1858,7 @@ // if we do set an identifier here, be sure to not sync the message two times in msg.handleMessageSentSuccess() timestamp: now, groupId: id, - name, + name: name || this.getName(), avatar, members, admins: this.get('groupAdmins'), From dca4b9ef6dc5f736ce8c2e28782495ff1a656231 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 8 Jul 2020 14:47:03 +1000 Subject: [PATCH 2/4] remove unused GroupUpdateView --- js/views/group_update_view.js | 33 --------------------------------- 1 file changed, 33 deletions(-) delete mode 100644 js/views/group_update_view.js diff --git a/js/views/group_update_view.js b/js/views/group_update_view.js deleted file mode 100644 index b7e150d5e..000000000 --- a/js/views/group_update_view.js +++ /dev/null @@ -1,33 +0,0 @@ -/* global Backbone, Whisper */ - -// eslint-disable-next-line func-names -(function() { - 'use strict'; - - window.Whisper = window.Whisper || {}; - - // TODO: remove this as unused? - Whisper.GroupUpdateView = Backbone.View.extend({ - tagName: 'div', - className: 'group-update', - render() { - // TODO l10n - if (this.model.left) { - this.$el.text(`${this.model.left} left the group`); - return this; - } - - const messages = ['Updated the group.']; - if (this.model.name) { - messages.push(`Group name has been set to '${this.model.name}'.`); - } - if (this.model.joined) { - messages.push(`${this.model.joined.join(', ')} joined the group`); - } - - this.$el.text(messages.join(' ')); - - return this; - }, - }); -})(); From db1a133c25d5006fb20960e8ccb15ac8a4f12673 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 8 Jul 2020 14:47:13 +1000 Subject: [PATCH 3/4] drop an expiretimer message with the same timer already on use --- js/background.js | 3 ++- ts/receiver/queuedJob.ts | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/js/background.js b/js/background.js index de60cc502..3bcf3d312 100644 --- a/js/background.js +++ b/js/background.js @@ -631,6 +631,7 @@ 'group' ); const oldMembers = convo.get('members'); + const oldName = convo.getName(); const ev = { groupDetails: { @@ -717,7 +718,7 @@ options, }; - if (!convo.getName() || convo.getName() !== groupName) { + if (oldName !== groupName) { updateObj.name = groupName; } diff --git a/ts/receiver/queuedJob.ts b/ts/receiver/queuedJob.ts index 34493e653..6fc2da5de 100644 --- a/ts/receiver/queuedJob.ts +++ b/ts/receiver/queuedJob.ts @@ -522,6 +522,16 @@ export async function handleMessageJob( handleSessionReset(conversation, message); } else if (message.isExpirationTimerUpdate()) { const { expireTimer } = initialMessage; + const oldValue = conversation.get('expireTimer'); + if (expireTimer === oldValue) { + if (confirm) { + confirm(); + } + window.console.log( + 'Dropping ExpireTimerUpdate message as we already have the same one set.' + ); + return; + } handleExpirationTimerUpdate(conversation, message, source, expireTimer); } else { await handleRegularMessage( From 8432d0148805859ddfb6ca537bb49c092787c398 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Wed, 8 Jul 2020 15:46:37 +1000 Subject: [PATCH 4/4] minor ui improvements (button color and place) --- stylesheets/_session.scss | 2 +- ts/components/conversation/InviteContactsDialog.tsx | 3 ++- .../conversation/UpdateGroupMembersDialog.tsx | 9 ++++++--- ts/components/conversation/UpdateGroupNameDialog.tsx | 10 +++++++--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/stylesheets/_session.scss b/stylesheets/_session.scss index 49e979638..79fcac46e 100644 --- a/stylesheets/_session.scss +++ b/stylesheets/_session.scss @@ -685,7 +685,7 @@ label { padding-left: 10px; } -.create-group-dialog .session-modal__body { +.session-modal__body { display: flex; flex-direction: column; diff --git a/ts/components/conversation/InviteContactsDialog.tsx b/ts/components/conversation/InviteContactsDialog.tsx index c77d044b9..417ae66e0 100644 --- a/ts/components/conversation/InviteContactsDialog.tsx +++ b/ts/components/conversation/InviteContactsDialog.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { SessionModal } from '../session/SessionModal'; -import { SessionButton } from '../session/SessionButton'; +import { SessionButton, SessionButtonColor } from '../session/SessionButton'; import { ContactType, SessionMemberListItem, @@ -87,6 +87,7 @@ export class InviteContactsDialog extends React.Component { text={okText} disabled={!hasContacts} onClick={this.onClickOK} + buttonColor={SessionButtonColor.Green} /> diff --git a/ts/components/conversation/UpdateGroupMembersDialog.tsx b/ts/components/conversation/UpdateGroupMembersDialog.tsx index ca9e05e5e..374a8564e 100644 --- a/ts/components/conversation/UpdateGroupMembersDialog.tsx +++ b/ts/components/conversation/UpdateGroupMembersDialog.tsx @@ -3,7 +3,7 @@ import classNames from 'classnames'; import { Contact } from './MemberList'; import { SessionModal } from '../session/SessionModal'; -import { SessionButton } from '../session/SessionButton'; +import { SessionButton, SessionButtonColor } from '../session/SessionButton'; import { ContactType, SessionMemberListItem, @@ -136,9 +136,12 @@ export class UpdateGroupMembersDialog extends React.Component {
- - +
); diff --git a/ts/components/conversation/UpdateGroupNameDialog.tsx b/ts/components/conversation/UpdateGroupNameDialog.tsx index facdef321..4b8c8c235 100644 --- a/ts/components/conversation/UpdateGroupNameDialog.tsx +++ b/ts/components/conversation/UpdateGroupNameDialog.tsx @@ -2,7 +2,7 @@ import React from 'react'; import classNames from 'classnames'; import { SessionModal } from '../session/SessionModal'; -import { SessionButton } from '../session/SessionButton'; +import { SessionButton, SessionButtonColor } from '../session/SessionButton'; import { Avatar } from '../Avatar'; interface Props { @@ -106,9 +106,13 @@ export class UpdateGroupNameDialog extends React.Component { />
- - + +
);