import { TopTitle } from '@gitroom/frontend/components/launches/helpers/top.title.component'; import React, { FC, useCallback, useState } from 'react'; import { useModals } from '@mantine/modals'; import { Integration } from '@prisma/client'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; import { Button } from '@gitroom/react/form/button'; import { Slider } from '@gitroom/react/form/slider'; import { useT } from '@gitroom/react/translation/get.transation.service.client'; export const Element: FC<{ setting: any; onChange: (value: any) => void; }> = (props) => { const { setting, onChange } = props; const [value, setValue] = useState(setting.value); return (
{setting.title}
{setting.description}
{ setValue(!value); onChange(!value); }} fill={true} />
); }; export const SettingsModal: FC<{ integration: Integration & { customer?: { id: string; name: string; }; }; onClose: () => void; }> = (props) => { const fetch = useFetch(); const t = useT(); const { onClose, integration } = props; const modal = useModals(); const [values, setValues] = useState( JSON.parse(integration?.additionalSettings || '[]') ); const changeValue = useCallback( (index: number) => (value: any) => { const newValues = [...values]; newValues[index].value = value; setValues(newValues); }, [values] ); const save = useCallback(async () => { await fetch(`/integrations/${integration.id}/settings`, { method: 'POST', body: JSON.stringify({ additionalSettings: JSON.stringify(values), }), }); modal.closeAll(); onClose(); }, [values, integration]); return (
{values.map((setting: any, index: number) => ( ))}
); };