import React, { useEffect, useState } from 'react'; import { Button, Form, Header, Segment } from 'semantic-ui-react'; import { useParams } from 'react-router-dom'; import { API, isAdmin, showError, showSuccess, timestamp2string } from '../../helpers'; const EditToken = () => { const params = useParams(); const tokenId = params.id; const isEdit = tokenId !== undefined; const [loading, setLoading] = useState(isEdit); const originInputs = { name: '', remain_quota: 0, expired_time: -1, unlimited_quota: false }; const isAdminUser = isAdmin(); const [inputs, setInputs] = useState(originInputs); const { name, remain_quota, expired_time, unlimited_quota } = inputs; const handleInputChange = (e, { name, value }) => { setInputs((inputs) => ({ ...inputs, [name]: value })); }; const setExpiredTime = (month, day, hour, minute) => { let now = new Date(); let timestamp = now.getTime() / 1000; let seconds = month * 30 * 24 * 60 * 60; seconds += day * 24 * 60 * 60; seconds += hour * 60 * 60; seconds += minute * 60; if (seconds !== 0) { timestamp += seconds; setInputs({ ...inputs, expired_time: timestamp2string(timestamp) }); } else { setInputs({ ...inputs, expired_time: -1 }); } }; const setUnlimitedQuota = () => { setInputs({ ...inputs, unlimited_quota: !unlimited_quota }); }; const loadToken = async () => { let res = await API.get(`/api/token/${tokenId}`); const { success, message, data } = res.data; if (success) { if (data.expired_time !== -1) { data.expired_time = timestamp2string(data.expired_time); } setInputs(data); } else { showError(message); } setLoading(false); }; useEffect(() => { if (isEdit) { loadToken().then(); } }, []); const submit = async () => { if (!isEdit && inputs.name === '') return; let localInputs = inputs; localInputs.remain_quota = parseInt(localInputs.remain_quota); if (localInputs.expired_time !== -1) { let time = Date.parse(localInputs.expired_time); if (isNaN(time)) { showError('过期时间格式错误!'); return; } localInputs.expired_time = Math.ceil(time / 1000); } let res; if (isEdit) { res = await API.put(`/api/token/`, { ...localInputs, id: parseInt(tokenId) }); } else { res = await API.post(`/api/token/`, localInputs); } const { success, message } = res.data; if (success) { if (isEdit) { showSuccess('令牌更新成功!'); } else { showSuccess('令牌创建成功!'); setInputs(originInputs); } } else { showError(message); } }; return ( <>
{isEdit ? '更新令牌信息' : '创建新的令牌'}
{ isAdminUser && <> }
); }; export default EditToken;