'use client'; import 'reflect-metadata'; import React, { FC, Fragment, useCallback, useMemo, useState } from 'react'; import { useFetch } from '@gitroom/helpers/utils/custom.fetch'; import useSWR from 'swr'; import { useUser } from '@gitroom/frontend/components/layout/user.context'; import { Button } from '@gitroom/react/form/button'; import { Input } from '@gitroom/react/form/input'; import { useToaster } from '@gitroom/react/toaster/toaster'; import clsx from 'clsx'; import { deleteDialog } from '@gitroom/react/helpers/delete.dialog'; import { useT } from '@gitroom/react/translation/get.transation.service.client'; import { AddEditModal } from '@gitroom/frontend/components/new-launch/add.edit.modal'; import { newDayjs } from '@gitroom/frontend/components/layout/set.timezone'; import { useModals } from '@gitroom/frontend/components/layout/new-modal'; const SaveSetModal: FC<{ postData: any; initialValue?: string; onSave: (name: string) => void; onCancel: () => void; }> = ({ postData, onSave, onCancel, initialValue }) => { const [name, setName] = useState(initialValue); const t = useT(); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (name.trim()) { onSave(name.trim()); } }; return (
); }; export const Sets: FC = () => { const fetch = useFetch(); const user = useUser(); const modal = useModals(); const toaster = useToaster(); const load = useCallback(async (path: string) => { return (await (await fetch(path)).json()).integrations; }, []); const { isLoading, data: integrations } = useSWR('/integrations/list', load, { revalidateOnFocus: false, revalidateOnReconnect: false, revalidateIfStale: false, revalidateOnMount: true, refreshWhenHidden: false, refreshWhenOffline: false, fallbackData: [], }); const list = useCallback(async () => { return (await fetch('/sets')).json(); }, []); const { data, mutate } = useSWR('sets', list, { revalidateOnFocus: false, revalidateOnReconnect: false, revalidateIfStale: false, revalidateOnMount: true, refreshWhenHidden: false, refreshWhenOffline: false, }); const addSet = useCallback( (params?: { id?: string; name?: string; content?: string }) => () => { modal.openModal({ id: 'add-edit-modal', closeOnClickOutside: false, removeLayout: true, closeOnEscape: false, withCloseButton: false, askClose: true, fullScreen: true, classNames: { modal: 'w-[100%] max-w-[1400px] text-textColor', }, children: (