import { Form, FormButtons, TextField, Button, Switch, FormSubmitButton, Column, Label, Row, } from '@umami/react-zen'; import { useState } from 'react'; import { getRandomChars } from '@/lib/generate'; import { useMessages, useUpdateQuery } from '@/components/hooks'; const generateId = () => getRandomChars(16); export interface WebsiteShareFormProps { websiteId: string; shareId?: string; onSave?: () => void; onClose?: () => void; } export function WebsiteShareForm({ websiteId, shareId, onSave, onClose }: WebsiteShareFormProps) { const { formatMessage, labels, messages } = useMessages(); const [id, setId] = useState(shareId); const { mutate, error, isPending, touch, toast } = useUpdateQuery(`/websites/${websiteId}`); const url = `${window?.location.origin || ''}${process.env.basePath || ''}/share/${id}`; const handleGenerate = () => { setId(generateId()); }; const handleSwitch = () => { setId(id ? null : generateId()); }; const handleSave = () => { const data = { shareId: id, }; mutate(data, { onSuccess: async () => { toast(formatMessage(messages.saved)); touch(`website:${websiteId}`); onSave?.(); onClose?.(); }, }); }; return (
{formatMessage(labels.enableShareUrl)} {id && ( )} {id && } {onClose && } {formatMessage(labels.save)}
); }