chore: 取消其他注释

This commit is contained in:
Junhui Chen 2025-08-06 17:28:07 +08:00
parent 7c86362830
commit 67a71400de

View File

@ -18,7 +18,8 @@ import {
TouchableOpacity,
View
} from 'react-native';
import { useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
import { Gesture, GestureDetector } from "react-native-gesture-handler";
import { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
import { useSafeAreaInsets } from "react-native-safe-area-context";
export default function AskScreen() {
@ -40,147 +41,147 @@ export default function AskScreen() {
}>();
// 创建一个可复用的滚动函数
// const scrollToEnd = useCallback((animated = true) => {
// if (chatListRef.current) {
// setTimeout(() => chatListRef.current?.scrollToEnd({ animated }), 100);
// }
// }, []);
const scrollToEnd = useCallback((animated = true) => {
if (chatListRef.current) {
setTimeout(() => chatListRef.current?.scrollToEnd({ animated }), 100);
}
}, []);
// 右滑
// const gesture = Gesture.Pan()
// .onEnd((event) => {
// const { translationX } = event;
// const threshold = 100; // 滑动阈值
const gesture = Gesture.Pan()
.onEnd((event) => {
const { translationX } = event;
const threshold = 100; // 滑动阈值
// if (translationX > threshold) {
// // 从左向右滑动,跳转页面
// runOnJS(router.replace)("/memo-list");
// }
// })
// .minPointers(1)
// .activeOffsetX([-10, 10]); // 在 X 方向触发的范围
if (translationX > threshold) {
// 从左向右滑动,跳转页面
runOnJS(router.replace)("/memo-list");
}
})
.minPointers(1)
.activeOffsetX([-10, 10]); // 在 X 方向触发的范围
// useEffect(() => {
// if (!isHello && userMessages.length > 0) {
// scrollToEnd();
// }
// }, [userMessages, isHello, scrollToEnd]);
useEffect(() => {
if (!isHello && userMessages.length > 0) {
scrollToEnd();
}
}, [userMessages, isHello, scrollToEnd]);
// useEffect(() => {
// const keyboardDidShowListener = Keyboard.addListener(
// 'keyboardDidShow',
// (e) => {
// setTimeout(() => {
// if (!isHello) {
// scrollToEnd();
// }
// }, 100);
// }
// );
useEffect(() => {
const keyboardDidShowListener = Keyboard.addListener(
'keyboardDidShow',
(e) => {
setTimeout(() => {
if (!isHello) {
scrollToEnd();
}
}, 100);
}
);
// const keyboardDidHideListener = Keyboard.addListener(
// 'keyboardDidHide',
// () => {
// setTimeout(() => {
// if (!isHello) {
// scrollToEnd(false);
// }
// }, 100);
// }
// );
const keyboardDidHideListener = Keyboard.addListener(
'keyboardDidHide',
() => {
setTimeout(() => {
if (!isHello) {
scrollToEnd(false);
}
}, 100);
}
);
// return () => {
// keyboardDidShowListener.remove();
// keyboardDidHideListener.remove();
// };
// }, [isHello]);
return () => {
keyboardDidShowListener.remove();
keyboardDidHideListener.remove();
};
}, [isHello]);
// useFocusEffect(
// useCallback(() => {
// webSocketManager.connect();
useFocusEffect(
useCallback(() => {
webSocketManager.connect();
// const handleChatStream = (message: WsMessage) => {
// if (message.type === 'ChatStream') {
// setUserMessages(prevMessages => {
// const newMessages = [...prevMessages];
// const lastMessage = newMessages[newMessages.length - 1];
const handleChatStream = (message: WsMessage) => {
if (message.type === 'ChatStream') {
setUserMessages(prevMessages => {
const newMessages = [...prevMessages];
const lastMessage = newMessages[newMessages.length - 1];
// if (lastMessage && lastMessage.role === Assistant) {
// if (typeof lastMessage.content === 'string') {
// if (lastMessage.content === 'keepSearchIng') {
// // 第一次收到流式消息,替换占位符
// lastMessage.content = message.chunk;
// } else {
// // 持续追加流式消息
// lastMessage.content += message.chunk;
// }
// } else {
// // 如果 content 是数组,则更新第一个 text 部分
// const textPart = lastMessage.content.find(p => p.type === 'text');
// if (textPart) {
// textPart.text = (textPart.text || '') + message.chunk;
// }
// }
// }
// return newMessages;
// });
// }
// };
if (lastMessage && lastMessage.role === Assistant) {
if (typeof lastMessage.content === 'string') {
if (lastMessage.content === 'keepSearchIng') {
// 第一次收到流式消息,替换占位符
lastMessage.content = message.chunk;
} else {
// 持续追加流式消息
lastMessage.content += message.chunk;
}
} else {
// 如果 content 是数组,则更新第一个 text 部分
const textPart = lastMessage.content.find(p => p.type === 'text');
if (textPart) {
textPart.text = (textPart.text || '') + message.chunk;
}
}
}
return newMessages;
});
}
};
// const handleChatStreamEnd = (message: WsMessage) => {
// if (message.type === 'ChatStreamEnd') {
// setUserMessages(prevMessages => {
// const newMessages = [...prevMessages];
// const lastMessage = newMessages[newMessages.length - 1];
// if (lastMessage && lastMessage.role === Assistant) {
// // 使用最终消息替换流式消息,确保 message.message 存在
// if (message.message) {
// newMessages[newMessages.length - 1] = message.message as Message;
// } else {
// // 如果最终消息为空,则移除 'keepSearchIng' 占位符
// return prevMessages.filter(m => !(typeof m.content === 'string' && m.content === 'keepSearchIng'));
// }
// }
// return newMessages;
// });
// }
// };
const handleChatStreamEnd = (message: WsMessage) => {
if (message.type === 'ChatStreamEnd') {
setUserMessages(prevMessages => {
const newMessages = [...prevMessages];
const lastMessage = newMessages[newMessages.length - 1];
if (lastMessage && lastMessage.role === Assistant) {
// 使用最终消息替换流式消息,确保 message.message 存在
if (message.message) {
newMessages[newMessages.length - 1] = message.message as Message;
} else {
// 如果最终消息为空,则移除 'keepSearchIng' 占位符
return prevMessages.filter(m => !(typeof m.content === 'string' && m.content === 'keepSearchIng'));
}
}
return newMessages;
});
}
};
// const handleError = (message: WsMessage) => {
// if (message.type === 'Error') {
// console.log(`WebSocket Error: ${message.code} - ${message.message}`);
// // 可以在这里添加错误提示,例如替换最后一条消息为错误信息
// setUserMessages(prev => {
// // 创建新的数组和新的消息对象
// return prev.map((msg, index) => {
// if (index === prev.length - 1 &&
// typeof msg.content === 'string' &&
// msg.content === 'keepSearchIng') {
// // 返回新的消息对象
// return {
// ...msg,
// content: getWebSocketErrorMessage(message.code, t)
// };
// }
// return msg;
// });
// });
// }
// };
const handleError = (message: WsMessage) => {
if (message.type === 'Error') {
console.log(`WebSocket Error: ${message.code} - ${message.message}`);
// 可以在这里添加错误提示,例如替换最后一条消息为错误信息
setUserMessages(prev => {
// 创建新的数组和新的消息对象
return prev.map((msg, index) => {
if (index === prev.length - 1 &&
typeof msg.content === 'string' &&
msg.content === 'keepSearchIng') {
// 返回新的消息对象
return {
...msg,
content: getWebSocketErrorMessage(message.code, t)
};
}
return msg;
});
});
}
};
// webSocketManager.subscribe('ChatStream', handleChatStream);
// webSocketManager.subscribe('ChatStreamEnd', handleChatStreamEnd);
// webSocketManager.subscribe('Error', handleError);
webSocketManager.subscribe('ChatStream', handleChatStream);
webSocketManager.subscribe('ChatStreamEnd', handleChatStreamEnd);
webSocketManager.subscribe('Error', handleError);
// return () => {
// webSocketManager.unsubscribe('ChatStream', handleChatStream);
// webSocketManager.unsubscribe('ChatStreamEnd', handleChatStreamEnd);
// webSocketManager.unsubscribe('Error', handleError);
// // 可以在这里选择断开连接,或者保持连接以加快下次进入页面的速度
// // webSocketManager.disconnect();
// };
// }, [])
// );
return () => {
webSocketManager.unsubscribe('ChatStream', handleChatStream);
webSocketManager.unsubscribe('ChatStreamEnd', handleChatStreamEnd);
webSocketManager.unsubscribe('Error', handleError);
// 可以在这里选择断开连接,或者保持连接以加快下次进入页面的速度
// webSocketManager.disconnect();
};
}, [])
);
// 创建动画样式
const welcomeStyle = useAnimatedStyle(() => {
@ -217,13 +218,13 @@ export default function AskScreen() {
}
}, [sessionId, newSession]);
// useEffect(() => {
// if (!isHello) {
// // 不再自动关闭键盘,让用户手动控制
// // 这里可以添加其他需要在隐藏hello界面时执行的逻辑
// scrollToEnd(false);
// }
// }, [isHello]);
useEffect(() => {
if (!isHello) {
// 不再自动关闭键盘,让用户手动控制
// 这里可以添加其他需要在隐藏hello界面时执行的逻辑
scrollToEnd(false);
}
}, [isHello]);
useFocusEffect(
useCallback(() => {
@ -235,41 +236,41 @@ export default function AskScreen() {
);
return (
// <GestureDetector gesture={gesture}>
<View style={[styles.container, { paddingTop: insets.top, paddingBottom: insets.bottom }]}>
{/* 导航栏 */}
<View style={[styles.navbar, isHello && styles.hiddenNavbar]}>
<TouchableOpacity
style={styles.backButton}
onPress={() => {
try {
if (TextInput.State?.currentlyFocusedInput) {
const input = TextInput.State.currentlyFocusedInput();
if (input) input.blur();
<GestureDetector gesture={gesture}>
<View style={[styles.container, { paddingTop: insets.top, paddingBottom: insets.bottom }]}>
{/* 导航栏 */}
<View style={[styles.navbar, isHello && styles.hiddenNavbar]}>
<TouchableOpacity
style={styles.backButton}
onPress={() => {
try {
if (TextInput.State?.currentlyFocusedInput) {
const input = TextInput.State.currentlyFocusedInput();
if (input) input.blur();
}
} catch (error) {
console.log('失去焦点失败:', error);
}
} catch (error) {
console.log('失去焦点失败:', error);
}
Keyboard.dismiss();
router.push('/memo-list');
}}
>
<ReturnArrow />
</TouchableOpacity>
<ThemedText style={styles.title} onPress={() => { router.push('/owner') }}>MemoWake</ThemedText>
<View style={styles.placeholder} />
</View>
Keyboard.dismiss();
router.push('/memo-list');
}}
>
<ReturnArrow />
</TouchableOpacity>
<ThemedText style={styles.title} onPress={() => { router.push('/owner') }}>MemoWake</ThemedText>
<View style={styles.placeholder} />
</View>
<View style={styles.contentContainer}>
{/* 欢迎页面 */}
<Animated.View
style={[styles.absoluteView, welcomeStyle, { zIndex: 1 }]}
>
<AskHello setUserMessages={setUserMessages} setConversationId={setConversationId} setIsHello={setIsHello} />
</Animated.View>
<View style={styles.contentContainer}>
{/* 欢迎页面 */}
<Animated.View
style={[styles.absoluteView, welcomeStyle, { zIndex: 1 }]}
>
<AskHello setUserMessages={setUserMessages} setConversationId={setConversationId} setIsHello={setIsHello} />
</Animated.View>
{/* 聊天页面 */}
{/* <Animated.View
{/* 聊天页面 */}
{/* <Animated.View
style={[styles.absoluteView, chatStyle, { zIndex: 0 }]}
>
<Chat
@ -284,25 +285,25 @@ export default function AskScreen() {
// onContentSizeChange={() => scrollToEnd()}
/>
</Animated.View> */}
</View>
{/* 输入框区域 */}
<KeyboardAvoidingView
behavior={Platform.OS === "ios" ? "padding" : "height"}
keyboardVerticalOffset={0} >
<View style={styles.inputContainer} key={conversationId}>
<SendMessage
setIsHello={setIsHello}
conversationId={conversationId}
setConversationId={setConversationId}
setUserMessages={setUserMessages}
selectedImages={selectedImages}
setSelectedImages={setSelectedImages}
/>
</View>
</KeyboardAvoidingView>
</View >
// </GestureDetector >
{/* 输入框区域 */}
<KeyboardAvoidingView
behavior={Platform.OS === "ios" ? "padding" : "height"}
keyboardVerticalOffset={0} >
<View style={styles.inputContainer} key={conversationId}>
<SendMessage
setIsHello={setIsHello}
conversationId={conversationId}
setConversationId={setConversationId}
setUserMessages={setUserMessages}
selectedImages={selectedImages}
setSelectedImages={setSelectedImages}
/>
</View>
</KeyboardAvoidingView>
</View >
</GestureDetector >
);
}