import * as R from "ramda";

import {
  ZappPipesEntryContext,
  ZappPipesScreenContext,
  ZappPipesSearchContext,
} from "../../../Contexts";

export function riverIsCurrentRoute(riverId, route) {
  const routeRiverId = R.compose(R.last, R.split("/"))(route);

  return typeof riverId === "undefined" || routeRiverId === riverId;
}

export function usePipesContexts(
  riverId: string,
  route: string
): {
  entryContext: ReturnType<typeof ZappPipesEntryContext.useZappPipesContext>[0];
  searchContext: string;
  screenContext: ZappRiver;
} {
  const isNestedScreen = !riverIsCurrentRoute(riverId, route);

  const routeForEntry = isNestedScreen ? `${route}/river/${riverId}` : route;

  const [entryContext] = ZappPipesEntryContext.useZappPipesContext(
    routeForEntry,
    isNestedScreen
  );

  const [searchContext] = ZappPipesSearchContext.useZappPipesContext();
  const [screenContext] = ZappPipesScreenContext.useZappPipesContext();

  return {
    entryContext,
    searchContext,
    screenContext,
  };
}
