Add subscription info refresh endpoint and UI stats
This commit is contained in:
@@ -34,3 +34,31 @@ export function localProxyUrls(port = 8082) {
|
||||
http: `http://127.0.0.1:${port}`,
|
||||
};
|
||||
}
|
||||
|
||||
export function subscriptionUsage(userInfo = {}) {
|
||||
const upload = Math.max(0, Number(userInfo.upload) || 0);
|
||||
const download = Math.max(0, Number(userInfo.download) || 0);
|
||||
const total = Math.max(0, Number(userInfo.total) || 0);
|
||||
const used = upload + download;
|
||||
|
||||
return {
|
||||
upload,
|
||||
download,
|
||||
total,
|
||||
used,
|
||||
percent: total ? Math.min(100, (used / total) * 100) : null,
|
||||
expiresAt: userInfo.expire ? new Date(Number(userInfo.expire) * 1000) : null,
|
||||
};
|
||||
}
|
||||
|
||||
export function subscriptionDaysLeft(expiresAt, now = Date.now()) {
|
||||
const days = Math.ceil((expiresAt?.getTime() - now) / 86_400_000);
|
||||
if (!Number.isFinite(days)) return '';
|
||||
if (days <= 0) return 'срок истёк';
|
||||
const mod10 = days % 10;
|
||||
const mod100 = days % 100;
|
||||
const unit = mod10 === 1 && mod100 !== 11
|
||||
? 'день'
|
||||
: mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14) ? 'дня' : 'дней';
|
||||
return `${days === 1 ? 'остался' : 'осталось'} ${days} ${unit}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user