forked from Calcium-Ion/new-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
6810ee0
commit 27eb358
Showing
4 changed files
with
119 additions
and
78 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
// 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=999'); | ||
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() { | ||
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('当前没有可用的启用令牌,请确认是否有令牌处于启用状态!'); | ||
window.location.href = '/token'; | ||
} | ||
setKeys(fetchedKeys); | ||
setIsLoading(false); | ||
|
||
const link = localStorage.getItem('chat_link'); | ||
setChatLink(link); | ||
|
||
const address = getServerAddress(); | ||
setServerAddress(address); | ||
}; | ||
|
||
loadAllData(); | ||
}, []); | ||
|
||
return { keys, chatLink, serverAddress, isLoading }; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
import React from 'react'; | ||
import { useTokenKeys } from '../../components/fetchTokenKeys'; | ||
|
||
const chat2page = () => { | ||
const { keys, chatLink, serverAddress, isLoading } = useTokenKeys(); | ||
|
||
const comLink = (key) => { | ||
if (!chatLink || !serverAddress || !key) return ''; | ||
return `${chatLink}/#/?settings={"key":"sk-${key}","url":"${encodeURIComponent(serverAddress)}"}`; | ||
}; | ||
|
||
if (keys.length > 0) { | ||
const redirectLink = comLink(keys[0]); | ||
if (redirectLink) { | ||
window.location.href = redirectLink; | ||
} | ||
} | ||
|
||
return ( | ||
<div> | ||
<h3>正在加载,请稍候...</h3> | ||
</div> | ||
); | ||
}; | ||
|
||
export default chat2page; |