format-reset-time.ts 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import type { Key } from "~/i18n"
  2. import type { useI18n } from "~/context/i18n"
  3. type ResetTimeKeys = {
  4. day: Key
  5. days: Key
  6. hour: Key
  7. hours: Key
  8. minute: Key
  9. minutes: Key
  10. fewSeconds: Key
  11. }
  12. export const liteResetTimeKeys = {
  13. day: "workspace.lite.time.day",
  14. days: "workspace.lite.time.days",
  15. hour: "workspace.lite.time.hour",
  16. hours: "workspace.lite.time.hours",
  17. minute: "workspace.lite.time.minute",
  18. minutes: "workspace.lite.time.minutes",
  19. fewSeconds: "workspace.lite.time.fewSeconds",
  20. } satisfies ResetTimeKeys
  21. export const blackResetTimeKeys = {
  22. day: "workspace.black.time.day",
  23. days: "workspace.black.time.days",
  24. hour: "workspace.black.time.hour",
  25. hours: "workspace.black.time.hours",
  26. minute: "workspace.black.time.minute",
  27. minutes: "workspace.black.time.minutes",
  28. fewSeconds: "workspace.black.time.fewSeconds",
  29. } satisfies ResetTimeKeys
  30. export function formatResetTime(seconds: number, i18n: ReturnType<typeof useI18n>, keys: ResetTimeKeys) {
  31. const days = Math.floor(seconds / 86400)
  32. if (days >= 1) {
  33. const hours = Math.floor((seconds % 86400) / 3600)
  34. return `${days} ${days === 1 ? i18n.t(keys.day) : i18n.t(keys.days)} ${hours} ${hours === 1 ? i18n.t(keys.hour) : i18n.t(keys.hours)}`
  35. }
  36. const hours = Math.floor(seconds / 3600)
  37. const minutes = Math.floor((seconds % 3600) / 60)
  38. if (hours >= 1)
  39. return `${hours} ${hours === 1 ? i18n.t(keys.hour) : i18n.t(keys.hours)} ${minutes} ${minutes === 1 ? i18n.t(keys.minute) : i18n.t(keys.minutes)}`
  40. if (minutes === 0) return i18n.t(keys.fewSeconds)
  41. return `${minutes} ${minutes === 1 ? i18n.t(keys.minute) : i18n.t(keys.minutes)}`
  42. }