Problem
Time formatting logic is scattered across multiple files:
popup.tsx (lines 232-274):
formatTimeRemaining() - formats countdown time
formatSnoozeTime() - formats snooze timestamp
popup.tsx (lines 292-301):
parsePrice() - parses price strings
formatMoney() - formats currency
utils/time.ts:
formatDuration() - formats duration
Solution
Create unified utilities module:
// utils/formatters.ts
export const timeFormatters = {
formatTimeRemaining(reminderTime: number): string { ... },
formatSnoozeTime(timestamp: number): string { ... },
formatDuration(durationMs: number): string { ... }
}
export const currencyFormatters = {
parsePrice(priceString: string | null): number { ... },
formatMoney(amount: number, currency: string = "$"): string { ... }
}
Benefits
- Single source of truth for formatting
- Better organized and discoverable
- Easier to test
- Consistent formatting across the app
Priority
Medium
Problem
Time formatting logic is scattered across multiple files:
popup.tsx (lines 232-274):
formatTimeRemaining()- formats countdown timeformatSnoozeTime()- formats snooze timestamppopup.tsx (lines 292-301):
parsePrice()- parses price stringsformatMoney()- formats currencyutils/time.ts:
formatDuration()- formats durationSolution
Create unified utilities module:
Benefits
Priority
Medium