feat: add conversation image previews and sharing

This commit is contained in:
jjbrunton committed 2026-08-09 22:28:41 +01:00
1 parent 488145340d
commit b573b88b08
20 files changed
+634 -26

No files matched your search

@@ -5,6 +5,7 @@ export const conversationQueryKeys = {
all: ['conversations'] as const,
detail: (id: string) => ['conversations', 'detail', id] as const,
processedPosts: (username: string) => ['conversations', 'processed-posts', username] as const,
mediaShareOptions: (id: string) => ['conversations', 'media-share-options', id] as const,
};
export function useConversationsQuery() {
@@ -27,6 +28,13 @@ export function useSuggestMediaAskMutation(id: string) {
return useMutation({ mutationFn: () => conversationApi.suggestMediaAsk(id) });
}
export function useConversationMediaShareOptionsQuery(id: string) {
return useQuery({
queryKey: conversationQueryKeys.mediaShareOptions(id),
queryFn: () => conversationApi.mediaShareOptions(id),
});
}
export function useProcessedPostsQuery(username: string) {
return useQuery({
queryKey: conversationQueryKeys.processedPosts(username),
@@ -48,6 +56,20 @@ export function useSendReplyMutation(id: string) {
});
}
export function useShareConversationMediaMutation(id: string) {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (assetId: string) => conversationApi.shareMedia(id, assetId),
async onSuccess() {
await Promise.all([
queryClient.invalidateQueries({ queryKey: conversationQueryKeys.all }),
queryClient.invalidateQueries({ queryKey: conversationQueryKeys.detail(id) }),
queryClient.invalidateQueries({ queryKey: conversationQueryKeys.mediaShareOptions(id) }),
]);
},
});
}
export function useStartConversationMutation() {
const queryClient = useQueryClient();
return useMutation({