69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
// 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 };
|
|
}
|