eduardomoroni/trading-card-manager

View on GitHub
packages/frontend/src/presentation/Navigator.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import React from 'react';
import { useTranslation } from 'react-i18next';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import { Welcome } from './screens/Welcome';
import { CardSearchFilter } from './screens/CardSearch/CardSearchFilter';
import { CardSearchResults } from './screens/CardSearch/CardSearchResults';
import { CardDetails } from './screens/CardSearch/CardDetails';
import { Card } from '../domain/entities/Card';

export enum ROUTES {
  WELCOME = 'Welcome',
  CARD_SEARCH_FILTER = 'CardSearchFilter',
  CARD_SEARCH_RESULTS = 'CardSearchResults',
  CARD_DETAILS = 'CardDetails',
}

export type RootParamList = {
  Welcome: undefined;
  CardSearchFilter: undefined;
  CardSearchResults: { cardsFiltered: Card[] };
  CardDetails: { card: Card };
};

const Stack = createStackNavigator<RootParamList>();

export function Navigator(): React.ReactElement {
  const { t } = useTranslation();
  return (
    <NavigationContainer>
      <Stack.Navigator initialRouteName={ROUTES.CARD_SEARCH_FILTER}>
        <Stack.Screen
          options={{ headerShown: false }}
          name={ROUTES.WELCOME}
          component={Welcome}
        />
        <Stack.Screen
          options={{ headerShown: false }}
          name={ROUTES.CARD_SEARCH_FILTER}
          component={CardSearchFilter}
        />
        <Stack.Screen
          options={{ title: t('navigator:cardSearchResultsTitle') }}
          name={ROUTES.CARD_SEARCH_RESULTS}
          component={CardSearchResults}
        />
        <Stack.Screen name={ROUTES.CARD_DETAILS} component={CardDetails} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}