import { deserializeWithContextAndRun, JsonObject } from '@win2win/shared';
import { LayoutView } from 'src/models';
import { ComputedRef, Ref, watch } from 'vue';
import { useRouter } from 'vue-router';
import { useContextParams } from './useContextParams';

export function useRedirectToFirstItem(layout: ComputedRef<LayoutView>, items: Ref<JsonObject[] | null>, count: Ref<number>) {
  const { contextParams } = useContextParams();
  const router = useRouter();

  watch(
    [layout, items],
    ([layoutValue, itemsValue]) => {
      const redirect = layoutValue.redirect;
      if (!redirect) return;

      const toFirstItem = () => {
        if (!itemsValue?.length) {
          return;
        }
        const firstItem = itemsValue[0]!;
        router.push('/captaciones/' + firstItem['ID_CAPTACION']);
      };
      const context = { ...contextParams.value, toFirstItem, router, count: count.value };
      deserializeWithContextAndRun(redirect, context);
    },
    { immediate: true }
  );
}
