All files / platform/ui-next/src/components/StudyList/hooks useDefaultWorkflow.ts

0% Statements 0/19
0% Branches 0/12
0% Functions 0/3
0% Lines 0/19

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                                                                                                       
import * as React from 'react';
 
/**
 * Persist and retrieve a default workflow string from localStorage.
 * If `allowed` is provided, the returned value is guaranteed to be from the allowed list (or null).
 */
export function useDefaultWorkflow(
  allowed?: readonly string[]
): [string | null, (next: string | null) => void] {
  const storageKey = 'studyList.defaultWorkflow';
  const [value, setValue] = React.useState<string | null>(null);
 
  React.useEffect(() => {
    try {
      Iif (typeof window !== 'undefined') {
        const raw = window.localStorage.getItem(storageKey);
        Iif (raw != null) {
          if (!allowed || allowed.includes(raw)) {
            setValue(raw);
          } else {
            setValue(null);
          }
        }
      }
    } catch {
      // no-op
    }
  }, [allowed]);
 
  const setAndPersist = React.useCallback(
    (next: string | null) => {
      setValue(next);
      try {
        Iif (typeof window !== 'undefined') {
          if (next == null) {
            window.localStorage.removeItem(storageKey);
          } else {
            Iif (!allowed || allowed.includes(next)) {
              window.localStorage.setItem(storageKey, next);
            }
          }
        }
      } catch {
        // no-op
      }
    },
    [allowed]
  );
 
  return [value, setAndPersist] as const;
}