arena-learning / studyArena /lib /hooks /use-history-snapshot.ts
Nitish kumar
Upload folder using huggingface_hub
c20f20c verified
import { useCallback } from 'react';
import { useSnapshotStore } from '@/lib/store/snapshot';
/**
* Hook for managing history snapshots (undo/redo)
*
* Usage:
* ```tsx
* const { addHistorySnapshot, canUndo, canRedo, undo, redo } = useHistorySnapshot();
*
* // After making changes
* await addHistorySnapshot();
*
* // Undo/Redo
* if (canUndo) await undo();
* if (canRedo) await redo();
* ```
*/
export function useHistorySnapshot() {
const addSnapshot = useSnapshotStore((state) => state.addSnapshot);
const undo = useSnapshotStore((state) => state.undo);
const redo = useSnapshotStore((state) => state.redo);
const canUndo = useSnapshotStore((state) => state.canUndo);
const canRedo = useSnapshotStore((state) => state.canRedo);
/**
* Add a snapshot to the history
* Call this after any significant state change that should be undoable
*/
const addHistorySnapshot = useCallback(async () => {
await addSnapshot();
}, [addSnapshot]);
return {
addHistorySnapshot,
undo,
redo,
canUndo: canUndo(),
canRedo: canRedo(),
};
}