This commit is contained in:
2023-11-21 00:58:33 +03:00
parent 098eba64a6
commit ca519b4ce5
11 changed files with 95 additions and 21 deletions

View File

@@ -8,12 +8,13 @@ import CommonPage from "./screens/CommonPage/CommonPage";
import {BottomSheetModalProvider} from "@gorhom/bottom-sheet";
import {GestureHandlerRootView} from "react-native-gesture-handler";
import Toast from "react-native-toast-message";
import Constants from "expo-constants";
export default function App() {
let [fontsLoading] = useFonts({
// 'SF Pro Text': require('./assets/fonts/SF-Pro-Text-Regular.otf')
})
if (!fontsLoading)
return <View><Text>Loading...</Text></View>
return (

View File

@@ -5,8 +5,8 @@ import {logout} from "../features/auth/authSlice";
import {store} from "../redux/store";
const apiClient = axios.create({
baseURL: 'https://assemblr.denco.store',
// baseURL: 'http://192.168.1.101:5000',
// baseURL: 'https://assemblr.denco.store',
baseURL: 'http://192.168.1.101:5000',
});
apiClient.interceptors.request.use(async (config) => {
@@ -27,12 +27,6 @@ apiClient.interceptors.request.use(async (config) => {
return config;
}, function (error) {
console.log("очко")
if (error.response && error.response.status === 401) {
console.log("очко")
}
});

19
src/api/applicationApi.ts Normal file
View File

@@ -0,0 +1,19 @@
import apiClient from "./apiClient";
const router = '/application';
const api_key = 'AF9A20DD9264C134CDA0ADACED834368';
const applicationApi = {
getVersion: async (name: string): Promise<{ 'latest_version': string }> => {
let response = await apiClient.get(`${router}/${name}/version`, {headers: {Authorization: api_key}});
return response.data;
},
download: async (name: string, version: string): Promise<ArrayBuffer> => {
let response = await apiClient.get(`${router}/${name}/download/${version}`, {
headers: {Authorization: api_key},
responseType: "arraybuffer"
});
return response.data;
}
}
export default applicationApi;

View File

@@ -5,5 +5,6 @@ const userApi = {
let response = await apiClient.post('/auth/login', {login, password});
return response.data;
},
}
export default userApi;

View File

@@ -3,19 +3,27 @@ import {StyleSheet, View} from "react-native";
import {useSelector} from "react-redux";
import {RootState} from "../../../redux/store";
import Modal from "react-native-modal";
import {background} from "../../../css/colors";
import {background, blue} from "../../../css/colors";
import {responsiveHeight, responsiveWidth} from "react-native-responsive-dimensions";
import DTitle from "../../DTitle/DTitle";
import * as Progress from 'react-native-progress';
import {RFPercentage} from "react-native-responsive-fontsize";
const LoadingModal: FC = () => {
const isVisible = useSelector((state: RootState) => state.loadingModal.isVisible);
const loadingText = useSelector((state: RootState) => state.loadingModal.loadingText);
const [ch, sCh] = useState(false);
return (
<Modal isVisible={isVisible}>
<Modal isVisible={true}>
<View style={styles.container}>
<DTitle style={{textAlign: "center"}}>{loadingText}</DTitle>
<View style={styles.progressBarWrapper}>
<Progress.Circle size={RFPercentage(20)}
color={blue}
indeterminate={true}
style={styles.progressBar}
borderWidth={responsiveWidth(1)}
/>
</View>
</View>

View File

@@ -1,7 +1,6 @@
import {SafeAreaView, StyleSheet, View} from "react-native";
import {Linking, StyleSheet, View} from "react-native";
import LoginScreen from "../LoginScreen/LoginScreen";
import MainScreen from "../MainScreen/MainScreen";
import SearchBar from "../../components/SearchBar/SearchBar";
import React, {useEffect} from "react";
import {background} from "../../css/colors";
import {useDispatch, useSelector} from "react-redux";
@@ -11,16 +10,19 @@ import * as SecureStore from 'expo-secure-store';
import Toast from "react-native-toast-message";
import toastConfig from "../../components/Toast/Toast";
import ScanModal from "../../components/SearchBar/ScanModal";
import {closeScanModal, setScannedData} from "../../features/scanModal/scanModalSlice";
import LoadingModal from "../../components/Modals/LoadingModal/LoadingModal";
import ReprintModal from "../../components/Modals/ReprintModal/ReprintModal";
import assemblyApi from "../../api/assemblyApi";
import {assembly, setAssembly, setLocalState, setOrder} from "../../features/assembly/assemblySlice";
import {setAssembly, setLocalState, setOrder} from "../../features/assembly/assemblySlice";
import ordersApi from "../../api/ordersApi";
import ImageZoomModal from "../../components/Modals/ImageZoomModal/ImageZoomModal";
import SortingModal from "../../components/Modals/SortingModal/SortingModal";
import {setLoadingText} from "../../features/loadingModal/loadingModalSlice";
import {ASSEMBLY_STATE} from "../../types/assembly";
import Constants from "expo-constants";
import * as FileSystem from 'expo-file-system';
import applicationApi from "../../api/applicationApi";
import {ActivityAction, startActivityAsync} from "expo-intent-launcher";
import {RenderTargetOptions} from "@shopify/flash-list";
function CommonPage() {
const dim = useSelector((state: RootState) => state.interface.dim);
@@ -33,7 +35,6 @@ function CommonPage() {
dispatch(login({accessToken: token}));
return true;
}
const loadAssembly = async () => {
assemblyApi.hasActive().then(({has}) => {
if (!has) return;
@@ -54,13 +55,53 @@ function CommonPage() {
}
const checkUpdates = async () => {
//
// let packageName = Constants.manifest2?.extra?.expoClient?.android?.package; // Замените на имя пакета вашего приложения
// const uri = `package:${packageName}`;
// startActivityAsync('android.settings.MANAGE_UNKNOWN_APP_SOURCES', {
// data: uri
// }).then(result => {
// console.log(result);
// }).catch(error => {
// console.log(error);
// });
// return
const currentVersion = Constants.manifest2?.extra?.expoClient?.version;
applicationApi.getVersion('assemblr').then(({latest_version}) => {
const apkPath = FileSystem.documentDirectory + "test.apk";
FileSystem.downloadAsync('http://192.168.1.101:5000/application/assemblr/download/1.1.8', apkPath).then(downloadResult => {
FileSystem.getContentUriAsync(apkPath).then(localUri => {
try {
startActivityAsync('android.intent.action.INSTALL_PACKAGE', {
data: localUri,
flags: 1
}).then(result => {
console.log(result);
}).catch(error => {
console.log(error);
});
} catch (ex) {
console.log(ex);
}
})
})
});
}
useEffect(() => {
initialize();
checkUpdates();
//initialize();
}, []);
return (
<View style={styles.main}>
{isAuthorized ? <MainScreen/> : <LoginScreen/>}
<View style={[styles.overlay, {display: dim ? 'flex' : 'none'}]}/>
<LoadingModal/>