Files
new-api/web/src/components/fetchTokenKeys.js

68 lines
1.8 KiB
JavaScript
Raw Normal View History

2024-08-17 16:17:24 +00:00
// src/hooks/useTokenKeys.js
import { useEffect, useState } from 'react';
import { API, showError } from '../helpers';
async function fetchTokenKeys() {
try {
2024-10-12 21:06:49 +08:00
const response = await API.get('/api/token/?p=0&size=100');
2024-08-17 16:17:24 +00:00
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;
}
2024-10-12 21:06:49 +08:00
export function useTokenKeys(id) {
2024-08-17 16:17:24 +00:00
const [keys, setKeys] = useState([]);
2024-10-12 21:06:49 +08:00
// const [chatLink, setChatLink] = useState('');
2024-08-17 16:17:24 +00:00
const [serverAddress, setServerAddress] = useState('');
const [isLoading, setIsLoading] = useState(true);
useEffect(() => {
const loadAllData = async () => {
const fetchedKeys = await fetchTokenKeys();
if (fetchedKeys.length === 0) {
showError('当前没有可用的启用令牌,请确认是否有令牌处于启用状态!');
2024-08-17 16:59:31 +00:00
setTimeout(() => {
window.location.href = '/token';
}, 1500); // 延迟 1.5 秒后跳转
2024-08-17 16:17:24 +00:00
}
setKeys(fetchedKeys);
setIsLoading(false);
2024-10-12 21:06:49 +08:00
// setChatLink(link);
2024-08-17 16:17:24 +00:00
const address = getServerAddress();
setServerAddress(address);
};
loadAllData();
}, []);
2024-10-12 21:06:49 +08:00
return { keys, serverAddress, isLoading };
2024-08-17 16:17:24 +00:00
}