import { Upload } from 'lucide-react' import { useEffect, useRef, useState } from 'react' import { useForm } from 'react-hook-form' import { Button, FormControl, FormField, FormItem, FormMessage, Input, Tabs_Shadcn_, TabsContent_Shadcn_, TabsList_Shadcn_, TabsTrigger_Shadcn_, } from 'ui' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import { SSOConfigFormSchema } from './SSOConfig' export const SSOMetadata = ({ form, }: { form: ReturnType> }) => { const fileInputRef = useRef(null) const [fileName, setFileName] = useState(null) const [tab, setTab] = useState<'url' | 'file'>('url') useEffect(() => { if (form.getValues('metadataXmlFile')) { setTab('file') } else if (form.getValues('metadataXmlUrl')) { setTab('url') } }, [form]) const handleFileChange = async (e: React.ChangeEvent) => { form.clearErrors('metadataXmlFile') const file = e.target.files?.[0] if (!file) return if (!file.name.endsWith('.xml')) { form.setError('metadataXmlFile', { type: 'manual', message: 'Please upload a valid .xml file', }) return } try { const text = await file.text() form.setValue('metadataXmlFile', text, { shouldDirty: true }) setFileName(file.name) } catch (err) { form.setError('metadataXmlFile', { type: 'manual', message: 'Failed to read file', }) } } return (
setTab(value as 'url' | 'file')} className="max-w-2xl" > URL Upload file ( )} /> (
{fileName && {fileName}}
)} />
) }