import { createRouterManager, Plugin, RouterManager, RouteSchemaComponent } from '@nocobase/client'; import React from 'react'; import { Navigate, Outlet } from 'react-router-dom'; import { MobileClientProvider } from './MobileClientProvider'; import MApplication from './router/Application'; import { AppConfiguration, InterfaceConfiguration } from './configuration'; import { NAMESPACE } from './locale'; export class MobileClientPlugin extends Plugin { public mobileRouter: RouterManager; async load() { this.setMobileRouter(); this.addRoutes(); this.addSettings(); this.app.use(MobileClientProvider); } addSettings() { this.app.pluginSettingsManager.add(NAMESPACE, { title: `{{t("Mobile Client-side", { ns: "${NAMESPACE}" })}}`, icon: 'MobileOutlined', Component: () => , }); this.app.pluginSettingsManager.add(`${NAMESPACE}.interface`, { title: `{{t("Interface Configuration", { ns: "${NAMESPACE}" })}}`, Component: InterfaceConfiguration, sort: 1, }); this.app.pluginSettingsManager.add(`${NAMESPACE}.app`, { title: `{{t("App Configuration", { ns: "${NAMESPACE}" })}}`, Component: AppConfiguration, sort: 2, }); } setMobileRouter() { const router = createRouterManager({ type: 'hash' }); router.add('root', { path: '/', element: , }); router.add('mobile', { path: '/mobile', element: , }); router.add('mobile.page', { path: '/mobile/:name', element: , }); this.mobileRouter = router; } getMobileRouterComponent() { return this.mobileRouter.getRouterComponent(); } addRoutes() { this.app.router.add('mobile', { path: '/mobile', element: , }); this.app.router.add('mobile.page', { path: '/mobile/:name', Component: 'RouteSchemaComponent', }); } } export default MobileClientPlugin;