RnMultibundler/src/app/screens/main/MainViewScreen.tsx

133 行
3.9 KiB
TypeScript

import React, { useState } from 'react';
import {
Button,
Linking,
Platform,
ScrollView,
StyleSheet,
Text,
View,
} from 'react-native';
import { StackScreenProps } from '@react-navigation/stack';
import { MainParamList } from '@app/routes/MainParamList';
import { Apps, NavigationPushByName } from '@common/NavigationHelper.ts';
import { showMessage } from '@common/ToastHelper.ts';
import Alert from '@common/components/Alert.tsx';
import { version_common } from '@common/common.ts';
import RNFS from 'react-native-fs';
import { downloadToFile } from '@common/UpdateHelper.ts';
import UpdateManager from '../../../../specs/NativeUpdateManager.ts';
type Props = StackScreenProps<MainParamList, 'MainView'>;
export default function WebViewScreen(props: Props) {
const [progress, setProgress] = useState('');
return (
<View style={styles.container}>
<ScrollView>
<>
<Text style={{ fontSize: 20, marginVertical: 15 }}>
</Text>
<Button
title={'进入互联网医院'}
onPress={() => {
NavigationPushByName(Apps.Hospital, {});
}}
/>
<View style={{ height: 15 }} />
<Button
title={'进入医网签'}
onPress={() => {
NavigationPushByName(Apps.Ywq, {});
}}
/>
<View style={{ height: 15 }} />
<Button
title={'Toast'}
onPress={() => {
showMessage('APP页面弹出toast');
}}
/>
<View style={{ height: 45 }} />
<Button
title={'应用更新模拟'}
onPress={() => {
Alert.show(
'提示',
<Text style={styles.alertText}>
,
</Text>,
{
action: () => {
if (Platform.OS === 'ios') {
Linking.openURL(
'https://apps.apple.com/cn/app/%E5%8C%BB%E7%BD%91%E4%BF%A1/id1074200788',
);
return;
}
Linking.openURL('https://www.51trust.com/download.html/');
},
},
{
action: () => {},
},
);
}}
/>
<View style={{ height: 45 }} />
<Text>
{version_common}({progress})
</Text>
<Button
title={'基础包前台更新'}
onPress={() => {
Alert.show(
'提示',
<Text style={styles.alertText}>
,
</Text>,
{
action: () => {
downloadToFile(
'https://download-api.51trust.com/ywx-android-sdk/common.android.zip',
'common.android.zip',
(bytesWritten, contentLength) => {
setProgress(
`进度: ${(
(bytesWritten / contentLength) *
100
).toFixed(2)}%`,
);
},
).then(() => {
UpdateManager.reload();
});
},
},
{
action: () => {},
},
);
}}
/>
<View style={{ height: 45 }} />
<Text>{RNFS.ExternalDirectoryPath}</Text>
</>
</ScrollView>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
},
alertText: {
textAlign: 'center',
color: '#999999',
fontSize: 12,
},
});