about summary refs log tree commit diff
path: root/src/screens/Messages/List/index.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/screens/Messages/List/index.tsx')
-rw-r--r--src/screens/Messages/List/index.tsx49
1 files changed, 26 insertions, 23 deletions
diff --git a/src/screens/Messages/List/index.tsx b/src/screens/Messages/List/index.tsx
index ccf0d2044..65a2ff1e7 100644
--- a/src/screens/Messages/List/index.tsx
+++ b/src/screens/Messages/List/index.tsx
@@ -2,6 +2,7 @@
 
 import React, {useCallback, useMemo, useState} from 'react'
 import {View} from 'react-native'
+import {ChatBskyConvoDefs} from '@atproto-labs/api'
 import {msg, Trans} from '@lingui/macro'
 import {useLingui} from '@lingui/react'
 import {NativeStackScreenProps} from '@react-navigation/native-stack'
@@ -11,24 +12,22 @@ import {MessagesTabNavigatorParams} from '#/lib/routes/types'
 import {useGate} from '#/lib/statsig/statsig'
 import {cleanError} from '#/lib/strings/errors'
 import {logger} from '#/logger'
+import {useListConvos} from '#/state/queries/messages/list-converations'
 import {useSession} from '#/state/session'
 import {List} from '#/view/com/util/List'
 import {TimeElapsed} from '#/view/com/util/TimeElapsed'
 import {PreviewableUserAvatar} from '#/view/com/util/UserAvatar'
 import {ViewHeader} from '#/view/com/util/ViewHeader'
-import {useBreakpoints, useTheme} from '#/alf'
-import {atoms as a} from '#/alf'
+import {atoms as a, useBreakpoints, useTheme} from '#/alf'
 import {Button, ButtonIcon, ButtonText} from '#/components/Button'
 import {DialogControlProps, useDialogControl} from '#/components/Dialog'
+import {NewChat} from '#/components/dms/NewChat'
 import {Envelope_Stroke2_Corner0_Rounded as Envelope} from '#/components/icons/Envelope'
 import {SettingsSliderVertical_Stroke2_Corner0_Rounded as SettingsSlider} from '#/components/icons/SettingsSlider'
 import {Link} from '#/components/Link'
 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
 import {Text} from '#/components/Typography'
-import * as TempDmChatDefs from '#/temp/dm/defs'
-import {NewChat} from '../../../components/dms/NewChat'
 import {ClipClopGate} from '../gate'
-import {useListChats} from '../Temp/query/query'
 
 type Props = NativeStackScreenProps<MessagesTabNavigatorParams, 'MessagesList'>
 export function MessagesListScreen({navigation}: Props) {
@@ -59,13 +58,13 @@ export function MessagesListScreen({navigation}: Props) {
     fetchNextPage,
     error,
     refetch,
-  } = useListChats()
+  } = useListConvos()
 
   const isError = !!error
 
   const conversations = useMemo(() => {
     if (data?.pages) {
-      return data.pages.flatMap(page => page.chats)
+      return data.pages.flatMap(page => page.convos)
     }
     return []
   }, [data])
@@ -99,9 +98,12 @@ export function MessagesListScreen({navigation}: Props) {
     navigation.navigate('MessagesSettings')
   }, [navigation])
 
-  const renderItem = useCallback(({item}: {item: TempDmChatDefs.ChatView}) => {
-    return <ChatListItem key={item.id} chat={item} />
-  }, [])
+  const renderItem = useCallback(
+    ({item}: {item: ChatBskyConvoDefs.ConvoView}) => {
+      return <ChatListItem key={item.id} convo={item} />
+    },
+    [],
+  )
 
   const gate = useGate()
   if (!gate('dms')) return <ClipClopGate />
@@ -119,7 +121,7 @@ export function MessagesListScreen({navigation}: Props) {
           errorMessage={cleanError(error)}
           onRetry={isError ? refetch : undefined}
         />
-        <NewChat onNewChat={onNewChat} control={newChatControl} />
+        {!isError && <NewChat onNewChat={onNewChat} control={newChatControl} />}
       </>
     )
   }
@@ -166,26 +168,26 @@ export function MessagesListScreen({navigation}: Props) {
   )
 }
 
-function ChatListItem({chat}: {chat: TempDmChatDefs.ChatView}) {
+function ChatListItem({convo}: {convo: ChatBskyConvoDefs.ConvoView}) {
   const t = useTheme()
   const {_} = useLingui()
   const {currentAccount} = useSession()
 
   let lastMessage = _(msg`No messages yet`)
   let lastMessageSentAt: string | null = null
-  if (TempDmChatDefs.isMessageView(chat.lastMessage)) {
-    if (chat.lastMessage.sender?.did === currentAccount?.did) {
-      lastMessage = _(msg`You: ${chat.lastMessage.text}`)
+  if (ChatBskyConvoDefs.isMessageView(convo.lastMessage)) {
+    if (convo.lastMessage.sender?.did === currentAccount?.did) {
+      lastMessage = _(msg`You: ${convo.lastMessage.text}`)
     } else {
-      lastMessage = chat.lastMessage.text
+      lastMessage = convo.lastMessage.text
     }
-    lastMessageSentAt = chat.lastMessage.sentAt
+    lastMessageSentAt = convo.lastMessage.sentAt
   }
-  if (TempDmChatDefs.isDeletedMessage(chat.lastMessage)) {
+  if (ChatBskyConvoDefs.isDeletedMessageView(convo.lastMessage)) {
     lastMessage = _(msg`Message deleted`)
   }
 
-  const otherUser = chat.members.find(
+  const otherUser = convo.members.find(
     member => member.did !== currentAccount?.did,
   )
 
@@ -194,7 +196,7 @@ function ChatListItem({chat}: {chat: TempDmChatDefs.ChatView}) {
   }
 
   return (
-    <Link to={`/messages/${chat.id}`} style={a.flex_1}>
+    <Link to={`/messages/${convo.id}`} style={a.flex_1}>
       {({hovered, pressed}) => (
         <View
           style={[
@@ -211,7 +213,8 @@ function ChatListItem({chat}: {chat: TempDmChatDefs.ChatView}) {
           </View>
           <View style={[a.flex_1]}>
             <Text numberOfLines={1} style={[a.text_md, a.leading_normal]}>
-              <Text style={[t.atoms.text, chat.unreadCount > 0 && a.font_bold]}>
+              <Text
+                style={[t.atoms.text, convo.unreadCount > 0 && a.font_bold]}>
                 {otherUser.displayName || otherUser.handle}
               </Text>{' '}
               {lastMessageSentAt ? (
@@ -233,14 +236,14 @@ function ChatListItem({chat}: {chat: TempDmChatDefs.ChatView}) {
               style={[
                 a.text_sm,
                 a.leading_snug,
-                chat.unreadCount > 0
+                convo.unreadCount > 0
                   ? a.font_bold
                   : t.atoms.text_contrast_medium,
               ]}>
               {lastMessage}
             </Text>
           </View>
-          {chat.unreadCount > 0 && (
+          {convo.unreadCount > 0 && (
             <View
               style={[
                 a.flex_0,