feat: 添加货币管理功能,更新国际化支持,移除报表相关代码
This commit is contained in:
32
src/hooks/use-admin-currency-catalog.ts
Normal file
32
src/hooks/use-admin-currency-catalog.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect } from "react";
|
||||
|
||||
import { getAdminCurrencies } from "@/api/admin-currencies";
|
||||
import type { AdminCurrencyRow } from "@/types/api/admin-currency";
|
||||
|
||||
let cachedAdminCurrencies: AdminCurrencyRow[] = [];
|
||||
let inflightAdminCurrencyLoad: Promise<void> | null = null;
|
||||
|
||||
export function getCachedAdminCurrencies(): AdminCurrencyRow[] {
|
||||
return cachedAdminCurrencies;
|
||||
}
|
||||
|
||||
export function useAdminCurrencyCatalog() {
|
||||
useEffect(() => {
|
||||
if (cachedAdminCurrencies.length > 0 || inflightAdminCurrencyLoad !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
inflightAdminCurrencyLoad = getAdminCurrencies()
|
||||
.then((data) => {
|
||||
cachedAdminCurrencies = data.items;
|
||||
})
|
||||
.catch(() => {
|
||||
// 币种目录失败时回退默认 2 位小数,不阻断后台页面。
|
||||
})
|
||||
.finally(() => {
|
||||
inflightAdminCurrencyLoad = null;
|
||||
});
|
||||
}, []);
|
||||
}
|
||||
Reference in New Issue
Block a user