import React, { useState, useEffect } from "react"; import { Table, Tag, Space, Button, Modal, Checkbox, Input, Typography, Tooltip } from 'antd'; import { DeleteOutlined, EyeTwoTone, EyeInvisibleOutlined } from '@ant-design/icons'; const { Title, Paragraph, Text } = Typography; import format from 'date-fns/format' import { fetchData, ACCESS_TOKENS, DELETE_ACCESS_TOKEN, CREATE_ACCESS_TOKEN, } from "../utils/apis"; 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) => (