import React, { FC, Fragment, useCallback } from 'react'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; import useSWR from 'swr'; import { Button } from '@gitroom/react/form/button'; import clsx from 'clsx'; import { useModals } from '@mantine/modals'; import { TopTitle } from '@gitroom/frontend/components/launches/helpers/top.title.component'; import { array, boolean, object, string } from 'yup'; import { FormProvider, useForm } from 'react-hook-form'; import { yupResolver } from '@hookform/resolvers/yup'; import { CopilotTextarea } from '@copilotkit/react-textarea'; import { Select } from '@gitroom/react/form/select'; import { useToaster } from '@gitroom/react/toaster/toaster'; import { useT } from '@gitroom/react/translation/get.transation.service.client'; export const SignaturesComponent: FC<{ appendSignature?: (value: string) => void; }> = (props) => { const { appendSignature } = props; const fetch = useFetch(); const modal = useModals(); const load = useCallback(async () => { return (await fetch('/signatures')).json(); }, []); const { data, mutate } = useSWR('signatures', load); const addSignature = useCallback( (data?: any) => () => { modal.openModal({ title: '', withCloseButton: false, classNames: { modal: 'bg-transparent text-textColor', }, children: , }); }, [mutate] ); const t = useT(); return (

{t('signatures', 'Signatures')}

{t( 'you_can_add_signatures_to_your_account_to_be_used_in_your_posts', 'You can add signatures to your account to be used in your posts.' )}
{!!data?.length && (
{t('content', 'Content')}
{t('auto_add', 'Auto Add?')}
{!!appendSignature && (
{t('actions', 'Actions')}
)}
{t('edit', 'Edit')}
{t('delete', 'Delete')}
{data?.map((p: any) => (
{p.content.slice(0, 15) + '...'}
{p.autoAdd ? 'Yes' : 'No'}
{!!appendSignature && (
)}
))}
)}
); }; const details = object().shape({ content: string().required(), autoAdd: boolean().required(), }); const AddOrRemoveSignature: FC<{ data?: any; reload: () => void; }> = (props) => { const { data, reload } = props; const toast = useToaster(); const fetch = useFetch(); const form = useForm({ resolver: yupResolver(details), values: { content: data?.content || '', autoAdd: data?.autoAdd || false, }, }); const text = form.watch('content'); const autoAdd = form.watch('autoAdd'); const modal = useModals(); const callBack = useCallback( async (values: any) => { await fetch(data?.id ? `/signatures/${data.id}` : '/signatures', { method: data?.id ? 'PUT' : 'POST', body: JSON.stringify(values), }); toast.show( data?.id ? 'Webhook updated successfully' : 'Webhook added successfully', 'success' ); modal.closeModal(modal.modals[modal.modals.length - 1].id); reload(); }, [data, modal] ); const t = useT(); return (
{ form.setValue('content', e.target.value); }} placeholder="Write your signature..." autosuggestionsConfig={{ textareaPurpose: `Assist me in writing social media signature`, chatApiConfigs: {}, }} />
); };