import request from '@/utils/request.js'; export const normalizeAssetInfo = (data = {}) => ({ ...data, allowed_payment_methods: Array.isArray(data.allowed_payment_methods) ? data.allowed_payment_methods : [], real_name_status: data.real_name_status === undefined || data.real_name_status === null ? data.real_name_status : Number(data.real_name_status), realname_required: data.realname_required === undefined || data.realname_required === null ? data.realname_required : data.realname_required === true || data.realname_required === 1, days_until_final_expiry: data.days_until_final_expiry === null || data.days_until_final_expiry === undefined ? data.days_until_final_expiry : Number(data.days_until_final_expiry), is_expiring: data.is_expiring === undefined || data.is_expiring === null ? data.is_expiring : data.is_expiring === true || data.is_expiring === 1 }); export const isAssetRealNameCompleted = (assetInfo = {}) => { if (assetInfo.asset_type === 'device') { return (assetInfo.cards || []).some((card) => Number(card?.real_name_status) === 1); } return Number(assetInfo.real_name_status) === 1; }; export const hasActiveOrPendingPackage = async (identifier) => { const [pendingData, activeData] = await Promise.all([ assetApi.getPackageHistory(identifier, 1, 1, { status: 0 }), assetApi.getPackageHistory(identifier, 1, 1, { status: 1 }) ]); return [pendingData, activeData].some(data => Array.isArray(data?.items) && data.items.length > 0); }; export const assetApi = { getInfo(identifier) { return request({ url: '/api/c/v1/asset/info', method: 'GET', data: { identifier } }).then(normalizeAssetInfo); }, getPackageHistory(identifier, page, page_size, params = {}) { return request({ url: '/api/c/v1/asset/package-history', method: 'GET', data: { identifier, page, page_size, ...params } }); }, getPackages(identifier, packageType = '') { return request({ url: '/api/c/v1/asset/packages', method: 'GET', data: { identifier, ...(packageType ? { package_type: packageType } : {}) } }); }, refresh(identifier) { return request({ url: '/api/c/v1/asset/refresh', method: 'POST', data: { identifier } }); } };