Files
console-dev/app/lib/purchase-limit-state.js
T
2026-11-06 00:04:38 +08:00

49 lines
1.2 KiB
JavaScript

import { ref } from "vue";
function t(t) {
let n = ref(!1),
r = ref(!1),
i = ref(!1),
a = ref(``),
o = 0;
function s() {
(o++, (n.value = !1), (r.value = !1), (i.value = !1), (a.value = ``));
}
async function c(e) {
let s = ++o;
((n.value = !0), (r.value = !1), (i.value = !1), (a.value = ``));
try {
let n = await t(e);
if (s !== o) return;
if (
!n ||
typeof n != `object` ||
!(`allowed` in n) ||
typeof n.allowed != `boolean` ||
!(`message` in n) ||
typeof n.message != `string`
)
throw Error(`限购检查暂时不可用,请重试`);
((i.value = n.allowed),
(a.value = n.allowed
? ``
: n.message || `此商品已达到购买限制,请调整数量后重试`));
} catch (e) {
s === o &&
(a.value =
(e instanceof Error ? e.message : ``) ||
`限购检查暂时不可用,请重试`);
} finally {
s === o && ((n.value = !1), (r.value = !0));
}
}
return {
pending: n,
checked: r,
allowed: i,
message: a,
check: c,
reset: s,
};
}
export { t };