import { ページアクセス許可判定 } from "auth/route";
import QRサービス券駐車場グループ管理ContextProvider from "contexts/page/dashboard/parking/QRサービス券駐車場グループ管理Context";
import 店舗詳細ContextProvider from "contexts/page/dashboard/shop/店舗詳細Context";
import AuthGuard from "guards/AuthGuard";
import useAuth from "hooks/useAuth";
import DashboardLayout from "layouts/dashbord";
import { PageID, TabID } from "pages";
import { lazy, useMemo } from "react";
import { Outlet, RouteObject } from "react-router-dom";
import { Loadable } from "routes";
import { getPath } from "routes/path";
export default function DashboardRoutes(): RouteObject[] {
const { currentRole } = useAuth();
const children: RouteObject[] = useMemo(() => {
const Enpty = Loadable(lazy(() => import("pages/dashboard/empty")));
const Dashboard = Loadable(lazy(() => import("pages/dashboard")));
const 成り代わり終了 = Loadable(
lazy(() => import("pages/dashboard/成り代わり終了"))
);
const サービス券発行用QRコード = Loadable(
lazy(() => import("pages/dashboard/qr-service/サービス券発行"))
);
const サービス券利用履歴 = Loadable(
lazy(() => import("pages/dashboard/qr-service/利用履歴一覧"))
);
const QRサービス券駐車場管理一覧 = Loadable(
lazy(
() => import("pages/dashboard/qr-service/QRサービス券駐車場管理/一覧")
)
);
const QRサービス券駐車場管理新規登録 = Loadable(
lazy(
() =>
import("pages/dashboard/qr-service/QRサービス券駐車場管理/新規登録")
)
);
const QRサービス券駐車場管理詳細 = Loadable(
lazy(
() => import("pages/dashboard/qr-service/QRサービス券駐車場管理/詳細")
)
);
const 顧客ログインユーザ一覧 = Loadable(
lazy(() => import("pages/dashboard/login-user/顧客ログインユーザ一覧"))
);
const 顧客ログインユーザ新規登録 = Loadable(
lazy(
() => import("pages/dashboard/login-user/顧客ログインユーザ新規登録")
)
);
const 店舗ログインユーザ一覧 = Loadable(
lazy(() => import("pages/dashboard/login-user/店舗/一覧"))
);
const 店舗ログインユーザ新規登録 = Loadable(
lazy(() => import("pages/dashboard/login-user/店舗/新規登録"))
);
const 店舗新規登録 = Loadable(
lazy(() => import("pages/dashboard/shop/店舗新規登録"))
);
const 店舗一覧 = Loadable(
lazy(() => import("pages/dashboard/shop/店舗一覧"))
);
const 店舗詳細 = Loadable(
lazy(() => import("pages/dashboard/shop/店舗詳細/詳細"))
);
const 店舗詳細基本設定 = Loadable(
lazy(() => import("pages/dashboard/shop/店舗詳細/基本設定"))
);
const 店舗詳細QR取得設定 = Loadable(
lazy(() => import("pages/dashboard/shop/店舗詳細/QR取得設定"))
);
const 店舗詳細QR認証設定 = Loadable(
lazy(() => import("pages/dashboard/shop/店舗詳細/QR認証設定"))
);
const allChildren: {
pageId: PageID;
ele: RouteObject;
}[] = [
{
pageId: PageID.DASHBOARD_ENPTY,
ele: {
element: ,
path: getPath(PageID.DASHBOARD_ENPTY),
},
},
{
pageId: PageID.DASHBOARD_OVERVIEW,
ele: {
element: ,
path: getPath(PageID.DASHBOARD_OVERVIEW),
},
},
{
pageId: PageID.成り代わり終了,
ele: {
element: <成り代わり終了 />,
path: getPath(PageID.成り代わり終了),
},
},
{
pageId: PageID.ログインユーザ_顧客一覧,
ele: {
element: <顧客ログインユーザ一覧 />,
path: getPath(PageID.ログインユーザ_顧客一覧),
},
},
{
pageId: PageID.ログインユーザ_顧客新規登録,
ele: {
element: <顧客ログインユーザ新規登録 />,
path: getPath(PageID.ログインユーザ_顧客新規登録),
},
},
{
pageId: PageID.ログインユーザ_店舗一覧,
ele: {
element: <店舗ログインユーザ一覧 />,
path: getPath(PageID.ログインユーザ_店舗一覧),
},
},
{
pageId: PageID.ログインユーザ_店舗新規登録,
ele: {
element: <店舗ログインユーザ新規登録 />,
path: getPath(PageID.ログインユーザ_店舗新規登録),
},
},
{
pageId: PageID.店舗新規登録,
ele: {
element: <店舗新規登録 />,
path: getPath(PageID.店舗新規登録),
},
},
{
pageId: PageID.店舗一覧,
ele: {
element: <店舗一覧 />,
path: getPath(PageID.店舗一覧),
},
},
{
pageId: PageID.店舗詳細,
ele: {
element: (
<店舗詳細ContextProvider>
店舗詳細ContextProvider>
),
children: [
{
element: <店舗詳細 />,
path: getPath([PageID.店舗詳細, TabID.店舗詳細_メイン]),
},
{
element: <店舗詳細基本設定 />,
path: getPath([PageID.店舗詳細, TabID.店舗詳細_基本設定]),
},
{
element: <店舗詳細QR認証設定 />,
path: getPath([PageID.店舗詳細, TabID.店舗詳細_QR認証設定]),
},
{
element: <店舗詳細QR取得設定 />,
path: getPath([PageID.店舗詳細, TabID.店舗詳細_QR取得設定]),
},
],
},
},
{
pageId: PageID.QRサービス券駐車場グループ管理,
ele: {
element: (
),
children: [
{
element: ,
path: getPath([
PageID.QRサービス券駐車場グループ管理,
TabID.QRサービス券駐車場グループ管理_一覧,
]),
},
{
element: ,
path: getPath([
PageID.QRサービス券駐車場グループ管理,
TabID.QRサービス券駐車場グループ管理_新規登録,
]),
},
{
element: ,
path: getPath([
PageID.QRサービス券駐車場グループ管理,
TabID.QRサービス券駐車場グループ管理_詳細,
]),
},
],
},
},
{
pageId: PageID.サービス券発行用QRコード,
ele: {
element: <サービス券発行用QRコード />,
path: getPath(PageID.サービス券発行用QRコード),
},
},
{
pageId: PageID.利用履歴,
ele: {
element: <サービス券利用履歴 />,
path: getPath(PageID.利用履歴),
},
},
];
return allChildren
.filter(({ pageId }) => {
if (currentRole === null) {
return false;
}
return ページアクセス許可判定(currentRole, pageId);
})
.map(({ ele }) => ele);
}, [currentRole]);
return [
{
element: (
),
children: children,
},
];
}