From 2796a7d38a7866a010af5ec86def68fe3b8426c3 Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Mon, 19 Jun 2023 20:18:42 +0800 Subject: [PATCH] feat(admin-next): add system user fields support --- .../src/client/components/field/user.tsx | 23 +++++++++++++++++++ server/admin-next/src/client/fields.ts | 3 ++- 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 server/admin-next/src/client/components/field/user.tsx diff --git a/server/admin-next/src/client/components/field/user.tsx b/server/admin-next/src/client/components/field/user.tsx new file mode 100644 index 00000000..f9916ece --- /dev/null +++ b/server/admin-next/src/client/components/field/user.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { + createFieldFactory, + FieldDetailComponent, + ReferenceFieldDetail, + ReferenceFieldOptions, +} from 'tushan'; + +const SYSTEM_USERID = '000000000000000000000000'; + +export const UserFieldDetail: FieldDetailComponent = React.memo((props) => { + if (props.value === SYSTEM_USERID) { + return
System
; + } + + return ; +}); +UserFieldDetail.displayName = 'UserFieldDetail'; + +export const createUserField = createFieldFactory({ + detail: UserFieldDetail, + edit: UserFieldDetail, +}); diff --git a/server/admin-next/src/client/fields.ts b/server/admin-next/src/client/fields.ts index d3867735..8155d563 100644 --- a/server/admin-next/src/client/fields.ts +++ b/server/admin-next/src/client/fields.ts @@ -12,6 +12,7 @@ import { createTextAreaField, } from 'tushan'; import { createFileSizeField } from './components/field/filesize'; +import { createUserField } from './components/field/user'; import { parseUrlStr } from './utils'; export const userFields = [ @@ -75,7 +76,7 @@ export const messageFields = [ ellipsis: true, }, }), - createReferenceField('author', { + createUserField('author', { reference: 'users', displayField: 'nickname', list: {