Browse Source

Fix crash on app start

Arnaud Vergnet 3 years ago
parent
commit
f5233c53f8

+ 3
- 3
App.tsx View File

55
   currentTheme: ReactNativePaper.Theme | undefined;
55
   currentTheme: ReactNativePaper.Theme | undefined;
56
 };
56
 };
57
 
57
 
58
-export default class App extends React.Component<null, StateType> {
58
+export default class App extends React.Component<{}, StateType> {
59
   navigatorRef: {current: null | NavigationContainerRef};
59
   navigatorRef: {current: null | NavigationContainerRef};
60
 
60
 
61
   defaultHomeRoute: string | null;
61
   defaultHomeRoute: string | null;
64
 
64
 
65
   urlHandler: URLHandler;
65
   urlHandler: URLHandler;
66
 
66
 
67
-  constructor() {
68
-    super(null);
67
+  constructor(props: {}) {
68
+    super(props);
69
     this.state = {
69
     this.state = {
70
       isLoading: true,
70
       isLoading: true,
71
       showIntro: true,
71
       showIntro: true,

+ 5
- 1
src/navigation/MainNavigator.tsx View File

284
 };
284
 };
285
 
285
 
286
 export default function MainNavigator(props: PropsType) {
286
 export default function MainNavigator(props: PropsType) {
287
-  return <MainStackComponent createTabNavigator={() => TabNavigator(props)} />;
287
+  return (
288
+    <MainStackComponent
289
+      createTabNavigator={() => <TabNavigator {...props} />}
290
+    />
291
+  );
288
 }
292
 }

+ 48
- 40
src/navigation/TabNavigator.tsx View File

142
   defaultData: {[key: string]: string},
142
   defaultData: {[key: string]: string},
143
 ) {
143
 ) {
144
   let params;
144
   let params;
145
-  if (initialRoute != null) {
145
+  if (initialRoute) {
146
     params = {data: defaultData, nextScreen: initialRoute, shouldOpen: true};
146
     params = {data: defaultData, nextScreen: initialRoute, shouldOpen: true};
147
   }
147
   }
148
   const {colors} = useTheme();
148
   const {colors} = useTheme();
255
   defaultHomeData: {[key: string]: string};
255
   defaultHomeData: {[key: string]: string};
256
 };
256
 };
257
 
257
 
258
-export default function TabNavigator(props: PropsType) {
259
-  let defaultRoute = 'home';
260
-  if (!props.defaultHomeRoute) {
261
-    defaultRoute = AsyncStorageManager.getString(
262
-      AsyncStorageManager.PREFERENCES.defaultStartScreen.key,
263
-    ).toLowerCase();
258
+export default class TabNavigator extends React.Component<PropsType> {
259
+  defaultRoute: string;
260
+  createHomeStackComponent: () => any;
261
+
262
+  constructor(props: PropsType) {
263
+    super(props);
264
+    this.defaultRoute = 'home';
265
+    if (!props.defaultHomeRoute) {
266
+      this.defaultRoute = AsyncStorageManager.getString(
267
+        AsyncStorageManager.PREFERENCES.defaultStartScreen.key,
268
+      ).toLowerCase();
269
+    }
270
+    this.createHomeStackComponent = () =>
271
+      HomeStackComponent(props.defaultHomeRoute, props.defaultHomeData);
264
   }
272
   }
265
-  const createHomeStackComponent = () =>
266
-    HomeStackComponent(props.defaultHomeRoute, props.defaultHomeData);
267
 
273
 
268
-  return (
269
-    <Tab.Navigator
270
-      initialRouteName={defaultRoute}
271
-      tabBar={(tabProps) => <CustomTabBar {...tabProps} />}>
272
-      <Tab.Screen
273
-        name="services"
274
-        component={ServicesStackComponent}
275
-        options={{title: i18n.t('screens.services.title')}}
276
-      />
277
-      <Tab.Screen
278
-        name="proxiwash"
279
-        component={ProxiwashStackComponent}
280
-        options={{title: i18n.t('screens.proxiwash.title')}}
281
-      />
282
-      <Tab.Screen
283
-        name="home"
284
-        component={createHomeStackComponent}
285
-        options={{title: i18n.t('screens.home.title')}}
286
-      />
287
-      <Tab.Screen
288
-        name="planning"
289
-        component={PlanningStackComponent}
290
-        options={{title: i18n.t('screens.planning.title')}}
291
-      />
292
-      <Tab.Screen
293
-        name="planex"
294
-        component={PlanexStackComponent}
295
-        options={{title: i18n.t('screens.planex.title')}}
296
-      />
297
-    </Tab.Navigator>
298
-  );
274
+  render() {
275
+    return (
276
+      <Tab.Navigator
277
+        initialRouteName={this.defaultRoute}
278
+        tabBar={(tabProps) => <CustomTabBar {...tabProps} />}>
279
+        <Tab.Screen
280
+          name="services"
281
+          component={ServicesStackComponent}
282
+          options={{title: i18n.t('screens.services.title')}}
283
+        />
284
+        <Tab.Screen
285
+          name="proxiwash"
286
+          component={ProxiwashStackComponent}
287
+          options={{title: i18n.t('screens.proxiwash.title')}}
288
+        />
289
+        <Tab.Screen
290
+          name="home"
291
+          component={this.createHomeStackComponent}
292
+          options={{title: i18n.t('screens.home.title')}}
293
+        />
294
+        <Tab.Screen
295
+          name="planning"
296
+          component={PlanningStackComponent}
297
+          options={{title: i18n.t('screens.planning.title')}}
298
+        />
299
+        <Tab.Screen
300
+          name="planex"
301
+          component={PlanexStackComponent}
302
+          options={{title: i18n.t('screens.planex.title')}}
303
+        />
304
+      </Tab.Navigator>
305
+    );
306
+  }
299
 }
307
 }

+ 2
- 2
src/screens/About/AboutDependenciesScreen.tsx View File

53
 export default class AboutDependenciesScreen extends React.Component<{}> {
53
 export default class AboutDependenciesScreen extends React.Component<{}> {
54
   data: Array<ListItemType>;
54
   data: Array<ListItemType>;
55
 
55
 
56
-  constructor() {
57
-    super({});
56
+  constructor(props: {}) {
57
+    super(props);
58
     this.data = generateListFromObject(packageJson.dependencies);
58
     this.data = generateListFromObject(packageJson.dependencies);
59
   }
59
   }
60
 
60
 

+ 2
- 2
src/screens/Amicale/AmicaleContactScreen.tsx View File

38
   // Dataset containing information about contacts
38
   // Dataset containing information about contacts
39
   CONTACT_DATASET: Array<DatasetItemType>;
39
   CONTACT_DATASET: Array<DatasetItemType>;
40
 
40
 
41
-  constructor() {
42
-    super({});
41
+  constructor(props: {}) {
42
+    super(props);
43
     this.CONTACT_DATASET = [
43
     this.CONTACT_DATASET = [
44
       {
44
       {
45
         name: i18n.t('screens.amicaleAbout.roles.interSchools'),
45
         name: i18n.t('screens.amicaleAbout.roles.interSchools'),

+ 2
- 2
src/screens/Home/ScannerScreen.tsx View File

55
 type PermissionResults = 'unavailable' | 'denied' | 'blocked' | 'granted';
55
 type PermissionResults = 'unavailable' | 'denied' | 'blocked' | 'granted';
56
 
56
 
57
 class ScannerScreen extends React.Component<{}, StateType> {
57
 class ScannerScreen extends React.Component<{}, StateType> {
58
-  constructor() {
59
-    super({});
58
+  constructor(props: {}) {
59
+    super(props);
60
     this.state = {
60
     this.state = {
61
       hasPermission: false,
61
       hasPermission: false,
62
       scanned: false,
62
       scanned: false,

Loading…
Cancel
Save