fetchTokenKeys.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. // src/hooks/useTokenKeys.js
  2. import { useEffect, useState } from 'react';
  3. import { API, showError } from '../helpers';
  4. async function fetchTokenKeys() {
  5. try {
  6. const response = await API.get('/api/token/?p=0&size=100');
  7. const { success, data } = response.data;
  8. if (success) {
  9. const activeTokens = data.filter((token) => token.status === 1);
  10. return activeTokens.map((token) => token.key);
  11. } else {
  12. throw new Error('Failed to fetch token keys');
  13. }
  14. } catch (error) {
  15. console.error("Error fetching token keys:", error);
  16. return [];
  17. }
  18. }
  19. function getServerAddress() {
  20. let status = localStorage.getItem('status');
  21. let serverAddress = '';
  22. if (status) {
  23. try {
  24. status = JSON.parse(status);
  25. serverAddress = status.server_address || '';
  26. } catch (error) {
  27. console.error("Failed to parse status from localStorage:", error);
  28. }
  29. }
  30. if (!serverAddress) {
  31. serverAddress = window.location.origin;
  32. }
  33. return serverAddress;
  34. }
  35. export function useTokenKeys(id) {
  36. const [keys, setKeys] = useState([]);
  37. // const [chatLink, setChatLink] = useState('');
  38. const [serverAddress, setServerAddress] = useState('');
  39. const [isLoading, setIsLoading] = useState(true);
  40. useEffect(() => {
  41. const loadAllData = async () => {
  42. const fetchedKeys = await fetchTokenKeys();
  43. if (fetchedKeys.length === 0) {
  44. showError('当前没有可用的启用令牌,请确认是否有令牌处于启用状态!');
  45. setTimeout(() => {
  46. window.location.href = '/token';
  47. }, 1500); // 延迟 1.5 秒后跳转
  48. }
  49. setKeys(fetchedKeys);
  50. setIsLoading(false);
  51. // setChatLink(link);
  52. const address = getServerAddress();
  53. setServerAddress(address);
  54. };
  55. loadAllData();
  56. }, []);
  57. return { keys, serverAddress, isLoading };
  58. }