@@ -8,7 +8,7 @@ import type { QueryClient, UseQueryOptions } from "react-query";
8
8
9
9
type GroupSortOrder = "asc" | "desc" ;
10
10
11
- const groupsQueryKey = [ "groups" ] ;
11
+ export const groupsQueryKey = [ "groups" ] ;
12
12
13
13
export const groups = ( ) => {
14
14
return {
@@ -49,27 +49,29 @@ export type GroupsByUserId = Readonly<Map<string, readonly Group[]>>;
49
49
export function groupsByUserId ( ) {
50
50
return {
51
51
...groups ( ) ,
52
- select : ( allGroups ) => {
53
- // Sorting here means that nothing has to be sorted for the individual
54
- // user arrays later
55
- const sorted = sortGroupsByName ( allGroups , "asc" ) ;
56
- const userIdMapper = new Map < string , Group [ ] > ( ) ;
57
-
58
- for ( const group of sorted ) {
59
- for ( const user of group . members ) {
60
- let groupsForUser = userIdMapper . get ( user . id ) ;
61
- if ( groupsForUser === undefined ) {
62
- groupsForUser = [ ] ;
63
- userIdMapper . set ( user . id , groupsForUser ) ;
64
- }
65
-
66
- groupsForUser . push ( group ) ;
67
- }
52
+ select : selectGroupsByUserId ,
53
+ } satisfies UseQueryOptions < Group [ ] , unknown , GroupsByUserId > ;
54
+ }
55
+
56
+ export function selectGroupsByUserId ( groups : Group [ ] ) : GroupsByUserId {
57
+ // Sorting here means that nothing has to be sorted for the individual
58
+ // user arrays later
59
+ const sorted = sortGroupsByName ( groups , "asc" ) ;
60
+ const userIdMapper = new Map < string , Group [ ] > ( ) ;
61
+
62
+ for ( const group of sorted ) {
63
+ for ( const user of group . members ) {
64
+ let groupsForUser = userIdMapper . get ( user . id ) ;
65
+ if ( groupsForUser === undefined ) {
66
+ groupsForUser = [ ] ;
67
+ userIdMapper . set ( user . id , groupsForUser ) ;
68
68
}
69
69
70
- return userIdMapper as GroupsByUserId ;
71
- } ,
72
- } satisfies UseQueryOptions < Group [ ] , unknown , GroupsByUserId > ;
70
+ groupsForUser . push ( group ) ;
71
+ }
72
+ }
73
+
74
+ return userIdMapper as GroupsByUserId ;
73
75
}
74
76
75
77
export function groupsForUser ( userId : string ) {
0 commit comments