diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-06-02 09:48:53 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-02 09:48:53 -0500 |
commit | 3217c7ff32b778d8a2a141fabdc6eabdf5ba018d (patch) | |
tree | 4a5f9427ab1a425d965521ca482d575cd31f4f6e /src/view/screens/Feeds.tsx | |
parent | e9c84a192b3a64c49a227617e8b58c25d3e5d0f3 (diff) | |
download | voidsky-3217c7ff32b778d8a2a141fabdc6eabdf5ba018d.tar.zst |
More custom-feed behavior fixes [APP-678] (#831)
* Remove extraneous custom-feed health check * Fixes to custom feed preference sync * Fix lint * Remove dead code (client-side suggested posts constructor) * Enforce the feed-fetch limit in the client if the generator fails to observe the parameter * Bump the number of items fetched in the multifeed per feed from 5 to 10 * Reset the currently active feed when the pinned feeds change * Some fixes to icons * Add a prompt to load latest to the multifeed * Remove debug
Diffstat (limited to 'src/view/screens/Feeds.tsx')
-rw-r--r-- | src/view/screens/Feeds.tsx | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/view/screens/Feeds.tsx b/src/view/screens/Feeds.tsx index 169f88791..7d4452384 100644 --- a/src/view/screens/Feeds.tsx +++ b/src/view/screens/Feeds.tsx @@ -14,11 +14,13 @@ import {PostsMultiFeedModel} from 'state/models/feeds/multi-feed' import {MultiFeed} from 'view/com/posts/MultiFeed' import {isDesktopWeb} from 'platform/detection' import {usePalette} from 'lib/hooks/usePalette' +import {useTimer} from 'lib/hooks/useTimer' import {useStores} from 'state/index' import {useOnMainScroll} from 'lib/hooks/useOnMainScroll' import {ComposeIcon2, CogIcon} from 'lib/icons' import {s} from 'lib/styles' +const LOAD_NEW_PROMPT_TIME = 60e3 // 60 seconds const HEADER_OFFSET = isDesktopWeb ? 0 : 40 type Props = NativeStackScreenProps<FeedsTabNavigatorParams, 'Feeds'> @@ -33,11 +35,24 @@ export const FeedsScreen = withAuthRequired( ) const [onMainScroll, isScrolledDown, resetMainScroll] = useOnMainScroll(store) + const [loadPromptVisible, setLoadPromptVisible] = React.useState(false) + const [resetPromptTimer] = useTimer(LOAD_NEW_PROMPT_TIME, () => { + setLoadPromptVisible(true) + }) const onSoftReset = React.useCallback(() => { flatListRef.current?.scrollToOffset({offset: 0}) + multifeed.loadLatest() + resetPromptTimer() + setLoadPromptVisible(false) resetMainScroll() - }, [flatListRef, resetMainScroll]) + }, [ + flatListRef, + resetMainScroll, + multifeed, + resetPromptTimer, + setLoadPromptVisible, + ]) useFocusEffect( React.useCallback(() => { @@ -99,11 +114,11 @@ export const FeedsScreen = withAuthRequired( hideOnScroll renderButton={renderHeaderBtn} /> - {isScrolledDown ? ( + {isScrolledDown || loadPromptVisible ? ( <LoadLatestBtn onPress={onSoftReset} - label="Scroll to top" - showIndicator={false} + label="Load latest posts" + showIndicator={loadPromptVisible} /> ) : null} <FAB |