From 69e2fe8bc5490a2b1ea79643853d4f8d934d0ed9 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 27 May 2020 13:44:17 -0300 Subject: [PATCH] SelectedUsersView header --- app/views/SelectedUsersView.js | 47 +++++++++++++++++----------------- 1 file changed, 23 insertions(+), 24 deletions(-) diff --git a/app/views/SelectedUsersView.js b/app/views/SelectedUsersView.js index e36929eba..eb8c7bc8e 100644 --- a/app/views/SelectedUsersView.js +++ b/app/views/SelectedUsersView.js @@ -35,24 +35,6 @@ const styles = StyleSheet.create({ }); class SelectedUsersView extends React.Component { - static navigationOptions = ({ route }) => { - const title = route.params?.title ?? I18n.t('Select_Users'); - const buttonText = route.params?.buttonText ?? I18n.t('Next'); - const showButton = route.params?.showButton ?? false; - const maxUsers = route.params?.maxUsers; - const nextAction = route.params?.nextAction ?? (() => {}); - return { - title, - headerRight: () => ( - (!maxUsers || showButton) && ( - - - - ) - ) - }; - } - static propTypes = { baseUrl: PropTypes.string, addUser: PropTypes.func.isRequired, @@ -85,6 +67,7 @@ class SelectedUsersView extends React.Component { if (this.isGroupChat()) { props.addUser({ _id: user.id, name: user.username, fname: user.name }); } + this.setHeader(props.route.params?.showButton); } shouldComponentUpdate(nextProps, nextState) { @@ -110,13 +93,9 @@ class SelectedUsersView extends React.Component { componentDidUpdate(prevProps) { if (this.isGroupChat()) { - const { users, navigation } = this.props; + const { users } = this.props; if (prevProps.users.length !== users.length) { - if (users.length) { - navigation.setParams({ showButton: true }); - } else { - navigation.setParams({ showButton: false }); - } + this.setHeader(users.length > 0); } } } @@ -129,6 +108,26 @@ class SelectedUsersView extends React.Component { } } + // showButton can be sent as route params or updated by the component + setHeader = (showButton) => { + const { navigation, route } = this.props; + const title = route.params?.title ?? I18n.t('Select_Users'); + const buttonText = route.params?.buttonText ?? I18n.t('Next'); + const maxUsers = route.params?.maxUsers; + const nextAction = route.params?.nextAction ?? (() => {}); + const options = { + title, + headerRight: () => ( + (!maxUsers || showButton) && ( + + + + ) + ) + }; + navigation.setOptions(options); + } + // eslint-disable-next-line react/sort-comp init = async() => { try {