From 2f53613a459639f9e9e314a1bd77459225392efa Mon Sep 17 00:00:00 2001 From: negue Date: Mon, 10 Oct 2022 22:54:41 +0200 Subject: [PATCH] split routes for ease of dev --- website/client/src/router/index.js | 152 +-------------------- website/client/src/router/static-routes.js | 82 +++++++++++ website/client/src/router/user-routes.js | 71 ++++++++++ 3 files changed, 157 insertions(+), 148 deletions(-) create mode 100644 website/client/src/router/static-routes.js create mode 100644 website/client/src/router/user-routes.js diff --git a/website/client/src/router/index.js b/website/client/src/router/index.js index 1a5fc4e99d..32ac4e6ea1 100644 --- a/website/client/src/router/index.js +++ b/website/client/src/router/index.js @@ -3,51 +3,20 @@ import VueRouter from 'vue-router'; import getStore from '@/store'; import handleRedirect from './handleRedirect'; -import ParentPage from '@/components/parentPage'; import { PAGES } from '@/libs/consts'; +import { STATIC_ROUTES } from '@/router/static-routes'; +import { USER_ROUTES, ProfilePage } from '@/router/user-routes'; // NOTE: when adding a page make sure to implement the `common:setTitle` action -// Static Pages -const StaticWrapper = () => import(/* webpackChunkName: "entry" */'@/components/static/staticWrapper'); -const HomePage = () => import(/* webpackChunkName: "entry" */'@/components/static/home'); -const AppPage = () => import(/* webpackChunkName: "static" */'@/components/static/app'); -const AppleRedirectPage = () => import(/* webpackChunkName: "static" */'@/components/static/appleRedirect'); -const ClearBrowserDataPage = () => import(/* webpackChunkName: "static" */'@/components/static/clearBrowserData'); -const CommunityGuidelinesPage = () => import(/* webpackChunkName: "static" */'@/components/static/communityGuidelines'); -const ContactPage = () => import(/* webpackChunkName: "static" */'@/components/static/contact'); -const FAQPage = () => import(/* webpackChunkName: "static" */'@/components/static/faq'); -const FeaturesPage = () => import(/* webpackChunkName: "static" */'@/components/static/features'); -const GroupPlansPage = () => import(/* webpackChunkName: "static" */'@/components/static/groupPlans'); // Commenting out merch page see // https://github.com/HabitRPG/habitica/issues/12039 // const MerchPage = () => import(/* webpackChunkName: "static" */'@/components/static/merch'); -const NewsPage = () => import(/* webpackChunkName: "static" */'@/components/static/newStuff'); -const OverviewPage = () => import(/* webpackChunkName: "static" */'@/components/static/overview'); -const PressKitPage = () => import(/* webpackChunkName: "static" */'@/components/static/pressKit'); -const PrivacyPage = () => import(/* webpackChunkName: "static" */'@/components/static/privacy'); -const TermsPage = () => import(/* webpackChunkName: "static" */'@/components/static/terms'); const RegisterLoginReset = () => import(/* webpackChunkName: "auth" */'@/components/auth/registerLoginReset'); const Logout = () => import(/* webpackChunkName: "auth" */'@/components/auth/logout'); -// User Pages -// const StatsPage = () => import(/* webpackChunkName: "user" */'./components/userMenu/stats'); -// const AchievementsPage = -// () => import(/* webpackChunkName: "user" */'./components/userMenu/achievements'); -const ProfilePage = () => import(/* webpackChunkName: "user" */'@/components/userMenu/profilePage'); - -// Settings -const Settings = () => import(/* webpackChunkName: "settings" */'@/components/settings/index'); -const API = () => import(/* webpackChunkName: "settings" */'@/components/settings/api'); -const DataExport = () => import(/* webpackChunkName: "settings" */'@/components/settings/dataExport'); -const Notifications = () => import(/* webpackChunkName: "settings" */'@/components/settings/notifications'); -const PromoCode = () => import(/* webpackChunkName: "settings" */'@/components/settings/promoCode'); -const Site = () => import(/* webpackChunkName: "settings" */'@/components/settings/site'); -const Subscription = () => import(/* webpackChunkName: "settings" */'@/components/settings/subscription'); -const Transactions = () => import(/* webpackChunkName: "settings" */'@/components/settings/purchaseHistory'); - // Hall const HallPage = () => import(/* webpackChunkName: "hall" */'@/components/hall/index'); const PatronsPage = () => import(/* webpackChunkName: "hall" */'@/components/hall/patrons'); @@ -100,8 +69,6 @@ const QuestsPage = () => import(/* webpackChunkName: "shops-quest" */'@/componen const SeasonalPage = () => import(/* webpackChunkName: "shops-seasonal" */'@/components/shops/seasonal/index'); const TimeTravelersPage = () => import(/* webpackChunkName: "shops-timetravelers" */'@/components/shops/timeTravelers/index'); -const NotFoundPage = () => import(/* webpackChunkName: "not-found" */'@/components/404'); - Vue.use(VueRouter); const router = new VueRouter({ @@ -231,119 +198,8 @@ const router = new VueRouter({ }, ], }, - { - path: '/user', - component: ParentPage, - children: [ - { name: 'stats', path: 'stats', component: ProfilePage }, - { name: 'achievements', path: 'achievements', component: ProfilePage }, - { name: 'profile', path: 'profile', component: ProfilePage }, - { - name: 'settings', - path: 'settings', - component: Settings, - children: [ - { - name: 'site', - path: 'site', - component: Site, - }, - { - name: 'api', - path: 'api', - component: API, - }, - { - name: 'dataExport', - path: 'data-export', - component: DataExport, - }, - { - name: 'promoCode', - path: 'promo-code', - component: PromoCode, - }, - { - name: 'subscription', - path: 'subscription', - component: Subscription, - }, - { - name: 'transactions', - path: 'transactions', - component: Transactions, - }, - { - name: 'notifications', - path: 'notifications', - component: Notifications, - }, - ], - }, - ], - }, - { - path: '/static', - component: StaticWrapper, - children: [ - { - name: 'app', path: 'app', component: AppPage, meta: { requiresLogin: false }, - }, - { - name: 'appleRedirect', path: 'apple-redirect', component: AppleRedirectPage, meta: { requiresLogin: false }, - }, - { - name: 'clearBrowserData', path: 'clear-browser-data', component: ClearBrowserDataPage, meta: { requiresLogin: false }, - }, - { - name: 'communityGuidelines', path: 'community-guidelines', component: CommunityGuidelinesPage, meta: { requiresLogin: false }, - }, - { - name: 'contact', path: 'contact', component: ContactPage, meta: { requiresLogin: false }, - }, - { - name: 'faq', path: 'faq', component: FAQPage, meta: { requiresLogin: false }, - }, - { - name: 'features', path: 'features', component: FeaturesPage, meta: { requiresLogin: false }, - }, - { - name: 'groupPlans', path: 'group-plans', component: GroupPlansPage, meta: { requiresLogin: false }, - }, - { - name: 'home', path: 'home', component: HomePage, meta: { requiresLogin: false }, - }, - { - name: 'front', path: 'front', component: HomePage, meta: { requiresLogin: false }, - }, - // Commenting out merch page see - // https://github.com/HabitRPG/habitica/issues/12039 - // { - // name: 'merch', path: 'merch', component: MerchPage, meta: { requiresLogin: false }, - // }, - { - name: 'news', path: 'new-stuff', component: NewsPage, meta: { requiresLogin: false }, - }, - { - name: 'overview', path: 'overview', component: OverviewPage, meta: { requiresLogin: false }, - }, - { - name: 'plans', path: 'plans', component: GroupPlansPage, meta: { requiresLogin: false }, - }, - { - name: 'pressKit', path: 'press-kit', component: PressKitPage, meta: { requiresLogin: false }, - }, - { - name: 'privacy', path: 'privacy', component: PrivacyPage, meta: { requiresLogin: false }, - }, - { - name: 'terms', path: 'terms', component: TermsPage, meta: { requiresLogin: false }, - }, - { - name: 'notFound', path: 'not-found', component: NotFoundPage, meta: { requiresLogin: false }, - }, - ], - }, + USER_ROUTES, + STATIC_ROUTES, { path: '/hall', component: HallPage, diff --git a/website/client/src/router/static-routes.js b/website/client/src/router/static-routes.js new file mode 100644 index 0000000000..f0bf2e94a6 --- /dev/null +++ b/website/client/src/router/static-routes.js @@ -0,0 +1,82 @@ +// Static Pages +const StaticWrapper = () => import(/* webpackChunkName: "entry" */'@/components/static/staticWrapper'); +const HomePage = () => import(/* webpackChunkName: "entry" */'@/components/static/home'); + +const AppPage = () => import(/* webpackChunkName: "static" */'@/components/static/app'); +const AppleRedirectPage = () => import(/* webpackChunkName: "static" */'@/components/static/appleRedirect'); +const ClearBrowserDataPage = () => import(/* webpackChunkName: "static" */'@/components/static/clearBrowserData'); +const CommunityGuidelinesPage = () => import(/* webpackChunkName: "static" */'@/components/static/communityGuidelines'); +const ContactPage = () => import(/* webpackChunkName: "static" */'@/components/static/contact'); +const FAQPage = () => import(/* webpackChunkName: "static" */'@/components/static/faq'); +const FeaturesPage = () => import(/* webpackChunkName: "static" */'@/components/static/features'); +const GroupPlansPage = () => import(/* webpackChunkName: "static" */'@/components/static/groupPlans'); + +const NewsPage = () => import(/* webpackChunkName: "static" */'@/components/static/newStuff'); +const OverviewPage = () => import(/* webpackChunkName: "static" */'@/components/static/overview'); +const PressKitPage = () => import(/* webpackChunkName: "static" */'@/components/static/pressKit'); +const PrivacyPage = () => import(/* webpackChunkName: "static" */'@/components/static/privacy'); +const TermsPage = () => import(/* webpackChunkName: "static" */'@/components/static/terms'); +const NotFoundPage = () => import(/* webpackChunkName: "not-found" */'@/components/404'); + +export const STATIC_ROUTES = { + path: '/static', + component: StaticWrapper, + children: [ + { + name: 'app', path: 'app', component: AppPage, meta: { requiresLogin: false }, + }, + { + name: 'appleRedirect', path: 'apple-redirect', component: AppleRedirectPage, meta: { requiresLogin: false }, + }, + { + name: 'clearBrowserData', path: 'clear-browser-data', component: ClearBrowserDataPage, meta: { requiresLogin: false }, + }, + { + name: 'communityGuidelines', path: 'community-guidelines', component: CommunityGuidelinesPage, meta: { requiresLogin: false }, + }, + { + name: 'contact', path: 'contact', component: ContactPage, meta: { requiresLogin: false }, + }, + { + name: 'faq', path: 'faq', component: FAQPage, meta: { requiresLogin: false }, + }, + { + name: 'features', path: 'features', component: FeaturesPage, meta: { requiresLogin: false }, + }, + { + name: 'groupPlans', path: 'group-plans', component: GroupPlansPage, meta: { requiresLogin: false }, + }, + { + name: 'home', path: 'home', component: HomePage, meta: { requiresLogin: false }, + }, + { + name: 'front', path: 'front', component: HomePage, meta: { requiresLogin: false }, + }, + // Commenting out merch page see + // https://github.com/HabitRPG/habitica/issues/12039 + // { + // name: 'merch', path: 'merch', component: MerchPage, meta: { requiresLogin: false }, + // }, + { + name: 'news', path: 'new-stuff', component: NewsPage, meta: { requiresLogin: false }, + }, + { + name: 'overview', path: 'overview', component: OverviewPage, meta: { requiresLogin: false }, + }, + { + name: 'plans', path: 'plans', component: GroupPlansPage, meta: { requiresLogin: false }, + }, + { + name: 'pressKit', path: 'press-kit', component: PressKitPage, meta: { requiresLogin: false }, + }, + { + name: 'privacy', path: 'privacy', component: PrivacyPage, meta: { requiresLogin: false }, + }, + { + name: 'terms', path: 'terms', component: TermsPage, meta: { requiresLogin: false }, + }, + { + name: 'notFound', path: 'not-found', component: NotFoundPage, meta: { requiresLogin: false }, + }, + ], +}; diff --git a/website/client/src/router/user-routes.js b/website/client/src/router/user-routes.js new file mode 100644 index 0000000000..689d4e622d --- /dev/null +++ b/website/client/src/router/user-routes.js @@ -0,0 +1,71 @@ +import ParentPage from '@/components/parentPage'; + + +// User Pages +// const StatsPage = () => import(/* webpackChunkName: "user" */'./components/userMenu/stats'); +// const AchievementsPage = +// () => import(/* webpackChunkName: "user" */'./components/userMenu/achievements'); +export const ProfilePage = () => import(/* webpackChunkName: "user" */'@/components/userMenu/profilePage'); + +// Settings +const Settings = () => import(/* webpackChunkName: "settings" */'@/components/settings/index'); +const API = () => import(/* webpackChunkName: "settings" */'@/components/settings/api'); +const DataExport = () => import(/* webpackChunkName: "settings" */'@/components/settings/dataExport'); +const Notifications = () => import(/* webpackChunkName: "settings" */'@/components/settings/notifications'); +const PromoCode = () => import(/* webpackChunkName: "settings" */'@/components/settings/promoCode'); +const Site = () => import(/* webpackChunkName: "settings" */'@/components/settings/site'); +const Subscription = () => import(/* webpackChunkName: "settings" */'@/components/settings/subscription'); +const Transactions = () => import(/* webpackChunkName: "settings" */'@/components/settings/purchaseHistory'); + + +export const USER_ROUTES = { + path: '/user', + component: ParentPage, + children: [ + { name: 'stats', path: 'stats', component: ProfilePage }, + { name: 'achievements', path: 'achievements', component: ProfilePage }, + { name: 'profile', path: 'profile', component: ProfilePage }, + { + name: 'settings', + path: 'settings', + component: Settings, + children: [ + { + name: 'site', + path: 'site', + component: Site, + }, + { + name: 'api', + path: 'api', + component: API, + }, + { + name: 'dataExport', + path: 'data-export', + component: DataExport, + }, + { + name: 'promoCode', + path: 'promo-code', + component: PromoCode, + }, + { + name: 'subscription', + path: 'subscription', + component: Subscription, + }, + { + name: 'transactions', + path: 'transactions', + component: Transactions, + }, + { + name: 'notifications', + path: 'notifications', + component: Notifications, + }, + ], + }, + ], +};