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)); } ); /**