diff --git a/src/components/posts/view/postsView.js b/src/components/posts/view/postsView.js index ab4c38c0a..9770dceb6 100644 --- a/src/components/posts/view/postsView.js +++ b/src/components/posts/view/postsView.js @@ -2,6 +2,7 @@ import React, { Component, Fragment } from 'react'; import { FlatList, View, ActivityIndicator, RefreshControl } from 'react-native'; import { injectIntl } from 'react-intl'; import { withNavigation } from 'react-navigation'; +import get from 'lodash/get'; // STEEM import { getPostsSummary } from '../../../providers/steem/dsteem'; @@ -28,7 +29,7 @@ class PostsView extends Component { isLoading: false, isPostsLoading: true, isHideImage: false, - selectedFilterIndex: props.selectedOptionIndex || 0, + selectedFilterIndex: get(props, 'selectedOptionIndex', 0), isNoPost: false, }; } @@ -47,11 +48,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 +70,9 @@ class PostsView extends Component { }, () => { this._loadPosts(); + if (changeForceLoadPostState) { + changeForceLoadPostState(false); + } }, ); } diff --git a/src/screens/profile/container/profileContainer.js b/src/screens/profile/container/profileContainer.js index 1081f6d02..47c8277ea 100644 --- a/src/screens/profile/container/profileContainer.js +++ b/src/screens/profile/container/profileContainer.js @@ -1,6 +1,7 @@ import React, { Component } from 'react'; import { connect } from 'react-redux'; import { withNavigation } from 'react-navigation'; +import get from 'lodash/get'; // Providers import { @@ -44,19 +45,20 @@ class ProfileContainer extends Component { isReverseHeader, user: null, selectedQuickProfile: null, + forceLoadPost: false, }; } componentDidMount = () => { const { navigation, isLoggedIn, currentAccount } = this.props; - const selectedUser = navigation.state && navigation.state.params; + const selectedUser = get(navigation.state, 'params'); if (!isLoggedIn && !selectedUser) { navigation.navigate(ROUTES.SCREENS.LOGIN); return; } - if (selectedUser && selectedUser.username && selectedUser.username !== currentAccount.name) { + if (get(selectedUser, 'username', false) && selectedUser.username !== currentAccount.name) { this._loadProfile(selectedUser.username); if (selectedUser.username) { @@ -75,24 +77,23 @@ 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; + get(currentAccount, 'name') !== nextProps.currentAccount.name && + nextProps.currentAccount.name; if (isLoggedIn && !nextProps.isLoggedIn) { navigation.navigate(ROUTES.SCREENS.LOGIN); return; } - if (currentUsername) { - this._loadProfile(currentUsername); - } - if ( - activeBottomTab !== nextProps.activeBottomTab && - nextProps.activeBottomTab === 'ProfileTabbar' + (activeBottomTab !== get(nextProps, 'activeBottomTab') && + get(nextProps, 'activeBottomTab') === ROUTES.TABBAR.PROFILE) || + currentUsername ) { this._loadProfile(currentAccount.name); + this.setState({ forceLoadPost: true }); } } @@ -327,13 +328,17 @@ class ProfileContainer extends Component { _handleOnBackPress = () => { const { navigation } = this.props; - const navigationParams = navigation.state && navigation.state.params; + const navigationParams = get(navigation.state, 'params'); - if (navigationParams && navigationParams.fetchData) { + if (get(navigationParams, 'fetchData')) { navigationParams.fetchData(); } }; + _changeForceLoadPostState = value => { + this.setState({ forceLoadPost: value }); + }; + render() { const { avatar, @@ -349,13 +354,14 @@ 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; + const activePage = get(navigation.state.params, 'state', 0); return ( ); } diff --git a/src/screens/profile/screen/profileScreen.js b/src/screens/profile/screen/profileScreen.js index 81115309f..1247b67d2 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} isHideReblogOption />