import React, { useState, useEffect } from 'react'; import { Table, Tag, Space, Button, Modal, Checkbox, Input, Typography, Tooltip } from 'antd'; import { DeleteOutlined } from '@ant-design/icons'; import format from 'date-fns/format'; import { fetchData, ACCESS_TOKENS, DELETE_ACCESS_TOKEN, CREATE_ACCESS_TOKEN } from '../utils/apis'; const { Title, Paragraph } = Typography; const availableScopes = { CAN_SEND_SYSTEM_MESSAGES: { name: 'System messages', description: 'You can send official messages on behalf of the system', color: 'purple', }, CAN_SEND_MESSAGES: { name: 'User chat messages', description: 'You can send messages on behalf of a username', color: 'green', }, HAS_ADMIN_ACCESS: { name: 'Has admin access', description: 'Can perform administrative actions such as moderation, get server statuses, etc', color: 'red', }, }; function convertScopeStringToTag(scopeString) { if (!scopeString || !availableScopes[scopeString]) { return null; } const scope = availableScopes[scopeString]; return ( {scope.name} ); } function NewTokenModal(props) { const [selectedScopes, setSelectedScopes] = useState([]); const [name, setName] = useState(''); const scopes = Object.keys(availableScopes).map(function (key) { return { value: key, label: availableScopes[key].description }; }); function onChange(checkedValues) { setSelectedScopes(checkedValues); } function saveToken() { props.onOk(name, selectedScopes); // Clear the modal setSelectedScopes([]); setName(''); } const okButtonProps = { disabled: selectedScopes.length === 0 || name === '', }; function selectAll() { setSelectedScopes(Object.keys(availableScopes)); } return (

setName(input.currentTarget.value)} />

Select the permissions this access token will have. It cannot be edited after it's created.

); } export default function AccessTokens() { const [tokens, setTokens] = useState([]); const [isTokenModalVisible, setIsTokenModalVisible] = useState(false); const columns = [ { title: '', key: 'delete', render: (text, record) => (