| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import dayjs from 'dayjs'
- import { ALL_TIMEZONES } from './PITR.constants'
- import type { Time } from './PITR.types'
- import type { ProjectSelectedAddon } from '@/data/subscriptions/types'
- import { guessLocalTimezone } from '@/lib/dayjs'
- export const getPITRRetentionDuration = (addons: ProjectSelectedAddon[]) => {
- const pitrAddon = addons.find((addon) => addon.type === 'pitr')
- if (!pitrAddon) return 0
- return (pitrAddon.variant.meta as any)?.backup_duration_days ?? 0
- }
- export const getDatesBetweenRange = (startDate: dayjs.Dayjs, endDate: dayjs.Dayjs) => {
- const diff = endDate.diff(startDate, 'day')
- return Array.from({ length: diff }, (_, index) => startDate.add(index, 'day'))
- }
- export const getClientTimezone = () => {
- const defaultTz = guessLocalTimezone()
- const utcTz = ALL_TIMEZONES.find((option) => option.value === 'UTC')
- const timezone = ALL_TIMEZONES.find((option) => {
- if (option.utc.includes(defaultTz)) return option
- else return undefined
- })
- return timezone ?? (utcTz || ALL_TIMEZONES[0])
- }
- export const formatNumberToTwoDigits = (number: Number) => {
- return number.toLocaleString('en-US', {
- minimumIntegerDigits: 2,
- useGrouping: false,
- })
- }
- // Formats Time object to hh:mm:ss
- export const formatTimeToTimeString = (time: Time) => {
- return `${formatNumberToTwoDigits(time.h)}:${formatNumberToTwoDigits(
- time.m
- )}:${formatNumberToTwoDigits(time.s)}`
- }
- export function constrainDateToRange(current: dayjs.Dayjs, lower: dayjs.Dayjs, upper: dayjs.Dayjs) {
- if (current.isBefore(lower)) {
- return lower
- }
- if (current.isAfter(upper)) {
- return upper
- }
- return current
- }
|