| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // src/hooks/useTokenKeys.js
- import { useEffect, useState } from 'react';
- import { API, showError } from '../helpers';
- async function fetchTokenKeys() {
- try {
- const response = await API.get('/api/token/?p=0&size=100');
- const { success, data } = response.data;
- if (success) {
- const activeTokens = data.filter((token) => token.status === 1);
- return activeTokens.map((token) => token.key);
- } else {
- throw new Error('Failed to fetch token keys');
- }
- } catch (error) {
- console.error("Error fetching token keys:", error);
- return [];
- }
- }
- function getServerAddress() {
- let status = localStorage.getItem('status');
- let serverAddress = '';
- if (status) {
- try {
- status = JSON.parse(status);
- serverAddress = status.server_address || '';
- } catch (error) {
- console.error("Failed to parse status from localStorage:", error);
- }
- }
- if (!serverAddress) {
- serverAddress = window.location.origin;
- }
- return serverAddress;
- }
- export function useTokenKeys(id) {
- const [keys, setKeys] = useState([]);
- // const [chatLink, setChatLink] = useState('');
- const [serverAddress, setServerAddress] = useState('');
- const [isLoading, setIsLoading] = useState(true);
- useEffect(() => {
- const loadAllData = async () => {
- const fetchedKeys = await fetchTokenKeys();
- if (fetchedKeys.length === 0) {
- showError('当前没有可用的启用令牌,请确认是否有令牌处于启用状态!');
- setTimeout(() => {
- window.location.href = '/token';
- }, 1500); // 延迟 1.5 秒后跳转
- }
- setKeys(fetchedKeys);
- setIsLoading(false);
- // setChatLink(link);
- const address = getServerAddress();
- setServerAddress(address);
- };
- loadAllData();
- }, []);
- return { keys, serverAddress, isLoading };
- }
|