From d74bfe5020727793f25e56284ebd41f81c10d61c Mon Sep 17 00:00:00 2001 From: Marcin Maciaszczyk Date: Thu, 19 Sep 2024 11:35:04 +0200 Subject: [PATCH] fix personas list --- .../{Persona.tsx => PersonaActions.tsx} | 7 +- .../usermanagement/personas/PersonasList.tsx | 128 ++++++++++-------- 2 files changed, 75 insertions(+), 60 deletions(-) rename assets/src/components/settings/usermanagement/personas/{Persona.tsx => PersonaActions.tsx} (94%) diff --git a/assets/src/components/settings/usermanagement/personas/Persona.tsx b/assets/src/components/settings/usermanagement/personas/PersonaActions.tsx similarity index 94% rename from assets/src/components/settings/usermanagement/personas/Persona.tsx rename to assets/src/components/settings/usermanagement/personas/PersonaActions.tsx index d31bf39385..d0368ec6a6 100644 --- a/assets/src/components/settings/usermanagement/personas/Persona.tsx +++ b/assets/src/components/settings/usermanagement/personas/PersonaActions.tsx @@ -11,14 +11,13 @@ import { import { DeleteIconButton } from 'components/utils/IconButtons' import { removeConnection, updateCache } from '../../../../utils/graphql' -import { Info } from '../../../utils/Info' import { Permissions, hasRbac } from '../misc' import { EditPersonaAttributes } from './PersonaAttributesEdit' import PersonaView from './PersonaView' import { EditPersonaBindings } from './PersonaBindingsEdit' -export default function Persona({ persona }: { persona: PersonaT }) { +export default function PersonaActions({ persona }: { persona: PersonaT }) { const { me } = useContext(LoginContext) const editable = !!me.roles?.admin || hasRbac(me, Permissions.USERS) @@ -43,10 +42,6 @@ export default function Persona({ persona }: { persona: PersonaT }) { flexDirection="row" alignItems="center" > - (null) - - if (!data?.personas) return - - const { edges, pageInfo } = data.personas - - return ( - - {!isEmpty(edges) ? ( - ( - - - - )} - loadNextPage={() => - pageInfo.hasNextPage && - fetchMore({ - variables: { cursor: pageInfo.endCursor }, - updateQuery: (prev, { fetchMoreResult: { personas } }) => - extendConnection(prev, personas, 'personas'), - }) - } - hasNextPage={pageInfo.hasNextPage} - loading={loading} - placeholder={() => ( -
- )} - handleScroll={undefined} - refreshKey={undefined} - setLoader={undefined} +export const pageSize = 100 + +const columnHelper = createColumnHelper() +const columns = [ + columnHelper.accessor((persona) => persona, { + id: 'info', + cell: ({ getValue }) => { + const persona = getValue() + + return ( + - ) : ( - - - - )} - + ) + }, + }), + columnHelper.accessor((persona) => persona, { + id: 'actions', + meta: { gridTemplate: `fit-content(100px)` }, + cell: function Cell({ getValue }) { + return + }, + }), +] + +export function PersonasList() { + const { data, loading, error, pageInfo, fetchNextPage, setVirtualSlice } = + useFetchPaginatedData({ + queryHook: usePersonasQuery, + keyPath: ['personas'], + pageSize, + }) + + const personas = useMemo( + () => data?.personas?.edges?.map((edge) => edge?.node), + [data?.personas?.edges] + ) + + if (error) return + if (!data?.personas?.edges) return + + return !isEmpty(personas) ? ( + + + + ) : ( + + + ) }