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