Skip to content
Snippets Groups Projects
Commit 1942954d authored by Sascha Klawohn's avatar Sascha Klawohn
Browse files

Add Role column to GroupsTable

parent f4521e99
No related branches found
No related tags found
1 merge request!99Groups dashboard
Pipeline #231942 failed
import {useMemo} from 'react' import {useMemo} from 'react'
import {useAuth} from 'react-oidc-context'
import useRoute from '../../components/routing/useRoute' import useRoute from '../../components/routing/useRoute'
import useRouteData from '../../components/routing/useRouteData' import useRouteData from '../../components/routing/useRouteData'
import {ColumnDef} from '../../components/table/ControlledDataTable' import {ColumnDef} from '../../components/table/ControlledDataTable'
...@@ -9,7 +10,19 @@ import Text from '../../components/values/primitives/Text' ...@@ -9,7 +10,19 @@ import Text from '../../components/values/primitives/Text'
import {GroupResponse} from '../../models/graphResponseModels' import {GroupResponse} from '../../models/graphResponseModels'
import groupsRoute from './groupsRoute' import groupsRoute from './groupsRoute'
function getUserRole(group: GroupResponse, userId: string | null | undefined) {
if (group?.owner?.user_id === userId) {
return 'Owner'
} else if (group?.members?.some((member) => member.user_id === userId)) {
return 'Member'
} else {
return null
}
}
export function GroupsTable() { export function GroupsTable() {
const {user} = useAuth()
const {navigate} = useRoute() const {navigate} = useRoute()
const data = useRouteData(groupsRoute) const data = useRouteData(groupsRoute)
...@@ -27,26 +40,37 @@ export function GroupsTable() { ...@@ -27,26 +40,37 @@ export function GroupsTable() {
accessorKey: 'group_name', accessorKey: 'group_name',
header: 'Name', header: 'Name',
Cell: ({cell}) => <Text value={cell.getValue<string>()} fullWidth />, Cell: ({cell}) => <Text value={cell.getValue<string>()} fullWidth />,
}, grow: true,
{
accessorKey: 'group_id',
header: 'ID',
Cell: ({cell}) => <Id value={cell.getValue<string>()} abbreviated />,
}, },
{ {
accessorKey: 'owner.name', accessorKey: 'owner.name',
header: 'Owner', header: 'Owner',
Cell: ({cell}) => <Text value={cell.getValue<string>()} />, Cell: ({cell}) => <Text value={cell.getValue<string>()} />,
grow: true,
},
{
header: 'Role',
accessorFn: (data) => getUserRole(data, user?.profile.sub),
Cell: ({cell}) => <Text value={cell.getValue<string>()} />,
grow: true,
}, },
{ {
id: 'members', id: 'members',
accessorFn: (data) => data?.members?.length || '0', accessorFn: (data) => data?.members?.length || '0',
header: 'Members', header: 'Members',
grow: true,
Cell: ({cell}) => <Text value={cell.getValue<string>()} />, Cell: ({cell}) => <Text value={cell.getValue<string>()} />,
center: true,
grow: true,
foo: 'bar',
},
{
accessorKey: 'group_id',
header: 'ID',
Cell: ({cell}) => <Id value={cell.getValue<string>()} abbreviated />,
grow: true,
}, },
], ],
[], [user?.profile.sub],
) )
return ( return (
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment