import React from 'react'; import { AboutPage, AuthenticationPage, CheckoutPage, ContactDetailsPage, EditListingPage, EmailVerificationPage, InboxPage, LandingPage, ListingPage, ManageListingsPage, NotFoundPage, PasswordChangePage, PasswordRecoveryPage, PasswordResetPage, PayoutPreferencesPage, PrivacyPolicyPage, ProfilePage, ProfileSettingsPage, SearchPage, StyleguidePage, TermsOfServicePage, TransactionPage, } from './containers'; // routeConfiguration needs to initialize containers first // Otherwise, components will import form container eventually and // at that point css bundling / imports will happen in wrong order. import { NamedRedirect } from './components'; export const ACCOUNT_SETTINGS_PAGES = [ 'ContactDetailsPage', 'PasswordChangePage', 'PayoutPreferencesPage', ]; // https://en.wikipedia.org/wiki/Universally_unique_identifier#Nil_UUID const draftId = '00000000-0000-0000-0000-000000000000'; const draftSlug = 'draft'; const RedirectToLandingPage = () => ; // Our routes are exact by default. // See behaviour from Routes.js where Route is created. const routeConfiguration = () => { return [ { path: '/', name: 'LandingPage', component: props => , }, { path: '/about', name: 'AboutPage', component: AboutPage, }, { path: '/s', name: 'SearchPage', component: props => , loadData: SearchPage.loadData, }, { path: '/s/filters', name: 'SearchFiltersPage', component: props => , loadData: SearchPage.loadData, }, { path: '/s/listings', name: 'SearchListingsPage', component: props => , loadData: SearchPage.loadData, }, { path: '/s/map', name: 'SearchMapPage', component: props => , loadData: SearchPage.loadData, }, { path: '/l', name: 'ListingBasePage', component: RedirectToLandingPage, }, { path: '/l/:slug/:id', name: 'ListingPage', component: props => , loadData: ListingPage.loadData, }, { path: '/l/:slug/:id/checkout', name: 'CheckoutPage', auth: true, component: props => , setInitialValues: CheckoutPage.setInitialValues, }, { path: '/l/:slug/:id/:variant', name: 'ListingPageVariant', auth: true, authPage: 'LoginPage', component: props => , loadData: ListingPage.loadData, }, { path: '/l/new', name: 'NewListingPage', auth: true, component: () => ( ), }, { path: '/l/:slug/:id/:type/:tab', name: 'EditListingPage', auth: true, component: props => , loadData: EditListingPage.loadData, }, // Canonical path should be after the `/l/new` path since they // conflict and `new` is not a valid listing UUID. { path: '/l/:id', name: 'ListingPageCanonical', component: props => , loadData: ListingPage.loadData, }, { path: '/u', name: 'ProfileBasePage', component: RedirectToLandingPage, }, { path: '/u/:id', name: 'ProfilePage', component: props => , loadData: ProfilePage.loadData, }, { path: '/profile-settings', name: 'ProfileSettingsPage', auth: true, authPage: 'LoginPage', component: props => , }, { path: '/login', name: 'LoginPage', component: props => , }, { path: '/signup', name: 'SignupPage', component: props => , }, { path: '/recover-password', name: 'PasswordRecoveryPage', component: props => , }, { path: '/inbox', name: 'InboxBasePage', auth: true, authPage: 'LoginPage', component: () => , }, { path: '/inbox/:tab', name: 'InboxPage', auth: true, authPage: 'LoginPage', component: props => , loadData: InboxPage.loadData, }, { path: '/order/:id', name: 'OrderPage', auth: true, authPage: 'LoginPage', component: props => , }, { path: '/order/:id/details', name: 'OrderDetailsPage', auth: true, authPage: 'LoginPage', component: props => , loadData: TransactionPage.loadData, setInitialValues: TransactionPage.setInitialValues, }, { path: '/sale/:id', name: 'SalePage', auth: true, authPage: 'LoginPage', component: props => , }, { path: '/sale/:id/details', name: 'SaleDetailsPage', auth: true, authPage: 'LoginPage', component: props => , loadData: TransactionPage.loadData, }, { path: '/listings', name: 'ManageListingsPage', auth: true, authPage: 'LoginPage', component: props => , loadData: ManageListingsPage.loadData, }, { path: '/account', name: 'AccountSettingsPage', auth: true, authPage: 'LoginPage', component: () => , }, { path: '/account/contact-details', name: 'ContactDetailsPage', auth: true, authPage: 'LoginPage', component: props => , loadData: ContactDetailsPage.loadData, }, { path: '/account/change-password', name: 'PasswordChangePage', auth: true, authPage: 'LoginPage', component: props => , }, { path: '/account/payments', name: 'PayoutPreferencesPage', auth: true, authPage: 'LoginPage', component: props => , loadData: PayoutPreferencesPage.loadData, }, { path: '/terms-of-service', name: 'TermsOfServicePage', component: props => , }, { path: '/privacy-policy', name: 'PrivacyPolicyPage', component: props => , }, { path: '/styleguide', name: 'Styleguide', component: props => , }, { path: '/styleguide/g/:group', name: 'StyleguideGroup', component: props => , }, { path: '/styleguide/c/:component', name: 'StyleguideComponent', component: props => , }, { path: '/styleguide/c/:component/:example', name: 'StyleguideComponentExample', component: props => , }, { path: '/styleguide/c/:component/:example/raw', name: 'StyleguideComponentExampleRaw', component: props => , }, { path: '/notfound', name: 'NotFoundPage', component: props => , }, // Do not change this path! // // The API expects that the application implements /reset-password endpoint { path: '/reset-password', name: 'PasswordResetPage', component: props => , }, // Do not change this path! // // The API expects that the application implements /verify-email endpoint { path: '/verify-email', name: 'EmailVerificationPage', auth: true, authPage: 'LoginPage', component: props => , }, ]; }; export default routeConfiguration;