mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 14:55:43 +00:00
606a150e01
* feat(settings): clock format setting (Auto / 24h / 12h) Reported on the Psysonic Discord — the Queue side panel's ETA label and the sleep-timer preview both render via `formatClockTime`, which just calls `toLocaleTimeString` and so follows the user's system locale. On en-US that means AM/PM, with no in-app way out. Add a tri-state **Clock Format** setting under **Settings → System → App Behavior**: * `auto` (default) — keep the existing locale-driven behaviour, so bestehende installs are unaffected on first launch. * `24h` — force 24-hour wall-clock output everywhere `formatClockTime` is used. * `12h` — force AM/PM output. Wired through `authStore` (`clockFormat`, `setClockFormat`), exposed via `CustomSelect` in `SystemTab`, and threaded into the two consumers (`QueueHeader`, `PlaybackDelayModal`) so they re-render on change. `formatClockTime` itself stays a pure helper — it accepts the setting as an optional second argument and maps it to `hour12`. Locale coverage: all nine bundled locales (en, de, es, fr, nl, nb, ru, zh, ro) get the four new settings strings. Pin tests added for the `setClockFormat` setter and the `hour12` mapping in `formatClockTime`. * docs(changelog): clock format setting + contributors (PR #742)
16 lines
588 B
TypeScript
16 lines
588 B
TypeScript
import type { ClockFormat } from '../../store/authStoreTypes';
|
|
|
|
/**
|
|
* Localized wall-clock `HH:MM` for a timestamp (sleep-timer / queue-ETA labels).
|
|
* `clockFormat` overrides the system locale's `hour12` default — pass `'auto'`
|
|
* or omit to keep locale-driven behaviour.
|
|
*/
|
|
export function formatClockTime(timestampMs: number, clockFormat?: ClockFormat): string {
|
|
const hour12 = clockFormat === '24h' ? false : clockFormat === '12h' ? true : undefined;
|
|
return new Date(timestampMs).toLocaleTimeString(undefined, {
|
|
hour: '2-digit',
|
|
minute: '2-digit',
|
|
hour12,
|
|
});
|
|
}
|