diff options
author | Ansh <anshnanda10@gmail.com> | 2023-08-30 18:06:02 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-30 18:06:02 -0700 |
commit | d2e65d2a7f411e9eb1a1ea8d97ea148c4832b430 (patch) | |
tree | 2de9a1639eb641014456f4925b10808bb5e5b59f /src/view/screens/Notifications.tsx | |
parent | 4ac82536c944048b6ee71130873d7fc6b115cb6f (diff) | |
download | voidsky-d2e65d2a7f411e9eb1a1ea8d97ea148c4832b430.tar.zst |
Fix 1338 mark notifications read with timeout and on app state change (#1340)
* mark notifications read with timeout and on app state change * fix type
Diffstat (limited to 'src/view/screens/Notifications.tsx')
-rw-r--r-- | src/view/screens/Notifications.tsx | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index 15bbf4fd0..5dda965db 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -1,5 +1,5 @@ import React from 'react' -import {FlatList, View} from 'react-native' +import {AppState, FlatList, View} from 'react-native' import {useFocusEffect} from '@react-navigation/native' import {observer} from 'mobx-react-lite' import { @@ -18,6 +18,7 @@ import {s} from 'lib/styles' import {useAnalytics} from 'lib/analytics/analytics' import {isWeb} from 'platform/detection' +const NOTIFICATION_MARK_READ_TIMEOUT = 5000 type Props = NativeStackScreenProps< NotificationsTabNavigatorParams, 'Notifications' @@ -55,10 +56,22 @@ export const NotificationsScreen = withAuthRequired( const softResetSub = store.onScreenSoftReset(onPressLoadLatest) store.me.notifications.update() screen('Notifications') + // marks notifications read if the user opens the notifications tab for x seconds + // but doesn't open any notifications or any other tab + const markReadTimeout = setTimeout(() => { + store.me.notifications.markAllRead() + }, NOTIFICATION_MARK_READ_TIMEOUT) // mark all notifications as read after 3s + // marks notification read if the user suspends the app while in the notification tab + // then opens the app into the notification tab and then closes the app again + const markReadOnBlur = AppState.addEventListener('change', event => { + if (event === 'background') store.me.notifications.markAllRead() + }) return () => { softResetSub.remove() + markReadOnBlur.remove() store.me.notifications.markAllRead() + clearTimeout(markReadTimeout) // in case we unmount before the timeout fires } }, [store, screen, onPressLoadLatest]), ) |