always show "mark all as read" in header
This commit is contained in:
@@ -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', {
|
||||||
|
|||||||
Reference in New Issue
Block a user