From 01bc0588b8aca9c0bf4d3667d0c979578a0fbe73 Mon Sep 17 00:00:00 2001 From: Junhui Chen Date: Wed, 6 Aug 2025 10:47:05 +0800 Subject: [PATCH] chore --- .qwen/settings.json | 3 +++ app/(main)/ask.tsx | 11 ++++------- app/_layout.tsx | 20 ++++++++++++++++++++ lib/server-api-util.ts | 5 ++--- 4 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 .qwen/settings.json diff --git a/.qwen/settings.json b/.qwen/settings.json new file mode 100644 index 0000000..f718cd0 --- /dev/null +++ b/.qwen/settings.json @@ -0,0 +1,3 @@ +{ + "theme": "Qwen Light" +} \ No newline at end of file diff --git a/app/(main)/ask.tsx b/app/(main)/ask.tsx index 23f45ca..a4ffea3 100644 --- a/app/(main)/ask.tsx +++ b/app/(main)/ask.tsx @@ -1,8 +1,6 @@ -import ReturnArrow from "@/assets/icons/svg/returnArrow.svg"; import Chat from "@/components/ask/chat"; import AskHello from "@/components/ask/hello"; import SendMessage from "@/components/ask/send"; -import { ThemedText } from "@/components/ThemedText"; import { fetchApi } from "@/lib/server-api-util"; import { getWebSocketErrorMessage, webSocketManager, WsMessage } from "@/lib/websocket-util"; import { Assistant, Message } from "@/types/ask"; @@ -16,8 +14,6 @@ import { KeyboardAvoidingView, Platform, StyleSheet, - TextInput, - TouchableOpacity, View } from 'react-native'; import { Gesture, GestureDetector } from "react-native-gesture-handler"; @@ -62,7 +58,8 @@ export default function AskScreen() { } }) .minPointers(1) - .activeOffsetX([-10, 10]); // 在 X 方向触发的范围 + .activeOffsetX([-20, 20]) // 扩大触发范围,避免与ScrollView冲突 + .failOffsetY([-10, 10]); // 限制Y轴的偏移,避免垂直滚动时触发 useEffect(() => { if (!isHello && userMessages.length > 0) { @@ -257,7 +254,7 @@ export default function AskScreen() { useCallback(() => { if (!sessionId) { setIsHello(true); - setUserMessages([]) + setUserMessages([]); } }, [sessionId]) ); @@ -309,7 +306,7 @@ export default function AskScreen() { {/* 输入框区域 */} + keyboardVerticalOffset={Platform.OS === "ios" ? 90 : 0}> { + const handleAppStateChange = (nextAppState: string) => { + if (nextAppState === 'background') { + // 应用进入后台时断开WebSocket连接 + webSocketManager.disconnect(); + } else if (nextAppState === 'active') { + // 应用回到前台时重新连接WebSocket + webSocketManager.connect(); + } + }; + + const subscription = AppState.addEventListener('change', handleAppStateChange); + + return () => { + subscription?.remove(); + }; + }, []); + return ( diff --git a/lib/server-api-util.ts b/lib/server-api-util.ts index 23eea4c..3f963ad 100644 --- a/lib/server-api-util.ts +++ b/lib/server-api-util.ts @@ -3,7 +3,6 @@ import Constants from 'expo-constants'; import * as SecureStore from 'expo-secure-store'; import { Platform } from 'react-native'; import Toast from 'react-native-toast-message'; -import { useAuth } from '../contexts/auth-context'; import { store } from '../store'; import { User } from '../types/user'; @@ -56,7 +55,7 @@ export const useAuthToken = async(message: string | null, login: (user: User, } // 使用Redux存储token的刷新token函数 -export const refreshAuthToken = async(message: string | null): Promise => { +export const refreshAuthToken = async(message: string | null): Promise => { try { let cookie = ""; let userId = ""; @@ -86,7 +85,7 @@ export const refreshAuthToken = async(message: string | null): Promise // 如果没有必要的数据,抛出错误 if (!cookie || !userId) { - throw new Error("Missing refresh token or user ID"); + return null; } // 退出刷新会重新填充数据