mirror of
https://github.com/Such-Software/wowcheckout.git
synced 2026-10-17 05:51:45 +02:00
Minimal changes from upstream xmrcheckout to support Wownero: - Rate provider: Nonlogs WOW-BTC via Kraken BTC/USD - Subaddress derivation: Wownero network byte overrides (53/63/54) - Payment URI scheme: wownero: - Dockerfile: Wownero binaries from Codeberg - Display text: Monero→Wownero, XMR→WOW throughout UI - Default daemon: 192.168.88.235:34568 - Added wownero-logo.svg File and folder structure kept identical to upstream for easy sync.
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
type RelativeTimeInput = string | number | Date | null | undefined;
|
|
|
|
const relativeTimeFormatter = new Intl.RelativeTimeFormat("en", { numeric: "auto" });
|
|
|
|
const parseRelativeTime = (value: RelativeTimeInput) => {
|
|
if (value === null || value === undefined) {
|
|
return null;
|
|
}
|
|
const date = value instanceof Date ? value : new Date(value);
|
|
const timestamp = date.getTime();
|
|
if (Number.isNaN(timestamp)) {
|
|
return null;
|
|
}
|
|
return timestamp;
|
|
};
|
|
|
|
export const formatRelativeTime = (value: RelativeTimeInput) => {
|
|
const timestamp = parseRelativeTime(value);
|
|
if (timestamp === null) {
|
|
return null;
|
|
}
|
|
|
|
const diffSeconds = Math.round((timestamp - Date.now()) / 1000);
|
|
const absSeconds = Math.abs(diffSeconds);
|
|
if (absSeconds < 60) {
|
|
return relativeTimeFormatter.format(diffSeconds, "second");
|
|
}
|
|
|
|
const diffMinutes = Math.round(diffSeconds / 60);
|
|
if (Math.abs(diffMinutes) < 60) {
|
|
return relativeTimeFormatter.format(diffMinutes, "minute");
|
|
}
|
|
|
|
const diffHours = Math.round(diffMinutes / 60);
|
|
if (Math.abs(diffHours) < 24) {
|
|
return relativeTimeFormatter.format(diffHours, "hour");
|
|
}
|
|
|
|
const diffDays = Math.round(diffHours / 24);
|
|
if (Math.abs(diffDays) < 30) {
|
|
return relativeTimeFormatter.format(diffDays, "day");
|
|
}
|
|
|
|
const diffMonths = Math.round(diffDays / 30);
|
|
if (Math.abs(diffMonths) < 12) {
|
|
return relativeTimeFormatter.format(diffMonths, "month");
|
|
}
|
|
|
|
const diffYears = Math.round(diffDays / 365);
|
|
return relativeTimeFormatter.format(diffYears, "year");
|
|
};
|