Skip to content

Commit 9da3ff1

Browse files
authored
Additional helper functions for client-side grouping and filtering (#277)
1 parent f6942db commit 9da3ff1

File tree

2 files changed

+27
-15
lines changed

2 files changed

+27
-15
lines changed

src/helpers.tsx

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {PolymorphicGroup, OktaUser, Tag, OktaGroupTagMap} from './api/apiSchemas';
1+
import {PolymorphicGroup, OktaUser, Tag, OktaGroupTagMap, OktaUserGroupMember} from './api/apiSchemas';
22

33
export const perPage: Array<number | {label: string; value: number}> = [5, 10, 20, 50, {label: 'All', value: -1}];
44

@@ -107,3 +107,28 @@ export function ownerCantAddSelf(tags: Tag[] | undefined, owner: boolean) {
107107
export function ownerCantAddSelfGroups(groups: PolymorphicGroup[], owner: boolean) {
108108
return ownerCantAddSelf(getActiveTagsFromGroups(groups), owner);
109109
}
110+
111+
export function sortGroupMembers(
112+
[aUserId, aUsers]: [string, Array<OktaUserGroupMember>],
113+
[bUserId, bUsers]: [string, Array<OktaUserGroupMember>],
114+
): number {
115+
let aEmail = aUsers[0].active_user?.email ?? '';
116+
let bEmail = bUsers[0].active_user?.email ?? '';
117+
return aEmail.localeCompare(bEmail);
118+
}
119+
120+
export function sortGroupMemberRecords(users: Record<string, OktaUser>): OktaUser[] {
121+
const usersArray = Object.values(users); // Convert the object to an array
122+
usersArray.sort((a, b) => {
123+
const nameA = `${a.first_name} ${a.last_name}`;
124+
const nameB = `${b.first_name} ${b.last_name}`;
125+
return nameA.localeCompare(nameB);
126+
});
127+
return usersArray;
128+
}
129+
130+
export function groupMemberships(
131+
memberships: Array<OktaUserGroupMember> | undefined,
132+
): Record<string, Array<OktaUserGroupMember>> {
133+
return groupBy(memberships ?? [], (membership) => membership.active_user?.id ?? '');
134+
}

src/pages/apps/Read.tsx

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import Typography from '@mui/material/Typography';
2222
import TagIcon from '@mui/icons-material/LocalOffer';
2323

2424
import Ending from '../../components/Ending';
25-
import {groupBy, displayUserName} from '../../helpers';
25+
import {displayUserName, groupMemberships, sortGroupMembers} from '../../helpers';
2626
import {isAccessAdmin, isAppOwnerGroupOwner} from '../../authorization';
2727
import {useGetAppById} from '../../api/apiComponents';
2828
import {App, OktaUserGroupMember} from '../../api/apiSchemas';
@@ -35,19 +35,6 @@ import DeleteApp from './Delete';
3535
import NotFound from '../NotFound';
3636
import Loading from '../../components/Loading';
3737

38-
function sortGroupMembers(
39-
[aUserId, aUsers]: [string, Array<OktaUserGroupMember>],
40-
[bUserId, bUsers]: [string, Array<OktaUserGroupMember>],
41-
): number {
42-
let aEmail = aUsers[0].active_user?.email ?? '';
43-
let bEmail = bUsers[0].active_user?.email ?? '';
44-
return aEmail.localeCompare(bEmail);
45-
}
46-
47-
function groupMemberships(memberships: Array<OktaUserGroupMember> | undefined) {
48-
return groupBy(memberships, (m) => m.active_user?.id);
49-
}
50-
5138
export default function ReadApp() {
5239
const currentUser = useCurrentUser();
5340

0 commit comments

Comments
 (0)