codexmobile-relay / client /src /app-quota-utils.js
Codex
deploy: CodexMobile Relay
90f0300
Raw
History Blame Contribute Delete
1.19 kB
export function quotaPercent(value) {
const percent = Number(value);
if (!Number.isFinite(percent)) {
return null;
}
return Math.max(0, Math.min(100, percent));
}
export function quotaRemainingPercent(quotaWindow) {
if (!quotaWindow || typeof quotaWindow !== 'object') {
return null;
}
const display = quotaPercent(quotaWindow.displayPercent ?? quotaWindow.display_percent);
if (display !== null) {
return display;
}
const explicit = quotaPercent(quotaWindow.remainingPercent ?? quotaWindow.remaining_percent);
if (explicit !== null) {
return explicit;
}
const used = quotaPercent(quotaWindow.usedPercent ?? quotaWindow.used_percent);
return used === null ? null : Math.max(0, Math.min(100, 100 - used));
}
export function formatQuotaPercent(quotaWindow) {
const percent = quotaRemainingPercent(quotaWindow);
return percent === null ? '--' : `${Math.round(percent)}%`;
}
export function quotaToneClass(percent) {
if (percent === null) {
return 'is-low';
}
if (percent >= 80) {
return 'is-healthy';
}
if (percent >= 60) {
return 'is-medium';
}
if (percent >= 40) {
return 'is-warning';
}
return 'is-low';
}