Files
steipete--codexbar/Sources/CodexBarCore/Providers/Codex/CodexSpendControlLimitMapping.swift
T
2026-07-13 12:22:33 +08:00

26 lines
925 B
Swift

import Foundation
extension CodexUsageResponse.SpendControlLimitSnapshot {
func codexCreditLimitSnapshot(updatedAt: Date) -> CodexCreditLimitSnapshot? {
guard let limit, limit > 0 else { return nil }
let used: Double = if let used {
used
} else if let remainingPercent {
limit * max(0, min(100, 100 - remainingPercent)) / 100
} else {
0
}
let remainingPercent = self.remainingPercent ?? max(0, min(100, 100 - (used / limit * 100)))
let resetsAt = self.resetsAt.flatMap { value -> Date? in
guard value > 0 else { return nil }
return Date(timeIntervalSince1970: TimeInterval(value))
}
return CodexCreditLimitSnapshot(
used: used,
limit: limit,
remainingPercent: remainingPercent,
resetsAt: resetsAt,
updatedAt: updatedAt)
}
}