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({