always show "mark all as read" in header

This commit is contained in:
Samuel Newman
2026-06-05 16:10:03 +03:00
parent c09bfdda61
commit 0c804d0017
+3 -42
View File
@@ -26,10 +26,9 @@ import {useLeftConvos} from '#/state/queries/messages/leave-conversation'
import {useListConvosQuery} from '#/state/queries/messages/list-conversations' import {useListConvosQuery} from '#/state/queries/messages/list-conversations'
import {useUpdateAllRead} from '#/state/queries/messages/update-all-read' import {useUpdateAllRead} from '#/state/queries/messages/update-all-read'
import {EmptyState} from '#/view/com/util/EmptyState' import {EmptyState} from '#/view/com/util/EmptyState'
import {FAB} from '#/view/com/util/fab/FAB'
import {List} from '#/view/com/util/List' import {List} from '#/view/com/util/List'
import {ChatListLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {ChatListLoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder'
import {atoms as a, useBreakpoints, useTheme, web} from '#/alf' import {atoms as a, useTheme, web} from '#/alf'
import {AgeRestrictedScreen} from '#/components/ageAssurance/AgeRestrictedScreen' import {AgeRestrictedScreen} from '#/components/ageAssurance/AgeRestrictedScreen'
import {useAgeAssuranceCopy} from '#/components/ageAssurance/useAgeAssuranceCopy' import {useAgeAssuranceCopy} from '#/components/ageAssurance/useAgeAssuranceCopy'
import {Button, ButtonIcon, ButtonText} from '#/components/Button' import {Button, ButtonIcon, ButtonText} from '#/components/Button'
@@ -62,8 +61,6 @@ export function MessagesInboxScreen(props: Props) {
} }
export function MessagesInboxScreenInner({}: Props) { export function MessagesInboxScreenInner({}: Props) {
const {gtTablet} = useBreakpoints()
const listConvosQuery = useListConvosQuery({status: 'request'}) const listConvosQuery = useListConvosQuery({status: 'request'})
const {data} = listConvosQuery const {data} = listConvosQuery
@@ -94,21 +91,16 @@ export function MessagesInboxScreenInner({}: Props) {
<Layout.Screen testID="messagesInboxScreen"> <Layout.Screen testID="messagesInboxScreen">
<Layout.Header.Outer> <Layout.Header.Outer>
<Layout.Header.BackButton /> <Layout.Header.BackButton />
<Layout.Header.Content align={gtTablet ? 'left' : 'platform'}> <Layout.Header.Content align="left">
<Layout.Header.TitleText> <Layout.Header.TitleText>
<Trans>Chat requests</Trans> <Trans>Chat requests</Trans>
</Layout.Header.TitleText> </Layout.Header.TitleText>
</Layout.Header.Content> </Layout.Header.Content>
{hasUnreadConvos && gtTablet ? ( {hasUnreadConvos ? <MarkAsReadHeaderButton /> : <Layout.Header.Slot />}
<MarkAsReadHeaderButton />
) : (
<Layout.Header.Slot />
)}
</Layout.Header.Outer> </Layout.Header.Outer>
<RequestList <RequestList
listConvosQuery={listConvosQuery} listConvosQuery={listConvosQuery}
conversations={conversations} conversations={conversations}
hasUnreadConvos={hasUnreadConvos}
/> />
</Layout.Screen> </Layout.Screen>
) )
@@ -117,14 +109,12 @@ export function MessagesInboxScreenInner({}: Props) {
function RequestList({ function RequestList({
listConvosQuery, listConvosQuery,
conversations, conversations,
hasUnreadConvos,
}: { }: {
listConvosQuery: UseInfiniteQueryResult< listConvosQuery: UseInfiniteQueryResult<
InfiniteData<ChatBskyConvoListConvos.OutputSchema>, InfiniteData<ChatBskyConvoListConvos.OutputSchema>,
Error Error
> >
conversations: ChatBskyConvoDefs.ConvoView[] conversations: ChatBskyConvoDefs.ConvoView[]
hasUnreadConvos: boolean
}) { }) {
const {t: l} = useLingui() const {t: l} = useLingui()
const t = useTheme() const t = useTheme()
@@ -285,7 +275,6 @@ function RequestList({
desktopFixedHeight desktopFixedHeight
sideBorders={false} sideBorders={false}
/> />
{hasUnreadConvos && <MarkAllReadFAB />}
</> </>
) )
} }
@@ -298,34 +287,6 @@ function renderItem({item}: {item: ChatBskyConvoDefs.ConvoView}) {
return <RequestListItem convo={item} /> return <RequestListItem convo={item} />
} }
function MarkAllReadFAB() {
const {t: l} = useLingui()
const t = useTheme()
const {mutate: markAllRead} = useUpdateAllRead('request', {
onMutate: () => {
Toast.show(l`Marked all as read`, {
type: 'success',
})
},
onError: () => {
Toast.show(l`Failed to mark all requests as read`, {
type: 'error',
})
},
})
return (
<FAB
testID="markAllAsReadFAB"
onPress={() => markAllRead()}
icon={<CheckIcon size="lg" fill={t.palette.white} />}
accessibilityRole="button"
accessibilityLabel={l`Mark all as read`}
accessibilityHint=""
/>
)
}
function MarkAsReadHeaderButton() { function MarkAsReadHeaderButton() {
const {t: l} = useLingui() const {t: l} = useLingui()
const {mutate: markAllRead} = useUpdateAllRead('request', { const {mutate: markAllRead} = useUpdateAllRead('request', {