From 156903070ba0c2fd7e34e8ebfdb3c5fb3ffaad65 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 10 Jun 2026 23:23:47 +0300 Subject: [PATCH] [Chat] Power conversation settings screen via useConvoQuery (#10853) Co-authored-by: Claude Fable 5 --- .../Messages/ConversationSettings/index.tsx | 51 ++++++++----------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/src/screens/Messages/ConversationSettings/index.tsx b/src/screens/Messages/ConversationSettings/index.tsx index 32430cfc0c..b83d10bd2d 100644 --- a/src/screens/Messages/ConversationSettings/index.tsx +++ b/src/screens/Messages/ConversationSettings/index.tsx @@ -19,9 +19,8 @@ import { type NavigationProp, } from '#/lib/routes/types' import {logger} from '#/logger' -import {ConvoProvider, isConvoActive, useConvo} from '#/state/messages/convo' -import {ConvoStatus} from '#/state/messages/convo/types' import {useModerationOpts} from '#/state/preferences/moderation-opts' +import {useConvoQuery} from '#/state/queries/messages/conversation' import {useEditGroupChatName} from '#/state/queries/messages/edit-group-chat-name' import {useLeaveConvo} from '#/state/queries/messages/leave-conversation' import {useListConvoMembersQuery} from '#/state/queries/messages/list-convo-members' @@ -39,6 +38,7 @@ import {ReportConversationDialog} from '#/components/dms/ReportConversationDialo import { type ConvoWithDetails, type GroupConvoMember, + parseConvoView, } from '#/components/dms/util' import {Error} from '#/components/Error' import {ArrowBoxLeft_Stroke2_Corner0_Rounded as ArrowBoxLeftIcon} from '#/components/icons/ArrowBoxLeft' @@ -113,30 +113,33 @@ export function MessagesConversationSettingsScreen({route}: Props) { - - - + ) } -function SettingsInner() { +function SettingsInner({convoId}: {convoId: string}) { const {t: l} = useLingui() - const convoState = useConvo() const navigation = useNavigation() const moderationOpts = useModerationOpts() + const {currentAccount} = useSession() + const {data: convoData, error, refetch} = useConvoQuery({convoId}) - if (convoState.status === ConvoStatus.Error) { + const convo = convoData + ? parseConvoView(convoData, currentAccount?.did) + : null + + if (error) { return ( convoState.error.retry()} + onRetry={() => refetch()} /> ) } - if (!convoState.convo || !moderationOpts) { + if (!convo || !moderationOpts) { return ( @@ -144,7 +147,7 @@ function SettingsInner() { ) } - if (convoState.convo.kind !== 'group') { + if (convo.kind !== 'group') { return ( - ) + return } function keyExtractor(item: Item) { @@ -189,11 +186,9 @@ function isGroupMember( function GroupSettings({ convo, moderationOpts, - isReady, }: { convo: Extract moderationOpts: ModerationOpts - isReady: boolean }) { const [isPTRing, setIsPTRing] = useState(false) @@ -279,7 +274,7 @@ function GroupSettings({ /> ) case 'ADD_MEMBERS_LINK': - return + return case 'CHAT_MEMBER': return ( } renderItem={renderItem} @@ -336,12 +330,10 @@ function SettingsHeader({ convo, isOwner, moderationOpts, - isReady, }: { convo: Extract isOwner: boolean moderationOpts: ModerationOpts - isReady: boolean }) { const t = useTheme() const {i18n, t: l} = useLingui() @@ -516,7 +508,7 @@ function SettingsHeader({ ]}> {isOwner ? ( ) : null}