From 102094b10aeeed996cae5a522a497ee4848d27e6 Mon Sep 17 00:00:00 2001
From: Paul Frazee <pfrazee@gmail.com>
Date: Fri, 8 Dec 2023 16:30:19 -0800
Subject: Poll for new posts on app foreground (#2152)

---
 src/view/com/posts/Feed.tsx | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

(limited to 'src/view/com/posts/Feed.tsx')

diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx
index fe619ab30..c4f859e04 100644
--- a/src/view/com/posts/Feed.tsx
+++ b/src/view/com/posts/Feed.tsx
@@ -1,6 +1,7 @@
 import React, {memo, MutableRefObject} from 'react'
 import {
   ActivityIndicator,
+  AppState,
   Dimensions,
   RefreshControl,
   StyleProp,
@@ -142,12 +143,23 @@ let Feed = ({
     }
   }, [enabled])
   React.useEffect(() => {
-    if (!pollInterval) {
-      return
+    let cleanup1: () => void | undefined, cleanup2: () => void | undefined
+    const subscription = AppState.addEventListener('change', nextAppState => {
+      // check for new on app foreground
+      if (nextAppState === 'active') {
+        checkForNewRef.current?.()
+      }
+    })
+    cleanup1 = () => subscription.remove()
+    if (pollInterval) {
+      // check for new on interval
+      const i = setInterval(() => checkForNewRef.current?.(), pollInterval)
+      cleanup2 = () => clearInterval(i)
+    }
+    return () => {
+      cleanup1?.()
+      cleanup2?.()
     }
-    // check for new on interval
-    const i = setInterval(() => checkForNewRef.current?.(), pollInterval)
-    return () => clearInterval(i)
   }, [pollInterval])
 
   const feedItems = React.useMemo(() => {
-- 
cgit 1.4.1

