From 86e2a2802db0492da763079bb9383b2c1e0ac079 Mon Sep 17 00:00:00 2001 From: chenos Date: Tue, 28 Sep 2021 18:20:21 +0800 Subject: [PATCH] feat: add useClient and useResourceRequest hooks --- packages/app/src/apis/index.ts | 4 +- packages/client/src/ClientSDK.ts | 3 +- packages/client/src/ConfigProvider.tsx | 19 ++++ .../admin-layout/Collections/index.tsx | 21 ++-- .../src/components/admin-layout/More.tsx | 1 - .../Permissions/ActionPermissionField.tsx | 13 +-- .../Permissions/MenuPermissionTable.tsx | 15 +-- .../admin-layout/Permissions/index.tsx | 14 +-- .../src/components/admin-layout/SiteTitle.tsx | 11 +- .../src/components/admin-layout/UserInfo.tsx | 4 +- .../route-schema-renderer/index.tsx | 7 +- .../src/components/schema-renderer/index.tsx | 101 ++++++++++-------- packages/client/src/constate/Client.tsx | 76 ++++++++++++- packages/client/src/demos/demo1.tsx | 6 +- packages/client/src/hooks/useResource.ts | 4 +- packages/client/src/index.tsx | 3 +- packages/client/src/locale/en_US.ts | 1 + packages/client/src/locale/zh_CN.ts | 1 + packages/client/src/resource.ts | 27 ++--- .../client/src/schemas/action/ActionBar.tsx | 7 +- packages/client/src/schemas/add-new/index.tsx | 51 +++++---- .../client/src/schemas/calendar/ActionBar.tsx | 7 +- .../client/src/schemas/calendar/index.tsx | 5 +- .../src/schemas/cascader/demos/demo2.tsx | 2 +- .../src/schemas/database-field/index.tsx | 3 +- .../database-field/interfaces/chinaRegion.ts | 6 +- packages/client/src/schemas/grid/index.tsx | 10 +- .../src/schemas/kanban/CardDesignableBar.tsx | 4 +- packages/client/src/schemas/kanban/index.tsx | 10 +- packages/client/src/schemas/menu/index.tsx | 11 +- packages/client/src/schemas/select/index.tsx | 4 +- packages/client/src/schemas/table/index.tsx | 24 +++-- packages/client/src/schemas/tabs/index.tsx | 5 +- packages/plugin-saas/src/server.ts | 21 +++- .../plugin-ui-schema/src/models/ui-schema.ts | 4 +- packages/plugin-users/src/actions/users.ts | 10 +- packages/server/src/application.ts | 12 ++- 37 files changed, 339 insertions(+), 188 deletions(-) create mode 100644 packages/client/src/ConfigProvider.tsx create mode 100644 packages/client/src/locale/en_US.ts create mode 100644 packages/client/src/locale/zh_CN.ts diff --git a/packages/app/src/apis/index.ts b/packages/app/src/apis/index.ts index b9a25ae69..bdb3a2c2f 100644 --- a/packages/app/src/apis/index.ts +++ b/packages/app/src/apis/index.ts @@ -42,9 +42,9 @@ const api = new Server({ const plugins = [ '@nocobase/plugin-saas', - '@nocobase/plugin-collections', - '@nocobase/plugin-ui-router', '@nocobase/plugin-ui-schema', + '@nocobase/plugin-ui-router', + '@nocobase/plugin-collections', '@nocobase/plugin-users', '@nocobase/plugin-action-logs', '@nocobase/plugin-file-manager', diff --git a/packages/client/src/ClientSDK.ts b/packages/client/src/ClientSDK.ts index 755d5d2bb..afaa33175 100644 --- a/packages/client/src/ClientSDK.ts +++ b/packages/client/src/ClientSDK.ts @@ -8,7 +8,8 @@ export class ClientSDK { } request(url: string, options?: RequestOptionsInit): RequestMethod { - return this.options.request(url, options); + console.log('this.options.request', this.options.request); + return this.options.request(url, options||{}); } resource(name) { diff --git a/packages/client/src/ConfigProvider.tsx b/packages/client/src/ConfigProvider.tsx new file mode 100644 index 000000000..9e3467853 --- /dev/null +++ b/packages/client/src/ConfigProvider.tsx @@ -0,0 +1,19 @@ +import React, { createContext } from 'react' +// import { ConfigProvider as AntdConfigProvider } from 'antd'; +// import enUS from 'antd/lib/locale/en_US'; +// import zhCN from 'antd/lib/locale/zh_CN'; +import { ClientProvider } from './constate'; +// import moment from 'moment'; +// import 'moment/locale/zh-cn'; +// moment.locale('zh-cn'); + +const ConfigContext = createContext(null); + +export function ConfigProvider(props: any) { + const { client } = props; + return ( + + {props.children} + + ) +}; diff --git a/packages/client/src/components/admin-layout/Collections/index.tsx b/packages/client/src/components/admin-layout/Collections/index.tsx index cd9549a18..fdfe0456a 100644 --- a/packages/client/src/components/admin-layout/Collections/index.tsx +++ b/packages/client/src/components/admin-layout/Collections/index.tsx @@ -24,6 +24,7 @@ import { interfaces, options, } from '../../../schemas/database-field/interfaces'; +import { useResourceRequest } from '../../../constate'; export const RoleContext = createContext(null); @@ -38,7 +39,7 @@ function VisibleProvider(props) { } const useResource = () => { - const resource = Resource.make('collections'); + const resource = useResourceRequest('collections'); return { resource, }; @@ -47,7 +48,7 @@ const useResource = () => { const useCollectionsResource = () => { const descriptionsContext = useContext(DescriptionsContext); console.log('descriptionsContext.service', descriptionsContext.service); - const resource = Resource.make('collections'); + const resource = useResourceRequest('collections'); return { resource, }; @@ -63,7 +64,7 @@ class ActionPermissionResource extends Resource { const useActionPermissionSubmit = () => { const form = useForm(); const role = useContext(RoleContext); - const resource = Resource.make({ + const resource = useResourceRequest({ resourceName: 'roles', resourceKey: role.name, }); @@ -80,9 +81,9 @@ const useActionPermissionResource = ({ onSuccess }) => { console.log('RoleContext', role); // const { props } = useTable(); const ctx = useContext(TableRowContext); - const resource = ActionPermissionResource.make({ + const resource = useResourceRequest({ resourceName: 'action_permissions', - }); + }, ActionPermissionResource); const service = useRequest( (params?: any) => { return resource.list({ @@ -128,7 +129,7 @@ const useActionPermissionResource = ({ onSuccess }) => { const useDetailsResource = ({ onSuccess }) => { const { props } = useTable(); const ctx = useContext(TableRowContext); - const resource = Resource.make({ + const resource = useResourceRequest({ resourceName: 'collections', resourceKey: ctx.record[props.rowKey], }); @@ -164,7 +165,7 @@ const useFieldsResource = () => { }); } } - const resource = FieldResource.make('fields'); + const resource = useResourceRequest('fields', FieldResource); return { resource, }; @@ -545,6 +546,7 @@ function CreateFieldButton() { const form = useMemo(() => createForm(), []); const [properties, setProperties] = useState({}); const { collections = [], loading } = useCollectionsContext(); + const resource = useResourceRequest('fields'); const loadCollections = async (field: any) => { return collections.map((item: any) => ({ @@ -623,7 +625,7 @@ function CreateFieldButton() {