Files
auto-trade/stores/session-store.ts

47 lines
1.6 KiB
TypeScript
Raw Permalink Normal View History

/**
* @file stores/session-store.ts
* @description ( ) Zustand
* @remarks
* - [] Infrastructure/State
* - [ ] User Activity -> SessionStore -> LocalStorage
* - [ ] session-manager.tsx (Setter), session-timer.tsx (Getter)
* - [] localStorage를 (partialize )
*/
import { create } from "zustand";
import { persist, createJSONStorage } from "zustand/middleware";
/**
*
*/
interface SessionState {
/** 마지막 사용자 활동 시간 (Timestamp) */
lastActive: number;
/** 활동 시간 갱신 함수 */
setLastActive: (time: number) => void;
}
/**
* hook
* @returns {SessionState} lastActive, setLastActive
* @remarks persist /
* @see session-manager.tsx - setLastActive
* @see session-timer.tsx - lastActive
*/
export const useSessionStore = create<SessionState>()(
persist(
(set) => ({
// [State] 초기값: 스토어 생성 시점
lastActive: Date.now(),
// [Action] 활동 시간 업데이트
setLastActive: (time) => set({ lastActive: time }),
}),
{
name: "session-storage", // localStorage Key
storage: createJSONStorage(() => localStorage), // localStorage 사용
partialize: (state) => ({ lastActive: state.lastActive }),
},
),
);