import http from '/admin/support/http'
import { Code } from '/admin/enum/app'
import Message from '/admin/support/message'
import { ref, watch } from 'vue'
import { isFunction } from '/admin/support/helper'

export function useDestroy(confirm: string = '确认删除吗') {
  const isDeleted = ref(false)

  const beforeDestroy = ref()

  // fetch list
  function destroy(path: string, id: string | number) {
    Message.confirm(confirm + '?', function () {
      // before destroy
      if (isFunction(beforeDestroy.value)) {
        beforeDestroy.value()
      }

      http
        .delete(path + '/' + id)
        .then(r => {
          if (r.data.code === Code.SUCCESS) {
            Message.success(r.data.message)
            isDeleted.value = true
          } else {
            Message.error(r.data.message)
          }
        })
        .finally(() => {})
    })
  }

  const deleted = (reset: Function) => {
    watch(isDeleted, function (value) {
      if (value) {
        isDeleted.value = false
        reset()
      }
    })
  }

  return { destroy, deleted }
}