import React, { useState } from 'react'; import { useTranslation } from 'next-i18next'; import Link from 'next/link'; import { apiv3Delete, apiv3Put } from '~/client/util/apiv3-client'; import { toastSuccess, toastError } from '~/client/util/toastr'; import styles from './PluginCard.module.scss'; type Props = { id: string, name: string, url: string, isEnalbed: boolean, mutate: () => void, desc?: string, } export const PluginCard = (props: Props): JSX.Element => { const { id, name, url, isEnalbed, desc, mutate, } = props; const { t } = useTranslation('admin'); const PluginCardButton = (): JSX.Element => { const [isEnabled, setState] = useState(isEnalbed); const onChangeHandler = async() => { try { if (isEnabled) { const reqUrl = `/plugins/${id}/deactivate`; const res = await apiv3Put(reqUrl); setState(!isEnabled); const pluginName = res.data.pluginName; toastSuccess(t('toaster.deactivate_plugin_success', { pluginName })); } else { const reqUrl = `/plugins/${id}/activate`; const res = await apiv3Put(reqUrl); setState(!isEnabled); const pluginName = res.data.pluginName; toastSuccess(t('toaster.activate_plugin_success', { pluginName })); } } catch (err) { toastError(err); } }; return (
); }; const PluginDeleteButton = (): JSX.Element => { const onClickPluginDeleteBtnHandler = async() => { const reqUrl = `/plugins/${id}/remove`; try { const res = await apiv3Delete(reqUrl); const pluginName = res.data.pluginName; toastSuccess(t('toaster.remove_plugin_success', { pluginName })); } catch (err) { toastError(err); } finally { mutate(); } }; return (
); }; return (

{name}

{desc}

); };