implement "caching"

This commit is contained in:
csehviktor
2025-07-15 04:30:42 +02:00
parent 5cc98e2b67
commit 12c2574df7
2 changed files with 11 additions and 8 deletions

View File

@@ -1,11 +1,14 @@
import type { WebsocketStatus } from "@/components/ConnectionStatus"; import type { WebsocketStatus } from "@/components/ConnectionStatus";
import type { StatusMessage } from "@/services/types"; import type { StatusMessage } from "@/services/types";
import { getLastMessage, setLastMessage } from "@/services/store";
import { initializeConnection } from "@/services/websocket"; import { initializeConnection } from "@/services/websocket";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
export function useWebsocket(url: string) { export function useWebsocket(url: string) {
const [status, setStatus] = useState<WebsocketStatus>(); const [status, setStatus] = useState<WebsocketStatus>();
const [message, setMessage] = useState<StatusMessage | null>(); const [message, setMessage] = useState<StatusMessage | null>(
getLastMessage(),
);
useEffect(() => { useEffect(() => {
initializeConnection(url, { initializeConnection(url, {
@@ -14,6 +17,7 @@ export function useWebsocket(url: string) {
setStatus("connected"); setStatus("connected");
setMessage(parsed); setMessage(parsed);
setLastMessage(parsed);
}, },
onOpen: () => setStatus("connecting"), onOpen: () => setStatus("connecting"),
onClose: () => setStatus("disconnected"), onClose: () => setStatus("disconnected"),

View File

@@ -2,15 +2,14 @@ import type { StatusMessage } from "@/services/types";
export type TimePeriod = "realtime" | "hour" | "day" | "week" | "month" | "all"; export type TimePeriod = "realtime" | "hour" | "day" | "week" | "month" | "all";
let data: StatusMessage[] = []; const realtimeData: StatusMessage[] = [];
const maxRealtimePoints = 50;
export function addDataPoint(value: StatusMessage) { export function getLastMessage(): StatusMessage | null {
data.push(value); return JSON.parse(localStorage.getItem("last_message")!) as StatusMessage;
if (data.length > maxRealtimePoints) {
data.shift();
} }
export function setLastMessage(message: StatusMessage) {
localStorage.setItem("last_message", JSON.stringify(message));
} }
export function addDataPoint(value: StatusMessage) { export function addDataPoint(value: StatusMessage) {