about summary refs log tree commit diff
path: root/src/screens/Messages/Temp/query/query.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/screens/Messages/Temp/query/query.ts')
-rw-r--r--src/screens/Messages/Temp/query/query.ts305
1 files changed, 0 insertions, 305 deletions
diff --git a/src/screens/Messages/Temp/query/query.ts b/src/screens/Messages/Temp/query/query.ts
deleted file mode 100644
index 02f31c029..000000000
--- a/src/screens/Messages/Temp/query/query.ts
+++ /dev/null
@@ -1,305 +0,0 @@
-import {
-  useInfiniteQuery,
-  useMutation,
-  useQuery,
-  useQueryClient,
-} from '@tanstack/react-query'
-
-import {useSession} from '#/state/session'
-import * as TempDmChatDefs from '#/temp/dm/defs'
-import * as TempDmChatGetChat from '#/temp/dm/getChat'
-import * as TempDmChatGetChatForMembers from '#/temp/dm/getChatForMembers'
-import * as TempDmChatGetChatLog from '#/temp/dm/getChatLog'
-import * as TempDmChatGetChatMessages from '#/temp/dm/getChatMessages'
-import * as TempDmChatListChats from '#/temp/dm/listChats'
-import {useDmServiceUrlStorage} from '../useDmServiceUrlStorage'
-
-/**
- * TEMPORARY, PLEASE DO NOT JUDGE ME REACT QUERY OVERLORDS 🙏
- * (and do not try this at home)
- */
-
-const useHeaders = () => {
-  const {currentAccount} = useSession()
-  return {
-    get Authorization() {
-      return currentAccount!.did
-    },
-  }
-}
-
-type Chat = {
-  chatId: string
-  messages: TempDmChatGetChatMessages.OutputSchema['messages']
-  lastCursor?: string
-  lastRev?: string
-}
-
-export function useChat(chatId: string) {
-  const queryClient = useQueryClient()
-  const headers = useHeaders()
-  const {serviceUrl} = useDmServiceUrlStorage()
-
-  return useQuery({
-    queryKey: ['chat', chatId],
-    queryFn: async () => {
-      const currentChat = queryClient.getQueryData(['chat', chatId])
-
-      if (currentChat) {
-        return currentChat as Chat
-      }
-
-      const messagesResponse = await fetch(
-        `${serviceUrl}/xrpc/temp.dm.getChatMessages?chatId=${chatId}`,
-        {
-          headers,
-        },
-      )
-
-      if (!messagesResponse.ok) throw new Error('Failed to fetch messages')
-
-      const messagesJson =
-        (await messagesResponse.json()) as TempDmChatGetChatMessages.OutputSchema
-
-      const chatResponse = await fetch(
-        `${serviceUrl}/xrpc/temp.dm.getChat?chatId=${chatId}`,
-        {
-          headers,
-        },
-      )
-
-      if (!chatResponse.ok) throw new Error('Failed to fetch chat')
-
-      const chatJson =
-        (await chatResponse.json()) as TempDmChatGetChat.OutputSchema
-
-      queryClient.setQueryData(['chatQuery', chatId], chatJson.chat)
-
-      const newChat = {
-        chatId,
-        messages: messagesJson.messages,
-        lastCursor: messagesJson.cursor,
-        lastRev: chatJson.chat.rev,
-      } satisfies Chat
-
-      queryClient.setQueryData(['chat', chatId], newChat)
-
-      return newChat
-    },
-  })
-}
-
-interface SendMessageMutationVariables {
-  message: string
-  tempId: string
-}
-
-export function createTempId() {
-  return Math.random().toString(36).substring(7).toString()
-}
-
-export function useSendMessageMutation(chatId: string) {
-  const queryClient = useQueryClient()
-  const headers = useHeaders()
-  const {serviceUrl} = useDmServiceUrlStorage()
-
-  return useMutation<
-    TempDmChatDefs.Message,
-    Error,
-    SendMessageMutationVariables,
-    unknown
-  >({
-    // eslint-disable-next-line @typescript-eslint/no-unused-vars
-    mutationFn: async ({message, tempId}) => {
-      const response = await fetch(
-        `${serviceUrl}/xrpc/temp.dm.sendMessage?chatId=${chatId}`,
-        {
-          method: 'POST',
-          headers: {
-            ...headers,
-            'Content-Type': 'application/json',
-          },
-          body: JSON.stringify({
-            chatId,
-            message: {
-              text: message,
-            },
-          }),
-        },
-      )
-
-      if (!response.ok) throw new Error('Failed to send message')
-
-      return response.json()
-    },
-    onMutate: async variables => {
-      queryClient.setQueryData(['chat', chatId], (prev: Chat) => {
-        return {
-          ...prev,
-          messages: [
-            {
-              $type: 'temp.dm.defs#messageView',
-              id: variables.tempId,
-              text: variables.message,
-              sender: {did: headers.Authorization}, // TODO a real DID get
-              sentAt: new Date().toISOString(),
-            },
-            ...prev.messages,
-          ],
-        }
-      })
-    },
-    onSuccess: (result, variables) => {
-      queryClient.setQueryData(['chat', chatId], (prev: Chat) => {
-        return {
-          ...prev,
-          messages: prev.messages.map(m =>
-            m.id === variables.tempId ? {...m, id: result.id} : m,
-          ),
-        }
-      })
-    },
-    onError: (_, variables) => {
-      console.log(_)
-      queryClient.setQueryData(['chat', chatId], (prev: Chat) => ({
-        ...prev,
-        messages: prev.messages.filter(m => m.id !== variables.tempId),
-      }))
-    },
-  })
-}
-
-export function useChatLogQuery() {
-  const queryClient = useQueryClient()
-  const headers = useHeaders()
-  const {serviceUrl} = useDmServiceUrlStorage()
-
-  return useQuery({
-    queryKey: ['chatLog'],
-    queryFn: async () => {
-      const prevLog = queryClient.getQueryData([
-        'chatLog',
-      ]) as TempDmChatGetChatLog.OutputSchema
-
-      try {
-        const response = await fetch(
-          `${serviceUrl}/xrpc/temp.dm.getChatLog?cursor=${
-            prevLog?.cursor ?? ''
-          }`,
-          {
-            headers,
-          },
-        )
-
-        if (!response.ok) throw new Error('Failed to fetch chat log')
-
-        const json =
-          (await response.json()) as TempDmChatGetChatLog.OutputSchema
-
-        if (json.logs.length > 0) {
-          queryClient.invalidateQueries({queryKey: ['chats']})
-        }
-
-        for (const log of json.logs) {
-          if (TempDmChatDefs.isLogCreateMessage(log)) {
-            queryClient.setQueryData(['chat', log.chatId], (prev: Chat) => {
-              // TODO hack filter out duplicates
-              if (prev?.messages.find(m => m.id === log.message.id)) return
-
-              return {
-                ...prev,
-                messages: [log.message, ...prev.messages],
-              }
-            })
-          }
-        }
-
-        return json
-      } catch (e) {
-        console.log(e)
-      }
-    },
-    refetchInterval: 5000,
-  })
-}
-
-export function useGetChatFromMembers({
-  onSuccess,
-  onError,
-}: {
-  onSuccess?: (data: TempDmChatGetChatForMembers.OutputSchema) => void
-  onError?: (error: Error) => void
-}) {
-  const queryClient = useQueryClient()
-  const headers = useHeaders()
-  const {serviceUrl} = useDmServiceUrlStorage()
-
-  return useMutation({
-    mutationFn: async (members: string[]) => {
-      const response = await fetch(
-        `${serviceUrl}/xrpc/temp.dm.getChatForMembers?members=${members.join(
-          ',',
-        )}`,
-        {headers},
-      )
-
-      if (!response.ok) throw new Error('Failed to fetch chat')
-
-      return (await response.json()) as TempDmChatGetChatForMembers.OutputSchema
-    },
-    onSuccess: data => {
-      queryClient.setQueryData(['chat', data.chat.id], {
-        chatId: data.chat.id,
-        messages: [],
-        lastRev: data.chat.rev,
-      })
-      onSuccess?.(data)
-    },
-    onError,
-  })
-}
-
-export function useListChats() {
-  const headers = useHeaders()
-  const {serviceUrl} = useDmServiceUrlStorage()
-
-  return useInfiniteQuery({
-    queryKey: ['chats'],
-    queryFn: async ({pageParam}) => {
-      const response = await fetch(
-        `${serviceUrl}/xrpc/temp.dm.listChats${
-          pageParam ? `?cursor=${pageParam}` : ''
-        }`,
-        {headers},
-      )
-
-      if (!response.ok) throw new Error('Failed to fetch chats')
-
-      return (await response.json()) as TempDmChatListChats.OutputSchema
-    },
-    initialPageParam: undefined as string | undefined,
-    getNextPageParam: lastPage => lastPage.cursor,
-  })
-}
-
-export function useChatQuery(chatId: string) {
-  const headers = useHeaders()
-  const {serviceUrl} = useDmServiceUrlStorage()
-
-  return useQuery({
-    queryKey: ['chatQuery', chatId],
-    queryFn: async () => {
-      const chatResponse = await fetch(
-        `${serviceUrl}/xrpc/temp.dm.getChat?chatId=${chatId}`,
-        {
-          headers,
-        },
-      )
-
-      if (!chatResponse.ok) throw new Error('Failed to fetch chat')
-
-      const json = (await chatResponse.json()) as TempDmChatGetChat.OutputSchema
-      return json.chat
-    },
-  })
-}