diff options
author | Eric Bailey <git@esb.lol> | 2024-08-01 10:29:27 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-01 10:29:27 -0500 |
commit | b0e130a4d85f2056bddcbf210aa7ea4068d41686 (patch) | |
tree | 8ddff0edd9a564c952daccb58c79d092ef35ba25 /src/components/hooks | |
parent | d2e88cc623b2df5fe40280618fe9598334df8241 (diff) | |
download | voidsky-b0e130a4d85f2056bddcbf210aa7ea4068d41686.tar.zst |
Update muted words dialog with `expiresAt` and `actorTarget` (#4801)
* WIP not working dropdown * Update MutedWords dialog * Add i18n formatDistance * Comments * Handle text wrapping * Update label copy Co-authored-by: Hailey <me@haileyok.com> * Fix alignment * Improve translation output * Revert toggle changes * Better types for useFormatDistance * Tweaks * Integrate new sdk version into TagMenu * Use ampersand Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com> * Bump SDK --------- Co-authored-by: Hailey <me@haileyok.com> Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Diffstat (limited to 'src/components/hooks')
-rw-r--r-- | src/components/hooks/dates.ts | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/components/hooks/dates.ts b/src/components/hooks/dates.ts new file mode 100644 index 000000000..b0f94133b --- /dev/null +++ b/src/components/hooks/dates.ts @@ -0,0 +1,69 @@ +/** + * Hooks for date-fns localized formatters. + * + * Our app supports some languages that are not included in date-fns by + * default, in which case it will fall back to English. + * + * {@link https://github.com/date-fns/date-fns/blob/main/docs/i18n.md} + */ + +import React from 'react' +import {formatDistance, Locale} from 'date-fns' +import { + ca, + de, + es, + fi, + fr, + hi, + id, + it, + ja, + ko, + ptBR, + tr, + uk, + zhCN, + zhTW, +} from 'date-fns/locale' + +import {AppLanguage} from '#/locale/languages' +import {useLanguagePrefs} from '#/state/preferences' + +/** + * {@link AppLanguage} + */ +const locales: Record<AppLanguage, Locale | undefined> = { + en: undefined, + ca, + de, + es, + fi, + fr, + ga: undefined, + hi, + id, + it, + ja, + ko, + ['pt-BR']: ptBR, + tr, + uk, + ['zh-CN']: zhCN, + ['zh-TW']: zhTW, +} + +/** + * Returns a localized `formatDistance` function. + * {@link formatDistance} + */ +export function useFormatDistance() { + const {appLanguage} = useLanguagePrefs() + return React.useCallback<typeof formatDistance>( + (date, baseDate, options) => { + const locale = locales[appLanguage as AppLanguage] + return formatDistance(date, baseDate, {...options, locale: locale}) + }, + [appLanguage], + ) +} |