From 72eee3600f0dc64999181382bf65b8a5bd975fe0 Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Fri, 10 Jun 2022 17:02:04 +0200 Subject: [PATCH] Fixed #301 --- src/components/RelativeTime.tsx | 32 +++++++++++++++++++ .../Timeline/Shared/HeaderShared/Created.tsx | 10 ++---- src/components/Timeline/Shared/Poll.tsx | 14 ++------ src/screens/Announcements.tsx | 11 ++----- 4 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 src/components/RelativeTime.tsx diff --git a/src/components/RelativeTime.tsx b/src/components/RelativeTime.tsx new file mode 100644 index 00000000..7dfd3c6a --- /dev/null +++ b/src/components/RelativeTime.tsx @@ -0,0 +1,32 @@ +import { useEffect, useState } from 'react' +import { FormattedRelativeTime } from 'react-intl' +import { AppState } from 'react-native' + +export interface Props { + type: 'past' | 'future' + time: string | number +} + +const RelativeTime: React.FC = ({ type, time }) => { + const [now, setNow] = useState(new Date().getTime()) + useEffect(() => { + const appStateListener = AppState.addEventListener('change', state => { + setNow(new Date().getTime()) + }) + + return () => { + appStateListener.remove() + } + }, []) + + return ( + + ) +} + +export default RelativeTime diff --git a/src/components/Timeline/Shared/HeaderShared/Created.tsx b/src/components/Timeline/Shared/HeaderShared/Created.tsx index 9b4fe066..9830d72a 100644 --- a/src/components/Timeline/Shared/HeaderShared/Created.tsx +++ b/src/components/Timeline/Shared/HeaderShared/Created.tsx @@ -1,10 +1,11 @@ import Icon from '@components/Icon' +import RelativeTime from '@components/RelativeTime' import CustomText from '@components/Text' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React from 'react' import { useTranslation } from 'react-i18next' -import { FormattedDate, FormattedRelativeTime } from 'react-intl' +import { FormattedDate } from 'react-intl' export interface Props { created_at: Mastodon.Status['created_at'] | number @@ -31,12 +32,7 @@ const HeaderSharedCreated = React.memo( /> ) : ( - + )} {edited_at ? ( diff --git a/src/components/Timeline/Shared/Poll.tsx b/src/components/Timeline/Shared/Poll.tsx index bab34fa4..fddc8a8d 100644 --- a/src/components/Timeline/Shared/Poll.tsx +++ b/src/components/Timeline/Shared/Poll.tsx @@ -4,6 +4,7 @@ import haptics from '@components/haptics' import Icon from '@components/Icon' import { displayMessage } from '@components/Message' import { ParseEmojis } from '@components/Parse' +import RelativeTime from '@components/RelativeTime' import CustomText from '@components/Text' import { MutationVarsTimelineUpdateStatusProperty, @@ -16,8 +17,7 @@ import { useTheme } from '@utils/styles/ThemeManager' import { maxBy } from 'lodash' import React, { useCallback, useMemo, useState } from 'react' import { Trans, useTranslation } from 'react-i18next' -import { FormattedRelativeTime } from 'react-intl' -import { Pressable, StyleSheet, Text, View } from 'react-native' +import { Pressable, View } from 'react-native' import { useQueryClient } from 'react-query' export interface Props { @@ -289,15 +289,7 @@ const TimelinePoll: React.FC = ({ return ( - ]} + components={[]} /> ) } diff --git a/src/screens/Announcements.tsx b/src/screens/Announcements.tsx index 3cb895fb..2efc34a6 100644 --- a/src/screens/Announcements.tsx +++ b/src/screens/Announcements.tsx @@ -2,6 +2,7 @@ import analytics from '@components/analytics' import Button from '@components/Button' import haptics from '@components/haptics' import { ParseHTML } from '@components/Parse' +import RelativeTime from '@components/RelativeTime' import CustomText from '@components/Text' import { BlurView } from '@react-native-community/blur' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' @@ -92,15 +93,7 @@ const ScreenAnnouncements: React.FC< + ]} />