UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

39 lines (32 loc) 1.33 kB
import { useMemo } from 'react'; import type { UserResponse } from 'stream-chat'; import { useTranslationContext } from '../../../contexts/translationContext/TranslationContext'; import { getDateString } from '../../../utils/i18n/getDateString'; /** * Returns the localized presence status string for a user: * - `t('Online')` when `user.online === true` * - `t('timestamp/UserActivityStatus')` (e.g. "Last seen 10 minutes ago") when offline * with a valid `last_active` * - `t('Offline')` otherwise (including `user === undefined` or an unparseable date) * * The relative time is produced through the shared `getDateString` + translation-key * pipeline used by message timestamps, so the format follows the configured locale. */ export const useUserActivityStatus = (user?: UserResponse): string => { const { t, tDateTimeParser } = useTranslationContext(); return useMemo(() => { if (user?.online) return t('Online'); if (user?.last_active) { const lastSeen = getDateString({ date: user.last_active, t, tDateTimeParser, timestampTranslationKey: 'timestamp/UserActivityStatus', }); if (typeof lastSeen === 'string') { return lastSeen; } } return t('Offline'); }, [t, tDateTimeParser, user?.last_active, user?.online]); };