1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Refactor asyncRouteType to appType

This commit is contained in:
Bill Thornton 2025-01-23 16:09:49 -05:00
parent 0d9b2cf276
commit 93ef17a132
5 changed files with 38 additions and 39 deletions

View file

@ -1,16 +1,17 @@
import { AsyncRouteType, type AsyncRoute } from 'components/router/AsyncRoute'; import type { AsyncRoute } from 'components/router/AsyncRoute';
import { AppType } from 'constants/appType';
export const ASYNC_ADMIN_ROUTES: AsyncRoute[] = [ export const ASYNC_ADMIN_ROUTES: AsyncRoute[] = [
{ path: 'activity', type: AsyncRouteType.Dashboard }, { path: 'activity', type: AppType.Dashboard },
{ path: 'branding', type: AsyncRouteType.Dashboard }, { path: 'branding', type: AppType.Dashboard },
{ path: 'keys', type: AsyncRouteType.Dashboard }, { path: 'keys', type: AppType.Dashboard },
{ path: 'logs', type: AsyncRouteType.Dashboard }, { path: 'logs', type: AppType.Dashboard },
{ path: 'playback/trickplay', type: AsyncRouteType.Dashboard }, { path: 'playback/trickplay', type: AppType.Dashboard },
{ path: 'plugins/:pluginId', page: 'plugins/plugin', type: AsyncRouteType.Dashboard }, { path: 'plugins/:pluginId', page: 'plugins/plugin', type: AppType.Dashboard },
{ path: 'users', type: AsyncRouteType.Dashboard }, { path: 'users', type: AppType.Dashboard },
{ path: 'users/access', type: AsyncRouteType.Dashboard }, { path: 'users/access', type: AppType.Dashboard },
{ path: 'users/add', type: AsyncRouteType.Dashboard }, { path: 'users/add', type: AppType.Dashboard },
{ path: 'users/parentalcontrol', type: AsyncRouteType.Dashboard }, { path: 'users/parentalcontrol', type: AppType.Dashboard },
{ path: 'users/password', type: AsyncRouteType.Dashboard }, { path: 'users/password', type: AppType.Dashboard },
{ path: 'users/profile', type: AsyncRouteType.Dashboard } { path: 'users/profile', type: AppType.Dashboard }
]; ];

View file

@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import { RouteObject } from 'react-router-dom'; import { RouteObject } from 'react-router-dom';
import ConnectionRequired from 'components/ConnectionRequired'; import ConnectionRequired from 'components/ConnectionRequired';
import { ASYNC_ADMIN_ROUTES } from './_asyncRoutes'; import { ASYNC_ADMIN_ROUTES } from './_asyncRoutes';
import { toAsyncPageRoute } from 'components/router/AsyncRoute'; import { toAsyncPageRoute } from 'components/router/AsyncRoute';

View file

@ -1,15 +1,15 @@
import { AsyncRoute, AsyncRouteType } from '../../../../components/router/AsyncRoute'; import { AsyncRoute } from 'components/router/AsyncRoute';
import { AppType } from 'constants/appType';
export const ASYNC_USER_ROUTES: AsyncRoute[] = [ export const ASYNC_USER_ROUTES: AsyncRoute[] = [
{ path: 'home.html', page: 'home', type: AsyncRouteType.Experimental }, { path: 'home.html', page: 'home', type: AppType.Experimental },
{ path: 'quickconnect', page: 'quickConnect' }, { path: 'quickconnect', page: 'quickConnect' },
{ path: 'search.html', page: 'search' }, { path: 'search.html', page: 'search' },
{ path: 'userprofile.html', page: 'user/userprofile' }, { path: 'userprofile.html', page: 'user/userprofile' },
{ path: 'movies.html', page: 'movies', type: AsyncRouteType.Experimental }, { path: 'movies.html', page: 'movies', type: AppType.Experimental },
{ path: 'tv.html', page: 'shows', type: AsyncRouteType.Experimental }, { path: 'tv.html', page: 'shows', type: AppType.Experimental },
{ path: 'music.html', page: 'music', type: AsyncRouteType.Experimental }, { path: 'music.html', page: 'music', type: AppType.Experimental },
{ path: 'livetv.html', page: 'livetv', type: AsyncRouteType.Experimental }, { path: 'livetv.html', page: 'livetv', type: AppType.Experimental },
{ path: 'mypreferencesdisplay.html', page: 'user/display', type: AsyncRouteType.Experimental }, { path: 'mypreferencesdisplay.html', page: 'user/display', type: AppType.Experimental },
{ path: 'homevideos.html', page: 'homevideos', type: AppType.Experimental }
{ path: 'homevideos.html', page: 'homevideos', type: AsyncRouteType.Experimental }
]; ];

View file

@ -1,10 +1,6 @@
import type { RouteObject } from 'react-router-dom'; import type { RouteObject } from 'react-router-dom';
export enum AsyncRouteType { import { AppType } from 'constants/appType';
Stable,
Experimental,
Dashboard
}
export interface AsyncRoute { export interface AsyncRoute {
/** The URL path for this route. */ /** The URL path for this route. */
@ -14,25 +10,18 @@ export interface AsyncRoute {
* Will fallback to using the `path` value if not specified. * Will fallback to using the `path` value if not specified.
*/ */
page?: string page?: string
/** The page type used to load the correct page element. */ /** The app that this page is part of. */
type?: AsyncRouteType type?: AppType
} }
const importRoute = (page: string, type: AsyncRouteType) => { const importRoute = (page: string, type: AppType) => {
switch (type) { return import(/* webpackChunkName: "[request]" */ `../../apps/${type}/routes/${page}`);
case AsyncRouteType.Dashboard:
return import(/* webpackChunkName: "[request]" */ `../../apps/dashboard/routes/${page}`);
case AsyncRouteType.Experimental:
return import(/* webpackChunkName: "[request]" */ `../../apps/experimental/routes/${page}`);
case AsyncRouteType.Stable:
return import(/* webpackChunkName: "[request]" */ `../../apps/stable/routes/${page}`);
}
}; };
export const toAsyncPageRoute = ({ export const toAsyncPageRoute = ({
path, path,
page, page,
type = AsyncRouteType.Stable type = AppType.Stable
}: AsyncRoute): RouteObject => { }: AsyncRoute): RouteObject => {
return { return {
path, path,

8
src/constants/appType.ts Normal file
View file

@ -0,0 +1,8 @@
/**
* App types represented in src/apps.
*/
export enum AppType {
Dashboard = 'dashboard',
Experimental = 'experimental',
Stable = 'stable'
}