@@ -14,6 +14,8 @@ import OrgSkeleton from '../Skeletons/Organization.skeleton';
1414import { DeleteOrganization } from '../Mutations/OrganisationMutations' ;
1515import { RegisterNewOrganization } from '../Mutations/OrganisationMutations' ;
1616import { AddOrganization } from '../Mutations/OrganisationMutations' ;
17+ import jwtDecode from 'jwt-decode' ;
18+ import { useSearchParams , useNavigate } from 'react-router-dom' ;
1719
1820export interface Admin {
1921 id : string ;
@@ -145,6 +147,24 @@ const Organizations = () => {
145147 refetch : Function ;
146148 } = useQuery ( getOrganizations ) ;
147149
150+ const ApproveNewOrganization = async ( token :string ) => {
151+ try {
152+ const decodedToken :any = await jwtDecode ( token ) ;
153+ if ( ! decodedToken ) throw new Error ( "Failed to decode token" )
154+ const { nm :name , desc :description , email} = decodedToken ;
155+ const approvalResult = await ApproveOrganization ( { name, description, email } ) ;
156+
157+ if ( approvalResult && approvalResult . success ) {
158+ toast . success ( `${ name } organization has been approved.` ) ;
159+ } else {
160+ toast . error ( `${ name } organization approval failed.` ) ;
161+ }
162+ } catch ( error :any ) {
163+ console . error ( error . message ) ;
164+
165+ }
166+ }
167+
148168 const [ createOrganizationModel , setCreateOrganizationModel ] = useState ( false ) ;
149169 const [ deleteOrganizationModel , setDeleteOrganizationModel ] = useState ( false ) ;
150170 const [ showActions , setShowActions ] = useState ( false ) ;
@@ -162,6 +182,20 @@ const Organizations = () => {
162182 description : '' ,
163183 } ) ;
164184
185+ const [ searchParams ] = useSearchParams ( )
186+ const navigate = useNavigate ( ) ;
187+
188+
189+ useEffect ( ( ) => {
190+ const newOrgToken = searchParams . get ( "newOrgToken" ) ;
191+ if ( newOrgToken ) {
192+ ApproveNewOrganization ( newOrgToken ) ;
193+ searchParams . delete ( 'newOrgToken' ) ;
194+ navigate ( `?${ searchParams . toString ( ) } ` , { replace : true } ) ;
195+
196+ }
197+ } , [ ] ) ;
198+
165199 const handleShowActions = ( ) => {
166200 setShowActions ( ! showActions ) ;
167201 } ;
@@ -230,9 +264,19 @@ const Organizations = () => {
230264 }
231265
232266 async function ApproveOrganization ( data : any ) {
233- await RegisterOrganizationMutation ( {
234- variables : { organizationInput : data , action : 'approve' } ,
235- } ) ;
267+ try {
268+ const { data : mutationResult } = await RegisterOrganizationMutation ( {
269+ variables : { organizationInput : data , action : 'approve' } ,
270+ } ) ;
271+
272+ if ( mutationResult ) {
273+ return { success : true } ;
274+ } else {
275+ return { success : false } ;
276+ }
277+ } catch ( error :any ) {
278+ console . error ( error . message ) ;
279+ }
236280 }
237281
238282 async function RejectOrganization ( data : any ) {
0 commit comments