UNPKG

@revenuecat/purchases-ui-js

Version:

Web components for Paywalls. Powered by RevenueCat

67 lines (66 loc) 2.42 kB
/** * Formats a number with leading zero if it's less than 10 */ function formatWithZero(value) { return value < 10 ? `0${value}` : `${value}`; } /** * Formats a number without leading zero */ function formatWithoutZero(value) { return `${value}`; } /** * Calculates countdown values from a target date * Returns 8 countdown variables for use in Text components: * - count_days_with_zero / count_days_without_zero * - count_hours_with_zero / count_hours_without_zero * - count_minutes_with_zero / count_minutes_without_zero * - count_seconds_with_zero / count_seconds_without_zero */ export function calculateCountdownValues(targetDate) { const now = new Date(); const target = new Date(targetDate); const diffInMs = target.getTime() - now.getTime(); // If past target date, return all zeros if (diffInMs <= 0) { return { count_days_with_zero: "00", count_days_without_zero: "0", count_hours_with_zero: "00", count_hours_without_zero: "0", count_minutes_with_zero: "00", count_minutes_without_zero: "0", count_seconds_with_zero: "00", count_seconds_without_zero: "0", }; } // Calculate time units const totalSeconds = Math.floor(diffInMs / 1000); const totalMinutes = Math.floor(totalSeconds / 60); const totalHours = Math.floor(totalMinutes / 60); const totalDays = Math.floor(totalHours / 24); // Calculate remaining partial units (hours 0-23, minutes 0-59, seconds 0-59) const days = totalDays; const hours = totalHours % 24; const minutes = totalMinutes % 60; const seconds = totalSeconds % 60; return { count_days_with_zero: formatWithZero(days), count_days_without_zero: formatWithoutZero(days), count_hours_with_zero: formatWithZero(hours), count_hours_without_zero: formatWithoutZero(hours), count_minutes_with_zero: formatWithZero(minutes), count_minutes_without_zero: formatWithoutZero(minutes), count_seconds_with_zero: formatWithZero(seconds), count_seconds_without_zero: formatWithoutZero(seconds), }; } /** * Checks if a countdown has ended (target date is in the past) */ export function hasCountdownEnded(targetDate) { const now = new Date(); const target = new Date(targetDate); return target.getTime() <= now.getTime(); }