Expiry should round up

This commit is contained in:
Eric Bailey
2025-02-17 11:00:37 -06:00
parent 6f82dee9cf
commit 14fe84123f
3 changed files with 22 additions and 9 deletions
@@ -123,7 +123,7 @@ function Label({
const sourceName = labeler const sourceName = labeler
? sanitizeHandle(labeler.creator.handle, '@') ? sanitizeHandle(labeler.creator.handle, '@')
: label.src : label.src
const timeDiff = useGetTimeAgo() const timeDiff = useGetTimeAgo({future: true})
return ( return (
<View <View
style={[ style={[
@@ -42,7 +42,7 @@ function ModerationDetailsDialogInner({
const {_} = useLingui() const {_} = useLingui()
const desc = useModerationCauseDescription(modcause) const desc = useModerationCauseDescription(modcause)
const {currentAccount} = useSession() const {currentAccount} = useSession()
const timeDiff = useGetTimeAgo() const timeDiff = useGetTimeAgo({future: true})
let name let name
let description let description
+20 -7
View File
@@ -19,7 +19,7 @@ const HOUR = MINUTE * 60
const DAY = HOUR * 24 const DAY = HOUR * 24
const MONTH_30 = DAY * 30 const MONTH_30 = DAY * 30
export function useGetTimeAgo() { export function useGetTimeAgo({future = false}: {future?: boolean} = {}) {
const {i18n} = useLingui() const {i18n} = useLingui()
return useCallback( return useCallback(
( (
@@ -27,10 +27,10 @@ export function useGetTimeAgo() {
later: number | string | Date, later: number | string | Date,
options?: {format: DateDiffFormat}, options?: {format: DateDiffFormat},
) => { ) => {
const diff = dateDiff(earlier, later) const diff = dateDiff(earlier, later, future ? 'up' : 'down')
return formatDateDiff({diff, i18n, format: options?.format}) return formatDateDiff({diff, i18n, format: options?.format})
}, },
[i18n], [i18n, future],
) )
} }
@@ -45,6 +45,7 @@ export function useGetTimeAgo() {
export function dateDiff( export function dateDiff(
earlier: number | string | Date, earlier: number | string | Date,
later: number | string | Date, later: number | string | Date,
rounding: 'up' | 'down' = 'down',
): DateDiff { ): DateDiff {
let diff = { let diff = {
value: 0, value: 0,
@@ -65,25 +66,37 @@ export function dateDiff(
unit: 'second' as DateDiff['unit'], unit: 'second' as DateDiff['unit'],
} }
} else if (diffSeconds < HOUR) { } else if (diffSeconds < HOUR) {
const value = Math.floor(diffSeconds / MINUTE) const value =
rounding === 'up'
? Math.ceil(diffSeconds / MINUTE)
: Math.floor(diffSeconds / MINUTE)
diff = { diff = {
value, value,
unit: 'minute' as DateDiff['unit'], unit: 'minute' as DateDiff['unit'],
} }
} else if (diffSeconds < DAY) { } else if (diffSeconds < DAY) {
const value = Math.floor(diffSeconds / HOUR) const value =
rounding === 'up'
? Math.ceil(diffSeconds / HOUR)
: Math.floor(diffSeconds / HOUR)
diff = { diff = {
value, value,
unit: 'hour' as DateDiff['unit'], unit: 'hour' as DateDiff['unit'],
} }
} else if (diffSeconds < MONTH_30) { } else if (diffSeconds < MONTH_30) {
const value = Math.floor(diffSeconds / DAY) const value =
rounding === 'up'
? Math.ceil(diffSeconds / DAY)
: Math.floor(diffSeconds / DAY)
diff = { diff = {
value, value,
unit: 'day' as DateDiff['unit'], unit: 'day' as DateDiff['unit'],
} }
} else { } else {
const value = Math.floor(diffSeconds / MONTH_30) const value =
rounding === 'up'
? Math.ceil(diffSeconds / MONTH_30)
: Math.floor(diffSeconds / MONTH_30)
diff = { diff = {
value, value,
unit: 'month' as DateDiff['unit'], unit: 'month' as DateDiff['unit'],