Эх сурвалжийг харах

feat(app): 添加版本更新模拟功能并优化主界面

- 在 MainViewScreen 中添加应用更新模拟按钮
- 增加基础包版本号和更新提示功能
- 优化小程序跳转界面布局- 在医院和医网签小程序中添加版本号显示
xuqm 4 өдөр өмнө
parent
commit
06cc7cbb85

+ 10 - 0
specs/NativeUpdateManager.ts

@@ -0,0 +1,10 @@
+import type { TurboModule } from 'react-native';
+import { TurboModuleRegistry } from 'react-native';
+
+export interface Spec extends TurboModule {
+  update(name: string): void;
+}
+
+export default TurboModuleRegistry.getEnforcing<Spec>(
+  'NavigationManager',
+) as Spec;

+ 88 - 22
src/app/screens/main/MainViewScreen.tsx

@@ -1,36 +1,97 @@
 import React from 'react';
-import { Button, StyleSheet, View } from 'react-native';
+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';
 
 type Props = StackScreenProps<MainParamList, 'MainView'>;
 
 export default function WebViewScreen(props: Props) {
   return (
     <View style={styles.container}>
-      <View style={{ height: 100 }} />
-      <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');
-        }}
-      />
+      <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}</Text>
+          <Button
+            title={'基础包前台更新'}
+            onPress={() => {
+              Alert.show(
+                '提示',
+                <Text style={styles.alertText}>
+                  有新版本可以更新,确定更新吗?
+                </Text>,
+                {
+                  action: () => {},
+                },
+                {
+                  action: () => {},
+                },
+              );
+            }}
+          />
+        </>
+      </ScrollView>
     </View>
   );
 }
@@ -39,4 +100,9 @@ const styles = StyleSheet.create({
   container: {
     flex: 1,
   },
+  alertText: {
+    textAlign: 'center',
+    color: '#999999',
+    fontSize: 12,
+  },
 });

+ 3 - 0
src/common/common.ts

@@ -1,3 +1,6 @@
+export const version_common = '1.0.0';
+export const version_code = 1;
+
 import 'react';
 import 'react-native';
 import '@react-navigation/native';

+ 2 - 1
src/miniapp/hospital/HospitalMain.tsx

@@ -16,6 +16,7 @@ import {
 import { NavigationPop } from '@common/NavigationHelper.ts';
 import { showMessage } from '@common/ToastHelper.ts';
 import Toast from 'react-native-toast-message';
+import { versionName } from '@hospital/hospital.ts';
 
 function HospitalMain() {
   const isDarkMode = useColorScheme() === 'dark';
@@ -24,7 +25,7 @@ function HospitalMain() {
     <View style={styles.container}>
       <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />
       <View style={{ height: 100 }} />
-      <Text>互联网医院</Text>
+      <Text>互联网医院{versionName}</Text>
       <Button
         title={'返回'}
         onPress={() => {

+ 3 - 0
src/miniapp/hospital/hospital.ts

@@ -2,4 +2,7 @@ import { AppRegistry } from 'react-native';
 import { Apps } from '@common/NavigationHelper.ts';
 import HospitalMain from './HospitalMain.tsx';
 
+export const versionName = '1.0.0';
+export const versionCode = 1;
+
 AppRegistry.registerComponent(Apps.Hospital, () => HospitalMain);

+ 4 - 1
src/miniapp/ywq/YwqMain.tsx

@@ -9,6 +9,7 @@ import {
   Button,
   StatusBar,
   StyleSheet,
+  Text,
   useColorScheme,
   View,
 } from 'react-native';
@@ -16,6 +17,7 @@ import { showMessage } from '@common/ToastHelper.ts';
 import Toast from 'react-native-toast-message';
 import Alert from '@common/components/Alert.tsx';
 import { NavigationPop } from '@common/NavigationHelper.ts';
+import { versionName } from '@ywx/ywq.ts';
 
 function YwqMain() {
   const isDarkMode = useColorScheme() === 'dark';
@@ -24,6 +26,7 @@ function YwqMain() {
     <View style={styles.container}>
       <StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />
       <View style={{ height: 100 }} />
+      <Text>医网签{versionName}</Text>
       <Button
         title={'onConfirm'}
         onPress={() => {
@@ -42,7 +45,7 @@ function YwqMain() {
         }}
       />
       <Toast />
-      <Alert ref={ref => Alert.setRef(ref)} />
+      {/*<Alert ref={ref => Alert.setRef(ref)} />*/}
     </View>
   );
 }

+ 2 - 0
src/miniapp/ywq/ywq.ts

@@ -2,4 +2,6 @@ import { AppRegistry } from 'react-native';
 import YwqMain from './YwqMain.tsx';
 import { Apps } from '@common/NavigationHelper';
 
+export const versionName = '1.0.0';
+export const versionCode = 1;
 AppRegistry.registerComponent(Apps.Ywq, () => YwqMain);