Files
vfxreview/hooks/use-frame-comments.ts
T
twotalesanimation 0fbe856dce Initial commit
2026-05-19 22:20:29 +02:00

45 lines
1.2 KiB
TypeScript

"use client";
import { useMemo } from "react";
import type { CommentWithReplies } from "@/types";
export function useFrameComments(comments: CommentWithReplies[], frameNumber: number) {
const frameComments = useMemo(
() => comments.filter((c) => c.frameNumber === frameNumber),
[comments, frameNumber]
);
const nearbyComments = useMemo(
() => comments.filter((c) => Math.abs(c.frameNumber - frameNumber) <= 3 && c.frameNumber !== frameNumber),
[comments, frameNumber]
);
const unresolvedCount = useMemo(
() => comments.filter((c) => !c.isResolved).length,
[comments]
);
const commentsByFrame = useMemo(() => {
const map = new Map<number, CommentWithReplies[]>();
comments.forEach((c) => {
const existing = map.get(c.frameNumber) ?? [];
map.set(c.frameNumber, [...existing, c]);
});
return map;
}, [comments]);
const hasCommentAtFrame = (frame: number) => commentsByFrame.has(frame);
const getCommentsAtFrame = (frame: number) =>
commentsByFrame.get(frame) ?? [];
return {
frameComments,
nearbyComments,
unresolvedCount,
commentsByFrame,
hasCommentAtFrame,
getCommentsAtFrame,
};
}