479f64f197
* feat: i18next * multi language data * feat(client): locale support * en-US for collections * us-EN for routes * en-US for routes * en-US for attachments * feat: partial translations * translation * add AntdConfigProvider * translation * translation * feat: translation * feat: add translation * fix: improve translation * feat: improve translation * fix: SyntaxError: Unexpected token ) in JSON at position * typo * feat: improve translation * feat: improve translation * feat: language settings can be saved on the server * feat: lang option of init cli * demo translation * typo * change address field to textarea * address data * feat: chart translation * feat: chart translation * improve translation * signin,signup,signout... Co-authored-by: Zhou <zhou.working@gmail.com>
73 lines
1.4 KiB
TypeScript
73 lines
1.4 KiB
TypeScript
import { useRequest } from 'ahooks';
|
|
import { Spin } from 'antd';
|
|
import React, { useMemo } from 'react';
|
|
import { HashRouter as Router } from 'react-router-dom';
|
|
import {
|
|
createRouteSwitch,
|
|
RouteRedirectProps,
|
|
AdminLayout,
|
|
AuthLayout,
|
|
RouteSchemaRenderer,
|
|
ConfigProvider,
|
|
ClientSDK,
|
|
} from '@nocobase/client';
|
|
import { UseRequestProvider } from 'ahooks';
|
|
import { extend } from 'umi-request';
|
|
|
|
const request = extend({
|
|
prefix: process.env.API_URL,
|
|
timeout: 30000,
|
|
});
|
|
|
|
request.use(async (ctx, next) => {
|
|
const { headers } = ctx.req.options as any;
|
|
const token = localStorage.getItem('NOCOBASE_TOKEN');
|
|
if (token) {
|
|
headers['Authorization'] = `Bearer ${token}`;
|
|
headers['X-Hostname'] = process.env.API_HOSTNAME;
|
|
}
|
|
await next();
|
|
});
|
|
|
|
const client = new ClientSDK({
|
|
request,
|
|
});
|
|
|
|
console.log('process.env.API_URL', process.env.API_URL);
|
|
|
|
// console.log = () => {}
|
|
|
|
const RouteSwitch = createRouteSwitch({
|
|
components: {
|
|
AdminLayout,
|
|
AuthLayout,
|
|
RouteSchemaRenderer,
|
|
},
|
|
});
|
|
|
|
const App = () => {
|
|
const { data, loading } = useRequest('routes:getAccessible', {
|
|
formatResult: (result) => result?.data,
|
|
});
|
|
|
|
if (loading) {
|
|
return <Spin size={'large'} className={'nb-spin-center'} />;
|
|
}
|
|
|
|
return (
|
|
<div>
|
|
<Router>
|
|
<RouteSwitch routes={data} />
|
|
</Router>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default () => {
|
|
return (
|
|
<ConfigProvider client={client}>
|
|
<App />
|
|
</ConfigProvider>
|
|
);
|
|
};
|