import { StatusBar } from 'expo-status-bar'; import { useEffect, useState } from 'react'; import { StyleSheet, Text, View, ActivityIndicator } from 'react-native'; import { onAppStartCheckUpdate } from './src/updater/index'; export default function App() { const [status, setStatus] = useState<'checking' | 'up-to-date' | 'updating' | 'error'>('checking'); const [message, setMessage] = useState('正在检查更新...'); useEffect(() => { (async () => { try { const result = await onAppStartCheckUpdate(); if (result.jsUpdate) { setStatus('updating'); setMessage('发现 JS 更新,正在下载...(下次启动生效)'); } else if (result.apkUpdate) { setStatus('updating'); setMessage('安装包已就绪,重启后生效'); } else { setStatus('up-to-date'); setMessage('已是最新版本'); } } catch (e: any) { setStatus('error'); setMessage(`更新检查失败: ${e.message}`); } })(); }, []); return ( Yuzu GCA Global Control Assistant {status === 'checking' && } {message} ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#0f172a', alignItems: 'center', justifyContent: 'center', padding: 24, }, title: { fontSize: 28, fontWeight: '800', color: '#e2e8f0', marginBottom: 4, }, subtitle: { fontSize: 14, color: '#94a3b8', marginBottom: 32, }, statusBar: { flexDirection: 'row', alignItems: 'center', gap: 8, }, statusText: { fontSize: 14, color: '#94a3b8', }, });