import useSWR from 'swr'; import type { SAMLFederationApp } from '../types'; import { EditBranding } from './EditBranding'; import { Edit } from './Edit'; import { EditAttributesMapping } from './EditAttributesMapping'; import { DeleteCard, Loading, ConfirmationModal } from '../shared'; import { useTranslation } from 'next-i18next'; import { useState } from 'react'; import { defaultHeaders, fetcher } from '../utils'; import { PageHeader } from '../shared'; export const EditFederatedSAMLApp = ({ urls, onError, onUpdate, onDelete, excludeFields, }: { urls: { getApp: string; updateApp: string; deleteApp: string }; onUpdate?: (data: SAMLFederationApp) => void; onError?: (error: Error) => void; onDelete?: () => void; excludeFields?: 'product'[]; }) => { const { t } = useTranslation('common'); const [delModalVisible, setDelModalVisible] = useState(false); const { data, isLoading, error, mutate } = useSWR<{ data: SAMLFederationApp }>(urls.getApp, fetcher); if (isLoading) { return ; } if (error) { onError?.(error); return; } if (!data) { return null; } const app = data?.data; const connectionIsOIDC = app.type === 'oidc'; const connectionIsSAML = !connectionIsOIDC; const deleteApp = async () => { try { await fetch(urls.deleteApp, { method: 'DELETE', headers: defaultHeaders }); setDelModalVisible(false); onDelete?.(); } catch (error: any) { onError?.(error); } }; return ( <>
{ mutate({ data }); onUpdate?.(data); }} excludeFields={excludeFields} /> {connectionIsSAML && ( { mutate({ data }); onUpdate?.(data); }} /> )} { mutate({ data }); onUpdate?.(data); }} /> setDelModalVisible(true)} /> deleteApp()} onCancel={() => setDelModalVisible(false)} />
); };