split routes for ease of dev

This commit is contained in:
negue
2022-10-10 22:54:41 +02:00
parent 390f0fc69d
commit 2f53613a45
3 changed files with 157 additions and 148 deletions
+4 -148
View File
@@ -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,
@@ -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 },
},
],
};
+71
View File
@@ -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,
},
],
},
],
};