From 772fe27b2bf209a0ba4c9b56e9c3054fd8bb4ffa Mon Sep 17 00:00:00 2001 From: William Grant Date: Thu, 15 Sep 2022 11:00:47 +1000 Subject: [PATCH 1/4] fix: compressed reactions shouldn't wrap, when expanded we show at most 10 reactions on a time --- .../message/message-content/MessageReactions.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ts/components/conversation/message/message-content/MessageReactions.tsx b/ts/components/conversation/message/message-content/MessageReactions.tsx index 8a1d512b4..d42f79cef 100644 --- a/ts/components/conversation/message/message-content/MessageReactions.tsx +++ b/ts/components/conversation/message/message-content/MessageReactions.tsx @@ -21,8 +21,8 @@ const StyledMessageReactionsContainer = styled(Flex)<{ x: number; y: number }>` } `; -export const StyledMessageReactions = styled(Flex)<{ inModal: boolean }>` - ${props => (props.inModal ? '' : 'max-width: 320px;')} +export const StyledMessageReactions = styled(Flex)<{ fullWidth: boolean }>` + ${props => (props.fullWidth ? '' : 'max-width: 640px;')} `; const StyledReactionOverflow = styled.button` @@ -63,7 +63,7 @@ const Reactions = (props: ReactionsProps): ReactElement => { container={true} flexWrap={inModal ? 'nowrap' : 'wrap'} alignItems={'center'} - inModal={inModal} + fullWidth={inModal} > {reactions.map(([emoji, _]) => ( @@ -83,7 +83,7 @@ const CompressedReactions = (props: ExpandReactionsProps): ReactElement => { container={true} flexWrap={inModal ? 'nowrap' : 'wrap'} alignItems={'center'} - inModal={inModal} + fullWidth={true} > {reactions.slice(0, 4).map(([emoji, _]) => ( From c076c5b819dff5bb23fff2c73fb84cfcf6b65aaa Mon Sep 17 00:00:00 2001 From: William Grant Date: Thu, 15 Sep 2022 11:20:29 +1000 Subject: [PATCH 2/4] fix: improve alignment in list modal when rendering complex emojis --- ts/components/dialog/ReactListModal.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/ts/components/dialog/ReactListModal.tsx b/ts/components/dialog/ReactListModal.tsx index 4c5ac2375..b14e42ad6 100644 --- a/ts/components/dialog/ReactListModal.tsx +++ b/ts/components/dialog/ReactListModal.tsx @@ -55,6 +55,7 @@ const StyledReactionBar = styled(Flex)` span:nth-child(1) { margin: 0 8px; color: var(--color-text); + white-space: nowrap; } span:nth-child(2) { From 179f8726791723d9eb4394a32286ecc7bcafde2f Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Thu, 15 Sep 2022 09:58:41 +1000 Subject: [PATCH 3/4] fix: disable typing and message request on sogs without `write` --- stylesheets/_session.scss | 2 +- ts/components/conversation/TypingAnimation.tsx | 2 +- .../message/message-content/MessageAvatar.tsx | 8 ++++++++ ts/models/conversation.ts | 17 +++++++++++++++++ ts/state/ducks/conversations.ts | 7 +++++-- ts/state/selectors/conversations.ts | 4 ++-- 6 files changed, 34 insertions(+), 6 deletions(-) diff --git a/stylesheets/_session.scss b/stylesheets/_session.scss index db47ef1b1..10c394763 100644 --- a/stylesheets/_session.scss +++ b/stylesheets/_session.scss @@ -79,7 +79,7 @@ textarea { overflow: hidden; outline: none; color: $textAndBorderColor; - border: 2px solid $textAndBorderColor; + border: 1px solid $textAndBorderColor; } width: auto; diff --git a/ts/components/conversation/TypingAnimation.tsx b/ts/components/conversation/TypingAnimation.tsx index 79c1384bc..e414f14b1 100644 --- a/ts/components/conversation/TypingAnimation.tsx +++ b/ts/components/conversation/TypingAnimation.tsx @@ -14,7 +14,7 @@ const StyledTypingContainer = styled.div` const StyledTypingDot = styled.div<{ index: number }>` border-radius: 50%; - background-color: var(--color-text-subtle); // TODO Theming update + background-color: var(--color-text-subtle); // TODO Theming update height: 6px; width: 6px; diff --git a/ts/components/conversation/message/message-content/MessageAvatar.tsx b/ts/components/conversation/message/message-content/MessageAvatar.tsx index 37784e645..a2b1a878d 100644 --- a/ts/components/conversation/message/message-content/MessageAvatar.tsx +++ b/ts/components/conversation/message/message-content/MessageAvatar.tsx @@ -9,6 +9,7 @@ import { PubKey } from '../../../../session/types'; import { openConversationWithMessages } from '../../../../state/ducks/conversations'; import { updateUserDetailsModal } from '../../../../state/ducks/modalDialog'; import { + getIsTypingEnabled, getMessageAvatarProps, getSelectedConversationKey, } from '../../../../state/selectors/conversations'; @@ -37,6 +38,8 @@ export const MessageAvatar = (props: Props) => { const avatarProps = useSelector(state => getMessageAvatarProps(state as any, messageId)); const selectedConvoKey = useSelector(getSelectedConversationKey); + const isTypingEnabled = useSelector(getIsTypingEnabled); + if (!avatarProps) { return null; } @@ -75,6 +78,11 @@ export const MessageAvatar = (props: Props) => { } } + if (isPublic && !isTypingEnabled) { + window.log.info('onMessageAvatarClick: no typing enabled. Dropping...'); + return; + } + if (isPublic && selectedConvoKey) { const convoOpen = getConversationController().get(selectedConvoKey); const room = OpenGroupData.getV2OpenGroupRoom(convoOpen.id); diff --git a/ts/models/conversation.ts b/ts/models/conversation.ts index fd2fe7f21..c3ceacf16 100644 --- a/ts/models/conversation.ts +++ b/ts/models/conversation.ts @@ -416,6 +416,23 @@ export class ConversationModel extends Backbone.Model { toRet.currentNotificationSetting = currentNotificationSetting; } + if (this.isOpenGroupV2()) { + const room = OpenGroupData.getV2OpenGroupRoom(this.id); + if (room && isArray(room.capabilities) && room.capabilities.length) { + toRet.capabilities = room.capabilities; + } + + if (this.get('writeCapability')) { + toRet.writeCapability = this.get('writeCapability'); + } + if (this.get('readCapability')) { + toRet.readCapability = this.get('readCapability'); + } + if (this.get('uploadCapability')) { + toRet.uploadCapability = this.get('uploadCapability'); + } + } + const lastMessageText = this.get('lastMessage'); if (lastMessageText && lastMessageText.length) { const lastMessageStatus = this.get('lastMessageStatus'); diff --git a/ts/state/ducks/conversations.ts b/ts/state/ducks/conversations.ts index 0ff54b94d..3d4614d4b 100644 --- a/ts/state/ducks/conversations.ts +++ b/ts/state/ducks/conversations.ts @@ -268,8 +268,11 @@ export interface ReduxConversationType { isApproved?: boolean; didApproveMe?: boolean; - /** Should only be present on open groups - the key (stored as hex) that should be used when sending messages to an open group */ - blindedPublicKey?: string; + // Should only be present on opengroups - the capabilities we have on this room. + capabilities?: Array; + readCapability?: boolean; + writeCapability?: boolean; + uploadCapability?: boolean; } export interface NotificationForConvoOption { diff --git a/ts/state/selectors/conversations.ts b/ts/state/selectors/conversations.ts index 7cd8101ce..01c78b002 100644 --- a/ts/state/selectors/conversations.ts +++ b/ts/state/selectors/conversations.ts @@ -85,9 +85,9 @@ export const getIsTypingEnabled = createSelector( if (!selectedConvo) { return false; } - const { isBlocked, isKickedFromGroup, left } = selectedConvo; + const { isBlocked, isKickedFromGroup, left, isPublic, writeCapability } = selectedConvo; - return !(isBlocked || isKickedFromGroup || left); + return !(isBlocked || isKickedFromGroup || left || (isPublic && !writeCapability)); } ); /** From 203e4992c358ad45e9ab5bb9c66ddb1bed7aae64 Mon Sep 17 00:00:00 2001 From: Audric Ackermann Date: Thu, 15 Sep 2022 12:02:39 +1000 Subject: [PATCH 4/4] bump to Session v1.10.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d61780aff..8c930fa74 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "session-desktop", "productName": "Session", "description": "Private messaging from your desktop", - "version": "1.10.0", + "version": "1.10.1", "license": "GPL-3.0", "author": { "name": "Oxen Labs",