Application Android et IOS pour l'amicale des élèves
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MainNavigator.js 7.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. // @flow
  2. import * as React from 'react';
  3. import SettingsScreen from '../screens/Other/Settings/SettingsScreen';
  4. import AboutScreen from '../screens/About/AboutScreen';
  5. import AboutDependenciesScreen from '../screens/About/AboutDependenciesScreen';
  6. import DebugScreen from '../screens/About/DebugScreen';
  7. import {createStackNavigator, TransitionPresets} from "@react-navigation/stack";
  8. import i18n from "i18n-js";
  9. import TabNavigator from "./TabNavigator";
  10. import GameMainScreen from "../screens/Game/screens/GameMainScreen";
  11. import VoteScreen from "../screens/Amicale/VoteScreen";
  12. import LoginScreen from "../screens/Amicale/LoginScreen";
  13. import {Platform} from "react-native";
  14. import SelfMenuScreen from "../screens/Services/SelfMenuScreen";
  15. import ProximoMainScreen from "../screens/Services/Proximo/ProximoMainScreen";
  16. import ProximoListScreen from "../screens/Services/Proximo/ProximoListScreen";
  17. import ProximoAboutScreen from "../screens/Services/Proximo/ProximoAboutScreen";
  18. import ProfileScreen from "../screens/Amicale/ProfileScreen";
  19. import ClubListScreen from "../screens/Amicale/Clubs/ClubListScreen";
  20. import ClubAboutScreen from "../screens/Amicale/Clubs/ClubAboutScreen";
  21. import ClubDisplayScreen from "../screens/Amicale/Clubs/ClubDisplayScreen";
  22. import {createScreenCollapsibleStack, getWebsiteStack} from "../utils/CollapsibleUtils";
  23. import BugReportScreen from "../screens/Other/FeedbackScreen";
  24. import WebsiteScreen from "../screens/Services/WebsiteScreen";
  25. import EquipmentScreen from "../screens/Amicale/Equipment/EquipmentListScreen";
  26. import EquipmentLendScreen from "../screens/Amicale/Equipment/EquipmentRentScreen";
  27. import EquipmentConfirmScreen from "../screens/Amicale/Equipment/EquipmentConfirmScreen";
  28. import DashboardEditScreen from "../screens/Other/Settings/DashboardEditScreen";
  29. import GameStartScreen from "../screens/Game/screens/GameStartScreen";
  30. const modalTransition = Platform.OS === 'ios' ? TransitionPresets.ModalPresentationIOS : TransitionPresets.ModalSlideFromBottomIOS;
  31. const defaultScreenOptions = {
  32. gestureEnabled: true,
  33. cardOverlayEnabled: true,
  34. ...TransitionPresets.SlideFromRightIOS,
  35. };
  36. const MainStack = createStackNavigator();
  37. function MainStackComponent(props: { createTabNavigator: () => React.Node }) {
  38. return (
  39. <MainStack.Navigator
  40. initialRouteName={'main'}
  41. headerMode={'screen'}
  42. screenOptions={defaultScreenOptions}
  43. >
  44. <MainStack.Screen
  45. name="main"
  46. component={props.createTabNavigator}
  47. options={{
  48. headerShown: false,
  49. title: i18n.t('screens.home.title'),
  50. }}
  51. />
  52. {createScreenCollapsibleStack(
  53. "settings",
  54. MainStack,
  55. SettingsScreen,
  56. i18n.t('screens.settings.title'))}
  57. {createScreenCollapsibleStack(
  58. "dashboard-edit",
  59. MainStack,
  60. DashboardEditScreen,
  61. i18n.t('screens.settings.dashboardEdit.title'))}
  62. {createScreenCollapsibleStack(
  63. "about",
  64. MainStack,
  65. AboutScreen,
  66. i18n.t('screens.about.title'))}
  67. {createScreenCollapsibleStack(
  68. "dependencies",
  69. MainStack,
  70. AboutDependenciesScreen,
  71. i18n.t('screens.about.libs'))}
  72. {createScreenCollapsibleStack(
  73. "debug",
  74. MainStack,
  75. DebugScreen,
  76. i18n.t('screens.about.debug'))}
  77. {createScreenCollapsibleStack(
  78. "game-start",
  79. MainStack,
  80. GameStartScreen,
  81. i18n.t('screens.game.title'))}
  82. <MainStack.Screen
  83. name="game-main"
  84. component={GameMainScreen}
  85. options={{
  86. title: i18n.t("screens.game.title"),
  87. }}
  88. />
  89. {createScreenCollapsibleStack(
  90. "login",
  91. MainStack,
  92. LoginScreen,
  93. i18n.t('screens.login.title'),
  94. true,
  95. {headerTintColor: "#fff"},
  96. 'transparent')}
  97. {getWebsiteStack("website", MainStack, WebsiteScreen, "")}
  98. {createScreenCollapsibleStack(
  99. "self-menu",
  100. MainStack,
  101. SelfMenuScreen,
  102. i18n.t('screens.menu.title'))}
  103. {createScreenCollapsibleStack(
  104. "proximo",
  105. MainStack,
  106. ProximoMainScreen,
  107. i18n.t('screens.proximo.title'))}
  108. {createScreenCollapsibleStack(
  109. "proximo-list",
  110. MainStack,
  111. ProximoListScreen,
  112. i18n.t('screens.proximo.articleList'),
  113. )}
  114. {createScreenCollapsibleStack(
  115. "proximo-about",
  116. MainStack,
  117. ProximoAboutScreen,
  118. i18n.t('screens.proximo.title'),
  119. true,
  120. {...modalTransition},
  121. )}
  122. {createScreenCollapsibleStack(
  123. "profile",
  124. MainStack,
  125. ProfileScreen,
  126. i18n.t('screens.profile.title'))}
  127. {createScreenCollapsibleStack(
  128. "club-list",
  129. MainStack,
  130. ClubListScreen,
  131. i18n.t('screens.clubs.title'))}
  132. {createScreenCollapsibleStack(
  133. "club-information",
  134. MainStack,
  135. ClubDisplayScreen,
  136. i18n.t('screens.clubs.details'),
  137. true,
  138. {...modalTransition})}
  139. {createScreenCollapsibleStack(
  140. "club-about",
  141. MainStack,
  142. ClubAboutScreen,
  143. i18n.t('screens.clubs.title'),
  144. true,
  145. {...modalTransition})}
  146. {createScreenCollapsibleStack(
  147. "equipment-list",
  148. MainStack,
  149. EquipmentScreen,
  150. i18n.t('screens.equipment.title'))}
  151. {createScreenCollapsibleStack(
  152. "equipment-rent",
  153. MainStack,
  154. EquipmentLendScreen,
  155. i18n.t('screens.equipment.book'))}
  156. {createScreenCollapsibleStack(
  157. "equipment-confirm",
  158. MainStack,
  159. EquipmentConfirmScreen,
  160. i18n.t('screens.equipment.confirm'))}
  161. {createScreenCollapsibleStack(
  162. "vote",
  163. MainStack,
  164. VoteScreen,
  165. i18n.t('screens.vote.title'))}
  166. {createScreenCollapsibleStack(
  167. "feedback",
  168. MainStack,
  169. BugReportScreen,
  170. i18n.t('screens.feedback.title'))}
  171. </MainStack.Navigator>
  172. );
  173. }
  174. type Props = {
  175. defaultHomeRoute: string | null,
  176. defaultHomeData: { [key: string]: any }
  177. }
  178. export default class MainNavigator extends React.Component<Props> {
  179. createTabNavigator: () => React.Node;
  180. constructor(props: Props) {
  181. super(props);
  182. this.createTabNavigator = () => <TabNavigator {...props}/>
  183. }
  184. render() {
  185. return (
  186. <MainStackComponent createTabNavigator={this.createTabNavigator}/>
  187. );
  188. }
  189. }