Files
console-dev/app/lib/useWithdrawAvailability.js

53 lines
1.5 KiB
JavaScript

/** 余额/推广提现入口可用性;按场景分别缓存规则,复用提现对话框中的规则判定。 */
import { computed } from "vue";
import { useState } from "#app";
import { useApi } from "~/lib/auth.js";
import { n as WithdrawDialog_n } from "~/components/WithdrawDialog.vue";
function i(i = ``) {
let a = useState(
`withdraw-availability:${i ? `recommend` : `credit`}`,
() => ({
rule: null,
loading: !1,
loaded: !1,
error: ``,
}),
),
o = computed(() => WithdrawDialog_n(a.value.rule, i ? `recommend` : ``)),
s = computed(() => a.value.loading),
c = computed(() => a.value.loaded),
l = computed(() => a.value.error);
// 已成功加载默认不重取,e 可强制刷新;失败保持 loaded=false,允许后续重试。
async function u(e = !1) {
if (!(a.value.loading || (a.value.loaded && !e))) {
((a.value.loading = !0), (a.value.error = ``));
try {
let e = await useApi().get(
`/withdraw/rule/credit`,
i
? {
scene: `recommend`,
}
: void 0,
);
((a.value.rule = e ?? null), (a.value.loaded = !0));
} catch (e) {
((a.value.rule = null),
(a.value.loaded = !1),
(a.value.error =
e instanceof Error ? e.message : `加载提现设置失败`));
} finally {
a.value.loading = !1;
}
}
}
return {
enabled: o,
loading: s,
loaded: c,
error: l,
load: u,
};
}
export { i as t };