From adfd80067c0034512897bda12c6dcc4aac709100 Mon Sep 17 00:00:00 2001 From: Ezequiel De Oliveira Date: Sat, 9 May 2020 02:17:08 -0300 Subject: [PATCH 01/10] Create middleware and action and reduce Signed-off-by: Ezequiel De Oliveira --- app/actions/actionsTypes.js | 1 + app/actions/dimensions.js | 15 ++++++++++++++ app/lib/dimensionsMiddleware.js | 35 +++++++++++++++++++++++++++++++++ app/reducers/dimensions.js | 23 ++++++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 app/actions/dimensions.js create mode 100644 app/lib/dimensionsMiddleware.js create mode 100644 app/reducers/dimensions.js diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index 69b3f916edb..0afba49f5c0 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -65,3 +65,4 @@ export const INVITE_LINKS = createRequestTypes('INVITE_LINKS', [ ]); export const SETTINGS = createRequestTypes('SETTINGS', ['CLEAR', 'ADD']); export const APP_STATE = createRequestTypes('APP_STATE', ['FOREGROUND', 'BACKGROUND']); +export const DIMENSIONS = createRequestTypes('DIMENSIONS', ['WINDOW', 'SCREEN']); diff --git a/app/actions/dimensions.js b/app/actions/dimensions.js new file mode 100644 index 00000000000..22358257c74 --- /dev/null +++ b/app/actions/dimensions.js @@ -0,0 +1,15 @@ +import * as types from './actionsTypes'; + +export function dimensionsWindow(window) { + return { + type: types.DIMENSIONS.WINDOW, + window + }; +} + +export function dimensionsScreen(screen) { + return { + type: types.DIMENSIONS.SCREEN, + screen + }; +} diff --git a/app/lib/dimensionsMiddleware.js b/app/lib/dimensionsMiddleware.js new file mode 100644 index 00000000000..9e56a037adc --- /dev/null +++ b/app/lib/dimensionsMiddleware.js @@ -0,0 +1,35 @@ +import { Dimensions } from 'react-native'; + +import { DIMENSIONS } from '../actions/actionsTypes'; + +export default () => createStore => (...args) => { + const store = createStore(...args); + + let currentState = ''; + let payload = ''; + + const handleDimensionsChange = (nextDimensionState) => { + if (currentState !== nextDimensionState) { + let type; + if (nextDimensionState === 'window') { + type = DIMENSIONS.WINDOW; + payload = Dimensions.get('window'); + } else if (nextDimensionState === 'screen') { + type = DIMENSIONS.SCREEN; + payload = Dimensions.get('screen'); + } + if (type) { + store.dispatch({ + type, + payload + }); + } + } + currentState = nextDimensionState; + }; + + Dimensions.addEventListener('change', handleDimensionsChange); + + setTimeout(() => handleDimensionsChange(Dimensions.currentState)); + return store; +}; diff --git a/app/reducers/dimensions.js b/app/reducers/dimensions.js new file mode 100644 index 00000000000..c88206757c7 --- /dev/null +++ b/app/reducers/dimensions.js @@ -0,0 +1,23 @@ +import { DIMENSIONS } from '../actions/actionsTypes'; + +const initialState = { + window: null, + screen: null +}; + +export default function(state = initialState, action) { + switch (action.type) { + case DIMENSIONS.WINDOW: + return { + ...state, + window: action.window + }; + case DIMENSIONS.SCREEN: + return { + ...state, + screen: action.screen + }; + default: + return state; + } +} From acefdd9aaf8ee6e23b008f27f934b10b23704176 Mon Sep 17 00:00:00 2001 From: Ezequiel De Oliveira Date: Sat, 9 May 2020 16:24:44 -0300 Subject: [PATCH 02/10] Apply middleware Signed-off-by: Ezequiel De Oliveira --- app/lib/createStore.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/lib/createStore.js b/app/lib/createStore.js index da52de600e0..f1aec38d22e 100644 --- a/app/lib/createStore.js +++ b/app/lib/createStore.js @@ -4,6 +4,7 @@ import createSagaMiddleware from 'redux-saga'; import reducers from '../reducers'; import sagas from '../sagas'; import applyAppStateMiddleware from './appStateMiddleware'; +import applyDimensionsMiddleware from './dimensionsMiddleware'; let sagaMiddleware; let enhancers; @@ -19,6 +20,7 @@ if (__DEV__) { applyAppStateMiddleware(), applyMiddleware(reduxImmutableStateInvariant), applyMiddleware(sagaMiddleware), + applyMiddleware(applyDimensionsMiddleware), Reactotron.createEnhancer() ); } else { From a43385b97a35f9727b83830ba155f8c7f969e4c3 Mon Sep 17 00:00:00 2001 From: Ezequiel De Oliveira Date: Mon, 11 May 2020 14:54:07 -0300 Subject: [PATCH 03/10] Save dimensions in store Signed-off-by: Ezequiel De Oliveira --- app/actions/dimensions.js | 6 ++--- app/containers/EmojiPicker/EmojiCategory.js | 8 +++++-- app/lib/createStore.js | 3 ++- app/lib/dimensionsMiddleware.js | 26 ++++++--------------- app/reducers/dimensions.js | 4 ++-- app/reducers/index.js | 4 +++- 6 files changed, 23 insertions(+), 28 deletions(-) diff --git a/app/actions/dimensions.js b/app/actions/dimensions.js index 22358257c74..a6fafcac532 100644 --- a/app/actions/dimensions.js +++ b/app/actions/dimensions.js @@ -1,15 +1,15 @@ -import * as types from './actionsTypes'; +import { DIMENSIONS } from './actionsTypes'; export function dimensionsWindow(window) { return { - type: types.DIMENSIONS.WINDOW, + type: DIMENSIONS.WINDOW, window }; } export function dimensionsScreen(screen) { return { - type: types.DIMENSIONS.SCREEN, + type: DIMENSIONS.SCREEN, screen }; } diff --git a/app/containers/EmojiPicker/EmojiCategory.js b/app/containers/EmojiPicker/EmojiCategory.js index 22382f1e30b..26061add482 100644 --- a/app/containers/EmojiPicker/EmojiCategory.js +++ b/app/containers/EmojiPicker/EmojiCategory.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Text, TouchableOpacity, FlatList } from 'react-native'; -import { responsive } from 'react-native-responsive-ui'; +import { connect } from 'react-redux'; import shortnameToUnicode from '../../utils/shortnameToUnicode'; import styles from './styles'; @@ -73,4 +73,8 @@ class EmojiCategory extends React.Component { } } -export default responsive(EmojiCategory); +const mapStateToProps = state => ({ + window: state.dimensions.window +}); + +export default connect(mapStateToProps)(EmojiCategory); diff --git a/app/lib/createStore.js b/app/lib/createStore.js index f1aec38d22e..b1e745d5afc 100644 --- a/app/lib/createStore.js +++ b/app/lib/createStore.js @@ -18,15 +18,16 @@ if (__DEV__) { enhancers = compose( applyAppStateMiddleware(), + applyDimensionsMiddleware(), applyMiddleware(reduxImmutableStateInvariant), applyMiddleware(sagaMiddleware), - applyMiddleware(applyDimensionsMiddleware), Reactotron.createEnhancer() ); } else { sagaMiddleware = createSagaMiddleware(); enhancers = compose( applyAppStateMiddleware(), + applyDimensionsMiddleware(), applyMiddleware(sagaMiddleware) ); } diff --git a/app/lib/dimensionsMiddleware.js b/app/lib/dimensionsMiddleware.js index 9e56a037adc..64db5c23046 100644 --- a/app/lib/dimensionsMiddleware.js +++ b/app/lib/dimensionsMiddleware.js @@ -1,35 +1,23 @@ import { Dimensions } from 'react-native'; -import { DIMENSIONS } from '../actions/actionsTypes'; +import { dimensionsWindow, dimensionsScreen } from '../actions/dimensions'; export default () => createStore => (...args) => { const store = createStore(...args); - let currentState = ''; - let payload = ''; - const handleDimensionsChange = (nextDimensionState) => { - if (currentState !== nextDimensionState) { - let type; - if (nextDimensionState === 'window') { - type = DIMENSIONS.WINDOW; - payload = Dimensions.get('window'); - } else if (nextDimensionState === 'screen') { - type = DIMENSIONS.SCREEN; - payload = Dimensions.get('screen'); + if (nextDimensionState) { + if (nextDimensionState.window) { + store.dispatch(dimensionsWindow(nextDimensionState.window)); } - if (type) { - store.dispatch({ - type, - payload - }); + if (nextDimensionState.screen) { + store.dispatch(dimensionsScreen(nextDimensionState.screen)); } } - currentState = nextDimensionState; }; Dimensions.addEventListener('change', handleDimensionsChange); - setTimeout(() => handleDimensionsChange(Dimensions.currentState)); + setTimeout(() => handleDimensionsChange({ ...Dimensions.get('window'), ...Dimensions.get('screen') })); return store; }; diff --git a/app/reducers/dimensions.js b/app/reducers/dimensions.js index c88206757c7..c03bd39132a 100644 --- a/app/reducers/dimensions.js +++ b/app/reducers/dimensions.js @@ -1,8 +1,8 @@ import { DIMENSIONS } from '../actions/actionsTypes'; const initialState = { - window: null, - screen: null + window: {}, + screen: {} }; export default function(state = initialState, action) { diff --git a/app/reducers/index.js b/app/reducers/index.js index dead110fbfd..494ebaf939d 100644 --- a/app/reducers/index.js +++ b/app/reducers/index.js @@ -17,6 +17,7 @@ import activeUsers from './activeUsers'; import usersTyping from './usersTyping'; import inviteLinks from './inviteLinks'; import createDiscussion from './createDiscussion'; +import dimensions from './dimensions'; export default combineReducers({ settings, @@ -36,5 +37,6 @@ export default combineReducers({ activeUsers, usersTyping, inviteLinks, - createDiscussion + createDiscussion, + dimensions }); From 89bc1643abcd6f1af401d9985c3bc708822dfc8b Mon Sep 17 00:00:00 2001 From: Ezequiel De Oliveira Date: Tue, 12 May 2020 00:19:16 -0300 Subject: [PATCH 04/10] Change lib for props Signed-off-by: Ezequiel De Oliveira --- app/containers/MessageBox/UploadModal.js | 8 ++++-- app/notifications/inApp/index.js | 6 ++--- app/presentation/ImageViewer/index.android.js | 27 +++++++++++-------- app/views/RoomView/Header/index.js | 6 ++--- app/views/RoomView/ReactionPicker.js | 6 ++--- app/views/RoomView/UploadProgress.js | 8 ++++-- 6 files changed, 37 insertions(+), 24 deletions(-) diff --git a/app/containers/MessageBox/UploadModal.js b/app/containers/MessageBox/UploadModal.js index 87734785419..33de96911e0 100644 --- a/app/containers/MessageBox/UploadModal.js +++ b/app/containers/MessageBox/UploadModal.js @@ -4,7 +4,7 @@ import { } from 'react-native'; import PropTypes from 'prop-types'; import Modal from 'react-native-modal'; -import { responsive } from 'react-native-responsive-ui'; +import { connect } from 'react-redux'; import equal from 'deep-equal'; import TextInput from '../TextInput'; @@ -252,4 +252,8 @@ class UploadModal extends Component { } } -export default responsive(withTheme(withSplit(UploadModal))); +const mapStateToProps = state => ({ + window: state.dimensions.window +}); + +export default connect(mapStateToProps)(withTheme(withSplit(UploadModal))); diff --git a/app/notifications/inApp/index.js b/app/notifications/inApp/index.js index 3862846a058..9bab87d0f12 100644 --- a/app/notifications/inApp/index.js +++ b/app/notifications/inApp/index.js @@ -5,7 +5,6 @@ import { import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import equal from 'deep-equal'; -import { responsive } from 'react-native-responsive-ui'; import Touchable from 'react-native-platform-touchable'; import { hasNotch, isIOS, isTablet } from '../../utils/deviceInfo'; @@ -234,11 +233,12 @@ class NotificationBadge extends React.Component { const mapStateToProps = state => ({ user: getUserSelector(state), baseUrl: state.server.server, - notification: state.notification + notification: state.notification, + window: state.dimensions.window }); const mapDispatchToProps = dispatch => ({ removeNotification: () => dispatch(removeNotificationAction()) }); -export default responsive(connect(mapStateToProps, mapDispatchToProps)(withTheme(NotificationBadge))); +export default connect(mapStateToProps, mapDispatchToProps)(withTheme(NotificationBadge)); diff --git a/app/presentation/ImageViewer/index.android.js b/app/presentation/ImageViewer/index.android.js index 86af0ecd568..1ba2a328db3 100644 --- a/app/presentation/ImageViewer/index.android.js +++ b/app/presentation/ImageViewer/index.android.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { Component } from 'react'; import { StyleSheet, View } from 'react-native'; import PropTypes from 'prop-types'; import { @@ -8,7 +8,7 @@ import { } from 'react-native-gesture-handler'; import FastImage from 'react-native-fast-image'; import Animated, { Easing } from 'react-native-reanimated'; -import { ResponsiveComponent } from 'react-native-responsive-ui'; +import { connect } from 'react-redux'; const AnimatedFastImage = Animated.createAnimatedComponent(FastImage); @@ -264,13 +264,10 @@ const HEIGHT = 300; // it was picked from https://github.com/software-mansion/react-native-reanimated/tree/master/Example/imageViewer // and changed to use FastImage animated component -class ImageViewer extends ResponsiveComponent { - pinchRef = React.createRef(); - - panRef = React.createRef(); - +class ImageViewer extends Component { static propTypes = { - uri: PropTypes.string + uri: PropTypes.string, + window: PropTypes.object } constructor(props) { @@ -382,9 +379,13 @@ class ImageViewer extends ResponsiveComponent { ); } + pinchRef = React.createRef(); + + panRef = React.createRef(); + render() { - const { uri, ...props } = this.props; - const { width } = this.state.window; + const { uri, window, ...props } = this.props; + const { width } = window; // The below two animated values makes it so that scale appears to be done // from the top left corner of the image view instead of its center. This @@ -439,4 +440,8 @@ class ImageViewer extends ResponsiveComponent { } } -export default ImageViewer; +const mapStateToProps = state => ({ + window: state.dimensions.window +}); + +export default connect(mapStateToProps)(ImageViewer); diff --git a/app/views/RoomView/Header/index.js b/app/views/RoomView/Header/index.js index 8b1bec52f1c..9f124c87ef1 100644 --- a/app/views/RoomView/Header/index.js +++ b/app/views/RoomView/Header/index.js @@ -1,7 +1,6 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; -import { responsive } from 'react-native-responsive-ui'; import equal from 'deep-equal'; import Header from './Header'; @@ -110,10 +109,11 @@ const mapStateToProps = (state, ownProps) => { connecting: state.meteor.connecting, usersTyping: state.usersTyping, status, - statusText + statusText, + window: state.dimensions.window }; }; -export default responsive(connect(mapStateToProps)(withTheme(RoomHeaderView))); +export default connect(mapStateToProps)(withTheme(RoomHeaderView)); export { RightButtons, RoomHeaderLeft }; diff --git a/app/views/RoomView/ReactionPicker.js b/app/views/RoomView/ReactionPicker.js index 3a10b3fcb67..4470d0cbed6 100644 --- a/app/views/RoomView/ReactionPicker.js +++ b/app/views/RoomView/ReactionPicker.js @@ -3,7 +3,6 @@ import PropTypes from 'prop-types'; import { View } from 'react-native'; import { connect } from 'react-redux'; import Modal from 'react-native-modal'; -import { responsive } from 'react-native-responsive-ui'; import EmojiPicker from '../../containers/EmojiPicker'; import styles from './styles'; @@ -83,7 +82,8 @@ class ReactionPicker extends React.Component { } const mapStateToProps = state => ({ - baseUrl: state.server.server + baseUrl: state.server.server, + window: state.dimensions.window }); -export default responsive(connect(mapStateToProps)(withSplit(ReactionPicker))); +export default connect(mapStateToProps)(withSplit(ReactionPicker)); diff --git a/app/views/RoomView/UploadProgress.js b/app/views/RoomView/UploadProgress.js index ae0ca9dc913..208a8b0b38d 100644 --- a/app/views/RoomView/UploadProgress.js +++ b/app/views/RoomView/UploadProgress.js @@ -3,8 +3,8 @@ import { View, Text, StyleSheet, TouchableOpacity, ScrollView } from 'react-native'; import PropTypes from 'prop-types'; -import { responsive } from 'react-native-responsive-ui'; import { Q } from '@nozbe/watermelondb'; +import { connect } from 'react-redux'; import database from '../../lib/database'; import RocketChat from '../../lib/rocketchat'; @@ -228,4 +228,8 @@ class UploadProgress extends Component { } } -export default responsive(withTheme(UploadProgress)); +const mapStateToProps = state => ({ + window: state.dimensions.window +}); + +export default connect(mapStateToProps)(withTheme(UploadProgress)); From 4f2f2064a74416cabdc739b5899a14dc7b3df033 Mon Sep 17 00:00:00 2001 From: Ezequiel De Oliveira Date: Tue, 12 May 2020 00:24:44 -0300 Subject: [PATCH 05/10] react-native-responsive-ui removed Signed-off-by: Ezequiel De Oliveira --- package.json | 5 ++--- yarn.lock | 7 ------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 6a9d1d050ea..1faf43b32d9 100644 --- a/package.json +++ b/package.json @@ -41,8 +41,8 @@ "expo-av": "^8.1.0", "expo-file-system": "^8.1.0", "expo-haptics": "^8.1.0", - "expo-local-authentication": "9.0.0", "expo-keep-awake": "^8.1.0", + "expo-local-authentication": "9.0.0", "expo-web-browser": "8.2.1", "hoist-non-react-statics": "3.3.2", "i18n-js": "3.5.1", @@ -54,7 +54,7 @@ "react": "16.11.0", "react-native": "0.62.2", "react-native-action-sheet": "^2.2.0", - "react-native-animatable": "^1.3.3", + "react-native-animatable": "^1.3.3", "react-native-appearance": "0.3.4", "react-native-audio": "^4.3.0", "react-native-background-timer": "2.2.0", @@ -86,7 +86,6 @@ "react-native-progress": "4.1.2", "react-native-prompt-android": "^1.1.0", "react-native-reanimated": "1.8.0", - "react-native-responsive-ui": "^1.1.1", "react-native-screens": "2.7.0", "react-native-scrollable-tab-view": "^1.0.0", "react-native-slowlog": "^1.0.2", diff --git a/yarn.lock b/yarn.lock index bafa6064549..5961e2c4d50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13479,13 +13479,6 @@ react-native-reanimated@1.8.0: dependencies: fbjs "^1.0.0" -react-native-responsive-ui@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/react-native-responsive-ui/-/react-native-responsive-ui-1.1.1.tgz#eb41839d4f3951ff025660185c36a9a9ce33759f" - integrity sha1-60GDnU85Uf8CVmAYXDapqc4zdZ8= - dependencies: - lodash "^4.17.4" - react-native-safe-area-view@^0.14.6: version "0.14.8" resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.14.8.tgz#ef33c46ff8164ae77acad48c3039ec9c34873e5b" From a43180623ec52d2ae1ea9dee9513d76db83fecc6 Mon Sep 17 00:00:00 2001 From: Ezequiel De Oliveira Date: Wed, 27 May 2020 02:15:41 -0300 Subject: [PATCH 06/10] Using dimensions middleware instead of directly Dimensions.get Signed-off-by: Ezequiel De Oliveira --- app/actions/dimensions.js | 7 ----- app/containers/EmojiPicker/EmojiCategory.js | 8 +----- app/containers/MessageBox/UploadModal.js | 15 ++++------- app/containers/MessageBox/index.js | 11 +++++--- app/containers/message/Attachments.js | 7 ++--- app/containers/message/Audio.js | 16 ++++++++---- app/containers/message/Message.js | 3 ++- app/containers/message/index.js | 13 +++++++--- app/lib/dimensionsMiddleware.js | 20 ++++++++------ app/notifications/inApp/index.js | 16 +++++++----- app/presentation/ImageViewer/index.android.js | 7 +++-- app/reducers/dimensions.js | 16 +++++------- app/views/RoomView/Header/index.js | 26 ++++++++++++------- app/views/RoomView/ReactionPicker.js | 16 +++++++----- app/views/RoomView/UploadProgress.js | 13 +++------- app/views/RoomView/index.js | 14 +++++++--- app/views/RoomsListView/index.js | 24 +++++++---------- 17 files changed, 121 insertions(+), 111 deletions(-) diff --git a/app/actions/dimensions.js b/app/actions/dimensions.js index a6fafcac532..7d8b71a6a93 100644 --- a/app/actions/dimensions.js +++ b/app/actions/dimensions.js @@ -6,10 +6,3 @@ export function dimensionsWindow(window) { window }; } - -export function dimensionsScreen(screen) { - return { - type: DIMENSIONS.SCREEN, - screen - }; -} diff --git a/app/containers/EmojiPicker/EmojiCategory.js b/app/containers/EmojiPicker/EmojiCategory.js index 26061add482..8e1a124ffaf 100644 --- a/app/containers/EmojiPicker/EmojiCategory.js +++ b/app/containers/EmojiPicker/EmojiCategory.js @@ -1,7 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Text, TouchableOpacity, FlatList } from 'react-native'; -import { connect } from 'react-redux'; import shortnameToUnicode from '../../utils/shortnameToUnicode'; import styles from './styles'; @@ -25,7 +24,6 @@ class EmojiCategory extends React.Component { static propTypes = { baseUrl: PropTypes.string.isRequired, emojis: PropTypes.any, - window: PropTypes.any, onEmojiSelected: PropTypes.func, emojisPerRow: PropTypes.number, width: PropTypes.number @@ -73,8 +71,4 @@ class EmojiCategory extends React.Component { } } -const mapStateToProps = state => ({ - window: state.dimensions.window -}); - -export default connect(mapStateToProps)(EmojiCategory); +export default EmojiCategory; diff --git a/app/containers/MessageBox/UploadModal.js b/app/containers/MessageBox/UploadModal.js index 33de96911e0..1f8d703b55a 100644 --- a/app/containers/MessageBox/UploadModal.js +++ b/app/containers/MessageBox/UploadModal.js @@ -4,7 +4,6 @@ import { } from 'react-native'; import PropTypes from 'prop-types'; import Modal from 'react-native-modal'; -import { connect } from 'react-redux'; import equal from 'deep-equal'; import TextInput from '../TextInput'; @@ -89,7 +88,7 @@ class UploadModal extends Component { file: PropTypes.object, close: PropTypes.func, submit: PropTypes.func, - window: PropTypes.object, + width: PropTypes.number, theme: PropTypes.string, split: PropTypes.bool } @@ -114,7 +113,7 @@ class UploadModal extends Component { shouldComponentUpdate(nextProps, nextState) { const { name, description, file } = this.state; const { - window, isVisible, split, theme + width, isVisible, split, theme } = this.props; if (nextState.name !== name) { @@ -132,7 +131,7 @@ class UploadModal extends Component { if (nextProps.isVisible !== isVisible) { return true; } - if (nextProps.window.width !== window.width) { + if (nextProps.width !== width) { return true; } if (!equal(nextState.file, file)) { @@ -210,7 +209,7 @@ class UploadModal extends Component { render() { const { - window: { width }, isVisible, close, split, theme + width, isVisible, close, split, theme } = this.props; const { name, description } = this.state; return ( @@ -252,8 +251,4 @@ class UploadModal extends Component { } } -const mapStateToProps = state => ({ - window: state.dimensions.window -}); - -export default connect(mapStateToProps)(withTheme(withSplit(UploadModal))); +export default withTheme(withSplit(UploadModal)); diff --git a/app/containers/MessageBox/index.js b/app/containers/MessageBox/index.js index 39e29dbc7b6..6f0ad7de8c4 100644 --- a/app/containers/MessageBox/index.js +++ b/app/containers/MessageBox/index.js @@ -95,7 +95,8 @@ class MessageBox extends Component { typing: PropTypes.func, theme: PropTypes.string, replyCancel: PropTypes.func, - navigation: PropTypes.object + navigation: PropTypes.object, + width: PropTypes.number } constructor(props) { @@ -875,7 +876,9 @@ class MessageBox extends Component { render() { console.count(`${ this.constructor.name }.render calls`); const { showEmojiKeyboard, file } = this.state; - const { user, baseUrl, theme } = this.props; + const { + user, baseUrl, theme, width + } = this.props; return ( this.setState({ file: {} })} submit={this.sendMediaMessage} + width={width} /> ); @@ -915,7 +919,8 @@ const mapStateToProps = state => ({ user: getUserSelector(state), FileUpload_MediaTypeWhiteList: state.settings.FileUpload_MediaTypeWhiteList, FileUpload_MaxFileSize: state.settings.FileUpload_MaxFileSize, - Message_AudioRecorderEnabled: state.settings.Message_AudioRecorderEnabled + Message_AudioRecorderEnabled: state.settings.Message_AudioRecorderEnabled, + width: state.dimensions.width }); const dispatchToProps = ({ diff --git a/app/containers/message/Attachments.js b/app/containers/message/Attachments.js index 3d4ff48b4bf..fb42cb91bcf 100644 --- a/app/containers/message/Attachments.js +++ b/app/containers/message/Attachments.js @@ -8,7 +8,7 @@ import Video from './Video'; import Reply from './Reply'; const Attachments = React.memo(({ - attachments, timeFormat, showAttachment, getCustomEmoji, theme + attachments, timeFormat, showAttachment, getCustomEmoji, theme, scale }) => { if (!attachments || attachments.length === 0) { return null; @@ -19,7 +19,7 @@ const Attachments = React.memo(({ return ; } if (file.audio_url) { - return