import ConfirmationModal from '@components/StyledElements/ConfirmationModal/ConfirmationModal' import { getAPIUrl, getUriWithOrg } from '@services/config/config' import { deleteActivity, updateActivity } from '@services/courses/activities' import { revalidateTags } from '@services/utils/ts/requests' import { Eye, File, MoreVertical, Pencil, Save, Sparkles, Video, X } from 'lucide-react' import Link from 'next/link' import { useRouter } from 'next/navigation' import React from 'react' import { Draggable } from 'react-beautiful-dnd' import { mutate } from 'swr' type ActivitiyElementProps = { orgslug: string, activity: any, activityIndex: any, course_uuid: string } interface ModifiedActivityInterface { activityId: string; activityName: string; } function ActivityElement(props: ActivitiyElementProps) { const router = useRouter(); const [modifiedActivity, setModifiedActivity] = React.useState(undefined); const [selectedActivity, setSelectedActivity] = React.useState(undefined); async function deleteActivityUI() { await deleteActivity(props.activity.activity_uuid); mutate(`${getAPIUrl()}courses/${props.course_uuid}/meta`); await revalidateTags(['courses'], props.orgslug); router.refresh(); } async function updateActivityName(activityId: string) { if ((modifiedActivity?.activityId === activityId) && selectedActivity !== undefined) { setSelectedActivity(undefined); let modifiedActivityCopy = { name: modifiedActivity.activityName, description: '', type: props.activity.type, content: props.activity.content, } await updateActivity(modifiedActivityCopy, activityId) mutate(`${getAPIUrl()}courses/${props.course_uuid}/meta`); await revalidateTags(['courses'], props.orgslug) router.refresh(); } } return ( {(provided, snapshot) => (
{/* Activity Type Icon */} {/* Centered Activity Name */}
{selectedActivity === props.activity.id ? (
setModifiedActivity({ activityId: props.activity.id, activityName: e.target.value })} />
) : (

{props.activity.name}

)} setSelectedActivity(props.activity.id)} size={12} className="text-neutral-400 hover:cursor-pointer" />
{/* Edit and View Button */}
{props.activity.activity_type === "TYPE_DYNAMIC" && <>
Edit
}
{/* Delete Button */}
} functionToExecute={() => deleteActivityUI()} status='warning' >
)}
) } const ActivityTypeIndicator = (props: { activityType: string }) => { return (
{props.activityType === "TYPE_VIDEO" && <>
} {props.activityType === "TYPE_DOCUMENT" && <>
Document
} {props.activityType === "TYPE_DYNAMIC" && <>
Dynamic
}
) } export default ActivityElement