All files / Rindu/hooks useHeader.ts

14.28% Statements 3/21
0% Branches 0/4
0% Functions 0/3
14.28% Lines 3/21

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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 6619x   19x 19x                                                                                                                            
import { useEffect } from "react";
 
import { useCustomContext } from "./useCustomContext";
import HeaderContext, { IHeaderContext } from "context/HeaderContext";
 
export function useHeader(
  options?: Partial<{
    showOnFixed: boolean;
    alwaysDisplayColor: boolean;
    disableOpacityChange: boolean;
    disableBackground: boolean;
  }>
): Omit<
  IHeaderContext,
  | "setAlwaysDisplayColor"
  | "setDisableBackground"
  | "setDisplayOnFixed"
  | "setDisableOpacityChange"
> {
  const {
    setElement,
    setDisplayOnFixed,
    setAlwaysDisplayColor,
    setDisableOpacityChange,
    setDisableBackground,
    ...context
  } = useCustomContext(HeaderContext);
 
  useEffect(() => {
    Iif (options?.showOnFixed) {
      setDisplayOnFixed(options.showOnFixed);
    }
    Iif (options?.alwaysDisplayColor) {
      setAlwaysDisplayColor(options.alwaysDisplayColor);
    }
    Iif (options?.disableOpacityChange) {
      setDisableOpacityChange(options?.disableOpacityChange);
    }
    Iif (options?.disableBackground) {
      setDisableBackground(options?.disableBackground);
    }
    return () => {
      setDisplayOnFixed(false);
      setAlwaysDisplayColor(false);
      setDisableOpacityChange(false);
      setDisableBackground(false);
      setElement(null);
    };
  }, [
    options?.alwaysDisplayColor,
    options?.disableOpacityChange,
    options?.showOnFixed,
    options?.disableBackground,
    setAlwaysDisplayColor,
    setDisableOpacityChange,
    setDisplayOnFixed,
    setDisableBackground,
    setElement,
  ]);
 
  return {
    setElement,
    ...context,
  };
}