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 (
);
};