import { WritableComputedRef } from "vue";

export function useMinLoader(ms = 500): WritableComputedRef<boolean> {
  const loading = ref(false);

  const locked = ref(false);

  const minLoading = computed({
    get: () => loading.value,
    set: value => {
      if (value) {
        loading.value = true;

        if (!locked.value) {
          locked.value = true;
          setTimeout(() => {
            locked.value = false;
          }, ms);
        }
      }

      if (!value && !locked.value) {
        loading.value = false;
      } else if (!value && locked.value) {
        setTimeout(() => {
          loading.value = false;
        }, ms);
      }
    },
  });
  return minLoading;
}