|
|
@@ -19,307 +19,421 @@ const parseURL = (url: string) => {
|
|
|
|
|
|
export const useNavigationContext = () => useContext(NavigationContext);
|
|
|
|
|
|
+const resetTo = (routes: any[]) =>
|
|
|
+ CommonActions.reset({
|
|
|
+ index: 1,
|
|
|
+ routes: [
|
|
|
+ {
|
|
|
+ name: 'DrawerApp',
|
|
|
+ state: { routes },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ });
|
|
|
+
|
|
|
export const NavigationProvider = ({ children }: { children: React.ReactNode }) => {
|
|
|
const navigation = useNavigation();
|
|
|
const token = storage.get('token', StoreType.STRING);
|
|
|
const [initialUrlProcessed, setInitialUrlProcessed] = useState(false);
|
|
|
|
|
|
- const handleDeepLink = async (url?: string) => {
|
|
|
- const link = url || (await Linking.getInitialURL());
|
|
|
+ const handleRegion = (
|
|
|
+ path: string,
|
|
|
+ type: 'nm' | 'dare',
|
|
|
+ ) => {
|
|
|
+ const [, , regionId] = path.split('/');
|
|
|
|
|
|
- if (link) {
|
|
|
- const { path } = parseURL(link);
|
|
|
- if (path.startsWith('/profile') && token) {
|
|
|
- const segments = path.split('/');
|
|
|
- const userId = segments[2];
|
|
|
- navigation.navigate(...([NAVIGATION_PAGES.PUBLIC_PROFILE_VIEW, { userId }] as never));
|
|
|
- } else if (path.startsWith('/event')) {
|
|
|
- const segments = path.split('/');
|
|
|
- const eventUrl = segments[2];
|
|
|
-
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ {
|
|
|
+ name:
|
|
|
+ type === 'nm'
|
|
|
+ ? NAVIGATION_PAGES.REGIONS
|
|
|
+ : NAVIGATION_PAGES.DARE,
|
|
|
+ },
|
|
|
{
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_EVENTS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.EVENTS },
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.EVENT,
|
|
|
- params: { url: eventUrl }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/map')) {
|
|
|
- const segments = path.split('/');
|
|
|
- let lon: string | undefined;
|
|
|
- let lat: string | undefined;
|
|
|
-
|
|
|
- segments.forEach((segment) => {
|
|
|
- if (segment.startsWith('lon=')) {
|
|
|
- lon = segment.replace('lon=', '');
|
|
|
- } else if (segment.startsWith('lat=')) {
|
|
|
- lat = segment.replace('lat=', '');
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- if (lon && lat) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
+ name: NAVIGATION_PAGES.REGION_PREVIEW,
|
|
|
+ params: {
|
|
|
+ regionId,
|
|
|
+ isTravelsScreen: true,
|
|
|
+ type,
|
|
|
+ disabled: !token,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ };
|
|
|
+
|
|
|
+ const deepLinkHandlers: Record<
|
|
|
+ string,
|
|
|
+ (path: string) => void
|
|
|
+ > = {
|
|
|
+ '/profile': (path) => {
|
|
|
+ if (!token) return;
|
|
|
+ const [, , userId] = path.split('/');
|
|
|
+ navigation.navigate(...([NAVIGATION_PAGES.PUBLIC_PROFILE_VIEW, { userId }] as never));
|
|
|
+ },
|
|
|
+
|
|
|
+ '/event': (path) => {
|
|
|
+ const [, , eventUrl] = path.split('/');
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_EVENTS_TAB,
|
|
|
+ state: {
|
|
|
routes: [
|
|
|
+ { name: NAVIGATION_PAGES.EVENTS },
|
|
|
{
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_MAP_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.MAP_TAB,
|
|
|
- params: { lon, lat }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
+ name: NAVIGATION_PAGES.EVENT,
|
|
|
+ params: { url: eventUrl },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ '/map': (path) => {
|
|
|
+ const segments = path.split('/');
|
|
|
+ let lon: string | undefined;
|
|
|
+ let lat: string | undefined;
|
|
|
+
|
|
|
+ segments.forEach((segment) => {
|
|
|
+ if (segment.startsWith('lon=')) {
|
|
|
+ lon = segment.replace('lon=', '');
|
|
|
+ } else if (segment.startsWith('lat=')) {
|
|
|
+ lat = segment.replace('lat=', '');
|
|
|
}
|
|
|
- } else if (path.startsWith('/messages')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_MESSAGES_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.CHATS_LIST },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/lpi')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.LPI_RANKING },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/master-ranking')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.MASTER_RANKING },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/travellers-in-history')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.IN_HISTORY },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/triumphs')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.TRIUMPHS },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/statistics')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.STATISTICS },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/in-memoriam')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.IN_MEMORIAM },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/series-ranking')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.SERIES_RANKING },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- } else if (path.startsWith('/un-masters')) {
|
|
|
- navigation.dispatch(
|
|
|
- CommonActions.reset({
|
|
|
- index: 1,
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: 'DrawerApp',
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- {
|
|
|
- name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
- state: {
|
|
|
- routes: [
|
|
|
- { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
- { name: NAVIGATION_PAGES.UN_MASTERS },
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- }
|
|
|
- ]
|
|
|
- })
|
|
|
- );
|
|
|
- }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (!lon || !lat) return;
|
|
|
+
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_MAP_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.MAP_TAB,
|
|
|
+ params: { lon, lat },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ '/messages': () => {
|
|
|
+ if (!token) return;
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_MESSAGES_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.CHATS_LIST },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ '/lpi': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.LPI_RANKING },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/master-ranking': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.MASTER_RANKING,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/travellers-in-history': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.IN_HISTORY },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/triumphs': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.TRIUMPHS },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/statistics': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.STATISTICS },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/in-memoriam': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.IN_MEMORIAM },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/series-ranking': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.SERIES_RANKING,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/un-masters': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.UN_MASTERS },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/my-friends': () => {
|
|
|
+ if (!token) return;
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELLERS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELLERS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.MY_FRIENDS },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ '/fixers': () => {
|
|
|
+ if (!token) return;
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.FIXERS },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ '/earth': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.EARTH },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/series': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.SERIES },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/countries': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.COUNTRIES },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/regions': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.REGIONS },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/dare': () =>
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.DARE },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ ),
|
|
|
+
|
|
|
+ '/photos': () => {
|
|
|
+ if (!token) return;
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRAVELS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRAVELS_TAB },
|
|
|
+ { name: NAVIGATION_PAGES.PHOTOS },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ '/trips': () => {
|
|
|
+ if (!token) return;
|
|
|
+ navigation.dispatch(
|
|
|
+ resetTo([
|
|
|
+ {
|
|
|
+ name: NAVIGATION_PAGES.IN_APP_TRIPS_TAB,
|
|
|
+ state: {
|
|
|
+ routes: [
|
|
|
+ { name: NAVIGATION_PAGES.TRIPS_2025 },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ]),
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ '/region_mqp': (path) =>
|
|
|
+ handleRegion(path, 'dare'),
|
|
|
+
|
|
|
+ '/region': (path) =>
|
|
|
+ handleRegion(path, 'nm'),
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ const handleDeepLink = async (url?: string) => {
|
|
|
+ const link = url || (await Linking.getInitialURL());
|
|
|
+ if (link) {
|
|
|
+ const { path } = parseURL(link);
|
|
|
+
|
|
|
+ const entry = Object.entries(deepLinkHandlers).find(
|
|
|
+ ([prefix]) => path.startsWith(prefix),
|
|
|
+ );
|
|
|
+
|
|
|
+ entry?.[1](path);
|
|
|
}
|
|
|
+
|
|
|
if (!initialUrlProcessed) {
|
|
|
setInitialUrlProcessed(true);
|
|
|
}
|