From b8b019c33e89e1e8b9ddf18fbf5839525ca0d201 Mon Sep 17 00:00:00 2001 From: Mustafa Buyukcelebi Date: Thu, 20 Jun 2019 12:18:55 +0300 Subject: [PATCH] Fixed profile page refreshing issue --- src/components/posts/view/postsView.js | 24 +++++++++++-------- .../profile/container/profileContainer.js | 20 ++++++++++------ src/screens/profile/screen/profileScreen.js | 4 ++++ 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/src/components/posts/view/postsView.js b/src/components/posts/view/postsView.js index edb944429..a2b85f126 100644 --- a/src/components/posts/view/postsView.js +++ b/src/components/posts/view/postsView.js @@ -47,11 +47,12 @@ class PostsView extends Component { } componentWillReceiveProps(nextProps) { - const { currentAccountUsername } = this.props; + const { currentAccountUsername, changeForceLoadPostState } = this.props; if ( - currentAccountUsername !== nextProps.currentAccountUsername && - nextProps.currentAccountUsername + (currentAccountUsername !== nextProps.currentAccountUsername && + nextProps.currentAccountUsername) || + nextProps.forceLoadPost ) { // Set all initial data (New user new rules) this.setState( @@ -68,6 +69,9 @@ class PostsView extends Component { }, () => { this._loadPosts(); + if (changeForceLoadPostState) { + changeForceLoadPostState(false); + } }, ); } @@ -275,13 +279,13 @@ class PostsView extends Component { onScrollBeginDrag={() => this._handleOnScrollStart()} refreshControl={ + refreshing={refreshing} + onRefresh={this._handleOnRefreshPosts} + progressBackgroundColor="#357CE6" + tintColor={!isDarkTheme ? '#357ce6' : '#96c0ff'} + titleColor="#fff" + colors={['#fff']} + /> } ref={ref => { this.flatList = ref; diff --git a/src/screens/profile/container/profileContainer.js b/src/screens/profile/container/profileContainer.js index 1081f6d02..83796a939 100644 --- a/src/screens/profile/container/profileContainer.js +++ b/src/screens/profile/container/profileContainer.js @@ -44,6 +44,7 @@ class ProfileContainer extends Component { isReverseHeader, user: null, selectedQuickProfile: null, + forceLoadPost: false, }; } @@ -75,7 +76,7 @@ class ProfileContainer extends Component { }; componentWillReceiveProps(nextProps) { - const { navigation, currentAccount, activeBottomTab, isLoggedIn } = this.props; + const { activeBottomTab, currentAccount, isLoggedIn, navigation } = this.props; const currentUsername = currentAccount.name !== nextProps.currentAccount.name && nextProps.currentAccount.name; @@ -84,15 +85,13 @@ class ProfileContainer extends Component { return; } - if (currentUsername) { - this._loadProfile(currentUsername); - } - if ( - activeBottomTab !== nextProps.activeBottomTab && - nextProps.activeBottomTab === 'ProfileTabbar' + (activeBottomTab !== nextProps.activeBottomTab && + nextProps.activeBottomTab === ROUTES.TABBAR.PROFILE) || + currentUsername ) { this._loadProfile(currentAccount.name); + this.setState({ forceLoadPost: true }); } } @@ -334,6 +333,10 @@ class ProfileContainer extends Component { } }; + _changeForceLoadPostState = value => { + this.setState({ forceLoadPost: value }); + }; + render() { const { avatar, @@ -349,6 +352,7 @@ class ProfileContainer extends Component { selectedQuickProfile, user, username, + forceLoadPost, } = this.state; const { isDarkTheme, isLoggedIn, currency, navigation } = this.props; const activePage = (navigation.state.params && navigation.state.params.activePage) || 0; @@ -379,6 +383,8 @@ class ProfileContainer extends Component { selectedQuickProfile={selectedQuickProfile} selectedUser={user} username={username} + forceLoadPost={forceLoadPost} + changeForceLoadPostState={this._changeForceLoadPostState} /> ); } diff --git a/src/screens/profile/screen/profileScreen.js b/src/screens/profile/screen/profileScreen.js index ed52da15a..e5f6b9c7e 100644 --- a/src/screens/profile/screen/profileScreen.js +++ b/src/screens/profile/screen/profileScreen.js @@ -84,6 +84,8 @@ class ProfileScreen extends PureComponent { selectedUser, username, activePage, + forceLoadPost, + changeForceLoadPostState, } = this.props; const { @@ -206,6 +208,8 @@ class ProfileScreen extends PureComponent { tag={username} key={username} handleOnScroll={this._handleOnScroll} + forceLoadPost={forceLoadPost} + changeForceLoadPostState={changeForceLoadPostState} />