feat: chart history on browser

This commit is contained in:
hamster1963
2024-12-25 11:03:11 +08:00
parent 1a1ceb4665
commit 112607740a
5 changed files with 399 additions and 132 deletions

View File

@@ -0,0 +1,26 @@
import { NezhaWebsocketResponse } from "@/types/nezha-api"
import { useEffect, useState } from "react"
export function useChartHistory<T>(
messageHistory: { data: string }[],
serverId: number,
formatFn: (wsData: NezhaWebsocketResponse, serverId: number) => T | null,
) {
const [data, setData] = useState<T[]>([])
useEffect(() => {
if (messageHistory.length > 0 && data.length === 0) {
const historyData = messageHistory
.map((msg) => {
const wsData = JSON.parse(msg.data) as NezhaWebsocketResponse
return formatFn(wsData, serverId)
})
.filter((item): item is T => item !== null)
.reverse()
setData(historyData)
}
}, [messageHistory])
return data
}