'use client'; import { useCourse } from '@components/Contexts/CourseContext'; import { useLHSession } from '@components/Contexts/LHSessionContext'; import { useOrg } from '@components/Contexts/OrgContext'; import { getAPIUrl, getUriWithOrg } from '@services/config/config'; import { linkResourcesToUserGroup } from '@services/usergroups/usergroups'; import { swrFetcher } from '@services/utils/ts/requests'; import { Info } from 'lucide-react'; import Link from 'next/link'; import React, { useEffect } from 'react' import toast from 'react-hot-toast'; import useSWR, { mutate } from 'swr' type LinkToUserGroupProps = { // React function, todo: fix types setUserGroupModal: any } function LinkToUserGroup(props: LinkToUserGroupProps) { const course = useCourse() as any const org = useOrg() as any const session = useLHSession() as any const access_token = session?.data?.tokens?.access_token; const courseStructure = course.courseStructure const { data: usergroups } = useSWR( courseStructure && org ? `${getAPIUrl()}usergroups/org/${org.id}` : null, (url) => swrFetcher(url, access_token) ) const [selectedUserGroup, setSelectedUserGroup] = React.useState(null) as any const handleLink = async () => { const res = await linkResourcesToUserGroup(selectedUserGroup, courseStructure.course_uuid, access_token) if (res.status === 200) { props.setUserGroupModal(false) toast.success('Successfully linked to usergroup') mutate(`${getAPIUrl()}usergroups/resource/${courseStructure.course_uuid}`) } else { toast.error('Error ' + res.status + ': ' + res.data.detail) } } useEffect(() => { if (usergroups && usergroups.length > 0) { setSelectedUserGroup(usergroups[0].id) } } , [usergroups]) return (