forked from vergnet/application-amicale
Fix crash on app start
This commit is contained in:
parent
c5287611c4
commit
f5233c53f8
6 changed files with 63 additions and 51 deletions
6
App.tsx
6
App.tsx
|
@ -55,7 +55,7 @@ type StateType = {
|
||||||
currentTheme: ReactNativePaper.Theme | undefined;
|
currentTheme: ReactNativePaper.Theme | undefined;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class App extends React.Component<null, StateType> {
|
export default class App extends React.Component<{}, StateType> {
|
||||||
navigatorRef: {current: null | NavigationContainerRef};
|
navigatorRef: {current: null | NavigationContainerRef};
|
||||||
|
|
||||||
defaultHomeRoute: string | null;
|
defaultHomeRoute: string | null;
|
||||||
|
@ -64,8 +64,8 @@ export default class App extends React.Component<null, StateType> {
|
||||||
|
|
||||||
urlHandler: URLHandler;
|
urlHandler: URLHandler;
|
||||||
|
|
||||||
constructor() {
|
constructor(props: {}) {
|
||||||
super(null);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
isLoading: true,
|
isLoading: true,
|
||||||
showIntro: true,
|
showIntro: true,
|
||||||
|
|
|
@ -284,5 +284,9 @@ type PropsType = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function MainNavigator(props: PropsType) {
|
export default function MainNavigator(props: PropsType) {
|
||||||
return <MainStackComponent createTabNavigator={() => TabNavigator(props)} />;
|
return (
|
||||||
|
<MainStackComponent
|
||||||
|
createTabNavigator={() => <TabNavigator {...props} />}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,7 +142,7 @@ function HomeStackComponent(
|
||||||
defaultData: {[key: string]: string},
|
defaultData: {[key: string]: string},
|
||||||
) {
|
) {
|
||||||
let params;
|
let params;
|
||||||
if (initialRoute != null) {
|
if (initialRoute) {
|
||||||
params = {data: defaultData, nextScreen: initialRoute, shouldOpen: true};
|
params = {data: defaultData, nextScreen: initialRoute, shouldOpen: true};
|
||||||
}
|
}
|
||||||
const {colors} = useTheme();
|
const {colors} = useTheme();
|
||||||
|
@ -255,45 +255,53 @@ type PropsType = {
|
||||||
defaultHomeData: {[key: string]: string};
|
defaultHomeData: {[key: string]: string};
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function TabNavigator(props: PropsType) {
|
export default class TabNavigator extends React.Component<PropsType> {
|
||||||
let defaultRoute = 'home';
|
defaultRoute: string;
|
||||||
if (!props.defaultHomeRoute) {
|
createHomeStackComponent: () => any;
|
||||||
defaultRoute = AsyncStorageManager.getString(
|
|
||||||
AsyncStorageManager.PREFERENCES.defaultStartScreen.key,
|
|
||||||
).toLowerCase();
|
|
||||||
}
|
|
||||||
const createHomeStackComponent = () =>
|
|
||||||
HomeStackComponent(props.defaultHomeRoute, props.defaultHomeData);
|
|
||||||
|
|
||||||
return (
|
constructor(props: PropsType) {
|
||||||
<Tab.Navigator
|
super(props);
|
||||||
initialRouteName={defaultRoute}
|
this.defaultRoute = 'home';
|
||||||
tabBar={(tabProps) => <CustomTabBar {...tabProps} />}>
|
if (!props.defaultHomeRoute) {
|
||||||
<Tab.Screen
|
this.defaultRoute = AsyncStorageManager.getString(
|
||||||
name="services"
|
AsyncStorageManager.PREFERENCES.defaultStartScreen.key,
|
||||||
component={ServicesStackComponent}
|
).toLowerCase();
|
||||||
options={{title: i18n.t('screens.services.title')}}
|
}
|
||||||
/>
|
this.createHomeStackComponent = () =>
|
||||||
<Tab.Screen
|
HomeStackComponent(props.defaultHomeRoute, props.defaultHomeData);
|
||||||
name="proxiwash"
|
}
|
||||||
component={ProxiwashStackComponent}
|
|
||||||
options={{title: i18n.t('screens.proxiwash.title')}}
|
render() {
|
||||||
/>
|
return (
|
||||||
<Tab.Screen
|
<Tab.Navigator
|
||||||
name="home"
|
initialRouteName={this.defaultRoute}
|
||||||
component={createHomeStackComponent}
|
tabBar={(tabProps) => <CustomTabBar {...tabProps} />}>
|
||||||
options={{title: i18n.t('screens.home.title')}}
|
<Tab.Screen
|
||||||
/>
|
name="services"
|
||||||
<Tab.Screen
|
component={ServicesStackComponent}
|
||||||
name="planning"
|
options={{title: i18n.t('screens.services.title')}}
|
||||||
component={PlanningStackComponent}
|
/>
|
||||||
options={{title: i18n.t('screens.planning.title')}}
|
<Tab.Screen
|
||||||
/>
|
name="proxiwash"
|
||||||
<Tab.Screen
|
component={ProxiwashStackComponent}
|
||||||
name="planex"
|
options={{title: i18n.t('screens.proxiwash.title')}}
|
||||||
component={PlanexStackComponent}
|
/>
|
||||||
options={{title: i18n.t('screens.planex.title')}}
|
<Tab.Screen
|
||||||
/>
|
name="home"
|
||||||
</Tab.Navigator>
|
component={this.createHomeStackComponent}
|
||||||
);
|
options={{title: i18n.t('screens.home.title')}}
|
||||||
|
/>
|
||||||
|
<Tab.Screen
|
||||||
|
name="planning"
|
||||||
|
component={PlanningStackComponent}
|
||||||
|
options={{title: i18n.t('screens.planning.title')}}
|
||||||
|
/>
|
||||||
|
<Tab.Screen
|
||||||
|
name="planex"
|
||||||
|
component={PlanexStackComponent}
|
||||||
|
options={{title: i18n.t('screens.planex.title')}}
|
||||||
|
/>
|
||||||
|
</Tab.Navigator>
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,8 +53,8 @@ const LIST_ITEM_HEIGHT = 64;
|
||||||
export default class AboutDependenciesScreen extends React.Component<{}> {
|
export default class AboutDependenciesScreen extends React.Component<{}> {
|
||||||
data: Array<ListItemType>;
|
data: Array<ListItemType>;
|
||||||
|
|
||||||
constructor() {
|
constructor(props: {}) {
|
||||||
super({});
|
super(props);
|
||||||
this.data = generateListFromObject(packageJson.dependencies);
|
this.data = generateListFromObject(packageJson.dependencies);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,8 +38,8 @@ class AmicaleContactScreen extends React.Component<{}> {
|
||||||
// Dataset containing information about contacts
|
// Dataset containing information about contacts
|
||||||
CONTACT_DATASET: Array<DatasetItemType>;
|
CONTACT_DATASET: Array<DatasetItemType>;
|
||||||
|
|
||||||
constructor() {
|
constructor(props: {}) {
|
||||||
super({});
|
super(props);
|
||||||
this.CONTACT_DATASET = [
|
this.CONTACT_DATASET = [
|
||||||
{
|
{
|
||||||
name: i18n.t('screens.amicaleAbout.roles.interSchools'),
|
name: i18n.t('screens.amicaleAbout.roles.interSchools'),
|
||||||
|
|
|
@ -55,8 +55,8 @@ const styles = StyleSheet.create({
|
||||||
type PermissionResults = 'unavailable' | 'denied' | 'blocked' | 'granted';
|
type PermissionResults = 'unavailable' | 'denied' | 'blocked' | 'granted';
|
||||||
|
|
||||||
class ScannerScreen extends React.Component<{}, StateType> {
|
class ScannerScreen extends React.Component<{}, StateType> {
|
||||||
constructor() {
|
constructor(props: {}) {
|
||||||
super({});
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
hasPermission: false,
|
hasPermission: false,
|
||||||
scanned: false,
|
scanned: false,
|
||||||
|
|
Loading…
Reference in a new issue