'use client' import React, { useEffect, useState } from 'react' import { Field, Form, Formik } from 'formik' import { updateOrganization, uploadOrganizationLogo, uploadOrganizationThumbnail, } from '@services/settings/org' import { UploadCloud, Info, Check, FileWarning } from 'lucide-react' import { revalidateTags } from '@services/utils/ts/requests' import { useRouter } from 'next/navigation' import { useOrg } from '@components/Contexts/OrgContext' import { useLHSession } from '@components/Contexts/LHSessionContext' import { getOrgLogoMediaDirectory, getOrgThumbnailMediaDirectory } from '@services/media/media' import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Toaster, toast } from 'react-hot-toast'; interface OrganizationValues { name: string description: string slug: string logo: string email: string thumbnail: string } function OrgEditGeneral() { const router = useRouter() const session = useLHSession() as any const access_token = session?.data?.tokens?.access_token const org = useOrg() as any const [selectedTab, setSelectedTab] = useState<'logo' | 'thumbnail'>('logo'); const [localLogo, setLocalLogo] = useState(null); const [localThumbnail, setLocalThumbnail] = useState(null); const handleFileChange = async (event: React.ChangeEvent) => { if (event.target.files && event.target.files.length > 0) { const file = event.target.files[0] setLocalLogo(URL.createObjectURL(file)) const loadingToast = toast.loading('Uploading logo...'); try { await uploadOrganizationLogo(org.id, file, access_token) await new Promise((r) => setTimeout(r, 1500)) toast.success('Logo Updated', { id: loadingToast }); router.refresh() } catch (err) { toast.error('Failed to upload logo', { id: loadingToast }); } } } const handleThumbnailChange = async (event: React.ChangeEvent) => { if (event.target.files && event.target.files.length > 0) { const file = event.target.files[0]; setLocalThumbnail(URL.createObjectURL(file)); const loadingToast = toast.loading('Uploading thumbnail...'); try { await uploadOrganizationThumbnail(org.id, file, access_token); await new Promise((r) => setTimeout(r, 1500)); toast.success('Thumbnail Updated', { id: loadingToast }); router.refresh() } catch (err) { toast.error('Failed to upload thumbnail', { id: loadingToast }); } } }; const handleImageButtonClick = (inputId: string) => (event: React.MouseEvent) => { event.preventDefault(); // Prevent form submission document.getElementById(inputId)?.click(); }; let orgValues: OrganizationValues = { name: org?.name, description: org?.description, slug: org?.slug, logo: org?.logo, email: org?.email, thumbnail: org?.thumbnail, } const updateOrg = async (values: OrganizationValues) => { const loadingToast = toast.loading('Updating organization...'); try { await updateOrganization(org.id, values, access_token) await revalidateTags(['organizations'], org.slug) toast.success('Organization Updated', { id: loadingToast }); } catch (err) { toast.error('Failed to update organization', { id: loadingToast }); } } useEffect(() => {}, [org]) return (
{ setTimeout(() => { setSubmitting(false) updateOrg(values) }, 400) }} > {({ isSubmitting }) => (
Logo Thumbnail

Accepts PNG , JPG

Accepts PNG, JPG

)}
) } export default OrgEditGeneral