@@ -11,27 +11,40 @@ import {
1111 Spacing ,
1212 Text ,
1313 useForm ,
14- useService
14+ useService , useStore
1515} from "@code0-tech/pictor" ;
1616import { MemberService } from "@edition/member/Member.service" ;
1717import { useParams , useRouter } from "next/navigation" ;
1818import { Namespace } from "@code0-tech/sagittarius-graphql-types" ;
1919import Link from "next/link" ;
20+ import { UserService } from "@edition/user/User.service" ;
2021
2122export const MemberAddPage : React . FC = ( ) => {
2223
2324 const params = useParams ( )
2425 const memberService = useService ( MemberService )
26+ const memberStore = useStore ( MemberService )
27+ const userService = useService ( UserService )
28+ const userStore = useStore ( UserService )
2529 const router = useRouter ( )
2630 const [ , startTransition ] = React . useTransition ( )
2731
2832 const namespaceIndex = params ?. namespaceId as string
2933 const namespaceId : Namespace [ 'id' ] = `gid://sagittarius/Namespace/${ namespaceIndex as unknown as number } `
3034
35+ const members = React . useMemo ( ( ) => memberService . values ( { namespaceId : namespaceId } ) , [ memberStore , userStore ] )
36+ const formInitialValues = React . useMemo (
37+ ( ) => ( { users : null as null | InputSuggestion [ ] } ) ,
38+ [ ]
39+ )
40+ const filteredUsers = React . useMemo ( ( ) => {
41+ return ( user : DUserView ) => {
42+ return ! members . find ( m => m . user ?. id === user . id )
43+ }
44+ } , [ members ] )
45+
3146 const [ inputs , validate ] = useForm < { users : null | InputSuggestion [ ] } > ( {
32- initialValues : {
33- users : null
34- } ,
47+ initialValues : formInitialValues ,
3548 validate : {
3649 users : ( value ) => {
3750 if ( ! value ) return "Please select at least one user"
@@ -65,6 +78,7 @@ export const MemberAddPage: React.FC = () => {
6578 { /*@ts -ignore*/ }
6679 < DUserInput title = { "Description" }
6780 description = { "Provide a simple project description" }
81+ filter = { filteredUsers }
6882 validationUsesSuggestions
6983 { ...inputs . getInputProps ( "users" ) } />
7084 < Spacing spacing = { "xl" } />
0 commit comments