import { isReactive, isRef } from 'vue'

const setLoading = (loading: any, val:any) => {
  if (loading !== undefined && isRef(loading)) {
    loading.value = val
  } else if (loading !== undefined && isReactive(loading)) {
    loading.loading = val
  }
}

export const useAsync = async (func: Promise<any>, loading: any): Promise<any> => {
  setLoading(loading, true)
  return await func.finally(() => setLoading(loading, false))
}
