chore: review

This commit is contained in:
Ephraim Atta-Duncan
2025-08-19 10:20:12 +00:00
parent 262d9efdd5
commit d6bc4bd0ba
8 changed files with 81 additions and 37 deletions

View File

@ -2,20 +2,12 @@
import React from 'react';
import { useLingui } from '@lingui/react';
import { DateTime } from 'luxon';
import type { DurationValue } from '@documenso/lib/utils/expiry';
import { cn } from '../lib/utils';
import { Input } from './input';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from './select';
export type TimeUnit = 'minutes' | 'hours' | 'days' | 'weeks' | 'months';
export interface DurationValue {
amount: number;
unit: TimeUnit;
}
export interface DurationSelectorProps {
value?: DurationValue;
onChange?: (value: DurationValue) => void;
@ -25,7 +17,7 @@ export interface DurationSelectorProps {
maxAmount?: number;
}
const TIME_UNITS: Array<{ value: TimeUnit; label: string; labelPlural: string }> = [
const TIME_UNITS: Array<{ value: string; label: string; labelPlural: string }> = [
{ value: 'minutes', label: 'Minute', labelPlural: 'Minutes' },
{ value: 'hours', label: 'Hour', labelPlural: 'Hours' },
{ value: 'days', label: 'Day', labelPlural: 'Days' },
@ -41,8 +33,6 @@ export const DurationSelector = ({
minAmount = 1,
maxAmount = 365,
}: DurationSelectorProps) => {
const { _ } = useLingui();
const handleAmountChange = (event: React.ChangeEvent<HTMLInputElement>) => {
const amount = parseInt(event.target.value, 10);
if (!isNaN(amount) && amount >= minAmount && amount <= maxAmount) {
@ -50,11 +40,11 @@ export const DurationSelector = ({
}
};
const handleUnitChange = (unit: TimeUnit) => {
const handleUnitChange = (unit: string) => {
onChange?.({ ...value, unit });
};
const getUnitLabel = (unit: TimeUnit, amount: number) => {
const getUnitLabel = (unit: string, amount: number) => {
const unitConfig = TIME_UNITS.find((u) => u.value === unit);
if (!unitConfig) return unit;
@ -87,20 +77,3 @@ export const DurationSelector = ({
</div>
);
};
export const calculateExpiryDate = (duration: DurationValue, fromDate: Date = new Date()): Date => {
switch (duration.unit) {
case 'minutes':
return DateTime.fromJSDate(fromDate).plus({ minutes: duration.amount }).toJSDate();
case 'hours':
return DateTime.fromJSDate(fromDate).plus({ hours: duration.amount }).toJSDate();
case 'days':
return DateTime.fromJSDate(fromDate).plus({ days: duration.amount }).toJSDate();
case 'weeks':
return DateTime.fromJSDate(fromDate).plus({ weeks: duration.amount }).toJSDate();
case 'months':
return DateTime.fromJSDate(fromDate).plus({ months: duration.amount }).toJSDate();
default:
return DateTime.fromJSDate(fromDate).plus({ days: duration.amount }).toJSDate();
}
};