Compare commits

...

5 Commits

Author SHA1 Message Date
Mattermost Build
6efa04cd19 Bump app build number to 338 and version to 1.38.1 (#5058) (#5059)
* Bump app build number to 338

* Bump app version number to 1.38.1

* Update fastlane

(cherry picked from commit 367534df12)

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2020-12-18 21:06:13 -03:00
Mattermost Build
725225d77e Set Tablet orientation explicitly to all (#5049) (#5053)
(cherry picked from commit 673f10770d)

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2020-12-18 20:41:47 -03:00
Mattermost Build
a31f2acd78 Fix ChannelLoader prop warning (#5055) (#5056)
* Fix ChannelLoader prop warning

* Missing semicolon

(cherry picked from commit f577685264)

Co-authored-by: Miguel Alatzar <migbot@users.noreply.github.com>
2020-12-18 13:57:52 -07:00
Mattermost Build
1c4aeece20 Update Rudder (#5048) (#5051)
(cherry picked from commit be75a688de)

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
2020-12-18 16:43:57 -03:00
Miguel Alatzar
de0e7ca142 [MM-31376] Do not subtract offset from accessories container (#5042) (#5050)
* Do not subtract offset from accessories container

* Missing space

* Adjust autcomplete offsetY

* Adjust placement of autocomplete

* Space fix

* Unused onLayout
2020-12-18 16:42:06 -03:00
22 changed files with 122 additions and 94 deletions

View File

@@ -132,8 +132,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
missingDimensionStrategy "RNNotifications.reactNativeVersion", "reactNative60"
versionCode 337
versionName "1.38.0"
versionCode 338
versionName "1.38.1"
multiDexEnabled = true
testBuildType System.getProperty('testBuildType', 'debug')
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'

View File

@@ -15,7 +15,7 @@ import Store from '@store/store';
Navigation.setDefaultOptions({
layout: {
orientation: [DeviceTypes.IS_TABLET ? undefined : 'portrait'],
orientation: [DeviceTypes.IS_TABLET ? 'all' : 'portrait'],
},
});

View File

@@ -17,6 +17,4 @@ function mapStateToProps(state) {
};
}
export const AUTOCOMPLETE_MAX_HEIGHT = 200;
export default connect(mapStateToProps, null, null, {forwardRef: true})(Autocomplete);

View File

@@ -42,7 +42,7 @@ export default class ChannelLoader extends PureComponent {
style: CustomPropTypes.Style,
theme: PropTypes.object.isRequired,
height: PropTypes.number,
retryLoad: PropTypes.func.isRequired,
retryLoad: PropTypes.func,
};
constructor(props) {
@@ -75,8 +75,10 @@ export default class ChannelLoader extends PureComponent {
}
componentDidMount() {
this.stillLoadingTimeout = setTimeout(this.showIndicator, 10000);
this.retryLoadInterval = setInterval(this.props.retryLoad, 10000);
if (this.props.retryLoad) {
this.stillLoadingTimeout = setTimeout(this.showIndicator, 10000);
this.retryLoadInterval = setInterval(this.props.retryLoad, 10000);
}
}
componentWillUnmount() {

View File

@@ -14,7 +14,6 @@ describe('ChannelLoader', () => {
const baseProps = {
channelIsLoading: true,
theme: Preferences.THEMES.default,
retryLoad: jest.fn(),
};
test('should match snapshot', () => {
@@ -23,15 +22,26 @@ describe('ChannelLoader', () => {
});
test('should call setTimeout and setInterval for showIndicator and retryLoad on mount', () => {
const wrapper = shallow(<ChannelLoader {...baseProps}/>);
const instance = wrapper.instance();
shallow(<ChannelLoader {...baseProps}/>);
expect(setTimeout).not.toHaveBeenCalled();
expect(setInterval).not.toHaveBeenCalled();
const props = {
...baseProps,
retryLoad: jest.fn(),
};
const wrapper = shallow(<ChannelLoader {...props}/>);
const instance = wrapper.instance();
expect(setTimeout).toHaveBeenCalledWith(instance.showIndicator, 10000);
expect(setInterval).toHaveBeenCalledWith(baseProps.retryLoad, 10000);
expect(setInterval).toHaveBeenCalledWith(props.retryLoad, 10000);
});
test('should clear timer and interval on unmount', () => {
const wrapper = shallow(<ChannelLoader {...baseProps}/>);
const props = {
...baseProps,
retryLoad: jest.fn(),
};
const wrapper = shallow(<ChannelLoader {...props}/>);
const instance = wrapper.instance();
instance.componentWillUnmount();

View File

@@ -13,12 +13,13 @@ import {SafeAreaView} from 'react-native-safe-area-context';
import {General} from '@mm-redux/constants';
import Autocomplete, {AUTOCOMPLETE_MAX_HEIGHT} from 'app/components/autocomplete';
import Autocomplete from 'app/components/autocomplete';
import ErrorText from 'app/components/error_text';
import FormattedText from 'app/components/formatted_text';
import Loading from 'app/components/loading';
import StatusBar from 'app/components/status_bar';
import TextInputWithLocalizedPlaceholder from 'app/components/text_input_with_localized_placeholder';
import DEVICE from '@constants/device';
import {
changeOpacity,
@@ -370,7 +371,7 @@ export default class EditChannelInfo extends PureComponent {
<View style={[style.autocompleteContainer, bottomStyle]}>
<Autocomplete
cursorPosition={header.length}
maxHeight={AUTOCOMPLETE_MAX_HEIGHT}
maxHeight={DEVICE.AUTOCOMPLETE_MAX_HEIGHT}
onChangeText={this.onHeaderChangeText}
value={header}
nestedScrollEnabled={true}

View File

@@ -14,6 +14,7 @@ import QuickActions from '@components/post_draft/quick_actions';
import SendAction from '@components/post_draft/send_action';
import Typing from '@components/post_draft/typing';
import Uploads from '@components/post_draft/uploads';
import DEVICE from '@constants/device';
import {CHANNEL_POST_TEXTBOX_CURSOR_CHANGE, CHANNEL_POST_TEXTBOX_VALUE_CHANGE, IS_REACTION_REGEX} from '@constants/post_draft';
import {NOTIFY_ALL_MEMBERS} from '@constants/view';
import EventEmitter from '@mm-redux/utils/event_emitter';
@@ -23,7 +24,6 @@ import {confirmOutOfOfficeDisabled} from '@utils/status';
import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme';
const AUTOCOMPLETE_MARGIN = 20;
const AUTOCOMPLETE_MAX_HEIGHT = 200;
const HW_SHIFT_ENTER_TEXT = Platform.OS === 'ios' ? '\n' : '';
const HW_EVENT_IN_SCREEN = ['Channel', 'Thread'];
@@ -417,6 +417,17 @@ export default class DraftInput extends PureComponent {
theme={theme}
registerTypingAnimation={registerTypingAnimation}
/>
{Platform.OS === 'android' &&
<Autocomplete
cursorPositionEvent={cursorPositionEvent}
maxHeight={Math.min(this.state.top - AUTOCOMPLETE_MARGIN, DEVICE.AUTOCOMPLETE_MAX_HEIGHT)}
onChangeText={this.handleInputQuickAction}
valueEvent={valueEvent}
rootId={rootId}
channelId={channelId}
offsetY={0}
/>
}
<SafeAreaView
edges={['left', 'right']}
onLayout={this.handleLayout}
@@ -469,16 +480,6 @@ export default class DraftInput extends PureComponent {
</View>
</ScrollView>
</SafeAreaView>
{Platform.OS === 'android' &&
<Autocomplete
cursorPositionEvent={cursorPositionEvent}
maxHeight={Math.min(this.state.top - AUTOCOMPLETE_MARGIN, AUTOCOMPLETE_MAX_HEIGHT)}
onChangeText={this.handleInputQuickAction}
valueEvent={valueEvent}
rootId={rootId}
channelId={channelId}
/>
}
</>
);
}

View File

@@ -8,6 +8,7 @@ import {intlShape} from 'react-intl';
import PasteableTextInput from '@components/pasteable_text_input';
import {NavigationTypes} from '@constants';
import DEVICE from '@constants/device';
import {INSERT_TO_COMMENT, INSERT_TO_DRAFT} from '@constants/post_draft';
import EventEmitter from '@mm-redux/utils/event_emitter';
import {t} from '@utils/i18n';
@@ -270,7 +271,7 @@ export default class PostInput extends PureComponent {
const {channelDisplayName, isLandscape, theme} = this.props;
const style = getStyleSheet(theme);
const placeholder = this.getPlaceHolder();
let maxHeight = 150;
let maxHeight = DEVICE.POST_INPUT_MAX_HEIGHT;
if (isLandscape) {
maxHeight = 88;

View File

@@ -14,13 +14,19 @@ const deviceTypes = keyMirror({
STATUSBAR_HEIGHT_CHANGED: null,
});
const isPhoneWithInsets = Platform.OS === 'ios' && DeviceInfo.hasNotch();
const isTablet = DeviceInfo.isTablet();
const isIPhone12Mini = DeviceInfo.getModel() === 'iPhone 12 mini';
export default {
...deviceTypes,
DOCUMENTS_PATH: `${RNFetchBlobFS.dirs.CacheDir}/Documents`,
IMAGES_PATH: `${RNFetchBlobFS.dirs.CacheDir}/Images`,
IS_IPHONE_WITH_INSETS: Platform.OS === 'ios' && DeviceInfo.hasNotch(),
IS_IPHONE_WITH_INSETS: isPhoneWithInsets,
IS_TABLET: DeviceInfo.isTablet(),
VIDEOS_PATH: `${RNFetchBlobFS.dirs.CacheDir}/Videos`,
PERMANENT_SIDEBAR_SETTINGS: '@PERMANENT_SIDEBAR_SETTINGS',
TABLET_WIDTH: 250,
AUTOCOMPLETE_MAX_HEIGHT: (isPhoneWithInsets && !isIPhone12Mini) || isTablet ? 200 : 145,
POST_INPUT_MAX_HEIGHT: (isPhoneWithInsets && !isIPhone12Mini) || isTablet ? 150 : 88,
};

View File

@@ -7,13 +7,14 @@ import {SafeAreaView} from 'react-native-safe-area-context';
import LocalConfig from '@assets/config';
import AnnouncementBanner from 'app/components/announcement_banner';
import Autocomplete, {AUTOCOMPLETE_MAX_HEIGHT} from '@components/autocomplete';
import Autocomplete from '@components/autocomplete';
import InteractiveDialogController from '@components/interactive_dialog_controller';
import NetworkIndicator from '@components/network_indicator';
import PostDraft from '@components/post_draft';
import MainSidebar from '@components/sidebars/main';
import SettingsSidebar from '@components/sidebars/settings';
import StatusBar from '@components/status_bar';
import DEVICE from '@constants/device';
import {ACCESSORIES_CONTAINER_NATIVE_ID, CHANNEL_POST_TEXTBOX_CURSOR_CHANGE, CHANNEL_POST_TEXTBOX_VALUE_CHANGE} from '@constants/post_draft';
import {makeStyleSheetFromTheme} from '@utils/theme';
@@ -98,6 +99,16 @@ export default class ChannelIOS extends ChannelBase {
{component}
</SafeAreaView>
{indicators}
<View nativeID={ACCESSORIES_CONTAINER_NATIVE_ID}>
<Autocomplete
maxHeight={DEVICE.AUTOCOMPLETE_MAX_HEIGHT}
onChangeText={this.handleAutoComplete}
cursorPositionEvent={CHANNEL_POST_TEXTBOX_CURSOR_CHANGE}
valueEvent={CHANNEL_POST_TEXTBOX_VALUE_CHANGE}
channelId={currentChannelId}
offsetY={0}
/>
</View>
{renderDraftArea &&
<PostDraft
accessoriesContainerID={ACCESSORIES_CONTAINER_NATIVE_ID}
@@ -109,15 +120,6 @@ export default class ChannelIOS extends ChannelBase {
valueEvent={CHANNEL_POST_TEXTBOX_VALUE_CHANGE}
/>
}
<View nativeID={ACCESSORIES_CONTAINER_NATIVE_ID}>
<Autocomplete
maxHeight={AUTOCOMPLETE_MAX_HEIGHT}
onChangeText={this.handleAutoComplete}
cursorPositionEvent={CHANNEL_POST_TEXTBOX_CURSOR_CHANGE}
valueEvent={CHANNEL_POST_TEXTBOX_VALUE_CHANGE}
channelId={currentChannelId}
/>
</View>
</>
);

View File

@@ -12,11 +12,12 @@ import {Navigation} from 'react-native-navigation';
import {KeyboardTrackingView} from 'react-native-keyboard-tracking-view';
import {SafeAreaView} from 'react-native-safe-area-context';
import Autocomplete, {AUTOCOMPLETE_MAX_HEIGHT} from 'app/components/autocomplete';
import Autocomplete from 'app/components/autocomplete';
import ErrorText from 'app/components/error_text';
import Loading from 'app/components/loading';
import StatusBar from 'app/components/status_bar';
import TextInputWithLocalizedPlaceholder from 'app/components/text_input_with_localized_placeholder';
import DEVICE from '@constants/device';
import {switchKeyboardForCodeBlocks} from 'app/utils/markdown';
import {
changeOpacity,
@@ -280,7 +281,7 @@ export default class EditPost extends PureComponent {
<KeyboardTrackingView style={autocompleteStyles}>
<Autocomplete
cursorPosition={this.state.cursorPosition}
maxHeight={AUTOCOMPLETE_MAX_HEIGHT}
maxHeight={DEVICE.AUTOCOMPLETE_MAX_HEIGHT}
onChangeText={this.onPostChangeText}
value={message}
nestedScrollEnabled={true}

View File

@@ -50,6 +50,19 @@ exports[`thread should match snapshot, has root post 1`] = `
</ForwardRef(AnimatedComponentWrapper)>
</React.Fragment>
</Connect(SafeArea)>
<View
nativeID="threadAccessoriesContainer"
>
<Connect(Autocomplete)
channelId="channel_id"
cursorPositionEvent="onThreadTextBoxCursorChange"
maxHeight={200}
offsetY={0}
onChangeText={[Function]}
rootId="root_id"
valueEvent="onThreadTextBoxValueChange"
/>
</View>
<Connect(PostDraft)
accessoriesContainerID="threadAccessoriesContainer"
channelId="channel_id"
@@ -60,18 +73,6 @@ exports[`thread should match snapshot, has root post 1`] = `
scrollViewNativeID="threadPostList"
valueEvent="onThreadTextBoxValueChange"
/>
<View
nativeID="threadAccessoriesContainer"
>
<Connect(Autocomplete)
channelId="channel_id"
cursorPositionEvent="onThreadTextBoxCursorChange"
maxHeight={200}
onChangeText={[Function]}
rootId="root_id"
valueEvent="onThreadTextBoxValueChange"
/>
</View>
</React.Fragment>
`;
@@ -103,6 +104,7 @@ exports[`thread should match snapshot, no root post, loading 1`] = `
channelId="channel_id"
cursorPositionEvent="onThreadTextBoxCursorChange"
maxHeight={200}
offsetY={0}
onChangeText={[Function]}
rootId="root_id"
valueEvent="onThreadTextBoxValueChange"
@@ -185,6 +187,7 @@ exports[`thread should match snapshot, render footer 3`] = `
channelId="channel_id"
cursorPositionEvent="onThreadTextBoxCursorChange"
maxHeight={200}
offsetY={0}
onChangeText={[Function]}
rootId="root_id"
valueEvent="onThreadTextBoxValueChange"

View File

@@ -4,12 +4,13 @@
import React from 'react';
import {Animated, View} from 'react-native';
import Autocomplete, {AUTOCOMPLETE_MAX_HEIGHT} from '@components/autocomplete';
import Autocomplete from '@components/autocomplete';
import Loading from '@components/loading';
import PostList from '@components/post_list';
import PostDraft from '@components/post_draft';
import SafeAreaView from '@components/safe_area_view';
import StatusBar from '@components/status_bar';
import DEVICE from '@constants/device';
import {THREAD} from '@constants/screen';
import {getLastPostIndex} from '@mm-redux/utils/post_list';
import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme';
@@ -90,17 +91,18 @@ export default class ThreadIOS extends ThreadBase {
<StatusBar/>
{content}
</SafeAreaView>
{postDraft}
<View nativeID={ACCESSORIES_CONTAINER_NATIVE_ID}>
<Autocomplete
maxHeight={AUTOCOMPLETE_MAX_HEIGHT}
maxHeight={DEVICE.AUTOCOMPLETE_MAX_HEIGHT}
onChangeText={this.handleAutoComplete}
cursorPositionEvent={THREAD_POST_TEXTBOX_CURSOR_CHANGE}
valueEvent={THREAD_POST_TEXTBOX_VALUE_CHANGE}
rootId={rootId}
channelId={channelId}
offsetY={0}
/>
</View>
{postDraft}
</React.Fragment>
);
}

View File

@@ -1,23 +1,23 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.2)
CFPropertyList (3.0.3)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
atomos (0.1.3)
aws-eventstream (1.1.0)
aws-partitions (1.393.0)
aws-sdk-core (3.109.2)
aws-partitions (1.410.0)
aws-sdk-core (3.110.0)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.39.0)
aws-sdk-kms (1.40.0)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.84.1)
aws-sdk-s3 (1.86.2)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sdk-kms (~> 1)
aws-sdk-kms (~> 1.26)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.2.2)
aws-eventstream (~> 1, >= 1.0.2)
@@ -29,13 +29,13 @@ GEM
highline (~> 1.7.2)
declarative (0.0.20)
declarative-option (0.1.0)
digest-crc (0.6.1)
rake (~> 13.0)
digest-crc (0.6.2)
rake (~> 12.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6)
emoji_regex (3.2.1)
excon (0.78.0)
excon (0.78.1)
faraday (1.1.0)
multipart-post (>= 1.2, < 3)
ruby2_keywords
@@ -45,7 +45,7 @@ GEM
faraday_middleware (1.0.0)
faraday (~> 1.0)
fastimage (2.2.0)
fastlane (2.167.0)
fastlane (2.170.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
aws-sdk-s3 (~> 1.0)
@@ -101,7 +101,7 @@ GEM
google-cloud-env (1.4.0)
faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.0.1)
google-cloud-storage (1.29.1)
google-cloud-storage (1.29.2)
addressable (~> 2.5)
digest-crc (~> 0.4)
google-api-client (~> 0.33)
@@ -120,7 +120,7 @@ GEM
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.4.0)
json (2.3.1)
json (2.4.1)
jwt (2.2.2)
memoist (0.16.2)
mini_magick (4.11.0)
@@ -135,7 +135,7 @@ GEM
os (1.1.1)
plist (3.5.0)
public_suffix (4.0.6)
rake (13.0.1)
rake (12.3.3)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)

View File

@@ -911,7 +911,7 @@
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 337;
CURRENT_PROJECT_VERSION = 338;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
ENABLE_BITCODE = NO;
@@ -953,7 +953,7 @@
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 337;
CURRENT_PROJECT_VERSION = 338;
DEAD_CODE_STRIPPING = NO;
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
ENABLE_BITCODE = NO;

View File

@@ -21,7 +21,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.38.0</string>
<string>1.38.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@@ -36,7 +36,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>337</string>
<string>338</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSRequiresIPhoneOS</key>

View File

@@ -19,9 +19,9 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.38.0</string>
<string>1.38.1</string>
<key>CFBundleVersion</key>
<string>337</string>
<string>338</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>

View File

@@ -19,9 +19,9 @@
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>1.38.0</string>
<string>1.38.1</string>
<key>CFBundleVersion</key>
<string>337</string>
<string>338</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>

View File

@@ -359,7 +359,7 @@ PODS:
- React
- RNVectorIcons (7.1.0):
- React
- Rudder (1.0.9)
- Rudder (1.0.10)
- SDWebImage (5.9.4):
- SDWebImage/Core (= 5.9.4)
- SDWebImage/Core (5.9.4)
@@ -672,7 +672,7 @@ SPEC CHECKSUMS:
RNShare: 106a76243ac90f43ddb9028dcb78ade406b8adff
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59
Rudder: 90ed801a09c73017184e6fc901370be1754eb182
Rudder: 05e61fe2e59bcd65931f4a47d21011e15adf7159
SDWebImage: b69257f4ab14e9b6a2ef53e910fdf914d8f757c1
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
Sentry: e2c691627ae1dc0029acebbd1b0b4af4df12af73

8
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "mattermost-mobile",
"version": "1.38.0",
"version": "1.38.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -6130,9 +6130,9 @@
}
},
"@rudderstack/rudder-sdk-react-native": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@rudderstack/rudder-sdk-react-native/-/rudder-sdk-react-native-1.0.3.tgz",
"integrity": "sha512-eYvNPh+x/XxcxM+jsUO5MN1y0U+PwIiHZyzvM66eIx/fwcPLQDLNDqW3pj99dhtf/9sv5Gu4EXtT3hFtLJ76pg==",
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@rudderstack/rudder-sdk-react-native/-/rudder-sdk-react-native-1.0.4.tgz",
"integrity": "sha512-jSzgtHvuv0gqFgsCAsyyV4Cmk+rWg8TgPiLHLay8xELLxvIwRalkBv5bN3eFRJOYJQuIwR1KBQ3+p7nFHszN2w==",
"requires": {
"@babel/runtime": "^7.7.7",
"@types/react-native": "^0.62.2"

View File

@@ -1,6 +1,6 @@
{
"name": "mattermost-mobile",
"version": "1.38.0",
"version": "1.38.1",
"description": "Mattermost Mobile with React Native",
"repository": "git@github.com:mattermost/mattermost-mobile.git",
"author": "Mattermost, Inc.",
@@ -15,7 +15,7 @@
"@react-native-community/netinfo": "5.9.7",
"@react-navigation/native": "5.8.9",
"@react-navigation/stack": "5.12.6",
"@rudderstack/rudder-sdk-react-native": "1.0.3",
"@rudderstack/rudder-sdk-react-native": "1.0.4",
"@sentry/react-native": "2.0.0",
"analytics-react-native": "1.2.0",
"commonmark": "github:mattermost/commonmark.js#f6ab98dede6ce4b4e7adea140ac77249bfb2d6ce",

View File

@@ -1,5 +1,5 @@
diff --git a/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m b/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m
index 1333a10..53b73a6 100644
index 1333a10..6922a17 100644
--- a/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m
+++ b/node_modules/react-native-keyboard-tracking-view/lib/KeyboardTrackingViewManager.m
@@ -23,7 +23,7 @@
@@ -197,7 +197,7 @@ index 1333a10..53b73a6 100644
}
}
else if(self.scrollBehavior == KeyboardTrackingScrollBehaviorFixedOffset && !self.isDraggingScrollView)
@@ -422,16 +459,20 @@ - (void)_updateScrollViewInsets
@@ -422,16 +459,21 @@ - (void)_updateScrollViewInsets
self.scrollViewToManage.contentOffset = CGPointMake(originalOffset.x, originalOffset.y + insetsDiff);
}
@@ -219,14 +219,15 @@ index 1333a10..53b73a6 100644
+ self.scrollViewToManage.frame = frame;
+
+ if (self.accessoriesContainer) {
+ self.accessoriesContainer.bounds = CGRectMake(self.accessoriesContainer.bounds.origin.x, positionY,
+ CGFloat containerPositionY = self.normalList ? 0 : _observingInputAccessoryView.keyboardHeight;
+ self.accessoriesContainer.bounds = CGRectMake(self.accessoriesContainer.bounds.origin.x, containerPositionY,
+ self.accessoriesContainer.bounds.size.width, self.accessoriesContainer.bounds.size.height);
}
- self.scrollViewToManage.scrollIndicatorInsets = insets;
}
}
@@ -448,7 +489,6 @@ -(void)addBottomViewIfNecessary
@@ -448,7 +490,6 @@ -(void)addBottomViewIfNecessary
if (self.addBottomView && _bottomView == nil)
{
_bottomView = [UIView new];
@@ -234,7 +235,7 @@ index 1333a10..53b73a6 100644
[self addSubview:_bottomView];
[self updateBottomViewFrame];
}
@@ -467,6 +507,12 @@ -(void)updateBottomViewFrame
@@ -467,6 +508,12 @@ -(void)updateBottomViewFrame
}
}
@@ -247,7 +248,7 @@ index 1333a10..53b73a6 100644
#pragma mark - safe area
-(void)safeAreaInsetsDidChange
@@ -510,7 +556,7 @@ -(void)updateTransformAndInsets
@@ -510,7 +557,7 @@ -(void)updateTransformAndInsets
CGFloat accessoryTranslation = MIN(-bottomSafeArea, -_observingInputAccessoryView.keyboardHeight);
if (_observingInputAccessoryView.keyboardHeight <= bottomSafeArea) {
@@ -256,7 +257,7 @@ index 1333a10..53b73a6 100644
} else if (_observingInputAccessoryView.keyboardState != KeyboardStateWillHide) {
_bottomViewHeight = 0;
}
@@ -582,6 +628,8 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView
@@ -582,6 +629,8 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
self.isDraggingScrollView = YES;
@@ -265,7 +266,7 @@ index 1333a10..53b73a6 100644
}
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
@@ -592,6 +640,15 @@ - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoi
@@ -592,6 +641,15 @@ - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoi
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
self.isDraggingScrollView = NO;
@@ -281,7 +282,7 @@ index 1333a10..53b73a6 100644
}
- (CGFloat)getKeyboardHeight
@@ -634,6 +691,12 @@ @implementation KeyboardTrackingViewManager
@@ -634,6 +692,12 @@ @implementation KeyboardTrackingViewManager
RCT_REMAP_VIEW_PROPERTY(addBottomView, addBottomView, BOOL)
RCT_REMAP_VIEW_PROPERTY(scrollToFocusedInput, scrollToFocusedInput, BOOL)
RCT_REMAP_VIEW_PROPERTY(allowHitsOutsideBounds, allowHitsOutsideBounds, BOOL)
@@ -294,7 +295,7 @@ index 1333a10..53b73a6 100644
+ (BOOL)requiresMainQueueSetup
{
@@ -654,6 +717,20 @@ - (UIView *)view
@@ -654,6 +718,20 @@ - (UIView *)view
return [[KeyboardTrackingView alloc] init];
}