# All files / src/snackbar useToast.ts

0% Statements 0/33
0% Branches 0/1
0% Functions 0/1
0% Lines 0/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    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
    28
    29
    30
    31
    32
    33
    34

     import { useEffect } from "react";
    import { usePageInactive } from "../usePageInactive";
    import { useToastManager } from "./ToastManagerProvider";

    export interface ToastHookOptions {
      toastId: string;
      visible: boolean;
    }

    export interface ToastHookImplementation {
      //
    }
    export function useToast(options: ToastHookOptions): ToastHookImplementation {
      const { toastId, visible } = options;

      const toastManager = useToastManager();

      useEffect(() => {
        return () => {
          toastManager.clearTimer(toastId);
        };
      }, [toastManager, toastId]);
      usePageInactive({
        disabled: !visible,
        onChange(active) {
          if (active) {
            toastManager.resumeRemoveTimeout(toastId);
          } else {
            toastManager.pauseRemoveTimeout(toastId);
          }
        },
      });
    }