rescribet/link-redux

View on GitHub
src/hooks/useProperty.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import {
  DataOpts,
  defaultPropertyOptions,
  LaxProperty,
  OutputTypeFromOpts,
  OutputTypeFromReturnType,
  ReturnType,
} from "../types";

import { useLinkRenderContext } from "./useLinkRenderContext";
import { useResourceProperty } from "./useResourceProperty";

export function useProperty<
  T extends DataOpts = DataOpts,
>(
  property: LaxProperty,
  opts?: T,
): OutputTypeFromOpts<T, OutputTypeFromReturnType<ReturnType.AllTerms>> {
  const optsOrDefault = opts || defaultPropertyOptions as T;
  const { subject } = useLinkRenderContext();

  return useResourceProperty(subject, property, optsOrDefault);
}