feat: add switch to remote button for local mode

This commit is contained in:
weishu
2025-12-22 00:05:55 +08:00
parent 8cbe68c47a
commit 7c86f83d5c
7 changed files with 112 additions and 2 deletions
+13 -1
View File
@@ -22,6 +22,7 @@ function toModelMode(mode: ModelMode): ModelModeValue {
export function useSessionActions(api: ApiClient | null, sessionId: string | null): {
abortSession: () => Promise<void>
switchSession: () => Promise<void>
setPermissionMode: (mode: PermissionMode) => Promise<void>
setModelMode: (mode: ModelMode) => Promise<void>
isPending: boolean
@@ -44,6 +45,16 @@ export function useSessionActions(api: ApiClient | null, sessionId: string | nul
onSuccess: () => void invalidateSession(),
})
const switchMutation = useMutation({
mutationFn: async () => {
if (!api || !sessionId) {
throw new Error('Session unavailable')
}
await api.switchSession(sessionId)
},
onSuccess: () => void invalidateSession(),
})
const permissionMutation = useMutation({
mutationFn: async (mode: PermissionMode) => {
if (!api || !sessionId) {
@@ -66,8 +77,9 @@ export function useSessionActions(api: ApiClient | null, sessionId: string | nul
return {
abortSession: abortMutation.mutateAsync,
switchSession: switchMutation.mutateAsync,
setPermissionMode: permissionMutation.mutateAsync,
setModelMode: modelMutation.mutateAsync,
isPending: abortMutation.isPending || permissionMutation.isPending || modelMutation.isPending,
isPending: abortMutation.isPending || switchMutation.isPending || permissionMutation.isPending || modelMutation.isPending,
}
}