feat: eas update

This commit is contained in:
Junhui Chen 2025-08-06 14:20:39 +08:00
parent 1f35ce1c4a
commit 6b35cefbdc
6 changed files with 138 additions and 62 deletions

View File

@ -46,7 +46,7 @@
"plugins": [
"expo-router",
"expo-secure-store",
[
[
"expo-background-task",
{
"minimumInterval": 15
@ -90,6 +90,10 @@
"eas": {
"projectId": "04721dd4-6b15-495a-b9ec-98187c613172"
}
},
"runtimeVersion": "1.0.0.2",
"updates": {
"url": "https://u.expo.dev/04721dd4-6b15-495a-b9ec-98187c613172"
}
}
}

View File

@ -6,11 +6,10 @@ 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";
import { router, useFocusEffect, useLocalSearchParams } from "expo-router";
import { useFocusEffect, useLocalSearchParams, useRouter } from "expo-router";
import { useCallback, useEffect, useRef, useState } from 'react';
import { useTranslation } from "react-i18next";
import {
Animated,
FlatList,
Keyboard,
KeyboardAvoidingView,
@ -21,10 +20,11 @@ import {
View
} from 'react-native';
import { Gesture, GestureDetector } from "react-native-gesture-handler";
import { runOnJS } from 'react-native-reanimated';
import Animated, { runOnJS, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
import { useSafeAreaInsets } from "react-native-safe-area-context";
export default function AskScreen() {
const router = useRouter();
const insets = useSafeAreaInsets();
const chatListRef = useRef<FlatList>(null);
@ -32,8 +32,8 @@ export default function AskScreen() {
const [conversationId, setConversationId] = useState<string | null>(null);
const [userMessages, setUserMessages] = useState<Message[]>([]);
const [selectedImages, setSelectedImages] = useState<string[]>([]);
const fadeAnim = useRef(new Animated.Value(1)).current;
const fadeAnimChat = useRef(new Animated.Value(0)).current;
const fadeAnim = useSharedValue(1);
const fadeAnimChat = useSharedValue(0);
const { t } = useTranslation();
const { sessionId, newSession } = useLocalSearchParams<{
@ -184,6 +184,27 @@ export default function AskScreen() {
}, [])
);
// 创建动画样式
const welcomeStyle = useAnimatedStyle(() => {
return {
opacity: fadeAnim.value,
pointerEvents: isHello ? 'auto' : 'none',
};
});
const chatStyle = useAnimatedStyle(() => {
return {
opacity: fadeAnimChat.value,
pointerEvents: isHello ? 'none' : 'auto',
};
});
// 触发动画
useEffect(() => {
fadeAnim.value = withTiming(isHello ? 1 : 0, { duration: 300 });
fadeAnimChat.value = withTiming(isHello ? 0 : 1, { duration: 300 });
}, [isHello]);
useEffect(() => {
if (sessionId) {
setConversationId(sessionId);
@ -198,41 +219,41 @@ export default function AskScreen() {
}
}, [sessionId, newSession]);
useEffect(() => {
if (isHello) {
Animated.parallel([
Animated.timing(fadeAnim, {
toValue: 1,
duration: 300,
useNativeDriver: true,
}),
Animated.timing(fadeAnimChat, {
toValue: 0,
duration: 300,
useNativeDriver: true,
})
]).start();
} else {
Animated.parallel([
Animated.timing(fadeAnim, {
toValue: 0,
duration: 300,
useNativeDriver: true,
}),
Animated.timing(fadeAnimChat, {
toValue: 1,
duration: 300,
useNativeDriver: true,
})
]).start(() => {
setTimeout(() => {
if (!isHello) {
scrollToEnd(false);
}
}, 50);
});
}
}, [isHello, fadeAnim, fadeAnimChat]);
// useEffect(() => {
// if (isHello) {
// Animated.parallel([
// Animated.timing(fadeAnim, {
// toValue: 1,
// duration: 300,
// useNativeDriver: true,
// }),
// Animated.timing(fadeAnimChat, {
// toValue: 0,
// duration: 300,
// useNativeDriver: true,
// })
// ]).start();
// } else {
// Animated.parallel([
// Animated.timing(fadeAnim, {
// toValue: 0,
// duration: 300,
// useNativeDriver: true,
// }),
// Animated.timing(fadeAnimChat, {
// toValue: 1,
// duration: 300,
// useNativeDriver: true,
// })
// ]).start(() => {
// setTimeout(() => {
// if (!isHello) {
// scrollToEnd(false);
// }
// }, 50);
// });
// }
// }, [isHello, fadeAnim, fadeAnimChat]);
useEffect(() => {
if (!isHello) {
@ -280,28 +301,14 @@ export default function AskScreen() {
<View style={styles.contentContainer}>
{/* 欢迎页面 */}
<Animated.View
style={[
styles.absoluteView,
{
opacity: fadeAnim,
pointerEvents: isHello ? 'auto' : 'none',
zIndex: 1
}
]}
style={[styles.absoluteView, welcomeStyle, { zIndex: 1 }]}
>
<AskHello setUserMessages={setUserMessages} setConversationId={setConversationId} setIsHello={setIsHello} />
</Animated.View>
{/* 聊天页面 */}
<Animated.View
style={[
styles.absoluteView,
{
opacity: fadeAnimChat,
pointerEvents: isHello ? 'none' : 'auto',
zIndex: 0
}
]}
style={[styles.absoluteView, chatStyle, { zIndex: 0 }]}
>
<Chat
ref={chatListRef}

View File

@ -225,7 +225,7 @@ export default function HomeScreen() {
useEffect(() => {
setIsLoading(true);
checkAuthStatus(router, () => {
router.replace('/ask')
router.replace('/memo-list') // TODO FIXME
}, false).then(() => {
setIsLoading(false);
}).catch(() => {

View File

@ -6,13 +6,16 @@
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
"distribution": "internal",
"channel": "development"
},
"preview": {
"distribution": "internal"
"distribution": "internal",
"channel": "preview"
},
"production": {
"autoIncrement": true
"autoIncrement": true,
"channel": "release"
}
},
"submit": {

60
package-lock.json generated
View File

@ -34,6 +34,7 @@
"expo-iap": "^2.7.5",
"expo-image-manipulator": "~13.1.7",
"expo-image-picker": "~16.1.4",
"expo-insights": "~0.9.3",
"expo-linear-gradient": "~14.1.5",
"expo-linking": "~7.1.7",
"expo-localization": "^16.1.5",
@ -48,6 +49,7 @@
"expo-symbols": "~0.4.5",
"expo-system-ui": "~5.0.9",
"expo-task-manager": "^13.1.6",
"expo-updates": "~0.28.17",
"expo-video": "~2.2.2",
"expo-video-thumbnails": "~9.1.3",
"expo-web-browser": "~14.2.0",
@ -9062,6 +9064,12 @@
"node": "*"
}
},
"node_modules/expo-eas-client": {
"version": "0.14.4",
"resolved": "https://registry.npmmirror.com/expo-eas-client/-/expo-eas-client-0.14.4.tgz",
"integrity": "sha512-TSL1BbBFIuXchJmPgbPnB7cGpOOuSGJcQ/L7gij/+zPjExwvKm5ckA5dlSulwoFhH8zQt4vb7bfISPSAWQVWBw==",
"license": "MIT"
},
"node_modules/expo-file-system": {
"version": "18.1.11",
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.1.11.tgz",
@ -9138,6 +9146,18 @@
"expo": "*"
}
},
"node_modules/expo-insights": {
"version": "0.9.3",
"resolved": "https://registry.npmmirror.com/expo-insights/-/expo-insights-0.9.3.tgz",
"integrity": "sha512-ictylDUdERHPXUM4suEYLJGGvlSOB7btDSA0FtlZeVWWOcyTWQlSF5t1Wj3lCCljzjMm/pIj8k9hp8CXCl0gsg==",
"license": "MIT",
"dependencies": {
"expo-eas-client": "~0.14.3"
},
"peerDependencies": {
"expo": "*"
}
},
"node_modules/expo-json-utils": {
"version": "0.15.0",
"resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.15.0.tgz",
@ -9374,6 +9394,12 @@
"react-native": "*"
}
},
"node_modules/expo-structured-headers": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/expo-structured-headers/-/expo-structured-headers-4.1.0.tgz",
"integrity": "sha512-2X+aUNzC/qaw7/WyUhrVHNDB0uQ5rE12XA2H/rJXaAiYQSuOeU90ladaN0IJYV9I2XlhYrjXLktLXWbO7zgbag==",
"license": "MIT"
},
"node_modules/expo-symbols": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/expo-symbols/-/expo-symbols-0.4.5.tgz",
@ -9420,6 +9446,34 @@
"react-native": "*"
}
},
"node_modules/expo-updates": {
"version": "0.28.17",
"resolved": "https://registry.npmmirror.com/expo-updates/-/expo-updates-0.28.17.tgz",
"integrity": "sha512-OiKDrKk6EoBRP9AoK7/4tyj9lVtHw2IfaETIFeUCHMgx5xjgKGX/jjSwqhk8N9BJgLDIy0oD0Sb0MaEbSBb3lg==",
"license": "MIT",
"dependencies": {
"@expo/code-signing-certificates": "0.0.5",
"@expo/config": "~11.0.13",
"@expo/config-plugins": "~10.1.2",
"@expo/spawn-async": "^1.7.2",
"arg": "4.1.0",
"chalk": "^4.1.2",
"expo-eas-client": "~0.14.4",
"expo-manifests": "~0.16.6",
"expo-structured-headers": "~4.1.0",
"expo-updates-interface": "~1.1.0",
"glob": "^10.4.2",
"ignore": "^5.3.1",
"resolve-from": "^5.0.0"
},
"bin": {
"expo-updates": "bin/cli.js"
},
"peerDependencies": {
"expo": "*",
"react": "*"
}
},
"node_modules/expo-updates-interface": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-1.1.0.tgz",
@ -9429,6 +9483,12 @@
"expo": "*"
}
},
"node_modules/expo-updates/node_modules/arg": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/arg/-/arg-4.1.0.tgz",
"integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
"license": "MIT"
},
"node_modules/expo-video": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/expo-video/-/expo-video-2.2.2.tgz",

View File

@ -87,7 +87,9 @@
"react-native-web": "~0.20.0",
"react-native-webview": "13.13.5",
"react-redux": "^9.2.0",
"worklet": "^1.0.3"
"worklet": "^1.0.3",
"expo-insights": "~0.9.3",
"expo-updates": "~0.28.17"
},
"devDependencies": {
"@babel/core": "^7.25.2",