summaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/hooks/useCopiedIndicator.ts
blob: 18ad793486652961b308ad664f7bbb3d749d00f3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { useCallback, useRef, useState } from "react";

const TIMEOUT = 2000;

export const useCopyStatus = () => {
  const [copyStatus, setCopyStatus] = useState<"success" | null>(null);
  const timeoutRef = useRef<number>(0);

  const onCopy = () => {
    clearTimeout(timeoutRef.current);
    setCopyStatus("success");

    timeoutRef.current = window.setTimeout(() => {
      setCopyStatus(null);
    }, TIMEOUT);
  };

  const resetCopyStatus = useCallback(() => {
    setCopyStatus(null);
  }, []);

  return {
    copyStatus,
    resetCopyStatus,
    onCopy,
  };
};