diff --git a/src/screens/Messages/ChatList.tsx b/src/screens/Messages/ChatList.tsx
index c37a025cc9..3454464648 100644
--- a/src/screens/Messages/ChatList.tsx
+++ b/src/screens/Messages/ChatList.tsx
@@ -55,7 +55,7 @@ type ListItem =
function renderItem({item}: {item: ListItem}) {
switch (item.type) {
case 'INBOX':
- return
+ return
case 'CONVERSATION':
return
}
@@ -140,22 +140,24 @@ export function MessagesScreenInner({navigation, route}: Props) {
const leftConvos = useLeftConvos()
- const inboxPreviewConvos = useMemo(() => {
- const inbox =
- inboxData?.pages
- .flatMap(page => page.convos)
- .filter(
- convo =>
- !leftConvos.includes(convo.id) &&
- !convo.muted &&
- convo.unreadCount > 0 &&
- convo.members.every(member => member.handle !== 'missing.invalid'),
- ) ?? []
+ const inboxAllConvos =
+ inboxData?.pages
+ .flatMap(page => page.convos)
+ .filter(
+ convo =>
+ !leftConvos.includes(convo.id) &&
+ !convo.muted &&
+ convo.members.every(member => member.handle !== 'missing.invalid'),
+ ) ?? []
+ const hasInboxConvos = inboxAllConvos?.length > 0
- return inbox
- .map(x => x.members.find(y => y.did !== currentAccount?.did))
- .filter(x => !!x)
- }, [inboxData, leftConvos, currentAccount?.did])
+ const inboxUnreadConvos = inboxAllConvos.filter(
+ convo => convo.unreadCount > 0,
+ )
+
+ const inboxUnreadConvoMembers = inboxUnreadConvos
+ .map(x => x.members.find(y => y.did !== currentAccount?.did))
+ .filter(x => !!x)
const conversations = useMemo(() => {
if (data?.pages) {
@@ -164,15 +166,13 @@ export function MessagesScreenInner({navigation, route}: Props) {
// filter out convos that are actively being left
.filter(convo => !leftConvos.includes(convo.id))
- const hasInboxRequests = inboxPreviewConvos?.length > 0
-
return [
- ...(hasInboxRequests
+ ...(hasInboxConvos
? [
{
type: 'INBOX' as const,
- count: inboxPreviewConvos.length,
- profiles: inboxPreviewConvos.slice(0, 3),
+ count: inboxUnreadConvoMembers.length,
+ profiles: inboxUnreadConvoMembers.slice(0, 3),
},
]
: []),
@@ -182,7 +182,7 @@ export function MessagesScreenInner({navigation, route}: Props) {
] satisfies ListItem[]
}
return []
- }, [data, leftConvos, inboxPreviewConvos])
+ }, [data, leftConvos, hasInboxConvos, inboxUnreadConvoMembers])
const onRefresh = useCallback(async () => {
setIsPTRing(true)
@@ -231,21 +231,17 @@ export function MessagesScreenInner({navigation, route}: Props) {
// NOTE(APiligrim)
// Show empty state only if there are no conversations at all
- const actualConversations = conversations.filter(
+ const activeConversations = conversations.filter(
item => item.type === 'CONVERSATION',
)
- const hasInboxRequests = inboxPreviewConvos?.length > 0
- if (actualConversations.length === 0) {
+ if (activeConversations.length === 0) {
return (
- {hasInboxRequests && (
-
+ {!isLoading && hasInboxConvos && (
+
)}
{isLoading ? (
diff --git a/src/screens/Messages/components/InboxPreview.tsx b/src/screens/Messages/components/InboxPreview.tsx
index fe2803522e..6e1b028223 100644
--- a/src/screens/Messages/components/InboxPreview.tsx
+++ b/src/screens/Messages/components/InboxPreview.tsx
@@ -1,5 +1,5 @@
import {View} from 'react-native'
-import {ChatBskyActorDefs} from '@atproto/api'
+import {type ChatBskyActorDefs} from '@atproto/api'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
@@ -12,10 +12,8 @@ import {Link} from '#/components/Link'
export function InboxPreview({
profiles,
-}: // count,
-{
+}: {
profiles: ChatBskyActorDefs.ProfileViewBasic[]
- count: number
}) {
const {_} = useLingui()
const t = useTheme()