mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
feat: migrate dashboard app to use react data router
This commit is contained in:
parent
ff885b9b21
commit
cd11e6e36f
9 changed files with 107 additions and 100 deletions
|
@ -4,7 +4,8 @@ import { Route } from 'react-router-dom';
|
|||
|
||||
export enum AsyncRouteType {
|
||||
Stable,
|
||||
Experimental
|
||||
Experimental,
|
||||
Dashboard,
|
||||
}
|
||||
|
||||
export interface AsyncRoute {
|
||||
|
@ -26,6 +27,11 @@ export interface AsyncPageProps {
|
|||
page: string
|
||||
}
|
||||
|
||||
const DashboardAsyncPage = loadable(
|
||||
(props: { page: string }) => import(/* webpackChunkName: "[request]" */ `../../apps/dashboard/routes/${props.page}`),
|
||||
{ cacheKey: (props: AsyncPageProps) => props.page }
|
||||
);
|
||||
|
||||
const ExperimentalAsyncPage = loadable(
|
||||
(props: { page: string }) => import(/* webpackChunkName: "[request]" */ `../../apps/experimental/routes/${props.page}`),
|
||||
{ cacheKey: (props: AsyncPageProps) => props.page }
|
||||
|
@ -37,12 +43,20 @@ const StableAsyncPage = loadable(
|
|||
);
|
||||
|
||||
export const toAsyncPageRoute = ({ path, page, element, type = AsyncRouteType.Stable }: AsyncRoute) => {
|
||||
const Element = element
|
||||
|| (
|
||||
type === AsyncRouteType.Experimental ?
|
||||
ExperimentalAsyncPage :
|
||||
StableAsyncPage
|
||||
);
|
||||
let Element = element;
|
||||
if (!Element) {
|
||||
switch (type) {
|
||||
case AsyncRouteType.Dashboard:
|
||||
Element = DashboardAsyncPage;
|
||||
break;
|
||||
case AsyncRouteType.Experimental:
|
||||
Element = ExperimentalAsyncPage;
|
||||
break;
|
||||
case AsyncRouteType.Stable:
|
||||
default:
|
||||
Element = StableAsyncPage;
|
||||
}
|
||||
}
|
||||
|
||||
return (
|
||||
<Route
|
||||
|
@ -54,11 +68,20 @@ export const toAsyncPageRoute = ({ path, page, element, type = AsyncRouteType.St
|
|||
};
|
||||
|
||||
export function toAsyncPageRouteConfig({ path, page, element, type = AsyncRouteType.Stable }: AsyncRoute) {
|
||||
const Element = element || (
|
||||
type === AsyncRouteType.Experimental ?
|
||||
ExperimentalAsyncPage :
|
||||
StableAsyncPage
|
||||
);
|
||||
let Element = element;
|
||||
if (!Element) {
|
||||
switch (type) {
|
||||
case AsyncRouteType.Dashboard:
|
||||
Element = DashboardAsyncPage;
|
||||
break;
|
||||
case AsyncRouteType.Experimental:
|
||||
Element = ExperimentalAsyncPage;
|
||||
break;
|
||||
case AsyncRouteType.Stable:
|
||||
default:
|
||||
Element = StableAsyncPage;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
path,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue