* Update dependencies
* Fix lint, use npm@6
* Fix unit tests
* Dowgrade Fastlane
* Fix Fastlane script
* use android:api-29-node ci image
* Infer gradle json file from apk output folder
* Fastlane to Parse new version of gradle output-metadata.json
(cherry picked from commit f8a0f29237)
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
This commit is contained in:
parent
e48371646b
commit
bb0e056fba
85 changed files with 8934 additions and 16258 deletions
|
|
@ -23,7 +23,7 @@ executors:
|
|||
NODE_ENV: production
|
||||
BABEL_ENV: production
|
||||
macos:
|
||||
xcode: "12.0.0"
|
||||
xcode: "12.1.0"
|
||||
working_directory: ~/mattermost-mobile
|
||||
shell: /bin/bash --login -o pipefail
|
||||
|
||||
|
|
@ -550,14 +550,14 @@ workflows:
|
|||
- test
|
||||
filters:
|
||||
branches:
|
||||
only: /^build-pr-.*/
|
||||
only: /^(build|android)-pr-.*/
|
||||
- build-ios-pr:
|
||||
context: mattermost-mobile-ios-pr
|
||||
requires:
|
||||
- test
|
||||
filters:
|
||||
branches:
|
||||
only: /^build-pr-.*/
|
||||
only: /^(build|ios)-pr-.*/
|
||||
|
||||
- build-android-unsigned:
|
||||
context: mattermost-mobile-unsigned
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@
|
|||
],
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"plugins": [
|
||||
"mattermost",
|
||||
"@typescript-eslint"
|
||||
"@typescript-eslint",
|
||||
"mattermost"
|
||||
],
|
||||
"settings": {
|
||||
"react": {
|
||||
|
|
|
|||
13
.flowconfig
13
.flowconfig
|
|
@ -8,10 +8,6 @@
|
|||
; Ignore polyfills
|
||||
node_modules/react-native/Libraries/polyfills/.*
|
||||
|
||||
; These should not be required directly
|
||||
; require from fbjs/lib instead: require('fbjs/lib/warning')
|
||||
node_modules/warning/.*
|
||||
|
||||
; Flow doesn't support platforms
|
||||
.*/Libraries/Utilities/LoadingView.js
|
||||
|
||||
|
|
@ -30,6 +26,8 @@ emoji=true
|
|||
esproposal.optional_chaining=enable
|
||||
esproposal.nullish_coalescing=enable
|
||||
|
||||
exact_by_default=true
|
||||
|
||||
module.file_ext=.js
|
||||
module.file_ext=.json
|
||||
module.file_ext=.ios.js
|
||||
|
|
@ -44,10 +42,6 @@ suppress_type=$FlowFixMe
|
|||
suppress_type=$FlowFixMeProps
|
||||
suppress_type=$FlowFixMeState
|
||||
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
|
||||
|
||||
[lints]
|
||||
sketchy-null-number=warn
|
||||
sketchy-null-mixed=warn
|
||||
|
|
@ -59,7 +53,6 @@ unsafe-getters-setters=warn
|
|||
inexact-spread=warn
|
||||
unnecessary-invariant=warn
|
||||
signature-verification-failure=warn
|
||||
deprecated-utility=error
|
||||
|
||||
[strict]
|
||||
deprecated-type
|
||||
|
|
@ -71,4 +64,4 @@ untyped-import
|
|||
untyped-type-import
|
||||
|
||||
[version]
|
||||
^0.122.0
|
||||
^0.137.0
|
||||
|
|
|
|||
7
.gitattributes
vendored
7
.gitattributes
vendored
|
|
@ -1,4 +1,3 @@
|
|||
*.pbxproj -text
|
||||
|
||||
# specific for windows script files
|
||||
*.bat text eol=crlf
|
||||
# Windows files should use crlf line endings
|
||||
# https://help.github.com/articles/dealing-with-line-endings/
|
||||
*.bat text eol=crlf
|
||||
1
.husky/.gitignore
vendored
Normal file
1
.husky/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
_
|
||||
4
.husky/pre-commit
Executable file
4
.husky/pre-commit
Executable file
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
sh ./scripts/pre-commit.sh
|
||||
|
|
@ -191,6 +191,10 @@ android {
|
|||
targetCompatibility 1.8
|
||||
}
|
||||
|
||||
packagingOptions {
|
||||
pickFirst '**/*.so'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
|
|||
|
|
@ -4,5 +4,10 @@
|
|||
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
|
||||
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
|
||||
<application
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:targetApi="28"
|
||||
tools:ignore="GoogleAppIndexingWarning">
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
|||
|
|
@ -50,7 +50,6 @@
|
|||
<data android:scheme="mmauthbeta" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
|
||||
<service android:name=".NotificationDismissService"
|
||||
android:enabled="true"
|
||||
android:exported="false" />
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<resources>
|
||||
|
||||
<!-- Base application theme. -->
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
|
||||
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
|
||||
<!-- Customize your theme here. -->
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "29.0.2"
|
||||
buildToolsVersion = "29.0.3"
|
||||
minSdkVersion = 24
|
||||
compileSdkVersion = 29
|
||||
targetSdkVersion = 29
|
||||
|
|
@ -10,6 +10,7 @@ buildscript {
|
|||
kotlinVersion = "1.3.61"
|
||||
firebaseVersion = "21.0.0"
|
||||
RNNKotlinVersion = kotlinVersion
|
||||
ndkVersion = "21.1.6352462"
|
||||
|
||||
}
|
||||
repositories {
|
||||
|
|
@ -19,7 +20,7 @@ buildscript {
|
|||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.5.3'
|
||||
classpath 'com.android.tools.build:gradle:4.1.0'
|
||||
classpath 'com.google.gms:google-services:4.2.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
|
||||
|
|
|
|||
|
|
@ -30,4 +30,4 @@ android.useAndroidX=true
|
|||
android.enableJetifier=true
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.37.0
|
||||
FLIPPER_VERSION=0.75.1
|
||||
|
|
|
|||
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
|
|
@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
|||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
|
||||
|
|
|
|||
22
android/gradlew.bat
vendored
22
android/gradlew.bat
vendored
|
|
@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
|||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if "%ERRORLEVEL%" == "0" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
|
@ -54,7 +54,7 @@ goto fail
|
|||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
|
|
@ -64,28 +64,14 @@ echo location of your Java installation.
|
|||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import {
|
|||
Platform,
|
||||
} from 'react-native';
|
||||
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
import {Client4} from '@mm-redux/client';
|
||||
import {isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
||||
import {Command, AutocompleteSuggestion, CommandArgs} from '@mm-redux/types/integrations';
|
||||
|
|
|
|||
|
|
@ -29,6 +29,35 @@ exports[`Avatars should match snapshot for overflow 1`] = `
|
|||
showStatus={false}
|
||||
size={24}
|
||||
testID="avatars.profile_picture"
|
||||
theme={
|
||||
Object {
|
||||
"awayIndicator": "#ffbc42",
|
||||
"buttonBg": "#166de0",
|
||||
"buttonColor": "#ffffff",
|
||||
"centerChannelBg": "#ffffff",
|
||||
"centerChannelColor": "#3d3c40",
|
||||
"codeTheme": "github",
|
||||
"dndIndicator": "#f74343",
|
||||
"errorTextColor": "#fd5960",
|
||||
"linkColor": "#2389d7",
|
||||
"mentionBg": "#ffffff",
|
||||
"mentionBj": "#ffffff",
|
||||
"mentionColor": "#145dbf",
|
||||
"mentionHighlightBg": "#ffe577",
|
||||
"mentionHighlightLink": "#166de0",
|
||||
"newMessageSeparator": "#ff8800",
|
||||
"onlineIndicator": "#06d6a0",
|
||||
"sidebarBg": "#145dbf",
|
||||
"sidebarHeaderBg": "#1153ab",
|
||||
"sidebarHeaderTextColor": "#ffffff",
|
||||
"sidebarText": "#ffffff",
|
||||
"sidebarTextActiveBorder": "#579eff",
|
||||
"sidebarTextActiveColor": "#ffffff",
|
||||
"sidebarTextHoverBg": "#4578bf",
|
||||
"sidebarUnreadText": "#ffffff",
|
||||
"type": "Mattermost",
|
||||
}
|
||||
}
|
||||
userId="user1"
|
||||
/>
|
||||
</View>
|
||||
|
|
@ -51,6 +80,35 @@ exports[`Avatars should match snapshot for overflow 1`] = `
|
|||
showStatus={false}
|
||||
size={24}
|
||||
testID="avatars.profile_picture"
|
||||
theme={
|
||||
Object {
|
||||
"awayIndicator": "#ffbc42",
|
||||
"buttonBg": "#166de0",
|
||||
"buttonColor": "#ffffff",
|
||||
"centerChannelBg": "#ffffff",
|
||||
"centerChannelColor": "#3d3c40",
|
||||
"codeTheme": "github",
|
||||
"dndIndicator": "#f74343",
|
||||
"errorTextColor": "#fd5960",
|
||||
"linkColor": "#2389d7",
|
||||
"mentionBg": "#ffffff",
|
||||
"mentionBj": "#ffffff",
|
||||
"mentionColor": "#145dbf",
|
||||
"mentionHighlightBg": "#ffe577",
|
||||
"mentionHighlightLink": "#166de0",
|
||||
"newMessageSeparator": "#ff8800",
|
||||
"onlineIndicator": "#06d6a0",
|
||||
"sidebarBg": "#145dbf",
|
||||
"sidebarHeaderBg": "#1153ab",
|
||||
"sidebarHeaderTextColor": "#ffffff",
|
||||
"sidebarText": "#ffffff",
|
||||
"sidebarTextActiveBorder": "#579eff",
|
||||
"sidebarTextActiveColor": "#ffffff",
|
||||
"sidebarTextHoverBg": "#4578bf",
|
||||
"sidebarUnreadText": "#ffffff",
|
||||
"type": "Mattermost",
|
||||
}
|
||||
}
|
||||
userId="user2"
|
||||
/>
|
||||
</View>
|
||||
|
|
@ -73,6 +131,35 @@ exports[`Avatars should match snapshot for overflow 1`] = `
|
|||
showStatus={false}
|
||||
size={24}
|
||||
testID="avatars.profile_picture"
|
||||
theme={
|
||||
Object {
|
||||
"awayIndicator": "#ffbc42",
|
||||
"buttonBg": "#166de0",
|
||||
"buttonColor": "#ffffff",
|
||||
"centerChannelBg": "#ffffff",
|
||||
"centerChannelColor": "#3d3c40",
|
||||
"codeTheme": "github",
|
||||
"dndIndicator": "#f74343",
|
||||
"errorTextColor": "#fd5960",
|
||||
"linkColor": "#2389d7",
|
||||
"mentionBg": "#ffffff",
|
||||
"mentionBj": "#ffffff",
|
||||
"mentionColor": "#145dbf",
|
||||
"mentionHighlightBg": "#ffe577",
|
||||
"mentionHighlightLink": "#166de0",
|
||||
"newMessageSeparator": "#ff8800",
|
||||
"onlineIndicator": "#06d6a0",
|
||||
"sidebarBg": "#145dbf",
|
||||
"sidebarHeaderBg": "#1153ab",
|
||||
"sidebarHeaderTextColor": "#ffffff",
|
||||
"sidebarText": "#ffffff",
|
||||
"sidebarTextActiveBorder": "#579eff",
|
||||
"sidebarTextActiveColor": "#ffffff",
|
||||
"sidebarTextHoverBg": "#4578bf",
|
||||
"sidebarUnreadText": "#ffffff",
|
||||
"type": "Mattermost",
|
||||
}
|
||||
}
|
||||
userId="user3"
|
||||
/>
|
||||
</View>
|
||||
|
|
@ -151,6 +238,35 @@ exports[`Avatars should match snapshot for single avatar 1`] = `
|
|||
showStatus={false}
|
||||
size={24}
|
||||
testID="avatars.profile_picture"
|
||||
theme={
|
||||
Object {
|
||||
"awayIndicator": "#ffbc42",
|
||||
"buttonBg": "#166de0",
|
||||
"buttonColor": "#ffffff",
|
||||
"centerChannelBg": "#ffffff",
|
||||
"centerChannelColor": "#3d3c40",
|
||||
"codeTheme": "github",
|
||||
"dndIndicator": "#f74343",
|
||||
"errorTextColor": "#fd5960",
|
||||
"linkColor": "#2389d7",
|
||||
"mentionBg": "#ffffff",
|
||||
"mentionBj": "#ffffff",
|
||||
"mentionColor": "#145dbf",
|
||||
"mentionHighlightBg": "#ffe577",
|
||||
"mentionHighlightLink": "#166de0",
|
||||
"newMessageSeparator": "#ff8800",
|
||||
"onlineIndicator": "#06d6a0",
|
||||
"sidebarBg": "#145dbf",
|
||||
"sidebarHeaderBg": "#1153ab",
|
||||
"sidebarHeaderTextColor": "#ffffff",
|
||||
"sidebarText": "#ffffff",
|
||||
"sidebarTextActiveBorder": "#579eff",
|
||||
"sidebarTextActiveColor": "#ffffff",
|
||||
"sidebarTextHoverBg": "#4578bf",
|
||||
"sidebarUnreadText": "#ffffff",
|
||||
"type": "Mattermost",
|
||||
}
|
||||
}
|
||||
userId="user1"
|
||||
/>
|
||||
</View>
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ export default class Avatars extends PureComponent<AvatarsProps> {
|
|||
size={ViewTypes.AVATAR_LIST_PICTURE_SIZE}
|
||||
showStatus={false}
|
||||
testID='avatars.profile_picture'
|
||||
theme={theme}
|
||||
/>
|
||||
</View>
|
||||
))}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@ import PropTypes from 'prop-types';
|
|||
import {Text} from 'react-native';
|
||||
import {intlShape} from 'react-intl';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import {t} from 'app/utils/i18n';
|
||||
import {alertErrorWithFallback} from 'app/utils/general';
|
||||
import {popToRoot, dismissAllModals} from 'app/actions/navigation';
|
||||
import {popToRoot, dismissAllModals} from '@actions/navigation';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import {t} from '@utils/i18n';
|
||||
import {alertErrorWithFallback} from '@utils/general';
|
||||
|
||||
import {getChannelFromChannelName} from './channel_link_utils';
|
||||
|
||||
|
|
|
|||
|
|
@ -5,12 +5,12 @@ import PropTypes from 'prop-types';
|
|||
import React from 'react';
|
||||
import {TouchableOpacity} from 'react-native';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class ConditionalTouchable extends React.PureComponent {
|
||||
static propTypes = {
|
||||
touchable: PropTypes.bool,
|
||||
children: CustomPropTypes.Children.isRequired,
|
||||
children: CustomPropTypes.Children,
|
||||
};
|
||||
|
||||
render() {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import {
|
|||
} from 'react-native';
|
||||
import FastImage from 'react-native-fast-image';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class Emoji extends React.PureComponent {
|
||||
static propTypes = {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import React, {PureComponent} from 'react';
|
|||
import PropTypes from 'prop-types';
|
||||
import {Text} from 'react-native';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import FormattedText from 'app/components/formatted_text';
|
||||
import {GlobalStyles} from 'app/styles';
|
||||
import {makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import {injectIntl, intlShape} from 'react-intl';
|
|||
|
||||
import {concatStyles, changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
import {getMarkdownTextStyles} from 'app/utils/markdown';
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
import AtMention from 'app/components/at_mention';
|
||||
import MarkdownLink from 'app/components/markdown/markdown_link';
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import PropTypes from 'prop-types';
|
|||
import {Text} from 'react-native';
|
||||
import moment from 'moment-timezone';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class FormattedTime extends React.PureComponent {
|
||||
static propTypes = {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import {
|
|||
View,
|
||||
} from 'react-native';
|
||||
|
||||
import * as CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import * as CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class KeyboardLayout extends PureComponent {
|
||||
static propTypes = {
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@ import PropTypes from 'prop-types';
|
|||
import React from 'react';
|
||||
import {Text} from 'react-native';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import {popToRoot, showSearchModal, dismissAllModals} from 'app/actions/navigation';
|
||||
|
||||
export default class Hashtag extends React.PureComponent {
|
||||
static propTypes = {
|
||||
hashtag: PropTypes.string.isRequired,
|
||||
linkStyle: CustomPropTypes.Style.isRequired,
|
||||
linkStyle: CustomPropTypes.Style,
|
||||
onHashtagPress: PropTypes.func,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ import ChannelLink from 'app/components/channel_link';
|
|||
import Emoji from 'app/components/emoji';
|
||||
import FormattedText from 'app/components/formatted_text';
|
||||
import Hashtag from 'app/components/markdown/hashtag';
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import {blendColors, concatStyles, makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
import {getScheme} from 'app/utils/url';
|
||||
|
||||
|
|
@ -39,7 +39,7 @@ import {
|
|||
|
||||
export default class Markdown extends PureComponent {
|
||||
static propTypes = {
|
||||
autolinkedUrlSchemes: PropTypes.array.isRequired,
|
||||
autolinkedUrlSchemes: PropTypes.array,
|
||||
baseTextStyle: CustomPropTypes.Style,
|
||||
blockStyles: PropTypes.object,
|
||||
channelMentions: PropTypes.object,
|
||||
|
|
@ -47,15 +47,15 @@ export default class Markdown extends PureComponent {
|
|||
isEdited: PropTypes.bool,
|
||||
isReplyPost: PropTypes.bool,
|
||||
isSearchResult: PropTypes.bool,
|
||||
mentionKeys: PropTypes.array.isRequired,
|
||||
minimumHashtagLength: PropTypes.number.isRequired,
|
||||
mentionKeys: PropTypes.array,
|
||||
minimumHashtagLength: PropTypes.number,
|
||||
onChannelLinkPress: PropTypes.func,
|
||||
onHashtagPress: PropTypes.func,
|
||||
onPermalinkPress: PropTypes.func,
|
||||
onPostPress: PropTypes.func,
|
||||
postId: PropTypes.string,
|
||||
textStyles: PropTypes.object,
|
||||
theme: PropTypes.object.isRequired,
|
||||
theme: PropTypes.object,
|
||||
value: PropTypes.string.isRequired,
|
||||
disableHashtags: PropTypes.bool,
|
||||
disableAtMentions: PropTypes.bool,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ export default class MarkdownBlockQuote extends PureComponent {
|
|||
static propTypes = {
|
||||
continue: PropTypes.bool,
|
||||
iconStyle: CustomPropTypes.Style,
|
||||
children: CustomPropTypes.Children.isRequired,
|
||||
children: CustomPropTypes.Children,
|
||||
};
|
||||
|
||||
render() {
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import {
|
|||
} from 'react-native';
|
||||
import Clipboard from '@react-native-community/clipboard';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import FormattedText from 'app/components/formatted_text';
|
||||
import TouchableWithFeedback from 'app/components/touchable_with_feedback';
|
||||
import BottomSheet from 'app/utils/bottom_sheet';
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import PropTypes from 'prop-types';
|
|||
|
||||
import Emoji from 'app/components/emoji';
|
||||
import FormattedText from 'app/components/formatted_text';
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import {blendColors, concatStyles, makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
|
||||
export default class MarkdownEmoji extends PureComponent {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ export default class MarkdownLink extends PureComponent {
|
|||
actions: PropTypes.shape({
|
||||
handleSelectChannelByName: PropTypes.func.isRequired,
|
||||
}).isRequired,
|
||||
children: CustomPropTypes.Children.isRequired,
|
||||
children: CustomPropTypes.Children,
|
||||
href: PropTypes.string.isRequired,
|
||||
onPermalinkPress: PropTypes.func,
|
||||
serverURL: PropTypes.string,
|
||||
|
|
|
|||
|
|
@ -9,11 +9,11 @@ import {
|
|||
View,
|
||||
} from 'react-native';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class MarkdownListItem extends PureComponent {
|
||||
static propTypes = {
|
||||
children: CustomPropTypes.Children.isRequired,
|
||||
children: CustomPropTypes.Children,
|
||||
ordered: PropTypes.bool.isRequired,
|
||||
continue: PropTypes.bool,
|
||||
index: PropTypes.number.isRequired,
|
||||
|
|
|
|||
|
|
@ -6,12 +6,12 @@ import {Text, View} from 'react-native';
|
|||
import PropTypes from 'prop-types';
|
||||
|
||||
import Markdown from 'app/components/markdown';
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import {makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
|
||||
export default class AttachmentFields extends PureComponent {
|
||||
static propTypes = {
|
||||
baseTextStyle: CustomPropTypes.Style.isRequired,
|
||||
baseTextStyle: CustomPropTypes.Style,
|
||||
blockStyles: PropTypes.object.isRequired,
|
||||
fields: PropTypes.array,
|
||||
metadata: PropTypes.object,
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ import {StyleSheet, View} from 'react-native';
|
|||
import PropTypes from 'prop-types';
|
||||
|
||||
import Markdown from 'app/components/markdown';
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class AttachmentPreText extends PureComponent {
|
||||
static propTypes = {
|
||||
baseTextStyle: CustomPropTypes.Style.isRequired,
|
||||
baseTextStyle: CustomPropTypes.Style,
|
||||
blockStyles: PropTypes.object.isRequired,
|
||||
metadata: PropTypes.object,
|
||||
onPermalinkPress: PropTypes.func,
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ import PropTypes from 'prop-types';
|
|||
|
||||
import Markdown from 'app/components/markdown';
|
||||
import ShowMoreButton from 'app/components/show_more_button';
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
const SHOW_MORE_HEIGHT = 60;
|
||||
|
||||
export default class AttachmentText extends PureComponent {
|
||||
static propTypes = {
|
||||
baseTextStyle: CustomPropTypes.Style.isRequired,
|
||||
baseTextStyle: CustomPropTypes.Style,
|
||||
blockStyles: PropTypes.object.isRequired,
|
||||
deviceHeight: PropTypes.number.isRequired,
|
||||
hasThumbnail: PropTypes.bool,
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import React, {PureComponent} from 'react';
|
|||
import {View} from 'react-native';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
import MessageAttachment from './message_attachment';
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import React, {PureComponent} from 'react';
|
|||
import PropTypes from 'prop-types';
|
||||
import {View} from 'react-native';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
import {getStatusColors} from 'app/utils/message_attachment_colors';
|
||||
import {changeOpacity, makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,6 @@ import {INDICATOR_BAR_HEIGHT} from '@constants/view';
|
|||
import networkConnectionListener, {checkConnection} from '@utils/network';
|
||||
import {t} from '@utils/i18n';
|
||||
|
||||
import mattermostBucket from 'app/mattermost_bucket';
|
||||
import PushNotifications from '@init/push_notifications';
|
||||
|
||||
const MAX_WEBSOCKET_RETRIES = 3;
|
||||
|
|
@ -288,13 +287,8 @@ export default class NetworkIndicator extends PureComponent {
|
|||
initializeWebSocket = async () => {
|
||||
const {actions} = this.props;
|
||||
const {closeWebSocket, initWebSocket} = actions;
|
||||
const platform = Platform.OS;
|
||||
let certificate = null;
|
||||
if (platform === 'ios') {
|
||||
certificate = await mattermostBucket.getPreference('cert');
|
||||
}
|
||||
|
||||
initWebSocket({certificate, forceConnection: true}).catch(() => {
|
||||
initWebSocket({forceConnection: true}).catch(() => {
|
||||
// we should dispatch a failure and show the app as disconnected
|
||||
closeWebSocket(true);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`PasteableTextInput should render pasteable text input 1`] = `
|
||||
<Component
|
||||
<TextInput
|
||||
allowFontScaling={true}
|
||||
onPaste={[Function]}
|
||||
rejectResponderTermination={true}
|
||||
underlineColorAndroid="transparent"
|
||||
>
|
||||
My Text
|
||||
</Component>
|
||||
</TextInput>
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import {t} from 'app/utils/i18n';
|
|||
|
||||
import AtMention from 'app/components/at_mention';
|
||||
import FormattedText from 'app/components/formatted_text';
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class PostAddChannelMember extends React.PureComponent {
|
||||
static propTypes = {
|
||||
|
|
|
|||
|
|
@ -19,18 +19,19 @@ const STATUS_BUFFER = Platform.select({
|
|||
|
||||
export default class ProfilePicture extends PureComponent {
|
||||
static propTypes = {
|
||||
isCurrentUser: PropTypes.bool.isRequired,
|
||||
isCurrentUser: PropTypes.bool,
|
||||
size: PropTypes.number,
|
||||
statusSize: PropTypes.number,
|
||||
iconSize: PropTypes.number,
|
||||
user: PropTypes.object,
|
||||
userId: PropTypes.string,
|
||||
showStatus: PropTypes.bool,
|
||||
status: PropTypes.string,
|
||||
edit: PropTypes.bool,
|
||||
imageUri: PropTypes.string,
|
||||
profileImageUri: PropTypes.string,
|
||||
profileImageRemove: PropTypes.bool,
|
||||
theme: PropTypes.object.isRequired,
|
||||
theme: PropTypes.object,
|
||||
testID: PropTypes.string,
|
||||
actions: PropTypes.shape({
|
||||
getStatusForId: PropTypes.func.isRequired,
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import React, {PureComponent} from 'react';
|
|||
import {TouchableNativeFeedback, TouchableOpacity, TouchableWithoutFeedback, View} from 'react-native';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class TouchableWithFeedbackAndroid extends PureComponent {
|
||||
static propTypes = {
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import React, {PureComponent} from 'react';
|
|||
import {PanResponder, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View} from 'react-native';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import CustomPropTypes from 'app/constants/custom_prop_types';
|
||||
import CustomPropTypes from '@constants/custom_prop_types';
|
||||
|
||||
export default class TouchableWithFeedbackIOS extends PureComponent {
|
||||
static propTypes = {
|
||||
|
|
|
|||
|
|
@ -1,17 +0,0 @@
|
|||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
export const Children = PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf([PropTypes.node])]);
|
||||
|
||||
export const Style = PropTypes.oneOfType([
|
||||
PropTypes.object, // inline style
|
||||
PropTypes.number, // style sheet entry
|
||||
PropTypes.array,
|
||||
]);
|
||||
|
||||
export default {
|
||||
Children,
|
||||
Style,
|
||||
};
|
||||
12
app/constants/custom_prop_types.ts
Normal file
12
app/constants/custom_prop_types.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {ReactNode, ReactNodeArray} from 'react';
|
||||
import {StyleProp, TextStyle, ViewStyle} from 'react-native';
|
||||
|
||||
interface CustomPropTypes {
|
||||
Children: ReactNode | ReactNodeArray;
|
||||
Style: object | number | StyleProp<TextStyle> | StyleProp<TextStyle>[] | StyleProp<ViewStyle> | StyleProp<ViewStyle>[];
|
||||
}
|
||||
|
||||
export default CustomPropTypes;
|
||||
|
|
@ -25,7 +25,7 @@ import {logError} from './errors';
|
|||
import {bindClientFunc, forceLogoutIfNecessary} from './helpers';
|
||||
import {getMissingProfilesByIds} from './users';
|
||||
import {loadRolesIfNeeded} from './roles';
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
|
||||
export function selectChannel(channelId: string) {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import {GifTypes} from '@mm-redux/action_types';
|
|||
import gfycatSdk from '@mm-redux/utils/gfycat_sdk';
|
||||
import {DispatchFunc, GetStateFunc} from '@mm-redux/types/actions';
|
||||
import {GlobalState} from '@mm-redux/types/store';
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
|
||||
// APP PROPS
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import {Client4} from '@mm-redux/client';
|
|||
import {getCurrentUserId} from '@mm-redux/selectors/entities/users';
|
||||
import {getCurrentChannelId} from '@mm-redux/selectors/entities/channels';
|
||||
import {getCurrentTeamId} from '@mm-redux/selectors/entities/teams';
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
|
||||
import {batchActions, DispatchFunc, GetStateFunc, ActionFunc} from '@mm-redux/types/actions';
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import {getMyChannelMember, markChannelAsUnread, markChannelAsRead, markChannelA
|
|||
import {getCustomEmojiByName, getCustomEmojisByName} from './emojis';
|
||||
import {logError} from './errors';
|
||||
import {forceLogoutIfNecessary} from './helpers';
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
|
||||
import {
|
||||
deletePreferences,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import {ActionResult, batchActions, DispatchFunc, GetStateFunc, ActionFunc} from
|
|||
import {RelationOneToOne} from '@mm-redux/types/utilities';
|
||||
import {Post} from '@mm-redux/types/posts';
|
||||
import {SearchParameter} from '@mm-redux/types/search';
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
|
||||
const WEBAPP_SEARCH_PER_PAGE = 20;
|
||||
export function getMissingChannelsFromPosts(posts: RelationOneToOne<Post, Post>): ActionFunc {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import {logError} from './errors';
|
|||
import {bindClientFunc, forceLogoutIfNecessary, debounce} from './helpers';
|
||||
import {getMyPreferences, makeDirectChannelVisibleIfNecessary, makeGroupMessageVisibleIfNecessary} from './preferences';
|
||||
import {Dictionary} from '@mm-redux/types/utilities';
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
|
||||
export function checkMfa(loginId: string): ActionFunc {
|
||||
return async (dispatch: DispatchFunc) => {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {analytics} from '@init/analytics.ts';
|
||||
import {analytics} from '@init/analytics';
|
||||
import {buildQueryString, isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
||||
import {cleanUrlForLogging} from '@mm-redux/utils/sentry';
|
||||
import {UserProfile, UserStatus} from '@mm-redux/types/users';
|
||||
|
|
|
|||
|
|
@ -147,7 +147,7 @@ exports[`ForgotPassword should match snapshot 1`] = `
|
|||
]
|
||||
}
|
||||
/>
|
||||
<Component
|
||||
<TextInput
|
||||
allowFontScaling={true}
|
||||
autoCapitalize="none"
|
||||
autoCorrect={false}
|
||||
|
|
@ -265,7 +265,7 @@ exports[`ForgotPassword snapshot for error on failure of email regex 1`] = `
|
|||
]
|
||||
}
|
||||
/>
|
||||
<Component
|
||||
<TextInput
|
||||
allowFontScaling={true}
|
||||
autoCapitalize="none"
|
||||
autoCorrect={false}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ const Footer = forwardRef<FooterRef, FooterProps>((props: FooterProps, ref) => {
|
|||
const opacity = useRef(new Animated.Value(1)).current;
|
||||
const downloadingOpacitity = useRef(new Animated.Value(0)).current;
|
||||
const prepareRef = useRef<PrepareFileRef>(null);
|
||||
const toastRef = useRef<ToastRef>();
|
||||
const toastRef = useRef<ToastRef>(null);
|
||||
|
||||
const animate = (value: Animated.Value, show: boolean, callback?: () => void): Animated.CompositeAnimation => {
|
||||
const animation = Animated.timing(value, {
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ const getStyles = makeStyleSheetFromTheme(({deviceHeight, deviceWidth, theme}: G
|
|||
},
|
||||
}));
|
||||
|
||||
const GalleryVideo = (props: GalleryFileProps) => {
|
||||
const GalleryFile = (props: GalleryFileProps) => {
|
||||
const {canDownloadFiles, file, intl, theme} = props;
|
||||
const [enabled, setEnabled] = useState(true);
|
||||
const styles = getStyles(props);
|
||||
|
|
@ -174,4 +174,4 @@ const GalleryVideo = (props: GalleryFileProps) => {
|
|||
);
|
||||
};
|
||||
|
||||
export default injectIntl(GalleryVideo);
|
||||
export default injectIntl(GalleryFile);
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
import React, {useEffect, useMemo, useRef, useState} from 'react';
|
||||
import {Platform, StyleSheet, View} from 'react-native';
|
||||
import {PanGestureHandler, PinchGestureHandler, State, TapGestureHandler, TapGestureHandlerStateChangeEvent} from 'react-native-gesture-handler';
|
||||
import Animated, {abs, add, and, call, clockRunning, cond, divide, eq, floor, greaterOrEq, greaterThan, multiply, neq, not, onChange, set, sub, useCode, Easing} from 'react-native-reanimated';
|
||||
import Animated, {abs, add, and, call, clockRunning, cond, divide, eq, greaterOrEq, greaterThan, multiply, neq, not, onChange, set, sub, useCode, Easing, ceil} from 'react-native-reanimated';
|
||||
import {clamp, snapPoint, timing, useClock, usePanGestureHandler, usePinchGestureHandler, useTapGestureHandler, useValue, vec} from 'react-native-redash/lib/module/v1';
|
||||
import {isImage, isVideo} from '@utils/file';
|
||||
import {calculateDimensions} from '@utils/images';
|
||||
|
|
@ -137,6 +137,7 @@ const GalleryViewer = (props: GalleryProps) => {
|
|||
file,
|
||||
deviceWidth: width,
|
||||
deviceHeight: height,
|
||||
theme: props.theme,
|
||||
};
|
||||
|
||||
if (isImage(file)) {
|
||||
|
|
@ -167,7 +168,6 @@ const GalleryViewer = (props: GalleryProps) => {
|
|||
<GalleryVideo
|
||||
isActive={currentIndex === i}
|
||||
showHideHeaderFooter={props.onTap}
|
||||
theme={props.theme}
|
||||
{...itemProps}
|
||||
/>
|
||||
</View>
|
||||
|
|
@ -179,10 +179,7 @@ const GalleryViewer = (props: GalleryProps) => {
|
|||
key={file.id}
|
||||
style={styles.item}
|
||||
>
|
||||
<GalleryFile
|
||||
theme={props.theme}
|
||||
{...itemProps}
|
||||
/>
|
||||
<GalleryFile {...itemProps}/>
|
||||
</View>
|
||||
);
|
||||
});
|
||||
|
|
@ -214,16 +211,16 @@ const GalleryViewer = (props: GalleryProps) => {
|
|||
]),
|
||||
),
|
||||
cond(and(eq(pan.state, State.END), neq(translateY, 0)), [
|
||||
cond(greaterOrEq(abs(translateY), 10), [
|
||||
cond(greaterOrEq(abs(translateY), 50), [
|
||||
cond(not(clockRunning(clock)), call([], props.onClose)),
|
||||
], set(translateY, timing({from: translateY, to: 0}))),
|
||||
]),
|
||||
cond(and(eq(pan.state, State.END), neq(translationX, 0)), [
|
||||
set(translateX, timing({clock, from: translateX, to: snapTo, duration: 150, easing: Easing.out(Easing.quad)})),
|
||||
set(translateX, timing({clock, from: translateX, to: snapTo, duration: 250, easing: Easing.out(Easing.quad)})),
|
||||
set(offsetX, translateX),
|
||||
cond(not(clockRunning(clock)), [
|
||||
vec.set(translate, 0),
|
||||
set(index, floor(divide(translateX, -width))),
|
||||
set(index, ceil(divide(translateX, -width))),
|
||||
call([abs(index)], indexChanged),
|
||||
]),
|
||||
]),
|
||||
|
|
|
|||
|
|
@ -35,6 +35,10 @@ describe('MoreChannels', () => {
|
|||
canShowArchivedChannels: true,
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
jest.useFakeTimers();
|
||||
});
|
||||
|
||||
test('should match snapshot', () => {
|
||||
const wrapper = shallow(
|
||||
<MoreChannels {...baseProps}/>,
|
||||
|
|
|
|||
|
|
@ -123,7 +123,7 @@ const Notification = ({componentId, notification}: NotificationProps) => {
|
|||
>
|
||||
<Animatable.View
|
||||
duration={250}
|
||||
style={[styles.container, {height: styles.container.height + (insets.top / 2), paddingTop: (insets.top / 2)}]}
|
||||
style={[styles.container, {height: (styles.container.height || 0) + (insets.top / 2), paddingTop: (insets.top / 2)}]}
|
||||
useNativeDriver={true}
|
||||
animation={animation}
|
||||
testID='in_app_notification.screen'
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ exports[`NotificationSettingsEmailAndroid should match snapshot 1`] = `
|
|||
`;
|
||||
|
||||
exports[`NotificationSettingsEmailAndroid should match snapshot 2`] = `
|
||||
<Component
|
||||
<Modal
|
||||
animationType="slide"
|
||||
hardwareAccelerated={false}
|
||||
onRequestClose={[Function]}
|
||||
|
|
@ -145,5 +145,5 @@ exports[`NotificationSettingsEmailAndroid should match snapshot 2`] = `
|
|||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</Component>
|
||||
</Modal>
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -18,6 +18,10 @@ describe('Settings SelectTimezone', () => {
|
|||
isLandscape: false,
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
jest.useFakeTimers();
|
||||
});
|
||||
|
||||
test('should match snapshot', () => {
|
||||
const wrapper = shallowWithIntl(<SelectTimezone {...baseProps}/>);
|
||||
|
||||
|
|
|
|||
|
|
@ -43,16 +43,19 @@ export default async function getStorage(identifier = 'default') {
|
|||
): Promise<string | Error> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
checkValidInput(key);
|
||||
MMKV.getStringAsync(key).then((result: string) => {
|
||||
MMKV.getString(key, (error: Error, result: string) => {
|
||||
if (error) {
|
||||
if (callback) {
|
||||
callback(error, null);
|
||||
}
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
|
||||
if (callback) {
|
||||
callback(null, result);
|
||||
}
|
||||
resolve(JSON.parse(result));
|
||||
}).catch((error: Error) => {
|
||||
if (callback) {
|
||||
callback(error, null);
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
});
|
||||
},
|
||||
|
|
@ -64,19 +67,14 @@ export default async function getStorage(identifier = 'default') {
|
|||
error: Error | null
|
||||
) => void | null | undefined,
|
||||
): Promise<null | Error> => {
|
||||
return new Promise((resolve, reject) => {
|
||||
return new Promise((resolve) => {
|
||||
checkValidInput(key, value);
|
||||
MMKV.setStringAsync(key, JSON.stringify(value)).then(() => {
|
||||
if (callback) {
|
||||
callback(null);
|
||||
}
|
||||
resolve(null);
|
||||
}).catch((error: Error) => {
|
||||
if (callback) {
|
||||
callback(error);
|
||||
}
|
||||
reject(error);
|
||||
});
|
||||
MMKV.setString(key, JSON.stringify(value));
|
||||
if (callback) {
|
||||
callback(null);
|
||||
}
|
||||
|
||||
resolve(null);
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ export function openGalleryAtIndex(index, files) {
|
|||
contentPush.y = {
|
||||
from: windowHeight,
|
||||
to: 0,
|
||||
duration: 150,
|
||||
duration: 300,
|
||||
interpolation: {mode: 'decelerate'},
|
||||
};
|
||||
|
||||
|
|
@ -109,13 +109,13 @@ export function openGalleryAtIndex(index, files) {
|
|||
contentPop.translationY = {
|
||||
from: 0,
|
||||
to: windowHeight,
|
||||
duration: 150,
|
||||
duration: 300,
|
||||
};
|
||||
} else {
|
||||
contentPop.y = {
|
||||
from: 0,
|
||||
to: windowHeight,
|
||||
duration: 150,
|
||||
duration: 300,
|
||||
};
|
||||
contentPop.alpha = {
|
||||
from: 1,
|
||||
|
|
|
|||
2747
detox/package-lock.json
generated
2747
detox/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -4,20 +4,20 @@
|
|||
"repository": "git@github.com:mattermost/mattermost-mobile.git",
|
||||
"author": "Mattermost, Inc.",
|
||||
"devDependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "7.12.13",
|
||||
"@babel/plugin-transform-modules-commonjs": "7.12.13",
|
||||
"@babel/plugin-transform-runtime": "7.12.17",
|
||||
"@babel/preset-env": "7.12.17",
|
||||
"@babel/plugin-proposal-class-properties": "7.13.0",
|
||||
"@babel/plugin-transform-modules-commonjs": "7.13.8",
|
||||
"@babel/plugin-transform-runtime": "7.13.10",
|
||||
"@babel/preset-env": "7.13.12",
|
||||
"axios": "0.21.1",
|
||||
"babel-jest": "26.6.3",
|
||||
"babel-plugin-module-resolver": "4.1.0",
|
||||
"deepmerge": "4.2.2",
|
||||
"detox": "18.6.2",
|
||||
"detox": "18.9.0",
|
||||
"form-data": "4.0.0",
|
||||
"jest": "26.6.3",
|
||||
"jest-circus": "26.6.3",
|
||||
"jest-cli": "26.6.3",
|
||||
"jest-html-reporters": "2.1.2",
|
||||
"jest-html-reporters": "2.1.3",
|
||||
"jest-junit": "12.0.0",
|
||||
"sanitize-filename": "1.6.3",
|
||||
"uuid": "8.3.2"
|
||||
|
|
|
|||
|
|
@ -765,13 +765,21 @@ platform :android do
|
|||
app_name = ENV['APP_NAME'] || 'Mattermost Beta'
|
||||
app_name_sub = app_name.gsub(" ", "_")
|
||||
apks = lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS]
|
||||
outputJson = load_config_json(lane_context[SharedValues::GRADLE_OUTPUT_JSON_OUTPUT_PATH])
|
||||
json_path = lane_context[SharedValues::GRADLE_OUTPUT_JSON_OUTPUT_PATH]
|
||||
|
||||
if json_path.nil? || json_path.empty?
|
||||
dir_name = File.dirname(apks.first)
|
||||
json_path = Dir.glob(File.join(dir_name, '*.json')).first
|
||||
end
|
||||
|
||||
UI.message("JSON PATH APK #{json_path}")
|
||||
outputJson = load_config_json(json_path)
|
||||
paths = []
|
||||
apks.each do |apk|
|
||||
filename = File.basename(apk)
|
||||
output = outputJson.find { |o| o["path"] === filename }
|
||||
output = outputJson["elements"].find { |o| o["outputFile"] == filename }
|
||||
unless output.nil?
|
||||
filterName = output["apkData"]["filterName"]
|
||||
filterName = output["filters"].empty? ? '' : output["filters"].first["value"]
|
||||
name = "#{app_name_sub}"
|
||||
unless filterName.nil? || filterName.empty?
|
||||
name += "-#{filterName}"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem "cocoapods", "1.10.0"
|
||||
gem "cocoapods", "1.10.1"
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ GEM
|
|||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (3.0.3)
|
||||
activesupport (5.2.4.4)
|
||||
activesupport (5.2.5)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
|
|
@ -14,10 +14,10 @@ GEM
|
|||
json (>= 1.5.1)
|
||||
atomos (0.1.3)
|
||||
claide (1.0.3)
|
||||
cocoapods (1.10.0)
|
||||
cocoapods (1.10.1)
|
||||
addressable (~> 2.6)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
cocoapods-core (= 1.10.0)
|
||||
cocoapods-core (= 1.10.1)
|
||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||
cocoapods-downloader (>= 1.4.0, < 2.0)
|
||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||
|
|
@ -32,7 +32,7 @@ GEM
|
|||
nap (~> 1.0)
|
||||
ruby-macho (~> 1.4)
|
||||
xcodeproj (>= 1.19.0, < 2.0)
|
||||
cocoapods-core (1.10.0)
|
||||
cocoapods-core (1.10.1)
|
||||
activesupport (> 5.0, < 6)
|
||||
addressable (~> 2.6)
|
||||
algoliasearch (~> 1.0)
|
||||
|
|
@ -52,19 +52,19 @@ GEM
|
|||
netrc (~> 0.11)
|
||||
cocoapods-try (1.2.0)
|
||||
colored2 (3.1.2)
|
||||
concurrent-ruby (1.1.7)
|
||||
concurrent-ruby (1.1.8)
|
||||
escape (0.0.4)
|
||||
ethon (0.12.0)
|
||||
ffi (>= 1.3.0)
|
||||
ffi (1.14.2)
|
||||
ffi (1.15.0)
|
||||
fourflusher (2.3.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.1.3)
|
||||
httpclient (2.8.3)
|
||||
i18n (1.8.7)
|
||||
i18n (1.8.10)
|
||||
concurrent-ruby (~> 1.0)
|
||||
json (2.5.1)
|
||||
minitest (5.14.2)
|
||||
minitest (5.14.4)
|
||||
molinillo (0.6.6)
|
||||
nanaimo (0.3.0)
|
||||
nap (1.1.0)
|
||||
|
|
@ -87,7 +87,7 @@ PLATFORMS
|
|||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
cocoapods (= 1.10.0)
|
||||
cocoapods (= 1.10.1)
|
||||
|
||||
BUNDLED WITH
|
||||
2.1.4
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0111A42B7F264BCF8CBDE3ED /* OpenSans-ExtraBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FBBEC29EE2D3418D9AC33BD5 /* OpenSans-ExtraBoldItalic.ttf */; };
|
||||
0C0D24F53F254F75869E5951 /* OpenSans-Italic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 41F3AFE83AAF4B74878AB78A /* OpenSans-Italic.ttf */; };
|
||||
|
|
@ -1181,6 +1182,7 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 ";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
|
|
@ -1226,6 +1228,7 @@
|
|||
COPY_PHASE_STRIP = YES;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 ";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
|
|
|
|||
19
ios/Podfile
19
ios/Podfile
|
|
@ -6,7 +6,11 @@ platform :ios, '11.0'
|
|||
target 'Mattermost' do
|
||||
# Pods for Mattermost
|
||||
config = use_native_modules!
|
||||
use_react_native!(:path => config["reactNativePath"])
|
||||
use_react_native!(
|
||||
:path => config[:reactNativePath],
|
||||
# to enable hermes on iOS, change `false` to `true` and then install pods
|
||||
:hermes_enabled => false
|
||||
)
|
||||
|
||||
permissions_path = '../node_modules/react-native-permissions/ios'
|
||||
pod 'Permission-Camera', :path => "#{permissions_path}/Camera"
|
||||
|
|
@ -18,13 +22,14 @@ target 'Mattermost' do
|
|||
|
||||
pod 'XCDYouTubeKit', '2.8.2'
|
||||
pod 'Swime', '3.0.6'
|
||||
end
|
||||
|
||||
# Enables Flipper.
|
||||
#
|
||||
# Note that if you have use_frameworks! enabled, Flipper will not work and
|
||||
# you should disable these next few lines.
|
||||
# use_flipper!
|
||||
# post_install do |installer|
|
||||
# flipper_post_install(installer)
|
||||
# end
|
||||
# you should disable the next line.
|
||||
#use_flipper!()
|
||||
|
||||
post_install do |installer|
|
||||
react_native_post_install(installer)
|
||||
end
|
||||
end
|
||||
602
ios/Podfile.lock
602
ios/Podfile.lock
|
|
@ -3,23 +3,14 @@ PODS:
|
|||
- BVLinearGradient (2.5.6):
|
||||
- React
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (0.63.4)
|
||||
- FBReactNativeSpec (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.63.4)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- Folly (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- Folly/Default (= 2020.01.13.00)
|
||||
- glog
|
||||
- Folly/Default (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- FBLazyVector (0.64.0)
|
||||
- FBReactNativeSpec (0.64.0):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.64.0)
|
||||
- RCTTypeSafety (= 0.64.0)
|
||||
- React-Core (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- glog (0.3.5)
|
||||
- jail-monkey (2.3.3):
|
||||
- React
|
||||
|
|
@ -32,195 +23,222 @@ PODS:
|
|||
- libwebp/mux (1.1.0):
|
||||
- libwebp/demux
|
||||
- libwebp/webp (1.1.0)
|
||||
- MMKV (1.2.6):
|
||||
- MMKVCore (~> 1.2.6)
|
||||
- MMKV (1.2.7):
|
||||
- MMKVCore (~> 1.2.7)
|
||||
- MMKVCore (1.2.7)
|
||||
- Permission-Camera (3.0.0):
|
||||
- Permission-Camera (3.0.1):
|
||||
- RNPermissions
|
||||
- Permission-MediaLibrary (3.0.0):
|
||||
- Permission-MediaLibrary (3.0.1):
|
||||
- RNPermissions
|
||||
- Permission-Microphone (3.0.0):
|
||||
- Permission-Microphone (3.0.1):
|
||||
- RNPermissions
|
||||
- Permission-Notifications (3.0.0):
|
||||
- Permission-Notifications (3.0.1):
|
||||
- RNPermissions
|
||||
- Permission-PhotoLibrary (3.0.0):
|
||||
- Permission-PhotoLibrary (3.0.1):
|
||||
- RNPermissions
|
||||
- Permission-PhotoLibraryAddOnly (3.0.0):
|
||||
- Permission-PhotoLibraryAddOnly (3.0.1):
|
||||
- RNPermissions
|
||||
- RCTRequired (0.63.4)
|
||||
- RCTTypeSafety (0.63.4):
|
||||
- FBLazyVector (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.63.4)
|
||||
- React-Core (= 0.63.4)
|
||||
- RCT-Folly (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly/Default (= 2020.01.13.00)
|
||||
- RCT-Folly/Default (2020.01.13.00):
|
||||
- boost-for-react-native
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCTRequired (0.64.0)
|
||||
- RCTTypeSafety (0.64.0):
|
||||
- FBLazyVector (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTRequired (= 0.64.0)
|
||||
- React-Core (= 0.64.0)
|
||||
- RCTYouTube (2.0.1):
|
||||
- React
|
||||
- YoutubePlayer-in-WKWebView (~> 0.3.1)
|
||||
- React (0.63.4):
|
||||
- React-Core (= 0.63.4)
|
||||
- React-Core/DevSupport (= 0.63.4)
|
||||
- React-Core/RCTWebSocket (= 0.63.4)
|
||||
- React-RCTActionSheet (= 0.63.4)
|
||||
- React-RCTAnimation (= 0.63.4)
|
||||
- React-RCTBlob (= 0.63.4)
|
||||
- React-RCTImage (= 0.63.4)
|
||||
- React-RCTLinking (= 0.63.4)
|
||||
- React-RCTNetwork (= 0.63.4)
|
||||
- React-RCTSettings (= 0.63.4)
|
||||
- React-RCTText (= 0.63.4)
|
||||
- React-RCTVibration (= 0.63.4)
|
||||
- React-callinvoker (0.63.4)
|
||||
- React-Core (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React (0.64.0):
|
||||
- React-Core (= 0.64.0)
|
||||
- React-Core/DevSupport (= 0.64.0)
|
||||
- React-Core/RCTWebSocket (= 0.64.0)
|
||||
- React-RCTActionSheet (= 0.64.0)
|
||||
- React-RCTAnimation (= 0.64.0)
|
||||
- React-RCTBlob (= 0.64.0)
|
||||
- React-RCTImage (= 0.64.0)
|
||||
- React-RCTLinking (= 0.64.0)
|
||||
- React-RCTNetwork (= 0.64.0)
|
||||
- React-RCTSettings (= 0.64.0)
|
||||
- React-RCTText (= 0.64.0)
|
||||
- React-RCTVibration (= 0.64.0)
|
||||
- React-callinvoker (0.64.0)
|
||||
- React-Core (0.64.0):
|
||||
- glog
|
||||
- React-Core/Default (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (= 0.64.0)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/CoreModulesHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/Default (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (0.64.0):
|
||||
- glog
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/DevSupport (0.64.0):
|
||||
- glog
|
||||
- React-Core/Default (= 0.63.4)
|
||||
- React-Core/RCTWebSocket (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-jsinspector (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (= 0.64.0)
|
||||
- React-Core/RCTWebSocket (= 0.64.0)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-jsinspector (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTActionSheetHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTAnimationHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTBlobHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTImageHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTLinkingHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTNetworkHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTSettingsHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTTextHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTVibrationHeaders (0.64.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (0.63.4):
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTWebSocket (0.64.0):
|
||||
- glog
|
||||
- React-Core/Default (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsiexecutor (= 0.63.4)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/Default (= 0.64.0)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsiexecutor (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- Yoga
|
||||
- React-CoreModules (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/CoreModulesHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-RCTImage (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-cxxreact (0.63.4):
|
||||
- React-CoreModules (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.0)
|
||||
- React-Core/CoreModulesHeaders (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-RCTImage (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-cxxreact (0.64.0):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-callinvoker (= 0.63.4)
|
||||
- React-jsinspector (= 0.63.4)
|
||||
- React-jsi (0.63.4):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-callinvoker (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-jsinspector (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- React-runtimeexecutor (= 0.64.0)
|
||||
- React-jsi (0.64.0):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-jsi/Default (= 0.63.4)
|
||||
- React-jsi/Default (0.63.4):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-jsi/Default (= 0.64.0)
|
||||
- React-jsi/Default (0.64.0):
|
||||
- boost-for-react-native (= 1.63.0)
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-jsiexecutor (0.63.4):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-jsiexecutor (0.64.0):
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-jsinspector (0.63.4)
|
||||
- react-native-cameraroll (4.0.1):
|
||||
- React
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- React-jsinspector (0.64.0)
|
||||
- react-native-cameraroll (4.0.4):
|
||||
- React-Core
|
||||
- react-native-cookies (3.2.0):
|
||||
- React
|
||||
- react-native-document-picker (4.2.0):
|
||||
- react-native-document-picker (5.0.3):
|
||||
- React-Core
|
||||
- react-native-hw-keyboard-event (0.0.4):
|
||||
- React
|
||||
|
|
@ -228,10 +246,10 @@ PODS:
|
|||
- React-Core
|
||||
- react-native-local-auth (1.6.0):
|
||||
- React
|
||||
- react-native-mmkv-storage (0.4.3):
|
||||
- MMKV (= 1.2.6)
|
||||
- react-native-mmkv-storage (0.5.3):
|
||||
- MMKV (= 1.2.7)
|
||||
- React-Core
|
||||
- react-native-netinfo (5.9.10):
|
||||
- react-native-netinfo (6.0.0):
|
||||
- React-Core
|
||||
- react-native-notifications (3.4.2):
|
||||
- React-Core
|
||||
|
|
@ -239,85 +257,89 @@ PODS:
|
|||
- React
|
||||
- react-native-safe-area (0.5.1):
|
||||
- React
|
||||
- react-native-safe-area-context (3.1.9):
|
||||
- react-native-safe-area-context (3.2.0):
|
||||
- React-Core
|
||||
- react-native-video (5.1.1):
|
||||
- React-Core
|
||||
- react-native-video/Video (= 5.1.1)
|
||||
- react-native-video/Video (5.1.1):
|
||||
- React-Core
|
||||
- react-native-video (5.1.0-alpha8):
|
||||
- React
|
||||
- react-native-video/Video (= 5.1.0-alpha8)
|
||||
- react-native-video/Video (5.1.0-alpha8):
|
||||
- React
|
||||
- react-native-webview (7.0.1):
|
||||
- React
|
||||
- React-RCTActionSheet (0.63.4):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.63.4)
|
||||
- React-RCTAnimation (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTAnimationHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTBlob (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTBlobHeaders (= 0.63.4)
|
||||
- React-Core/RCTWebSocket (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-RCTNetwork (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTImage (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTImageHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- React-RCTNetwork (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTLinking (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- React-Core/RCTLinkingHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTNetwork (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTNetworkHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTSettings (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.63.4)
|
||||
- React-Core/RCTSettingsHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- React-RCTText (0.63.4):
|
||||
- React-Core/RCTTextHeaders (= 0.63.4)
|
||||
- React-RCTVibration (0.63.4):
|
||||
- FBReactNativeSpec (= 0.63.4)
|
||||
- Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTVibrationHeaders (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (= 0.63.4)
|
||||
- ReactCommon/turbomodule/core (0.63.4):
|
||||
- React-perflogger (0.64.0)
|
||||
- React-RCTActionSheet (0.64.0):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.64.0)
|
||||
- React-RCTAnimation (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.0)
|
||||
- React-Core/RCTAnimationHeaders (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-RCTBlob (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTBlobHeaders (= 0.64.0)
|
||||
- React-Core/RCTWebSocket (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-RCTNetwork (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-RCTImage (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.0)
|
||||
- React-Core/RCTImageHeaders (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-RCTNetwork (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-RCTLinking (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- React-Core/RCTLinkingHeaders (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-RCTNetwork (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.0)
|
||||
- React-Core/RCTNetworkHeaders (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-RCTSettings (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- RCTTypeSafety (= 0.64.0)
|
||||
- React-Core/RCTSettingsHeaders (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-RCTText (0.64.0):
|
||||
- React-Core/RCTTextHeaders (= 0.64.0)
|
||||
- React-RCTVibration (0.64.0):
|
||||
- FBReactNativeSpec (= 0.64.0)
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-Core/RCTVibrationHeaders (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (= 0.64.0)
|
||||
- React-runtimeexecutor (0.64.0):
|
||||
- React-jsi (= 0.64.0)
|
||||
- ReactCommon/turbomodule/core (0.64.0):
|
||||
- DoubleConversion
|
||||
- Folly (= 2020.01.13.00)
|
||||
- glog
|
||||
- React-callinvoker (= 0.63.4)
|
||||
- React-Core (= 0.63.4)
|
||||
- React-cxxreact (= 0.63.4)
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactNativeExceptionHandler (2.10.9):
|
||||
- RCT-Folly (= 2020.01.13.00)
|
||||
- React-callinvoker (= 0.64.0)
|
||||
- React-Core (= 0.64.0)
|
||||
- React-cxxreact (= 0.64.0)
|
||||
- React-jsi (= 0.64.0)
|
||||
- React-perflogger (= 0.64.0)
|
||||
- ReactNativeExceptionHandler (2.10.10):
|
||||
- React-Core
|
||||
- ReactNativeKeyboardTrackingView (5.7.0):
|
||||
- React
|
||||
- ReactNativeNavigation (7.8.1):
|
||||
- ReactNativeNavigation (7.12.0):
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- React-RCTText
|
||||
- ReactNativeNavigation/Core (= 7.8.1)
|
||||
- ReactNativeNavigation/Core (7.8.1):
|
||||
- ReactNativeNavigation/Core (= 7.12.0)
|
||||
- ReactNativeNavigation/Core (7.12.0):
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- React-RCTText
|
||||
|
|
@ -329,7 +351,7 @@ PODS:
|
|||
- React-Core
|
||||
- RNCMaskedView (0.1.10):
|
||||
- React
|
||||
- RNDeviceInfo (8.0.0):
|
||||
- RNDeviceInfo (8.0.8):
|
||||
- React-Core
|
||||
- RNDevMenu (4.0.2):
|
||||
- React-Core
|
||||
|
|
@ -341,13 +363,13 @@ PODS:
|
|||
- SDWebImageWebPCoder (~> 0.6.1)
|
||||
- RNFileViewer (2.1.4):
|
||||
- React-Core
|
||||
- RNGestureHandler (1.9.0):
|
||||
- RNGestureHandler (1.10.3):
|
||||
- React-Core
|
||||
- RNKeychain (6.2.0):
|
||||
- React
|
||||
- RNLocalize (2.0.1):
|
||||
- RNLocalize (2.0.2):
|
||||
- React-Core
|
||||
- RNPermissions (3.0.0):
|
||||
- RNPermissions (3.0.1):
|
||||
- React-Core
|
||||
- RNReactNativeHapticFeedback (1.11.0):
|
||||
- React-Core
|
||||
|
|
@ -356,17 +378,17 @@ PODS:
|
|||
- RNRudderSdk (1.0.0):
|
||||
- React
|
||||
- Rudder
|
||||
- RNScreens (2.16.1):
|
||||
- RNScreens (3.0.0):
|
||||
- React-Core
|
||||
- RNSentry (2.1.0):
|
||||
- RNSentry (2.4.0):
|
||||
- React-Core
|
||||
- Sentry (= 6.0.9)
|
||||
- RNShare (5.1.0):
|
||||
- Sentry (= 6.1.4)
|
||||
- RNShare (5.1.7):
|
||||
- React-Core
|
||||
- RNSVG (12.1.0):
|
||||
- React
|
||||
- RNVectorIcons (7.1.0):
|
||||
- React
|
||||
- RNVectorIcons (8.1.0):
|
||||
- React-Core
|
||||
- Rudder (1.0.10)
|
||||
- SDWebImage (5.9.4):
|
||||
- SDWebImage/Core (= 5.9.4)
|
||||
|
|
@ -374,9 +396,9 @@ PODS:
|
|||
- SDWebImageWebPCoder (0.6.1):
|
||||
- libwebp (~> 1.0)
|
||||
- SDWebImage/Core (~> 5.7)
|
||||
- Sentry (6.0.9):
|
||||
- Sentry/Core (= 6.0.9)
|
||||
- Sentry/Core (6.0.9)
|
||||
- Sentry (6.1.4):
|
||||
- Sentry/Core (= 6.1.4)
|
||||
- Sentry/Core (6.1.4)
|
||||
- Swime (3.0.6)
|
||||
- XCDYouTubeKit (2.8.2)
|
||||
- Yoga (1.14.0)
|
||||
|
|
@ -386,8 +408,7 @@ DEPENDENCIES:
|
|||
- BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
|
||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
|
||||
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||
- jail-monkey (from `../node_modules/jail-monkey`)
|
||||
- Permission-Camera (from `../node_modules/react-native-permissions/ios/Camera`)
|
||||
|
|
@ -396,6 +417,7 @@ DEPENDENCIES:
|
|||
- Permission-Notifications (from `../node_modules/react-native-permissions/ios/Notifications`)
|
||||
- Permission-PhotoLibrary (from `../node_modules/react-native-permissions/ios/PhotoLibrary`)
|
||||
- Permission-PhotoLibraryAddOnly (from `../node_modules/react-native-permissions/ios/PhotoLibraryAddOnly`)
|
||||
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
|
||||
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
|
||||
- RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
|
||||
- RCTYouTube (from `../node_modules/react-native-youtube`)
|
||||
|
|
@ -423,6 +445,7 @@ DEPENDENCIES:
|
|||
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
|
||||
- react-native-video (from `../node_modules/react-native-video`)
|
||||
- react-native-webview (from `../node_modules/react-native-webview`)
|
||||
- React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`)
|
||||
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
|
||||
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
|
||||
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
|
||||
|
|
@ -432,6 +455,7 @@ DEPENDENCIES:
|
|||
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
|
||||
- React-RCTText (from `../node_modules/react-native/Libraries/Text`)
|
||||
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
|
||||
- React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`)
|
||||
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
|
||||
- ReactNativeExceptionHandler (from `../node_modules/react-native-exception-handler`)
|
||||
- ReactNativeKeyboardTrackingView (from `../node_modules/react-native-keyboard-tracking-view`)
|
||||
|
|
@ -482,9 +506,7 @@ EXTERNAL SOURCES:
|
|||
FBLazyVector:
|
||||
:path: "../node_modules/react-native/Libraries/FBLazyVector"
|
||||
FBReactNativeSpec:
|
||||
:path: "../node_modules/react-native/Libraries/FBReactNativeSpec"
|
||||
Folly:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
|
||||
:path: "../node_modules/react-native/React/FBReactNativeSpec"
|
||||
glog:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
|
||||
jail-monkey:
|
||||
|
|
@ -501,6 +523,8 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/react-native-permissions/ios/PhotoLibrary"
|
||||
Permission-PhotoLibraryAddOnly:
|
||||
:path: "../node_modules/react-native-permissions/ios/PhotoLibraryAddOnly"
|
||||
RCT-Folly:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
|
||||
RCTRequired:
|
||||
:path: "../node_modules/react-native/Libraries/RCTRequired"
|
||||
RCTTypeSafety:
|
||||
|
|
@ -551,6 +575,8 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/react-native-video"
|
||||
react-native-webview:
|
||||
:path: "../node_modules/react-native-webview"
|
||||
React-perflogger:
|
||||
:path: "../node_modules/react-native/ReactCommon/reactperflogger"
|
||||
React-RCTActionSheet:
|
||||
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
|
||||
React-RCTAnimation:
|
||||
|
|
@ -569,6 +595,8 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/react-native/Libraries/Text"
|
||||
React-RCTVibration:
|
||||
:path: "../node_modules/react-native/Libraries/Vibration"
|
||||
React-runtimeexecutor:
|
||||
:path: "../node_modules/react-native/ReactCommon/runtimeexecutor"
|
||||
ReactCommon:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
ReactNativeExceptionHandler:
|
||||
|
|
@ -623,88 +651,90 @@ EXTERNAL SOURCES:
|
|||
SPEC CHECKSUMS:
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
|
||||
DoubleConversion: cde416483dac037923206447da6e1454df403714
|
||||
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
|
||||
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
|
||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
||||
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3
|
||||
DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
|
||||
FBLazyVector: 49cbe4b43e445b06bf29199b6ad2057649e4c8f5
|
||||
FBReactNativeSpec: a804c9d6c798f94831713302354003ee54ea18cb
|
||||
glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
|
||||
jail-monkey: 80c9e34da2cd54023e5ad08bf7051ec75bd43d5b
|
||||
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
||||
MMKV: 27f6b9e34849e77e78c5a1cc8f7f513e37f5fa15
|
||||
MMKV: 22e5136f7d00197bc0fc9694b7f71519f0d1ca12
|
||||
MMKVCore: 607b7b05f2c2140056b5d338e45f2c14bf3f4232
|
||||
Permission-Camera: 358081c7b8210849958af181ce9ddeb11932aa82
|
||||
Permission-MediaLibrary: 8187d4e44ea517860f1b12aac792ed45a031eeb2
|
||||
Permission-Microphone: a94fa6a77b603424a6d4b7b49bbc6107fb027db1
|
||||
Permission-Notifications: 4325073de6e418cfbbdd8d296822c419d8ddc7ef
|
||||
Permission-PhotoLibrary: 79f74cef889ed76e1712fee9fe9a187e9a15dec1
|
||||
Permission-PhotoLibraryAddOnly: b79f52e932b0714ff6b0774282dfa6ce0b7cfd8d
|
||||
RCTRequired: 082f10cd3f905d6c124597fd1c14f6f2655ff65e
|
||||
RCTTypeSafety: 8c9c544ecbf20337d069e4ae7fd9a377aadf504b
|
||||
Permission-Camera: 0d2d15352e9c54c3ea8686c8c21fb1a9edf3431b
|
||||
Permission-MediaLibrary: a9b436b1127dff9d65fb699ebbdbd2dd9362fa16
|
||||
Permission-Microphone: 60319bf64f89a035f5bf8d00107fab31b904005c
|
||||
Permission-Notifications: 0db4fc644c3f5a8628f81696ca1b3019ce8bce32
|
||||
Permission-PhotoLibrary: e5d0500209f22e2a5b281501cd3744a965747726
|
||||
Permission-PhotoLibraryAddOnly: fba90734d82a6e577631b3267d660de42ebd649f
|
||||
RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
|
||||
RCTRequired: 2f8cb5b7533219bf4218a045f92768129cf7050a
|
||||
RCTTypeSafety: 512728b73549e72ad7330b92f3d42936f2a4de5b
|
||||
RCTYouTube: 7ff7d42f5ed42d185198681e967fd2c2b661375d
|
||||
React: b0a957a2c44da4113b0c4c9853d8387f8e64e615
|
||||
React-callinvoker: c3f44dd3cb195b6aa46621fff95ded79d59043fe
|
||||
React-Core: d3b2a1ac9a2c13c3bcde712d9281fc1c8a5b315b
|
||||
React-CoreModules: 0581ff36cb797da0943d424f69e7098e43e9be60
|
||||
React-cxxreact: c1480d4fda5720086c90df537ee7d285d4c57ac3
|
||||
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
|
||||
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
|
||||
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
|
||||
react-native-cameraroll: 9d2b7c1707204d2040d2812f960c6cebdbd9f670
|
||||
React: 98eac01574128a790f0bbbafe2d1a8607291ac24
|
||||
React-callinvoker: def3f7fae16192df68d9b69fd4bbb59092ee36bc
|
||||
React-Core: 70a52aa5dbe9b83befae82038451a7df9fd54c5a
|
||||
React-CoreModules: 052edef46117862e2570eb3a0f06d81c61d2c4b8
|
||||
React-cxxreact: c1dc71b30653cfb4770efdafcbdc0ad6d388baab
|
||||
React-jsi: 74341196d9547cbcbcfa4b3bbbf03af56431d5a1
|
||||
React-jsiexecutor: 06a9c77b56902ae7ffcdd7a4905f664adc5d237b
|
||||
React-jsinspector: 0ae35a37b20d5e031eb020a69cc5afdbd6406301
|
||||
react-native-cameraroll: 7c6c7ca84844f93b3dac9a87670bbad6541684ec
|
||||
react-native-cookies: 854d59c4135c70b92a02ca4930e68e4e2eb58150
|
||||
react-native-document-picker: 47d2771fc553c60a9f2a7c4c4e6f14ec542b9603
|
||||
react-native-document-picker: d2b8fa4d9b268a316515b1f631236f7a87813df6
|
||||
react-native-hw-keyboard-event: b517cefb8d5c659a38049c582de85ff43337dc53
|
||||
react-native-image-picker: 32d1ad2c0024ca36161ae0d5c2117e2d6c441f11
|
||||
react-native-local-auth: 359af242caa1e5c501ac9dfe33b1e238ad8f08c6
|
||||
react-native-mmkv-storage: 9b54db38ecfe35027134663fad98b217271b839b
|
||||
react-native-netinfo: 52cf0ee8342548a485e28f4b09e56b477567244d
|
||||
react-native-mmkv-storage: b8c0ce10551ecf9c270477606aa2cab763011097
|
||||
react-native-netinfo: 34f4d7a42f49157f3b45c14217d256bce7dc9682
|
||||
react-native-notifications: e914ff49de3b2268cfa1b5e2ad21fd27c36d5b7b
|
||||
react-native-passcode-status: 88c4f6e074328bc278bd127646b6c694ad5a530a
|
||||
react-native-safe-area: e8230b0017d76c00de6b01e2412dcf86b127c6a3
|
||||
react-native-safe-area-context: 86612d2c9a9e94e288319262d10b5f93f0b395f5
|
||||
react-native-video: 8d97379f3c2322a569f1e27542ad1a646cad9444
|
||||
react-native-safe-area-context: e471852c5ed67eea4b10c5d9d43c1cebae3b231d
|
||||
react-native-video: 1574074179ecaf6a9dd067116c8f31bf9fec15c8
|
||||
react-native-webview: 0d1c2b4e7ffb0543a74fa0512f2f8dc5fb0e49e2
|
||||
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
|
||||
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
|
||||
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
|
||||
React-RCTImage: c1b1f2d3f43a4a528c8946d6092384b5c880d2f0
|
||||
React-RCTLinking: 35ae4ab9dc0410d1fcbdce4d7623194a27214fb2
|
||||
React-RCTNetwork: 29ec2696f8d8cfff7331fac83d3e893c95ef43ae
|
||||
React-RCTSettings: 60f0691bba2074ef394f95d4c2265ec284e0a46a
|
||||
React-RCTText: 5c51df3f08cb9dedc6e790161195d12bac06101c
|
||||
React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d
|
||||
ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b
|
||||
ReactNativeExceptionHandler: f1638ffd507ef1b1794af25884fa0eb30dd5c551
|
||||
React-perflogger: 9c547d8f06b9bf00cb447f2b75e8d7f19b7e02af
|
||||
React-RCTActionSheet: 3080b6e12e0e1a5b313c8c0050699b5c794a1b11
|
||||
React-RCTAnimation: 3f96f21a497ae7dabf4d2f150ee43f906aaf516f
|
||||
React-RCTBlob: 283b8e5025e7f954176bc48164f846909002f3ed
|
||||
React-RCTImage: 5088a484faac78f2d877e1b79125d3bb1ea94a16
|
||||
React-RCTLinking: 5e8fbb3e9a8bc2e4e3eb15b1eb8bda5fcac27b8c
|
||||
React-RCTNetwork: 38ec277217b1e841d5e6a1fa78da65b9212ccb28
|
||||
React-RCTSettings: 242d6e692108c3de4f3bb74b7586a8799e9ab070
|
||||
React-RCTText: 8746736ac8eb5a4a74719aa695b7a236a93a83d2
|
||||
React-RCTVibration: 0fd6b21751a33cb72fce1a4a33ab9678416d307a
|
||||
React-runtimeexecutor: cad74a1eaa53ee6e7a3620231939d8fe2c6afcf0
|
||||
ReactCommon: cfe2b7fd20e0dbd2d1185cd7d8f99633fbc5ff05
|
||||
ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60
|
||||
ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306
|
||||
ReactNativeNavigation: 9bef98654981540f3c05e471f0314345a148a571
|
||||
ReactNativeNavigation: 53ba485fbb370aeed7057020f351b814e51c18ef
|
||||
rn-fetch-blob: 17961aec08caae68bb8fc0e5b40f93b3acfa6932
|
||||
RNCAsyncStorage: cb9a623793918c6699586281f0b51cbc38f046f9
|
||||
RNCClipboard: 5e299c6df8e0c98f3d7416b86ae563d3a9f768a3
|
||||
RNCMaskedView: f5c7d14d6847b7b44853f7acb6284c1da30a3459
|
||||
RNDeviceInfo: 72ded653ce636b3f03571e90bed99309a714944e
|
||||
RNDeviceInfo: 6d24c244896857a89685312335e5ae344d6c9699
|
||||
RNDevMenu: 9f80d65b80ba1fa84e5361d017b8c854a2f05005
|
||||
RNFastImage: d4870d58f5936111c56218dbd7fcfc18e65b58ff
|
||||
RNFileViewer: 83cc066ad795b1f986791d03b56fe0ee14b6a69f
|
||||
RNGestureHandler: 9b7e605a741412e20e13c512738a31bd1611759b
|
||||
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
|
||||
RNKeychain: b8e0711b959a19c5b057d1e970d3c83d159b6da5
|
||||
RNLocalize: dcf0fdb332b37b0d24178e876a7ce4dbbc9c838d
|
||||
RNPermissions: 350964d19150b183796a88180fb7ec62a1e41422
|
||||
RNLocalize: 47e22ef8c36df1d572e42a87c8ae22e3fcf551dd
|
||||
RNPermissions: eb94f9fdc0a8ecd02fcce0676d56ffb1395d41e1
|
||||
RNReactNativeHapticFeedback: 653a8c126a0f5e88ce15ffe280b3ff37e1fbb285
|
||||
RNReanimated: e03f7425cb7a38dcf1b644d680d1bfc91c3337ad
|
||||
RNRudderSdk: 5d99b1a5a582ab55d6213b38018d35e98818af63
|
||||
RNScreens: 45c457af3d2ee9e08fc01e70da87e653d46b1198
|
||||
RNSentry: 51972e3fe50e2fb38ae459af8c87d61f63f364db
|
||||
RNShare: fed99fd743f80ca255903c1da46fc9a6430efab6
|
||||
RNScreens: e8e8dd0588b5da0ab57dcca76ab9b2d8987757e0
|
||||
RNSentry: b0d55027200c96f52e26b9bfb20296d47fc5051d
|
||||
RNShare: 503c37af86611beadccba46156fcc42170c9fb42
|
||||
RNSVG: ce9d996113475209013317e48b05c21ee988d42e
|
||||
RNVectorIcons: bc69e6a278b14842063605de32bec61f0b251a59
|
||||
RNVectorIcons: 31cebfcf94e8cf8686eb5303ae0357da64d7a5a4
|
||||
Rudder: 05e61fe2e59bcd65931f4a47d21011e15adf7159
|
||||
SDWebImage: b69257f4ab14e9b6a2ef53e910fdf914d8f757c1
|
||||
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
|
||||
Sentry: 388c9dc093b2fd3a264466a5c5b21e25959610a9
|
||||
Sentry: 9d055e2de30a77685e86b219acf02e59b82091fc
|
||||
Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b
|
||||
XCDYouTubeKit: 79baadb0560673a67c771eba45f83e353fd12c1f
|
||||
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
|
||||
Yoga: 8c8436d4171c87504c648ae23b1d81242bdf3bbf
|
||||
YoutubePlayer-in-WKWebView: af2f5929fc78882d94bfdfeea999b661b78d9717
|
||||
|
||||
PODFILE CHECKSUM: 7b4dd87a99f9b0af0e22576340842ea2bfd17cf6
|
||||
PODFILE CHECKSUM: 8f9184e7a51675aa02c8489226782a6a87b8d987
|
||||
|
||||
COCOAPODS: 1.10.0
|
||||
COCOAPODS: 1.10.1
|
||||
|
|
|
|||
|
|
@ -28,6 +28,6 @@ module.exports = {
|
|||
'assets/images/video_player/(.*).png': '<rootDir>/dist/assets/images/video_player/$1@2x.png',
|
||||
},
|
||||
transformIgnorePatterns: [
|
||||
'node_modules/(?!react-native|jail-monkey|@sentry/react-native|react-navigation|@react-native-community/cameraroll)',
|
||||
'node_modules/(?!(react-native|@react-native|jail-monkey|@sentry/react-native|react-navigation|@react-native-community/cameraroll))',
|
||||
],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ const config = {
|
|||
preloadedModules: moduleMap,
|
||||
transform: {
|
||||
inlineRequires: {
|
||||
blacklist: moduleMap,
|
||||
blockList: moduleMap,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
20718
package-lock.json
generated
20718
package-lock.json
generated
File diff suppressed because it is too large
Load diff
141
package.json
141
package.json
|
|
@ -7,45 +7,44 @@
|
|||
"license": "Apache 2.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.12.5",
|
||||
"@babel/runtime": "7.13.10",
|
||||
"@react-native-community/async-storage": "1.12.1",
|
||||
"@react-native-community/cameraroll": "4.0.1",
|
||||
"@react-native-community/cameraroll": "4.0.4",
|
||||
"@react-native-community/clipboard": "1.5.1",
|
||||
"@react-native-community/masked-view": "0.1.10",
|
||||
"@react-native-community/netinfo": "5.9.10",
|
||||
"@react-navigation/native": "5.8.10",
|
||||
"@react-navigation/stack": "5.12.8",
|
||||
"@rudderstack/rudder-sdk-react-native": "1.0.4",
|
||||
"@sentry/react-native": "2.1.0",
|
||||
"@react-native-community/netinfo": "6.0.0",
|
||||
"@react-navigation/native": "5.9.3",
|
||||
"@react-navigation/stack": "5.14.3",
|
||||
"@rudderstack/rudder-sdk-react-native": "1.0.6",
|
||||
"@sentry/react-native": "2.4.0",
|
||||
"analytics-react-native": "1.2.0",
|
||||
"commonmark": "github:mattermost/commonmark.js#d716e1c89e0a6721051df7bc74ad7683e1ae438f",
|
||||
"commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#81af294317ebe19b5cc195d7fbc4f4a58177854c",
|
||||
"core-js": "3.8.2",
|
||||
"deep-equal": "2.0.5",
|
||||
"deepmerge": "4.2.2",
|
||||
"emoji-regex": "9.2.0",
|
||||
"form-data": "3.0.0",
|
||||
"emoji-regex": "9.2.2",
|
||||
"form-data": "4.0.0",
|
||||
"fuse.js": "6.4.6",
|
||||
"intl": "1.2.5",
|
||||
"jail-monkey": "2.3.3",
|
||||
"mime-db": "1.45.0",
|
||||
"moment-timezone": "0.5.32",
|
||||
"mime-db": "1.47.0",
|
||||
"moment-timezone": "0.5.33",
|
||||
"prop-types": "15.7.2",
|
||||
"react": "16.13.1",
|
||||
"react": "17.0.2",
|
||||
"react-intl": "2.8.0",
|
||||
"react-native": "0.63.4",
|
||||
"react-native": "0.64.0",
|
||||
"react-native-android-open-settings": "1.3.0",
|
||||
"react-native-animatable": "1.3.3",
|
||||
"react-native-button": "3.0.1",
|
||||
"react-native-calendars": "1.1129.0",
|
||||
"react-native-calendars": "1.1254.0",
|
||||
"react-native-cookies": "github:mattermost/react-native-cookies#b35bafc388ae09c83bd875e887daf6a0755e0b40",
|
||||
"react-native-device-info": "8.0.0",
|
||||
"react-native-document-picker": "4.2.0",
|
||||
"react-native-elements": "2.3.2",
|
||||
"react-native-exception-handler": "2.10.9",
|
||||
"react-native-device-info": "8.0.8",
|
||||
"react-native-document-picker": "5.0.3",
|
||||
"react-native-elements": "3.3.2",
|
||||
"react-native-exception-handler": "2.10.10",
|
||||
"react-native-fast-image": "8.3.4",
|
||||
"react-native-file-viewer": "2.1.4",
|
||||
"react-native-gesture-handler": "1.9.0",
|
||||
"react-native-gesture-handler": "1.10.3",
|
||||
"react-native-haptic-feedback": "1.11.0",
|
||||
"react-native-hw-keyboard-event": "0.0.4",
|
||||
"react-native-image-picker": "2.3.4",
|
||||
|
|
@ -54,27 +53,27 @@
|
|||
"react-native-keychain": "6.2.0",
|
||||
"react-native-linear-gradient": "2.5.6",
|
||||
"react-native-local-auth": "1.6.0",
|
||||
"react-native-localize": "2.0.1",
|
||||
"react-native-mmkv-storage": "0.4.3",
|
||||
"react-native-navigation": "7.8.1",
|
||||
"react-native-localize": "2.0.2",
|
||||
"react-native-mmkv-storage": "0.5.3",
|
||||
"react-native-navigation": "7.12.0",
|
||||
"react-native-notifications": "3.4.2",
|
||||
"react-native-passcode-status": "1.1.2",
|
||||
"react-native-permissions": "3.0.0",
|
||||
"react-native-permissions": "3.0.1",
|
||||
"react-native-reanimated": "1.13.2",
|
||||
"react-native-redash": "16.0.6",
|
||||
"react-native-redash": "16.0.8",
|
||||
"react-native-safe-area": "0.5.1",
|
||||
"react-native-safe-area-context": "3.1.9",
|
||||
"react-native-screens": "2.16.1",
|
||||
"react-native-safe-area-context": "3.2.0",
|
||||
"react-native-screens": "3.0.0",
|
||||
"react-native-section-list-get-item-layout": "2.2.3",
|
||||
"react-native-share": "5.1.0",
|
||||
"react-native-share": "5.1.7",
|
||||
"react-native-slider": "0.11.0",
|
||||
"react-native-status-bar-size": "0.3.3",
|
||||
"react-native-svg": "12.1.0",
|
||||
"react-native-vector-icons": "7.1.0",
|
||||
"react-native-video": "5.1.0-alpha8",
|
||||
"react-native-vector-icons": "8.1.0",
|
||||
"react-native-video": "5.1.1",
|
||||
"react-native-webview": "github:mattermost/react-native-webview#b5e22940a613869d3999feac9451ee65352f4fbe",
|
||||
"react-native-youtube": "2.0.1",
|
||||
"react-redux": "7.2.2",
|
||||
"react-redux": "7.2.3",
|
||||
"redux": "4.0.5",
|
||||
"redux-action-buffer": "1.2.0",
|
||||
"redux-batched-actions": "0.5.0",
|
||||
|
|
@ -84,86 +83,81 @@
|
|||
"reselect": "4.0.0",
|
||||
"rn-fetch-blob": "0.12.0",
|
||||
"rn-placeholder": "3.0.3",
|
||||
"semver": "7.3.4",
|
||||
"serialize-error": "8.0.0",
|
||||
"semver": "7.3.5",
|
||||
"serialize-error": "8.0.1",
|
||||
"shallow-equals": "1.0.0",
|
||||
"tinycolor2": "1.4.2",
|
||||
"url-parse": "1.4.7"
|
||||
"url-parse": "1.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.12.10",
|
||||
"@babel/core": "7.12.10",
|
||||
"@babel/plugin-transform-runtime": "7.12.10",
|
||||
"@babel/preset-env": "7.12.11",
|
||||
"@babel/register": "7.12.10",
|
||||
"@babel/cli": "7.13.14",
|
||||
"@babel/core": "7.13.14",
|
||||
"@babel/plugin-transform-runtime": "7.13.10",
|
||||
"@babel/preset-env": "7.13.12",
|
||||
"@babel/register": "7.13.14",
|
||||
"@react-native-community/eslint-config": "2.0.0",
|
||||
"@storybook/addon-knobs": "6.1.11",
|
||||
"@storybook/addon-ondevice-knobs": "5.3.23",
|
||||
"@storybook/react-native": "5.3.23",
|
||||
"@storybook/addon-knobs": "6.2.2",
|
||||
"@storybook/addon-ondevice-knobs": "5.3.25",
|
||||
"@storybook/react-native": "5.3.25",
|
||||
"@storybook/react-native-server": "5.3.23",
|
||||
"@testing-library/react-native": "7.1.0",
|
||||
"@testing-library/react-native": "7.2.0",
|
||||
"@types/enzyme": "3.10.8",
|
||||
"@types/enzyme-adapter-react-16": "1.0.6",
|
||||
"@types/jest": "26.0.20",
|
||||
"@types/jest": "26.0.22",
|
||||
"@types/moment-timezone": "0.5.30",
|
||||
"@types/react": "16.9.56",
|
||||
"@types/react-native": "0.63.45",
|
||||
"@types/react-native-share": "3.3.1",
|
||||
"@types/react-native-video": "5.0.3",
|
||||
"@types/react-redux": "7.1.15",
|
||||
"@types/react-test-renderer": "16.9.3",
|
||||
"@types/react": "17.0.3",
|
||||
"@types/react-native": "0.64.2",
|
||||
"@types/react-native-share": "3.3.2",
|
||||
"@types/react-native-video": "5.0.4",
|
||||
"@types/react-redux": "7.1.16",
|
||||
"@types/react-test-renderer": "17.0.1",
|
||||
"@types/shallow-equals": "1.0.0",
|
||||
"@types/tinycolor2": "1.4.2",
|
||||
"@types/url-parse": "1.4.3",
|
||||
"@typescript-eslint/eslint-plugin": "4.12.0",
|
||||
"@typescript-eslint/parser": "4.12.0",
|
||||
"@typescript-eslint/eslint-plugin": "4.20.0",
|
||||
"@typescript-eslint/parser": "4.20.0",
|
||||
"babel-eslint": "10.1.0",
|
||||
"babel-jest": "26.6.3",
|
||||
"babel-loader": "8.2.2",
|
||||
"babel-plugin-module-resolver": "4.1.0",
|
||||
"babel-plugin-transform-remove-console": "6.9.4",
|
||||
"deep-freeze": "0.0.1",
|
||||
"detox": "18.6.2",
|
||||
"detox": "18.9.0",
|
||||
"enzyme": "3.11.0",
|
||||
"enzyme-adapter-react-16": "1.15.5",
|
||||
"enzyme-adapter-react-16": "1.15.6",
|
||||
"enzyme-to-json": "3.6.1",
|
||||
"eslint": "7.17.0",
|
||||
"eslint-plugin-header": "3.1.0",
|
||||
"eslint-plugin-jest": "24.1.3",
|
||||
"eslint": "7.23.0",
|
||||
"eslint-plugin-header": "3.1.1",
|
||||
"eslint-plugin-jest": "24.3.3",
|
||||
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#070ce792d105482ffb2b27cfc0b7e78b3d20acee",
|
||||
"eslint-plugin-react": "7.22.0",
|
||||
"eslint-plugin-react": "7.23.1",
|
||||
"harmony-reflect": "1.6.1",
|
||||
"husky": "4.3.7",
|
||||
"husky": "^6.0.0",
|
||||
"isomorphic-fetch": "3.0.0",
|
||||
"jest": "26.6.3",
|
||||
"jest-cli": "26.6.3",
|
||||
"jest-enzyme": "7.1.2",
|
||||
"jetifier": "1.6.6",
|
||||
"jsdom-global": "3.0.2",
|
||||
"metro-react-native-babel-preset": "0.64.0",
|
||||
"metro-react-native-babel-preset": "0.65.2",
|
||||
"mmjstool": "github:mattermost/mattermost-utilities#3faa6075089a541d8c90ed85114e644c7a23fedf",
|
||||
"mock-async-storage": "2.2.0",
|
||||
"mock-socket": "9.0.3",
|
||||
"nock": "13.0.5",
|
||||
"nock": "13.0.11",
|
||||
"nyc": "15.1.0",
|
||||
"patch-package": "6.2.2",
|
||||
"react-dom": "16.13.1",
|
||||
"patch-package": "6.4.7",
|
||||
"react-dom": "17.0.2",
|
||||
"react-native-dev-menu": "4.0.2",
|
||||
"react-native-dotenv": "2.5.0",
|
||||
"react-native-dotenv": "2.5.3",
|
||||
"react-native-storybook-loader": "2.0.2",
|
||||
"redux-mock-store": "1.5.4",
|
||||
"redux-persist-node-storage": "2.0.0",
|
||||
"socketcluster": "16.0.1",
|
||||
"ts-jest": "26.4.4",
|
||||
"typescript": "4.1.3",
|
||||
"underscore": "1.12.0",
|
||||
"ts-jest": "26.5.4",
|
||||
"typescript": "4.2.3",
|
||||
"underscore": "1.12.1",
|
||||
"util": "0.12.3"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "sh ./scripts/pre-commit.sh"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"android": "react-native run-android",
|
||||
"ios": "react-native run-ios",
|
||||
|
|
@ -192,7 +186,8 @@
|
|||
"build:android-unsigned": "./scripts/build.sh apk unsigned",
|
||||
"build-storybook": "build-storybook",
|
||||
"prestorybook": "rnstl",
|
||||
"storybook": "start-storybook -p 7007"
|
||||
"storybook": "start-storybook -p 7007",
|
||||
"prepare": "husky install"
|
||||
},
|
||||
"config": {
|
||||
"react-native-storybook-loader": {
|
||||
|
|
|
|||
|
|
@ -1,265 +0,0 @@
|
|||
diff --git a/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js b/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
|
||||
index e8598a6..62bcf45 100644
|
||||
--- a/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
|
||||
+++ b/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
|
||||
@@ -560,7 +560,7 @@ if (global.RN$Bridgeless) {
|
||||
AndroidTextInputNativeComponent = 'AndroidTextInput';
|
||||
} else {
|
||||
AndroidTextInputNativeComponent = requireNativeComponent<NativeProps>(
|
||||
- 'AndroidTextInput',
|
||||
+ 'PasteableTextInputAndroid',
|
||||
);
|
||||
}
|
||||
|
||||
diff --git a/node_modules/react-native/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h b/node_modules/react-native/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h
|
||||
index 2da6323..1f64ffe 100644
|
||||
--- a/node_modules/react-native/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h
|
||||
+++ b/node_modules/react-native/Libraries/FBReactNativeSpec/FBReactNativeSpec/FBReactNativeSpec.h
|
||||
@@ -2796,6 +2796,7 @@ namespace JS {
|
||||
namespace NativeWebSocketModule {
|
||||
struct SpecConnectOptions {
|
||||
id<NSObject> _Nullable headers() const;
|
||||
+ NSString *certificate() const;
|
||||
|
||||
SpecConnectOptions(NSDictionary *const v) : _v(v) {}
|
||||
private:
|
||||
@@ -3862,3 +3863,9 @@ inline id<NSObject> _Nullable JS::NativeWebSocketModule::SpecConnectOptions::hea
|
||||
id const p = _v[@"headers"];
|
||||
return p;
|
||||
}
|
||||
+
|
||||
+inline NSString *JS::NativeWebSocketModule::SpecConnectOptions::certificate() const
|
||||
+{
|
||||
+ id const p = _v[@"certificate"];
|
||||
+ return p;
|
||||
+}
|
||||
diff --git a/node_modules/react-native/Libraries/Lists/VirtualizedList.js b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
index 9ec105f..18f7bf6 100644
|
||||
--- a/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
+++ b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
@@ -20,6 +20,7 @@ const ScrollView = require('../Components/ScrollView/ScrollView');
|
||||
const StyleSheet = require('../StyleSheet/StyleSheet');
|
||||
const View = require('../Components/View/View');
|
||||
const ViewabilityHelper = require('./ViewabilityHelper');
|
||||
+const Platform = require('../Utilities/Platform');
|
||||
|
||||
const flattenStyle = require('../StyleSheet/flattenStyle');
|
||||
const infoLog = require('../Utilities/infoLog');
|
||||
@@ -2186,7 +2187,7 @@ function describeNestedLists(childList: {
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
verticallyInverted: {
|
||||
- transform: [{scaleY: -1}],
|
||||
+ ...Platform.select({android: {transform: [{perspective: 1}, {scaleY: -1}]}, ios: {transform: [{scaleY: -1}]}}),
|
||||
},
|
||||
horizontallyInverted: {
|
||||
transform: [{scaleX: -1}],
|
||||
diff --git a/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.h b/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.h
|
||||
index 1b17cff..70a59b6 100644
|
||||
--- a/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.h
|
||||
+++ b/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.h
|
||||
@@ -54,13 +54,14 @@ extern NSString *const RCTSRHTTPResponseErrorKey;
|
||||
|
||||
@property (nonatomic, readonly) RCTSRReadyState readyState;
|
||||
@property (nonatomic, readonly, strong) NSURL *url;
|
||||
+@property (nonatomic, readonly, strong) NSString *certificate;
|
||||
|
||||
// This returns the negotiated protocol.
|
||||
// It will be nil until after the handshake completes.
|
||||
@property (nonatomic, readonly, copy) NSString *protocol;
|
||||
|
||||
// Protocols should be an array of strings that turn into Sec-WebSocket-Protocol.
|
||||
-- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NSString *> *)protocols NS_DESIGNATED_INITIALIZER;
|
||||
+- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NSString *> *)protocols certificate:(NSString *)certificate NS_DESIGNATED_INITIALIZER;
|
||||
- (instancetype)initWithURLRequest:(NSURLRequest *)request;
|
||||
|
||||
// Some helper constructors.
|
||||
@@ -88,6 +89,9 @@ extern NSString *const RCTSRHTTPResponseErrorKey;
|
||||
// Send Data (can be nil) in a ping message.
|
||||
- (void)sendPing:(NSData *)data;
|
||||
|
||||
+// Get the certificate identity from the keyChain by name
|
||||
+- (SecIdentityRef) GetIdentityByName:(NSString *)name;
|
||||
+
|
||||
@end
|
||||
|
||||
#pragma mark - RCTSRWebSocketDelegate
|
||||
diff --git a/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.m b/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.m
|
||||
index b967c14..1a38e00 100644
|
||||
--- a/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.m
|
||||
+++ b/node_modules/react-native/Libraries/WebSocket/RCTSRWebSocket.m
|
||||
@@ -228,7 +228,7 @@ @implementation RCTSRWebSocket
|
||||
RCTSRIOConsumerPool *_consumerPool;
|
||||
}
|
||||
|
||||
-- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NSString *> *)protocols
|
||||
+- (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NSString *> *)protocols certificate:(NSString *)certificate
|
||||
{
|
||||
RCTAssertParam(request);
|
||||
|
||||
@@ -238,6 +238,10 @@ - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NS
|
||||
|
||||
_requestedProtocols = [protocols copy];
|
||||
|
||||
+ if (![certificate isKindOfClass:[NSNull class]]) {
|
||||
+ _certificate = certificate;
|
||||
+ }
|
||||
+
|
||||
[self _RCTSR_commonInit];
|
||||
}
|
||||
return self;
|
||||
@@ -247,7 +251,7 @@ - (instancetype)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray<NS
|
||||
|
||||
- (instancetype)initWithURLRequest:(NSURLRequest *)request
|
||||
{
|
||||
- return [self initWithURLRequest:request protocols:nil];
|
||||
+ return [self initWithURLRequest:request protocols:nil certificate:self.certificate];
|
||||
}
|
||||
|
||||
- (instancetype)initWithURL:(NSURL *)URL
|
||||
@@ -274,7 +278,7 @@ - (instancetype)initWithURL:(NSURL *)URL protocols:(NSArray<NSString *> *)protoc
|
||||
NSArray<NSHTTPCookie *> *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:components.URL];
|
||||
[request setAllHTTPHeaderFields:[NSHTTPCookie requestHeaderFieldsWithCookies:cookies]];
|
||||
}
|
||||
- return [self initWithURLRequest:request protocols:protocols];
|
||||
+ return [self initWithURLRequest:request protocols:protocols certificate:self.certificate];
|
||||
}
|
||||
|
||||
- (void)_RCTSR_commonInit
|
||||
@@ -344,6 +348,36 @@ - (void)setReadyState:(RCTSRReadyState)aReadyState
|
||||
|
||||
#endif
|
||||
|
||||
+- (SecIdentityRef) GetIdentityByName:(NSString *)name
|
||||
+{
|
||||
+ NSMutableDictionary * query = [[NSMutableDictionary alloc] init];
|
||||
+
|
||||
+ //Set up the invariant pieces of the query
|
||||
+ [query setObject:(id)kSecMatchLimitAll forKey:(id)kSecMatchLimit];
|
||||
+ [query setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnRef];
|
||||
+ [query setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
|
||||
+ [query setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnAttributes];
|
||||
+ [query setObject:(id)kSecClassIdentity forKey:(id)kSecClass];
|
||||
+ [query setObject:name forKey:(id)kSecAttrLabel];
|
||||
+
|
||||
+ OSStatus resultCode = noErr;
|
||||
+ CFTypeRef result = nil;
|
||||
+ //Execute the query saving the results in items.
|
||||
+ resultCode = SecItemCopyMatching((CFDictionaryRef)query, &result);
|
||||
+ CFDictionaryRef item = (CFDictionaryRef)CFArrayGetValueAtIndex((CFArrayRef)result, 0);
|
||||
+ if (item != nil) {
|
||||
+ SecIdentityRef identity = nil;
|
||||
+ CFTypeRef value;
|
||||
+ if(CFDictionaryGetValueIfPresent(item, kSecValueRef, &value))
|
||||
+ {
|
||||
+ identity = (SecIdentityRef)value;
|
||||
+ }
|
||||
+
|
||||
+ return identity;
|
||||
+ }
|
||||
+ return nil;
|
||||
+}
|
||||
+
|
||||
- (void)open
|
||||
{
|
||||
assert(_url);
|
||||
@@ -515,6 +549,24 @@ - (void)_initializeStreams
|
||||
RCTLogInfo(@"SocketRocket: In debug mode. Allowing connection to any root cert");
|
||||
#endif
|
||||
|
||||
+ if (_certificate) {
|
||||
+ SecIdentityRef identity = [self GetIdentityByName:_certificate];
|
||||
+ if (identity != nil) {
|
||||
+ SecCertificateRef certificate = NULL;
|
||||
+ OSStatus status = SecIdentityCopyCertificate(identity, &certificate);
|
||||
+ if (!status) {
|
||||
+ NSArray *myCerts = [[NSArray alloc] initWithObjects:(__bridge id)identity, (__bridge id)certificate, nil];
|
||||
+
|
||||
+ [SSLOptions setObject:[NSNumber numberWithBool:NO] forKey:(NSString *)kCFStreamSSLValidatesCertificateChain];
|
||||
+ [SSLOptions setObject:[NSString stringWithFormat:@"%@:%d", host, port] forKey:(NSString *)kCFStreamSSLPeerName];
|
||||
+ [SSLOptions setObject:(NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL forKey:(NSString*)kCFStreamSSLLevel];
|
||||
+ [SSLOptions setObject:(NSString *)kCFStreamSocketSecurityLevelNegotiatedSSL forKey:(NSString*)kCFStreamPropertySocketSecurityLevel];
|
||||
+ [SSLOptions setObject:myCerts forKey:(NSString *)kCFStreamSSLCertificates];
|
||||
+ [SSLOptions setObject:[NSNumber numberWithBool:NO] forKey:(NSString *)kCFStreamSSLIsServer];
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
[_outputStream setProperty:SSLOptions
|
||||
forKey:(__bridge id)kCFStreamPropertySSLSettings];
|
||||
}
|
||||
diff --git a/node_modules/react-native/Libraries/WebSocket/WebSocket.js b/node_modules/react-native/Libraries/WebSocket/WebSocket.js
|
||||
index 0b051c4..d5bbf3f 100644
|
||||
--- a/node_modules/react-native/Libraries/WebSocket/WebSocket.js
|
||||
+++ b/node_modules/react-native/Libraries/WebSocket/WebSocket.js
|
||||
@@ -91,7 +91,7 @@ class WebSocket extends (EventTarget(...WEBSOCKET_EVENTS): any) {
|
||||
protocols = [protocols];
|
||||
}
|
||||
|
||||
- const {headers = {}, ...unrecognized} = options || {};
|
||||
+ const {headers = {}, certificate = {}, ...unrecognized} = options || {};
|
||||
|
||||
// Preserve deprecated backwards compatibility for the 'origin' option
|
||||
/* $FlowFixMe(>=0.68.0 site=react_native_fb) This comment suppresses an
|
||||
@@ -128,7 +128,7 @@ class WebSocket extends (EventTarget(...WEBSOCKET_EVENTS): any) {
|
||||
this._eventEmitter = new NativeEventEmitter(NativeWebSocketModule);
|
||||
this._socketId = nextWebSocketId++;
|
||||
this._registerEvents();
|
||||
- NativeWebSocketModule.connect(url, protocols, {headers}, this._socketId);
|
||||
+ NativeWebSocketModule.connect(url, protocols, {headers, certificate}, this._socketId);
|
||||
}
|
||||
|
||||
get binaryType(): ?BinaryType {
|
||||
diff --git a/node_modules/react-native/React/CoreModules/RCTWebSocketModule.mm b/node_modules/react-native/React/CoreModules/RCTWebSocketModule.mm
|
||||
index 9648b18..3594b43 100644
|
||||
--- a/node_modules/react-native/React/CoreModules/RCTWebSocketModule.mm
|
||||
+++ b/node_modules/react-native/React/CoreModules/RCTWebSocketModule.mm
|
||||
@@ -88,7 +88,7 @@ - (void)invalidate
|
||||
}];
|
||||
}
|
||||
|
||||
- RCTSRWebSocket *webSocket = [[RCTSRWebSocket alloc] initWithURLRequest:request protocols:protocols];
|
||||
+ RCTSRWebSocket *webSocket = [[RCTSRWebSocket alloc] initWithURLRequest:request protocols:protocols certificate:options.certificate()];
|
||||
[webSocket setDelegateDispatchQueue:[self methodQueue]];
|
||||
webSocket.delegate = self;
|
||||
webSocket.reactTag = @(socketID);
|
||||
diff --git a/node_modules/react-native/react.gradle b/node_modules/react-native/react.gradle
|
||||
index 6441d93..4a0cd01 100644
|
||||
--- a/node_modules/react-native/react.gradle
|
||||
+++ b/node_modules/react-native/react.gradle
|
||||
@@ -157,7 +157,7 @@ afterEvaluate {
|
||||
|
||||
// Set up dev mode
|
||||
def devEnabled = !(config."devDisabledIn${targetName}"
|
||||
- || targetName.toLowerCase().contains("release"))
|
||||
+ || targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned"))
|
||||
|
||||
def extraArgs = config.extraPackagerArgs ?: [];
|
||||
|
||||
@@ -177,7 +177,7 @@ afterEvaluate {
|
||||
def hermesFlags;
|
||||
def hbcTempFile = file("${jsBundleFile}.hbc")
|
||||
exec {
|
||||
- if (targetName.toLowerCase().contains("release")) {
|
||||
+ if (targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned")) {
|
||||
// Can't use ?: since that will also substitute valid empty lists
|
||||
hermesFlags = config.hermesFlagsRelease
|
||||
if (hermesFlags == null) hermesFlags = ["-O", "-output-source-map"]
|
||||
@@ -221,7 +221,7 @@ afterEvaluate {
|
||||
? config."bundleIn${targetName}"
|
||||
: config."bundleIn${variant.buildType.name.capitalize()}" != null
|
||||
? config."bundleIn${variant.buildType.name.capitalize()}"
|
||||
- : targetName.toLowerCase().contains("release")
|
||||
+ : (targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned"))
|
||||
}
|
||||
|
||||
// Expose a minimal interface on the application variant and the task itself:
|
||||
@@ -313,7 +313,7 @@ afterEvaluate {
|
||||
// This should really be done by packaging all Hermes releated libs into
|
||||
// two separate HermesDebug and HermesRelease AARs, but until then we'll
|
||||
// kludge it by deleting the .so files out of the /transforms/ directory.
|
||||
- def isRelease = targetName.toLowerCase().contains("release")
|
||||
+ def isRelease = targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned")
|
||||
def libDir = "$buildDir/intermediates/transforms/"
|
||||
def vmSelectionAction = {
|
||||
fileTree(libDir).matching {
|
||||
74
patches/react-native+0.64.0.patch
Normal file
74
patches/react-native+0.64.0.patch
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
diff --git a/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js b/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
|
||||
index dffccc4..dc426c2 100644
|
||||
--- a/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
|
||||
+++ b/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
|
||||
@@ -553,7 +553,7 @@ if (global.RN$Bridgeless) {
|
||||
AndroidTextInputNativeComponent = 'AndroidTextInput';
|
||||
} else {
|
||||
AndroidTextInputNativeComponent = requireNativeComponent<NativeProps>(
|
||||
- 'AndroidTextInput',
|
||||
+ 'PasteableTextInputAndroid',
|
||||
);
|
||||
}
|
||||
|
||||
diff --git a/node_modules/react-native/Libraries/Lists/VirtualizedList.js b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
index 2249d54..d26452a 100644
|
||||
--- a/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
+++ b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
@@ -18,6 +18,7 @@ const ScrollView = require('../Components/ScrollView/ScrollView');
|
||||
const StyleSheet = require('../StyleSheet/StyleSheet');
|
||||
const View = require('../Components/View/View');
|
||||
const ViewabilityHelper = require('./ViewabilityHelper');
|
||||
+const Platform = require('../Utilities/Platform');
|
||||
|
||||
const flattenStyle = require('../StyleSheet/flattenStyle');
|
||||
const infoLog = require('../Utilities/infoLog');
|
||||
@@ -2061,7 +2062,7 @@ function describeNestedLists(childList: {
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
verticallyInverted: {
|
||||
- transform: [{scaleY: -1}],
|
||||
+ ...Platform.select({android: {transform: [{perspective: 1}, {scaleY: -1}]}, ios: {transform: [{scaleY: -1}]}}),
|
||||
},
|
||||
horizontallyInverted: {
|
||||
transform: [{scaleX: -1}],
|
||||
diff --git a/node_modules/react-native/react.gradle b/node_modules/react-native/react.gradle
|
||||
index 5995ad5..dbae7e3 100644
|
||||
--- a/node_modules/react-native/react.gradle
|
||||
+++ b/node_modules/react-native/react.gradle
|
||||
@@ -157,7 +157,7 @@ afterEvaluate {
|
||||
|
||||
// Set up dev mode
|
||||
def devEnabled = !(config."devDisabledIn${targetName}"
|
||||
- || targetName.toLowerCase().contains("release"))
|
||||
+ || targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned"))
|
||||
|
||||
def extraArgs = config.extraPackagerArgs ?: [];
|
||||
|
||||
@@ -177,7 +177,7 @@ afterEvaluate {
|
||||
def hermesFlags;
|
||||
def hbcTempFile = file("${jsBundleFile}.hbc")
|
||||
exec {
|
||||
- if (targetName.toLowerCase().contains("release")) {
|
||||
+ if (targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned")) {
|
||||
// Can't use ?: since that will also substitute valid empty lists
|
||||
hermesFlags = config.hermesFlagsRelease
|
||||
if (hermesFlags == null) hermesFlags = ["-O", "-output-source-map"]
|
||||
@@ -221,7 +221,7 @@ afterEvaluate {
|
||||
? config."bundleIn${targetName}"
|
||||
: config."bundleIn${variant.buildType.name.capitalize()}" != null
|
||||
? config."bundleIn${variant.buildType.name.capitalize()}"
|
||||
- : targetName.toLowerCase().contains("release")
|
||||
+ : (targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned"))
|
||||
}
|
||||
|
||||
// Expose a minimal interface on the application variant and the task itself:
|
||||
@@ -318,7 +318,7 @@ afterEvaluate {
|
||||
// This should really be done by packaging all Hermes releated libs into
|
||||
// two separate HermesDebug and HermesRelease AARs, but until then we'll
|
||||
// kludge it by deleting the .so files out of the /transforms/ directory.
|
||||
- def isRelease = targetName.toLowerCase().contains("release")
|
||||
+ def isRelease = targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned")
|
||||
def libDir = "$buildDir/intermediates/transforms/"
|
||||
def vmSelectionAction = {
|
||||
fileTree(libDir).matching {
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
diff --git a/node_modules/react-native-elements/src/searchbar/SearchBar-android.js b/node_modules/react-native-elements/src/searchbar/SearchBar-android.js
|
||||
index 9ab7ce3..e53034b 100644
|
||||
--- a/node_modules/react-native-elements/src/searchbar/SearchBar-android.js
|
||||
+++ b/node_modules/react-native-elements/src/searchbar/SearchBar-android.js
|
||||
@@ -29,6 +29,12 @@ const defaultClearIcon = (theme) => ({
|
||||
});
|
||||
|
||||
class SearchBar extends Component {
|
||||
+ componentDidUpdate(prevProps) {
|
||||
+ if (this.props.value !== prevProps.value) {
|
||||
+ this.setState({isEmpty: this.props.value === ''});
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
focus = () => {
|
||||
this.input.focus();
|
||||
};
|
||||
diff --git a/node_modules/react-native-elements/src/searchbar/SearchBar-ios.js b/node_modules/react-native-elements/src/searchbar/SearchBar-ios.js
|
||||
index f1ad10d..17cc1e2 100644
|
||||
--- a/node_modules/react-native-elements/src/searchbar/SearchBar-ios.js
|
||||
+++ b/node_modules/react-native-elements/src/searchbar/SearchBar-ios.js
|
||||
@@ -39,6 +39,12 @@ class SearchBar extends Component {
|
||||
};
|
||||
}
|
||||
|
||||
+ componentDidUpdate(prevProps) {
|
||||
+ if (this.props.value !== prevProps.value) {
|
||||
+ this.setState({isEmpty: this.props.value === ''});
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
focus = () => {
|
||||
this.input.focus();
|
||||
};
|
||||
@@ -268,7 +274,6 @@ const styles = {
|
||||
paddingBottom: 13,
|
||||
paddingTop: 13,
|
||||
flexDirection: 'row',
|
||||
- overflow: 'hidden',
|
||||
alignItems: 'center',
|
||||
}),
|
||||
input: {
|
||||
@@ -279,7 +284,7 @@ const styles = {
|
||||
borderBottomWidth: 0,
|
||||
backgroundColor: theme.colors.platform.ios.searchBg,
|
||||
borderRadius: 9,
|
||||
- minHeight: 36,
|
||||
+ minHeight: 30,
|
||||
marginLeft: 8,
|
||||
marginRight: 8,
|
||||
}),
|
||||
69
patches/react-native-elements+3.3.2.patch
Normal file
69
patches/react-native-elements+3.3.2.patch
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
diff --git a/node_modules/react-native-elements/dist/searchbar/SearchBar-android.js b/node_modules/react-native-elements/dist/searchbar/SearchBar-android.js
|
||||
index 4261cea..183bde1 100644
|
||||
--- a/node_modules/react-native-elements/dist/searchbar/SearchBar-android.js
|
||||
+++ b/node_modules/react-native-elements/dist/searchbar/SearchBar-android.js
|
||||
@@ -10,7 +10,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
||||
return t;
|
||||
};
|
||||
import React, { Component } from 'react';
|
||||
-import { StyleSheet, View, ActivityIndicator, Keyboard, } from 'react-native';
|
||||
+import { StyleSheet, View, ActivityIndicator, } from 'react-native';
|
||||
import { renderNode } from '../helpers';
|
||||
import Input from '../input/Input';
|
||||
import Icon from '../icons/Icon';
|
||||
@@ -65,18 +65,16 @@ class SearchBar extends Component {
|
||||
this.props.onChangeText(text);
|
||||
this.setState({ isEmpty: text === '' });
|
||||
};
|
||||
- this._keyboardDidHide = () => {
|
||||
- this.cancel();
|
||||
- };
|
||||
const { value = '' } = props;
|
||||
this.state = {
|
||||
hasFocus: false,
|
||||
isEmpty: value ? value === '' : true,
|
||||
};
|
||||
- Keyboard.addListener('keyboardDidHide', this._keyboardDidHide);
|
||||
}
|
||||
- componentWillUnmount() {
|
||||
- Keyboard.removeListener('keyboardDidHide', this._keyboardDidHide);
|
||||
+ componentDidUpdate(prevProps) {
|
||||
+ if (this.props.value !== prevProps.value) {
|
||||
+ this.setState({isEmpty: this.props.value === ''});
|
||||
+ }
|
||||
}
|
||||
render() {
|
||||
const _a = this.props, { theme, clearIcon = { name: 'clear' }, containerStyle, leftIconContainerStyle, rightIconContainerStyle, inputContainerStyle, inputStyle, searchIcon = { name: 'search' }, cancelIcon = { name: 'arrow-back' }, showLoading = false, loadingProps = {} } = _a, attributes = __rest(_a, ["theme", "clearIcon", "containerStyle", "leftIconContainerStyle", "rightIconContainerStyle", "inputContainerStyle", "inputStyle", "searchIcon", "cancelIcon", "showLoading", "loadingProps"]);
|
||||
diff --git a/node_modules/react-native-elements/dist/searchbar/SearchBar-ios.js b/node_modules/react-native-elements/dist/searchbar/SearchBar-ios.js
|
||||
index b0761ab..4fa5e83 100644
|
||||
--- a/node_modules/react-native-elements/dist/searchbar/SearchBar-ios.js
|
||||
+++ b/node_modules/react-native-elements/dist/searchbar/SearchBar-ios.js
|
||||
@@ -82,6 +82,11 @@ class SearchBar extends Component {
|
||||
cancelButtonWidth: null,
|
||||
};
|
||||
}
|
||||
+ componentDidUpdate(prevProps) {
|
||||
+ if (this.props.value !== prevProps.value) {
|
||||
+ this.setState({isEmpty: this.props.value === ''});
|
||||
+ }
|
||||
+ }
|
||||
render() {
|
||||
const _a = this.props, { theme, cancelButtonProps, cancelButtonTitle, clearIcon, containerStyle, leftIconContainerStyle, rightIconContainerStyle, inputContainerStyle, inputStyle, placeholderTextColor, showLoading, loadingProps, searchIcon, showCancel } = _a, attributes = __rest(_a, ["theme", "cancelButtonProps", "cancelButtonTitle", "clearIcon", "containerStyle", "leftIconContainerStyle", "rightIconContainerStyle", "inputContainerStyle", "inputStyle", "placeholderTextColor", "showLoading", "loadingProps", "searchIcon", "showCancel"]);
|
||||
const { hasFocus, isEmpty } = this.state;
|
||||
@@ -159,7 +164,6 @@ const styles = StyleSheet.create({
|
||||
paddingBottom: 13,
|
||||
paddingTop: 13,
|
||||
flexDirection: 'row',
|
||||
- overflow: 'hidden',
|
||||
alignItems: 'center',
|
||||
},
|
||||
input: {
|
||||
@@ -169,7 +173,7 @@ const styles = StyleSheet.create({
|
||||
inputContainer: {
|
||||
borderBottomWidth: 0,
|
||||
borderRadius: 9,
|
||||
- minHeight: 36,
|
||||
+ minHeight: 30,
|
||||
marginLeft: 8,
|
||||
marginRight: 8,
|
||||
},
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
diff --git a/node_modules/react-native-mmkv-storage/ios/MMKVStorage.m b/node_modules/react-native-mmkv-storage/ios/MMKVStorage.m
|
||||
index 2875bda..8235771 100644
|
||||
--- a/node_modules/react-native-mmkv-storage/ios/MMKVStorage.m
|
||||
+++ b/node_modules/react-native-mmkv-storage/ios/MMKVStorage.m
|
||||
@@ -45,10 +45,10 @@ - (id)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
|
||||
- NSString *libraryPath = (NSString *) [paths firstObject];
|
||||
- NSString *rootDir = [libraryPath stringByAppendingPathComponent:@"mmkv"];
|
||||
- [MMKV initializeMMKV:rootDir];
|
||||
+ NSBundle *bundle = [NSBundle mainBundle];
|
||||
+ NSString *APP_GROUP_ID = [bundle objectForInfoDictionaryKey:@"AppGroupIdentifier"];
|
||||
+ NSString *groupDir = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:APP_GROUP_ID].path;
|
||||
+ [MMKV initializeMMKV:nil groupDir:groupDir logLevel:MMKVLogInfo];
|
||||
|
||||
secureStorage = [[SecureStorage alloc]init];
|
||||
IdStore = [[IDStore alloc] initWithMMKV:[MMKV mmkvWithID:@"mmkvIdStore"]];
|
||||
22
patches/react-native-mmkv-storage+0.5.3.patch
Normal file
22
patches/react-native-mmkv-storage+0.5.3.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
diff --git a/node_modules/react-native-mmkv-storage/ios/MMKVNative.mm b/node_modules/react-native-mmkv-storage/ios/MMKVNative.mm
|
||||
index 299942e..9c5b3f9 100644
|
||||
--- a/node_modules/react-native-mmkv-storage/ios/MMKVNative.mm
|
||||
+++ b/node_modules/react-native-mmkv-storage/ios/MMKVNative.mm
|
||||
@@ -690,12 +690,12 @@ static void install(jsi::Runtime & jsiRuntime)
|
||||
|
||||
mmkvInstances = [NSMutableDictionary dictionary];
|
||||
|
||||
- NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
|
||||
- NSString *libraryPath = (NSString *) [paths firstObject];
|
||||
- NSString *rootDir = [libraryPath stringByAppendingPathComponent:@"mmkv"];
|
||||
- rPath = rootDir;
|
||||
+ NSBundle *bundle = [NSBundle mainBundle];
|
||||
+ NSString *APP_GROUP_ID = [bundle objectForInfoDictionaryKey:@"AppGroupIdentifier"];
|
||||
+ NSString *groupDir = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:APP_GROUP_ID].path;
|
||||
+ rPath = groupDir;
|
||||
_secureStorage = [[SecureStorage alloc] init];
|
||||
- [MMKV initializeMMKV:rootDir];
|
||||
+ [MMKV initializeMMKV:nil groupDir:groupDir logLevel:MMKVLogInfo];
|
||||
install(*(jsi::Runtime *)cxxBridge.runtime);
|
||||
[self migrate];
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ jest.mock('react-native-vector-icons', () => {
|
|||
};
|
||||
});
|
||||
|
||||
jest.mock('react-native/Libraries/Animated/src/NativeAnimatedHelper');
|
||||
jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper');
|
||||
jest.mock('../node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter');
|
||||
|
||||
jest.mock('react-native-device-info', () => {
|
||||
|
|
|
|||
2
types/screens/gallery.d.ts
vendored
2
types/screens/gallery.d.ts
vendored
|
|
@ -48,7 +48,7 @@ export interface PrepareFileRef {
|
|||
}
|
||||
|
||||
export interface FooterProps {
|
||||
intl: typeof intlShape;
|
||||
intl?: typeof intlShape;
|
||||
file: FileInfo;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue