diff --git a/src/screens/Messages/components/ChatListItem.tsx b/src/screens/Messages/components/ChatListItem.tsx index af8b86005d..1be5baf613 100644 --- a/src/screens/Messages/components/ChatListItem.tsx +++ b/src/screens/Messages/components/ChatListItem.tsx @@ -124,7 +124,7 @@ function DirectChatItem({ return ( } title={chatName} accessibilityHint={l`Go to the group chat named "${chatName}"`} @@ -213,7 +213,7 @@ function BaseChatItem({ postAlerts, children, }: { - convo: ChatBskyConvoDefs.ConvoView + convo: ConvoWithDetails avatar: React.ReactNode title: string subtitle?: string @@ -238,7 +238,13 @@ function BaseChatItem({ const playHaptic = useHaptics() const queryClient = useQueryClient() - const hasUnread = convo.unreadCount > 0 && !isDeletedAccount + const hasUnread = + convo.view.unreadCount > 0 && + !isDeletedAccount && + !( + convo.kind === 'group' && + convo.details.lockStatus === 'locked-permanently' + ) const blockInfo = useMemo(() => { if (!primaryProfileModeration) return {listBlocks: [], userBlock: undefined} @@ -252,7 +258,11 @@ function BaseChatItem({ } }, [primaryProfileModeration]) - const isDimStyle = convo.muted || isBlockedAccount || isDeletedAccount + const isDimStyle = + convo.view.muted || + isBlockedAccount || + isDeletedAccount || + (convo.kind === 'group' && convo.details.lockStatus !== 'unlocked') const {lastMessage, lastMessageSentAt, latestReportableMessage} = useMemo(() => { @@ -263,8 +273,8 @@ function BaseChatItem({ let latestReportableMessage: ChatBskyConvoDefs.MessageView | undefined // Deleted message - if (ChatBskyConvoDefs.isDeletedMessageView(convo.lastMessage)) { - lastMessageSentAt = convo.lastMessage.sentAt + if (ChatBskyConvoDefs.isDeletedMessageView(convo.view.lastMessage)) { + lastMessageSentAt = convo.view.lastMessage.sentAt lastMessage = isDeletedAccount ? l`Conversation deleted` @@ -272,9 +282,9 @@ function BaseChatItem({ } // Message - if (ChatBskyConvoDefs.isMessageView(convo.lastMessage)) { + if (ChatBskyConvoDefs.isMessageView(convo.view.lastMessage)) { const info = getMessageInfo({ - convo, + convo: convo.view, currentAccountDid: currentAccount?.did, i18n, }) @@ -286,9 +296,9 @@ function BaseChatItem({ } // Reaction - if (ChatBskyConvoDefs.isMessageAndReactionView(convo.lastReaction)) { + if (ChatBskyConvoDefs.isMessageAndReactionView(convo.view.lastReaction)) { const info = getReactionInfo({ - convo, + convo: convo.view, currentAccountDid: currentAccount?.did, i18n, }) @@ -303,14 +313,14 @@ function BaseChatItem({ } // System message - if (ChatBskyConvoDefs.isSystemMessageView(convo.lastMessage)) { + if (ChatBskyConvoDefs.isSystemMessageView(convo.view.lastMessage)) { const info = getSystemMessageInfo( - convo.lastMessage.data, - new Map(convo.members.map(m => [m.did, m])), + convo.view.lastMessage.data, + new Map(convo.view.members.map(m => [m.did, m])), ) if (info) { lastMessage = i18n._(info.message) - lastMessageSentAt = convo.lastMessage.sentAt + lastMessageSentAt = convo.view.lastMessage.sentAt } } @@ -338,11 +348,11 @@ function BaseChatItem({ const onPress = useCallback( (e: GestureResponderEvent) => { - for (const member of convo.members) { + for (const member of convo.view.members) { unstableCacheProfileView(queryClient, member) } precacheConvoQuery(queryClient, convo) - void decrementBadgeCount(convo.unreadCount) + void decrementBadgeCount(convo.view.unreadCount) if (isDeletedAccount) { e.preventDefault() menuControl.open() @@ -365,7 +375,7 @@ function BaseChatItem({ icon: EnvelopeOpen, action: () => { markAsRead({ - convoId: convo.id, + convoId: convo.view.id, }) }, } @@ -408,7 +418,7 @@ function BaseChatItem({ precacheConvoQuery(queryClient, convo)} + onPressIn={() => precacheConvoQuery(queryClient, convo.view)} onPress={onPress} onLongPress={showMenu && IS_NATIVE ? onLongPress : undefined} onAccessibilityAction={showMenu ? onLongPress : undefined}> @@ -486,7 +496,7 @@ function BaseChatItem({ )} - {(convo.muted || isBlockedAccount) && ( + {(convo.view.muted || isBlockedAccount) && ( 0} + showMarkAsRead={convo.view.unreadCount > 0} hideTrigger={IS_NATIVE} blockInfo={blockInfo} style={[ @@ -583,7 +593,7 @@ function BaseChatItem({