From 9ce3aa8d1b6de4a0d4e4789ded374345dd984c12 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Thu, 4 Nov 2021 13:30:54 -0500 Subject: [PATCH] HomeTimeline: pull to refresh --- app/soapbox/components/scrollable_list.js | 16 ++++++++++++++-- app/soapbox/features/home_timeline/index.js | 6 ++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/soapbox/components/scrollable_list.js b/app/soapbox/components/scrollable_list.js index 04ceab234..ceb554c53 100644 --- a/app/soapbox/components/scrollable_list.js +++ b/app/soapbox/components/scrollable_list.js @@ -9,6 +9,7 @@ import { throttle } from 'lodash'; import { List as ImmutableList } from 'immutable'; import LoadingIndicator from './loading_indicator'; import { getSettings } from 'soapbox/actions/settings'; +import PullToRefresh from 'soapbox/components/pull_to_refresh'; const MOUSE_IDLE_DELAY = 300; @@ -43,6 +44,7 @@ class ScrollableList extends PureComponent { placeholderComponent: PropTypes.func, placeholderCount: PropTypes.number, autoload: PropTypes.bool, + onRefresh: PropTypes.func, }; state = { @@ -274,12 +276,12 @@ class ScrollableList extends PureComponent { } renderFeed = () => { - const { children, scrollKey, isLoading, hasMore, prepend, onLoadMore, placeholderComponent: Placeholder } = this.props; + const { children, scrollKey, isLoading, hasMore, prepend, onLoadMore, onRefresh, placeholderComponent: Placeholder } = this.props; const childrenCount = React.Children.count(children); const trackScroll = true; //placeholder const loadMore = (hasMore && onLoadMore) ? : null; - return ( + const feed = (
{prepend} @@ -313,6 +315,16 @@ class ScrollableList extends PureComponent {
); + + if (onRefresh) { + return ( + + {feed} + + ); + } else { + return feed; + } } render() { diff --git a/app/soapbox/features/home_timeline/index.js b/app/soapbox/features/home_timeline/index.js index d746e9991..f65198187 100644 --- a/app/soapbox/features/home_timeline/index.js +++ b/app/soapbox/features/home_timeline/index.js @@ -93,6 +93,11 @@ class HomeTimeline extends React.PureComponent { this.setState({ done: true }); } + handleRefresh = () => { + const { dispatch } = this.props; + return dispatch(expandHomeTimeline()); + } + render() { const { intl, siteTitle, isLoading, isEmpty, features } = this.props; const { done } = this.state; @@ -108,6 +113,7 @@ class HomeTimeline extends React.PureComponent { }} />} />