/* eslint-disable import/no-named-default */
/* eslint-disable react/destructuring-assignment */
/* eslint-disable react/jsx-props-no-spreading */
import * as React from "react";
import * as eva from "@eva-design/eva";
import {
ApplicationProvider,
Layout,
IconRegistry,
} from "@ui-kitten/components";
import { Provider } from "@ant-design/react-native";
import { ThemeProvider } from "react-native-magnus";
import { EvaIconsPack } from "@ui-kitten/eva-icons";
import { SplashScreen } from "expo";
import * as Font from "expo-font";
import { Ionicons } from "@expo/vector-icons";
import { NavigationContainer, CommonActions } from "@react-navigation/native";
import {
createStackNavigator,
CardStyleInterpolators,
} from "@react-navigation/stack";
import { useModel } from "flooks";
import { useUpdateEffect, useMount } from "@umijs/hooks";
// import { enableScreens } from "react-native-screens";
// eslint-disable-next-line no-unused-vars
import * as model from "./models";
import { default as theme } from "./theme.json"; // <-- Import app theme
import { default as customMapping } from "./mapping.json"; // <-- Import app theme
import Matheme from "./constants/Theme";
import Dialog from "./components/Dialog";
import BottomTabNavigator from "./navigation/BottomTabNavigator";
import LoginStackNavigator from "./navigation/LoginStackNavigator";
import GuideScreens from "./navigation/GuideStackNavigator";
import BasicScreens from "./navigation/BasicNavigator";
import { navigationRef } from "./navigation/RootNavigation";
// enableScreens();
const Stack = createStackNavigator();
const fontFile = require("./assets/fonts/SpaceMono-Regular.ttf");
export default function App(props) {
const [isLoadingComplete, setLoadingComplete] = React.useState(false);
const { getWords, local } = useModel("wordsModel");
const { clearLoading } = useModel("loadingModel", true);
const {
mid,
guideStep,
getUserInfo,
checkNowGuideStep,
setinitRoute,
} = useModel("userModel");
useMount(() => {
SplashScreen.preventAutoHide();
Font.loadAsync({
...Ionicons.font,
"space-mono": fontFile,
})
.then(() => {
return Font.loadAsync(
"antoutline",
// eslint-disable-next-line
require("@ant-design/icons-react-native/fonts/antoutline.ttf")
);
})
.then(() => {
return Font.loadAsync(
"antfill",
// eslint-disable-next-line
require("@ant-design/icons-react-native/fonts/antfill.ttf")
);
})
.then(() => {
return getUserInfo();
})
.catch(e => {
console.log(e);
});
// .finally(() => {
// setLoadingComplete(true);
// SplashScreen.hide();
// });
});
React.useEffect(() => {
getWords();
}, [local]);
const [initRouteName, setInit] = React.useState("");
useUpdateEffect(() => {
if (mid === 0) {
// 未登录
setinitRoute("Login");
setInit("Login");
}
// else if (__DEV__) {
// setInit("GoodsDetailMore");
// }
else if (mid !== 0) {
checkNowGuideStep();
}
}, [mid]);
useUpdateEffect(() => {
console.log(guideStep);
switch (guideStep) {
case "finish":
setInit("Root");
break;
case "ComeBack":
setinitRoute("RegisterSe");
setInit("Login");
break;
case "1":
setInit("Guide1");
break;
case "2":
setInit("Guide2");
break;
case "3":
setInit("Guide3");
break;
case "4":
setInit("Guide4");
break;
case "5":
setInit("StoreAudit");
break;
default:
setInit("Login");
break;
}
}, [guideStep]);
useUpdateEffect(() => {
if (!isLoadingComplete) {
setLoadingComplete(true);
SplashScreen.hide();
} else {
navigationRef.current.dispatch(
CommonActions.reset({
index: 0,
routes: [
{
name: initRouteName,
},
],
})
);
clearLoading();
}
}, [initRouteName]);
if (!isLoadingComplete && !props.skipLoadingScreen && !initRouteName) {
return null;
}
return (
<>
{GuideScreens(Stack.Screen)}
{/* 基础功能页面 */}
{BasicScreens(Stack.Screen)}
>
);
}