Skip to content

Commit 8c03840

Browse files
committed
feat: enhance MemberAddPage with user filtering and improved form handling
1 parent edc7eed commit 8c03840

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

src/packages/ce/src/dashboard/member/MemberAddPage.tsx

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,40 @@ import {
1111
Spacing,
1212
Text,
1313
useForm,
14-
useService
14+
useService, useStore
1515
} from "@code0-tech/pictor";
1616
import {MemberService} from "@edition/member/Member.service";
1717
import {useParams, useRouter} from "next/navigation";
1818
import {Namespace} from "@code0-tech/sagittarius-graphql-types";
1919
import Link from "next/link";
20+
import {UserService} from "@edition/user/User.service";
2021

2122
export 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

Comments
 (0)