File tree Expand file tree Collapse file tree 5 files changed +38
-6
lines changed
app/organizations/[id]/members Expand file tree Collapse file tree 5 files changed +38
-6
lines changed Original file line number Diff line number Diff line change 11"use client" ;
22
3- import { use , useEffect } from "react" ;
3+ import { use , useEffect , useState } from "react" ;
4+ import { useSearchParams } from "next/navigation" ;
45import { Card , CardContent } from "@/components/ui/card" ;
56import { useAuthStore } from "@/lib/providers/auth-store-provider" ;
67import { useCoachingRelationshipList } from "@/lib/api/coaching-relationships" ;
@@ -14,6 +15,11 @@ export default function MembersPage({
1415} : {
1516 params : Promise < { id : Id } > ;
1617} ) {
18+ const searchParams = useSearchParams ( ) ;
19+ const [ openAddMemberDialog ] = useState (
20+ searchParams . get ( "addMember" ) === "true"
21+ ) ;
22+
1723 const organizationId = use ( params ) . id ;
1824 const setCurrentOrganizationId = useOrganizationStateStore (
1925 ( state ) => state . setCurrentOrganizationId
@@ -67,6 +73,7 @@ export default function MembersPage({
6773 userSession = { userSession }
6874 onRefresh = { handleRefresh }
6975 isLoading = { isRelationshipsLoading || isUsersLoading }
76+ openAddMemberDialog = { openAddMemberDialog }
7077 />
7178 </ div >
7279 ) ;
Original file line number Diff line number Diff line change 33import { useState } from "react" ;
44import { Plus , Users } from "lucide-react" ;
55import { cn } from "@/components/lib/utils" ;
6+ import { useOrganizationStateStore } from "@/lib/providers/organization-state-store-provider" ;
7+ import { useRouter } from "next/navigation" ;
68
79interface AddMemberButtonProps {
810 onClick ?: ( ) => void ;
911}
1012
1113export function AddMemberButton ( { onClick } : AddMemberButtonProps ) {
14+ const router = useRouter ( ) ;
15+ const { currentOrganizationId } = useOrganizationStateStore ( ( state ) => state ) ;
1216 const [ hoveredItem , setHoveredItem ] = useState < string | null > ( null ) ;
1317
1418 const handleMouseEnter = ( item : string ) => {
@@ -28,7 +32,13 @@ export function AddMemberButton({ onClick }: AddMemberButtonProps) {
2832 ) }
2933 onMouseEnter = { ( ) => handleMouseEnter ( "member" ) }
3034 onMouseLeave = { handleMouseLeave }
31- onClick = { onClick }
35+ onClick = { ( ) => {
36+ // Navigate to the Members page and display the AddMemberDialog
37+ router . push (
38+ `/organizations/${ currentOrganizationId } /members?addMember=true`
39+ ) ;
40+ onClick ;
41+ } }
3242 >
3343 < div className = "flex h-16 w-16 items-center justify-center rounded-md bg-primary/10" >
3444 < Users className = "h-8 w-8 text-primary" />
Original file line number Diff line number Diff line change 11"use client" ;
22
3- import { useState } from "react" ;
3+ import { useEffect , useState } from "react" ;
44import { Button } from "@/components/ui/button" ;
55import { Plus } from "lucide-react" ;
66import { AddMemberDialog } from "./add-member-dialog" ;
77
88interface AddMemberButtonProps {
99 onMemberAdded : ( ) => void ;
10+ /// Force the AddMemberDialog to open
11+ openAddMemberDialog : boolean ;
1012}
1113
12- export function AddMemberButton ( { onMemberAdded } : AddMemberButtonProps ) {
14+ export function AddMemberButton ( {
15+ onMemberAdded,
16+ openAddMemberDialog,
17+ } : AddMemberButtonProps ) {
1318 const [ open , setOpen ] = useState ( false ) ;
1419
20+ useEffect ( ( ) => {
21+ setOpen ( openAddMemberDialog ) ;
22+ } , [ openAddMemberDialog ] ) ;
23+
1524 return (
1625 < >
1726 < Button onClick = { ( ) => setOpen ( true ) } >
Original file line number Diff line number Diff line change @@ -13,7 +13,7 @@ import {
1313import { Label } from "@/components/ui/label" ;
1414import { Input } from "@/components/ui/input" ;
1515import { useUserMutation } from "@/lib/api/organizations/users" ;
16- import { User , NewUser } from "@/types/user" ;
16+ import { NewUser } from "@/types/user" ;
1717import { useOrganizationStateStore } from "@/lib/providers/organization-state-store-provider" ;
1818
1919interface AddMemberDialogProps {
Original file line number Diff line number Diff line change @@ -10,6 +10,7 @@ interface MemberContainerProps {
1010 userSession : UserSession ;
1111 onRefresh : ( ) => void ;
1212 isLoading : boolean ;
13+ openAddMemberDialog : boolean ;
1314}
1415
1516export function MemberContainer ( {
@@ -18,6 +19,8 @@ export function MemberContainer({
1819 userSession,
1920 onRefresh,
2021 isLoading,
22+ /// Force the AddMemberDialog to open
23+ openAddMemberDialog,
2124} : MemberContainerProps ) {
2225 // Find relationships where current user is either coach or coachee
2326 const userRelationships = relationships . filter (
@@ -45,7 +48,10 @@ export function MemberContainer({
4548 < div className = "space-y-6" >
4649 < div className = "flex justify-between items-center" >
4750 < h2 className = "text-2xl font-semibold" > Members</ h2 >
48- < AddMemberButton onMemberAdded = { onRefresh } />
51+ < AddMemberButton
52+ onMemberAdded = { onRefresh }
53+ openAddMemberDialog = { openAddMemberDialog }
54+ />
4955 </ div >
5056 < MemberList users = { associatedUsers } />
5157 </ div >
You can’t perform that action at this time.
0 commit comments