[#3593] Hide passphrase field during TestFairy session
Switch to react-native version of TestFairy Signed-off-by: Dmitry Novotochinov <trybeee@gmail.com>
This commit is contained in:
parent
05dd8eba2a
commit
6786123765
1
.env
1
.env
|
@ -15,3 +15,4 @@ POW_TARGET=0.001
|
||||||
POW_TIME=1
|
POW_TIME=1
|
||||||
MIXPANEL_TOKEN=3f2e1a8970f159aa2a3d5dc5d65eab38
|
MIXPANEL_TOKEN=3f2e1a8970f159aa2a3d5dc5d65eab38
|
||||||
DEFAULT_NETWORK=testnet_rpc
|
DEFAULT_NETWORK=testnet_rpc
|
||||||
|
TESTFAIRY_TOKEN=969f6c921cb435cea1d41d1ea3f5b247d6026d55
|
||||||
|
|
|
@ -12,6 +12,7 @@ MANY_WHISPER_TOPICS_ENABLED=0
|
||||||
RN_BRIDGE_THRESHOLD_WARNINGS=0
|
RN_BRIDGE_THRESHOLD_WARNINGS=0
|
||||||
COMPILE_VIEWS_ENABLED=0
|
COMPILE_VIEWS_ENABLED=0
|
||||||
MIXPANEL_TOKEN=3f2e1a8970f159aa2a3d5dc5d65eab38
|
MIXPANEL_TOKEN=3f2e1a8970f159aa2a3d5dc5d65eab38
|
||||||
|
TESTFAIRY_TOKEN=969f6c921cb435cea1d41d1ea3f5b247d6026d55
|
||||||
POW_TARGET=0.001
|
POW_TARGET=0.001
|
||||||
POW_TIME=1
|
POW_TIME=1
|
||||||
DEFAULT_NETWORK=testnet_rpc
|
DEFAULT_NETWORK=testnet_rpc
|
||||||
|
|
|
@ -12,6 +12,7 @@ MANY_WHISPER_TOPICS_ENABLED=0
|
||||||
RN_BRIDGE_THRESHOLD_WARNINGS=0
|
RN_BRIDGE_THRESHOLD_WARNINGS=0
|
||||||
COMPILE_VIEWS_ENABLED=0
|
COMPILE_VIEWS_ENABLED=0
|
||||||
MIXPANEL_TOKEN=2584e00100d319d12e538cc4d0fa9fc1
|
MIXPANEL_TOKEN=2584e00100d319d12e538cc4d0fa9fc1
|
||||||
|
TESTFAIRY_TOKEN=969f6c921cb435cea1d41d1ea3f5b247d6026d55
|
||||||
POW_TARGET=0.2
|
POW_TARGET=0.2
|
||||||
POW_TIME=1
|
POW_TIME=1
|
||||||
DEFAULT_NETWORK=testnet_rpc
|
DEFAULT_NETWORK=testnet_rpc
|
||||||
|
|
|
@ -44,7 +44,8 @@
|
||||||
"rn-snoopy/stream/buffer",
|
"rn-snoopy/stream/buffer",
|
||||||
"react-native/Libraries/vendor/emitter/EventEmitter",
|
"react-native/Libraries/vendor/emitter/EventEmitter",
|
||||||
"react-native-background-timer",
|
"react-native-background-timer",
|
||||||
"react-native-fetch-polyfill"
|
"react-native-fetch-polyfill",
|
||||||
|
"react-native-testfairy"
|
||||||
],
|
],
|
||||||
"imageDirs": [
|
"imageDirs": [
|
||||||
"resources/images"
|
"resources/images"
|
||||||
|
|
|
@ -206,10 +206,10 @@ dependencies {
|
||||||
implementation project(':react-native-fs')
|
implementation project(':react-native-fs')
|
||||||
implementation project(':react-native-image-crop-picker')
|
implementation project(':react-native-image-crop-picker')
|
||||||
implementation project(':react-native-webview-bridge')
|
implementation project(':react-native-webview-bridge')
|
||||||
implementation 'testfairy:testfairy-android-sdk:1.+@aar'
|
|
||||||
implementation project(':react-native-config')
|
implementation project(':react-native-config')
|
||||||
implementation project(':react-native-fcm')
|
implementation project(':react-native-fcm')
|
||||||
implementation 'com.google.firebase:firebase-core:10.0.1' //this decides your firebase SDK version
|
implementation 'com.google.firebase:firebase-core:10.0.1' //this decides your firebase SDK version
|
||||||
|
compile project(':react-native-testfairy')
|
||||||
|
|
||||||
implementation 'status-im:function:0.0.1'
|
implementation 'status-im:function:0.0.1'
|
||||||
implementation fileTree(dir: "node_modules/realm/android/libs", include: ["*.jar"])
|
implementation fileTree(dir: "node_modules/realm/android/libs", include: ["*.jar"])
|
||||||
|
|
|
@ -24,6 +24,7 @@ import fr.bamlab.rnimageresizer.ImageResizerPackage;
|
||||||
import im.status.ethereum.module.StatusPackage;
|
import im.status.ethereum.module.StatusPackage;
|
||||||
import io.realm.react.RealmReactPackage;
|
import io.realm.react.RealmReactPackage;
|
||||||
import me.alwx.HttpServer.HttpServerReactPackage;
|
import me.alwx.HttpServer.HttpServerReactPackage;
|
||||||
|
import com.testfairy.react.TestFairyPackage;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -69,6 +70,7 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
|
||||||
new ReactNativeDialogsPackage(),
|
new ReactNativeDialogsPackage(),
|
||||||
new ImageResizerPackage(),
|
new ImageResizerPackage(),
|
||||||
new PickerPackage(),
|
new PickerPackage(),
|
||||||
|
new TestFairyPackage(),
|
||||||
new WebViewBridgePackage(BuildConfig.DEBUG, callRPC),
|
new WebViewBridgePackage(BuildConfig.DEBUG, callRPC),
|
||||||
new ReactNativeConfigPackage()
|
new ReactNativeConfigPackage()
|
||||||
));
|
));
|
||||||
|
|
|
@ -35,4 +35,6 @@ project(':react-native-image-crop-picker').projectDir = new File(settingsDir, '.
|
||||||
include ':react-native-webview-bridge'
|
include ':react-native-webview-bridge'
|
||||||
project(':react-native-webview-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview-bridge/android')
|
project(':react-native-webview-bridge').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview-bridge/android')
|
||||||
include ':react-native-config'
|
include ':react-native-config'
|
||||||
project(':react-native-config').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config/android')
|
project(':react-native-config').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-config/android')
|
||||||
|
include ':react-native-testfairy'
|
||||||
|
project(':react-native-testfairy').projectDir = new File(settingsDir, '../node_modules/react-native-testfairy/android')
|
|
@ -46,10 +46,9 @@
|
||||||
925C1F4C1F7B73B20063DFA0 /* nanopb.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F451F7B73B20063DFA0 /* nanopb.framework */; };
|
925C1F4C1F7B73B20063DFA0 /* nanopb.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F451F7B73B20063DFA0 /* nanopb.framework */; };
|
||||||
925C1F811F7B73C00063DFA0 /* FirebaseMessaging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F7F1F7B73C00063DFA0 /* FirebaseMessaging.framework */; };
|
925C1F811F7B73C00063DFA0 /* FirebaseMessaging.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 925C1F7F1F7B73C00063DFA0 /* FirebaseMessaging.framework */; };
|
||||||
92A0DF7D1F4DE3A4002051BC /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 92A0DF491F4DE3A0002051BC /* GoogleService-Info.plist */; };
|
92A0DF7D1F4DE3A4002051BC /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 92A0DF491F4DE3A0002051BC /* GoogleService-Info.plist */; };
|
||||||
|
98482A6F2065257B00263651 /* libReactNativeTestFairy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9880471C20650CBC00CEBFE0 /* libReactNativeTestFairy.a */; };
|
||||||
9E0B01A11DDC5DA7002B0359 /* SF-UI-Text-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */; };
|
9E0B01A11DDC5DA7002B0359 /* SF-UI-Text-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */; };
|
||||||
9E3AB6D01D87DB2B008846B4 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */; };
|
9E3AB6D01D87DB2B008846B4 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */; };
|
||||||
9E54D6001F17A5DB009F0C16 /* libTestFairy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E54D5FD1F17A5DB009F0C16 /* libTestFairy.a */; };
|
|
||||||
9E54D6011F17A5DB009F0C16 /* upload-dsym.sh in Resources */ = {isa = PBXBuildFile; fileRef = 9E54D5FF1F17A5DB009F0C16 /* upload-dsym.sh */; };
|
|
||||||
9E7C64731E03FDDE004C7042 /* libRCTCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B7D1151D3F74CD00B70F14 /* libRCTCamera.a */; };
|
9E7C64731E03FDDE004C7042 /* libRCTCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B7D1151D3F74CD00B70F14 /* libRCTCamera.a */; };
|
||||||
9ED2F45E1D9D535A00B36508 /* SF-UI-Text-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */; };
|
9ED2F45E1D9D535A00B36508 /* SF-UI-Text-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */; };
|
||||||
9ED2F45F1D9D535A00B36508 /* SF-UI-Text-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */; };
|
9ED2F45F1D9D535A00B36508 /* SF-UI-Text-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */; };
|
||||||
|
@ -234,6 +233,13 @@
|
||||||
remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C;
|
remoteGlobalIDString = 0CF68AC11AF0540F00FF9E5C;
|
||||||
remoteInfo = RNSVG;
|
remoteInfo = RNSVG;
|
||||||
};
|
};
|
||||||
|
9880471B20650CBC00CEBFE0 /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = 9880471720650CBC00CEBFE0 /* ReactNativeTestFairy.xcodeproj */;
|
||||||
|
proxyType = 2;
|
||||||
|
remoteGlobalIDString = 42959838203B471F00E34882;
|
||||||
|
remoteInfo = ReactNativeTestFairy;
|
||||||
|
};
|
||||||
9E3AB6C51D87DA2B008846B4 /* PBXContainerItemProxy */ = {
|
9E3AB6C51D87DA2B008846B4 /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 9E3AB6B21D87DA2A008846B4 /* React-Native-Webview-Bridge.xcodeproj */;
|
containerPortal = 9E3AB6B21D87DA2A008846B4 /* React-Native-Webview-Bridge.xcodeproj */;
|
||||||
|
@ -562,11 +568,9 @@
|
||||||
925C1F451F7B73B20063DFA0 /* nanopb.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = nanopb.framework; sourceTree = "<group>"; };
|
925C1F451F7B73B20063DFA0 /* nanopb.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = nanopb.framework; sourceTree = "<group>"; };
|
||||||
925C1F7F1F7B73C00063DFA0 /* FirebaseMessaging.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseMessaging.framework; sourceTree = "<group>"; };
|
925C1F7F1F7B73C00063DFA0 /* FirebaseMessaging.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseMessaging.framework; sourceTree = "<group>"; };
|
||||||
92A0DF491F4DE3A0002051BC /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
92A0DF491F4DE3A0002051BC /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||||
|
9880471720650CBC00CEBFE0 /* ReactNativeTestFairy.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeTestFairy.xcodeproj; path = "../node_modules/react-native-testfairy/ios/ReactNativeTestFairy.xcodeproj"; sourceTree = "<group>"; };
|
||||||
9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Light.otf"; sourceTree = "<group>"; };
|
9E0B01A01DDC5DA7002B0359 /* SF-UI-Text-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Light.otf"; sourceTree = "<group>"; };
|
||||||
9E3AB6B21D87DA2A008846B4 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = "<group>"; };
|
9E3AB6B21D87DA2A008846B4 /* React-Native-Webview-Bridge.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "React-Native-Webview-Bridge.xcodeproj"; path = "../node_modules/react-native-webview-bridge/ios/React-Native-Webview-Bridge.xcodeproj"; sourceTree = "<group>"; };
|
||||||
9E54D5FD1F17A5DB009F0C16 /* libTestFairy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libTestFairy.a; sourceTree = "<group>"; };
|
|
||||||
9E54D5FE1F17A5DB009F0C16 /* TestFairy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestFairy.h; sourceTree = "<group>"; };
|
|
||||||
9E54D5FF1F17A5DB009F0C16 /* upload-dsym.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "upload-dsym.sh"; sourceTree = "<group>"; };
|
|
||||||
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
|
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
|
||||||
9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Medium.otf"; sourceTree = "<group>"; };
|
9ED2F45C1D9D52C100B36508 /* SF-UI-Text-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Medium.otf"; sourceTree = "<group>"; };
|
||||||
9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Regular.otf"; sourceTree = "<group>"; };
|
9ED2F45D1D9D52DD00B36508 /* SF-UI-Text-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Regular.otf"; sourceTree = "<group>"; };
|
||||||
|
@ -607,6 +611,7 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
98482A6F2065257B00263651 /* libReactNativeTestFairy.a in Frameworks */,
|
||||||
C93242561FE1C68C00FE7099 /* libRCTAnimation.a in Frameworks */,
|
C93242561FE1C68C00FE7099 /* libRCTAnimation.a in Frameworks */,
|
||||||
4C16DE0C1F89508700AA10DB /* JavaScriptCore.framework in Frameworks */,
|
4C16DE0C1F89508700AA10DB /* JavaScriptCore.framework in Frameworks */,
|
||||||
B2DEA0D01E49E33300FA28D6 /* libRCTHttpServer.a in Frameworks */,
|
B2DEA0D01E49E33300FA28D6 /* libRCTHttpServer.a in Frameworks */,
|
||||||
|
@ -644,7 +649,6 @@
|
||||||
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
|
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
|
||||||
3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */,
|
3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */,
|
||||||
E0AD9E8F495A4907B65104BF /* libRCTImageResizer.a in Frameworks */,
|
E0AD9E8F495A4907B65104BF /* libRCTImageResizer.a in Frameworks */,
|
||||||
9E54D6001F17A5DB009F0C16 /* libTestFairy.a in Frameworks */,
|
|
||||||
5F8585D411844E5981B94F40 /* libRNInstabug.a in Frameworks */,
|
5F8585D411844E5981B94F40 /* libRNInstabug.a in Frameworks */,
|
||||||
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */,
|
8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */,
|
||||||
925C1F491F7B73B20063DFA0 /* FirebaseInstanceID.framework in Frameworks */,
|
925C1F491F7B73B20063DFA0 /* FirebaseInstanceID.framework in Frameworks */,
|
||||||
|
@ -740,9 +744,6 @@
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */,
|
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */,
|
||||||
9E54D5FD1F17A5DB009F0C16 /* libTestFairy.a */,
|
|
||||||
9E54D5FE1F17A5DB009F0C16 /* TestFairy.h */,
|
|
||||||
9E54D5FF1F17A5DB009F0C16 /* upload-dsym.sh */,
|
|
||||||
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */,
|
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */,
|
||||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
||||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||||
|
@ -890,6 +891,7 @@
|
||||||
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
|
832341AE1AAA6A7D00B99B32 /* Libraries */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
9880471720650CBC00CEBFE0 /* ReactNativeTestFairy.xcodeproj */,
|
||||||
9EF083381F3B538A00876A8F /* ReactNativeConfig.xcodeproj */,
|
9EF083381F3B538A00876A8F /* ReactNativeConfig.xcodeproj */,
|
||||||
B2DEA0A41E49E32000FA28D6 /* RCTHttpServer.xcodeproj */,
|
B2DEA0A41E49E32000FA28D6 /* RCTHttpServer.xcodeproj */,
|
||||||
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */,
|
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */,
|
||||||
|
@ -978,6 +980,14 @@
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
9880471820650CBC00CEBFE0 /* Products */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
9880471C20650CBC00CEBFE0 /* libReactNativeTestFairy.a */,
|
||||||
|
);
|
||||||
|
name = Products;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
9E3AB6B31D87DA2A008846B4 /* Products */ = {
|
9E3AB6B31D87DA2A008846B4 /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -1262,6 +1272,10 @@
|
||||||
ProductGroup = 9EF083391F3B538A00876A8F /* Products */;
|
ProductGroup = 9EF083391F3B538A00876A8F /* Products */;
|
||||||
ProjectRef = 9EF083381F3B538A00876A8F /* ReactNativeConfig.xcodeproj */;
|
ProjectRef = 9EF083381F3B538A00876A8F /* ReactNativeConfig.xcodeproj */;
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ProductGroup = 9880471820650CBC00CEBFE0 /* Products */;
|
||||||
|
ProjectRef = 9880471720650CBC00CEBFE0 /* ReactNativeTestFairy.xcodeproj */;
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ProductGroup = 20B7D1251D3F74CD00B70F14 /* Products */;
|
ProductGroup = 20B7D1251D3F74CD00B70F14 /* Products */;
|
||||||
ProjectRef = F090E261B9854867A728CE4F /* RealmReact.xcodeproj */;
|
ProjectRef = F090E261B9854867A728CE4F /* RealmReact.xcodeproj */;
|
||||||
|
@ -1462,6 +1476,13 @@
|
||||||
remoteRef = 92925B671F571DE600203EEB /* PBXContainerItemProxy */;
|
remoteRef = 92925B671F571DE600203EEB /* PBXContainerItemProxy */;
|
||||||
sourceTree = BUILT_PRODUCTS_DIR;
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
};
|
};
|
||||||
|
9880471C20650CBC00CEBFE0 /* libReactNativeTestFairy.a */ = {
|
||||||
|
isa = PBXReferenceProxy;
|
||||||
|
fileType = archive.ar;
|
||||||
|
path = libReactNativeTestFairy.a;
|
||||||
|
remoteRef = 9880471B20650CBC00CEBFE0 /* PBXContainerItemProxy */;
|
||||||
|
sourceTree = BUILT_PRODUCTS_DIR;
|
||||||
|
};
|
||||||
9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */ = {
|
9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */ = {
|
||||||
isa = PBXReferenceProxy;
|
isa = PBXReferenceProxy;
|
||||||
fileType = archive.ar;
|
fileType = archive.ar;
|
||||||
|
@ -1738,7 +1759,6 @@
|
||||||
2028DFFC1D4275B600227DCD /* SF-UI-Display-Thin.otf in Resources */,
|
2028DFFC1D4275B600227DCD /* SF-UI-Display-Thin.otf in Resources */,
|
||||||
2028DFFB1D4275B600227DCD /* SF-UI-Display-Semibold.otf in Resources */,
|
2028DFFB1D4275B600227DCD /* SF-UI-Display-Semibold.otf in Resources */,
|
||||||
B23B48FF1E76917B006D4535 /* RobotoMono-Medium.ttf in Resources */,
|
B23B48FF1E76917B006D4535 /* RobotoMono-Medium.ttf in Resources */,
|
||||||
9E54D6011F17A5DB009F0C16 /* upload-dsym.sh in Resources */,
|
|
||||||
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */,
|
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */,
|
||||||
92A0DF7D1F4DE3A4002051BC /* GoogleService-Info.plist in Resources */,
|
92A0DF7D1F4DE3A4002051BC /* GoogleService-Info.plist in Resources */,
|
||||||
);
|
);
|
||||||
|
@ -2033,6 +2053,7 @@
|
||||||
"$(SRCROOT)/../node_modules/react-native-config/ios/**",
|
"$(SRCROOT)/../node_modules/react-native-config/ios/**",
|
||||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
||||||
"$(SRCROOT)/../node_modules/react-native-fcm/ios",
|
"$(SRCROOT)/../node_modules/react-native-fcm/ios",
|
||||||
|
"$(SRCROOT)/../node_modules/react-native-testfairy/ios",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = StatusIm/Info.plist;
|
INFOPLIST_FILE = StatusIm/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
|
@ -2090,6 +2111,7 @@
|
||||||
"$(SRCROOT)/../node_modules/react-native-config/ios/**",
|
"$(SRCROOT)/../node_modules/react-native-config/ios/**",
|
||||||
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
|
||||||
"$(SRCROOT)/../node_modules/react-native-fcm/ios",
|
"$(SRCROOT)/../node_modules/react-native-fcm/ios",
|
||||||
|
"$(SRCROOT)/../node_modules/react-native-testfairy/ios",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = StatusIm/Info.plist;
|
INFOPLIST_FILE = StatusIm/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
||||||
|
@ -2138,8 +2160,8 @@
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||||
GCC_PREFIX_HEADER = StatusImPrefix.pch;
|
GCC_PREFIX_HEADER = "";
|
||||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
|
@ -2204,8 +2226,8 @@
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
GCC_PRECOMPILE_PREFIX_HEADER = NO;
|
||||||
GCC_PREFIX_HEADER = StatusImPrefix.pch;
|
GCC_PREFIX_HEADER = "";
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
|
|
|
@ -95,10 +95,6 @@ RCTLogFunction RCTTestFairyLogFunction = ^(
|
||||||
self.window.rootViewController = rootViewController;
|
self.window.rootViewController = rootViewController;
|
||||||
[self.window makeKeyAndVisible];
|
[self.window makeKeyAndVisible];
|
||||||
[SplashScreen show];
|
[SplashScreen show];
|
||||||
NSString *testfairyEnabled = [ReactNativeConfig envFor:@"TESTFAIRY_ENABLED"];
|
|
||||||
if([testfairyEnabled isEqualToString:@"1"]){
|
|
||||||
[TestFairy begin:@"969f6c921cb435cea1d41d1ea3f5b247d6026d55"];
|
|
||||||
}
|
|
||||||
[Instabug startWithToken:@"5534212f4a44f477c9ab270ab5cd2062" invocationEvent:IBGInvocationEventShake];
|
[Instabug startWithToken:@"5534212f4a44f477c9ab270ab5cd2062" invocationEvent:IBGInvocationEventShake];
|
||||||
|
|
||||||
[FIRApp configure];
|
[FIRApp configure];
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
#ifndef StatusIm_Prefix_pch
|
|
||||||
#define StatusIm_Prefix_pch
|
|
||||||
|
|
||||||
// Include any system framework and library headers here that should be included in all compilation units.
|
|
||||||
// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
|
|
||||||
#import "TestFairy.h"
|
|
||||||
#define NSLog(s, ...) do { NSLog(s, ##__VA_ARGS__); TFLog(s, ##__VA_ARGS__); } while (0)
|
|
||||||
|
|
||||||
#endif /* StatusIm_Prefix_pch */
|
|
228
ios/TestFairy.h
228
ios/TestFairy.h
|
@ -1,228 +0,0 @@
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
|
|
||||||
#define TF_DEPRECATED(x) __attribute__ ((deprecated(x)))
|
|
||||||
|
|
||||||
@interface TestFairy: NSObject
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize a TestFairy session.
|
|
||||||
*
|
|
||||||
* @param appToken Your key as given to you in your TestFairy account
|
|
||||||
*/
|
|
||||||
+ (void)begin:(NSString *)appToken;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize a TestFairy session with options.
|
|
||||||
*
|
|
||||||
* @param appToken Your key as given to you in your TestFairy account
|
|
||||||
* @param options A dictionary of options controlling the current session
|
|
||||||
*/
|
|
||||||
+ (void)begin:(NSString *)appToken withOptions:(NSDictionary *)options;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Change the server endpoint for use with on-premise hosting. Please
|
|
||||||
* contact support or sales for more information. Must be called before begin
|
|
||||||
*
|
|
||||||
* @param serverOverride server address for use with TestFairy
|
|
||||||
*/
|
|
||||||
+ (void)setServerEndpoint:(NSString *)serverOverride;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns SDK version (x.x.x) string
|
|
||||||
*
|
|
||||||
* @return version
|
|
||||||
*/
|
|
||||||
+ (NSString *)version;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hides a specific view from appearing in the video generated.
|
|
||||||
*
|
|
||||||
* @param view The specific view you wish to hide from screenshots
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
+ (void)hideView:(UIView *)view;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Hides a specific html element from appearing in your UIWebView
|
|
||||||
*
|
|
||||||
* @param selector The specific selector you wish to hide from screenshots. Multiple selectors can be comma separated
|
|
||||||
*/
|
|
||||||
+ (void)hideWebViewElements:(NSString *)selector;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pushes the feedback view controller. Hook a button
|
|
||||||
* to this method to allow users to provide feedback about the current
|
|
||||||
* session. All feedback will appear in your build report page, and in
|
|
||||||
* the recorded session page.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
+ (void)pushFeedbackController;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Send a feedback on behalf of the user. Call when using a in-house
|
|
||||||
* feedback view controller with a custom design and feel. Feedback will
|
|
||||||
* be associated with the current session.
|
|
||||||
*
|
|
||||||
* @param feedbackString Feedback text
|
|
||||||
*/
|
|
||||||
+ (void)sendUserFeedback:(NSString *)feedbackString;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Proxy didUpdateLocation delegate values and these
|
|
||||||
* locations will appear in the recorded sessions. Useful for debugging
|
|
||||||
* actual long/lat values against what the user sees on screen.
|
|
||||||
*
|
|
||||||
* @param locations Array of CLLocation. The first object of the array will determine the user location
|
|
||||||
*/
|
|
||||||
+ (void)updateLocation:(NSArray *)locations;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Marks a checkpoint in session. Use this text to tag a session
|
|
||||||
* with a checkpoint name. Later you can filter sessions where your
|
|
||||||
* user passed through this checkpoint, for bettering understanding
|
|
||||||
* user experience and behavior.
|
|
||||||
*
|
|
||||||
* @param name The checkpoint name
|
|
||||||
*/
|
|
||||||
+ (void)checkpoint:(NSString *)name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a correlation identifier for this session. This value can
|
|
||||||
* be looked up via web dashboard. For example, setting correlation
|
|
||||||
* to the value of the user-id after they logged in. Can be called
|
|
||||||
* only once per session (subsequent calls will be ignored.)
|
|
||||||
*
|
|
||||||
* @param correlationId Id for the current session
|
|
||||||
*/
|
|
||||||
+ (void)setCorrelationId:(NSString *)correlationId TF_DEPRECATED("Please refer to setUser:");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a correlation identifier for this session. This value can
|
|
||||||
* be looked up via web dashboard. For example, setting correlation
|
|
||||||
* to the value of the user-id after they logged in. Can be called
|
|
||||||
* only once per session (subsequent calls will be ignored.)
|
|
||||||
*
|
|
||||||
* @param correlationId Id for the current session
|
|
||||||
*/
|
|
||||||
+ (void)identify:(NSString *)correlationId TF_DEPRECATED("Please refer to setAttribute: and setUser:");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets a correlation identifier for this session. This value can
|
|
||||||
* be looked up via web dashboard. For example, setting correlation
|
|
||||||
* to the value of the user-id after they logged in. Can be called
|
|
||||||
* only once per session (subsequent calls will be ignored.)
|
|
||||||
*
|
|
||||||
* @param correlationId Id for the current session
|
|
||||||
* @param traits Attributes and custom attributes to be associated with this session
|
|
||||||
*/
|
|
||||||
+ (void)identify:(NSString *)correlationId traits:(NSDictionary *)traits TF_DEPRECATED("Please refer to setAttribute:");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Pauses the current session. This method stops recoding of
|
|
||||||
* the current session until resume has been called.
|
|
||||||
*
|
|
||||||
* @see resume
|
|
||||||
*/
|
|
||||||
+ (void)pause;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resumes the recording of the current session. This method
|
|
||||||
* resumes a session after it was paused.
|
|
||||||
*
|
|
||||||
* @see pause
|
|
||||||
*/
|
|
||||||
+ (void)resume;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the address of the recorded session on testfairy's
|
|
||||||
* developer portal. Will return nil if recording not yet started.
|
|
||||||
*
|
|
||||||
* @return session URL
|
|
||||||
*/
|
|
||||||
+ (NSString *)sessionUrl;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Takes a screenshot.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
+ (void)takeScreenshot;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the name of the current screen. Useful for single page
|
|
||||||
* applications which use a single UIViewController.
|
|
||||||
*
|
|
||||||
* @param name logic name of current screen
|
|
||||||
*/
|
|
||||||
+ (void)setScreenName:(NSString *)name;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Stops the current session recording. Unlike 'pause', when
|
|
||||||
* calling 'resume', a new session will be created and will be
|
|
||||||
* linked to the previous recording. Useful if you want short
|
|
||||||
* session recordings of specific use-cases of the app. Hidden
|
|
||||||
* views and user identity will be applied to the new session
|
|
||||||
* as well, if started.
|
|
||||||
*/
|
|
||||||
+ (void)stop;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Records a session level attribute which can be looked up via web dashboard.
|
|
||||||
*
|
|
||||||
* @param name The name of the attribute. Cannot be nil.
|
|
||||||
* @param value The value associated with the attribute. Cannot be nil.
|
|
||||||
* @return YES if successfully set attribute value, NO if failed with error in log.
|
|
||||||
*
|
|
||||||
* @note The SDK limits you to storing 64 named attributes. Adding more than 64 will fail and return NO.
|
|
||||||
*/
|
|
||||||
+ (BOOL)setAttribute:(NSString *)key withValue:(NSString *)value;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Records a user identified as an attribute. We recommend passing values such as
|
|
||||||
* email, phone number, or user id that your app may use.
|
|
||||||
*
|
|
||||||
* @param userId The identifying user. Cannot be nil.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
+ (void)setUserId:(NSString *)userId;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
#if __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remote logging, use TFLog as you would use printf. These logs will be sent to the server,
|
|
||||||
* but will not appear in the console.
|
|
||||||
*
|
|
||||||
* @param format sprintf-like format for the arguments that follow
|
|
||||||
*/
|
|
||||||
void TFLog(NSString *format, ...) __attribute__((format(__NSString__, 1, 2)));
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remote logging, use TFLogv as you would use printfv. These logs will be sent to the server,
|
|
||||||
* but will not appear in the console.
|
|
||||||
*
|
|
||||||
* @param format sprintf-like format for the arguments that follow
|
|
||||||
* @param arg_list list of arguments
|
|
||||||
*/
|
|
||||||
void TFLogv(NSString *format, va_list arg_list);
|
|
||||||
|
|
||||||
#if __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern NSString *const TFSDKIdentityTraitNameKey;
|
|
||||||
extern NSString *const TFSDKIdentityTraitEmailAddressKey;
|
|
||||||
extern NSString *const TFSDKIdentityTraitBirthdayKey;
|
|
||||||
extern NSString *const TFSDKIdentityTraitGenderKey;
|
|
||||||
extern NSString *const TFSDKIdentityTraitPhoneNumberKey;
|
|
||||||
extern NSString *const TFSDKIdentityTraitWebsiteAddressKey;
|
|
||||||
extern NSString *const TFSDKIdentityTraitAgeKey;
|
|
||||||
extern NSString *const TFSDKIdentityTraitSignupDateKey;
|
|
||||||
extern NSString *const TFSDKEnableCrashReporterKey;
|
|
||||||
extern NSString *const TestFairyDidShakeDevice;
|
|
||||||
extern NSString *const TestFairyWillProvideFeedback;
|
|
||||||
extern NSString *const TestFairyDidCancelFeedback;
|
|
||||||
extern NSString *const TestFairyDidSendFeedback;
|
|
Binary file not shown.
|
@ -1,101 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
TESTFAIRY_ENDPOINT="https://app.testfairy.com/upload/dsym/"
|
|
||||||
|
|
||||||
ZIP=zip
|
|
||||||
CURL=curl
|
|
||||||
STAT=stat
|
|
||||||
DATE=date
|
|
||||||
|
|
||||||
log() {
|
|
||||||
NOW=$($DATE +"%Y-%m-%d %H:%M:%S")
|
|
||||||
echo "${NOW} ${1}"
|
|
||||||
}
|
|
||||||
|
|
||||||
help() {
|
|
||||||
echo "Usage: ${0} [-f] TESTFAIRY_API_KEY [-p DSYM_PATH] [-u TESTFAIRY_ENDPOINT]"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
DAEMON=1
|
|
||||||
if [ "${1}" == "-f" ]; then
|
|
||||||
DAEMON=0
|
|
||||||
shift
|
|
||||||
elif [ "${1}" == "-d" ]; then
|
|
||||||
# backward compatible when -f was the default
|
|
||||||
shift
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
API_KEY="${1}"
|
|
||||||
if [ ! "${API_KEY}" ]; then
|
|
||||||
echo "Fatal: No Upload API key provided."
|
|
||||||
help
|
|
||||||
fi
|
|
||||||
|
|
||||||
DSYM_PATH=${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
|
|
||||||
|
|
||||||
shift
|
|
||||||
while [[ $# -gt 1 ]]
|
|
||||||
do
|
|
||||||
key="$1"
|
|
||||||
case $key in
|
|
||||||
-u)
|
|
||||||
TESTFAIRY_ENDPOINT="${2}"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-p)
|
|
||||||
DSYM_PATH="${2}"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
help
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ "${DSYM_PATH}" == "" ] || [ "${DSYM_PATH}" == "/" ] || [ ! -d "${DSYM_PATH}" ]; then
|
|
||||||
echo "Fatal: No .dSYM folder found at path [${DSYM_PATH}]."
|
|
||||||
help
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${TESTFAIRY_ENDPOINT} == "" ]]; then
|
|
||||||
echo "Fatal: No upload endpoint given."
|
|
||||||
help
|
|
||||||
fi
|
|
||||||
|
|
||||||
NOW=$($DATE +%s)
|
|
||||||
TMP_FILENAME="/tmp/${NOW}-${DWARF_DSYM_FILE_NAME}.zip"
|
|
||||||
|
|
||||||
# Compress the .dSYM folder into a zip file
|
|
||||||
log "Compressing .dSYM folder ${DSYM_PATH}"
|
|
||||||
$ZIP -qrp9 "${TMP_FILENAME}" "${DSYM_PATH}"
|
|
||||||
FILE_SIZE=$($STAT -f "%z" "${TMP_FILENAME}")
|
|
||||||
|
|
||||||
foreground_upload() {
|
|
||||||
# Upload zipped .dSYM file to TestFairy's servers
|
|
||||||
STARTED=$($DATE +"%s")
|
|
||||||
$CURL -s -F api_key="${API_KEY}" -F dsym=@"${1}" -o /dev/null "${TESTFAIRY_ENDPOINT}"
|
|
||||||
ENDED=$($DATE +"%s")
|
|
||||||
DIFF=$(expr ${ENDED} - ${STARTED})
|
|
||||||
log "Symbols uploaded in ${DIFF} seconds"
|
|
||||||
|
|
||||||
# Clean up behind
|
|
||||||
rm -f ${TMP_FILENAME}
|
|
||||||
}
|
|
||||||
|
|
||||||
background_upload() {
|
|
||||||
sh -c "$CURL -F api_key=\"${API_KEY}\" -F dsym=@\"${1}\" -s -o /dev/null \"${TESTFAIRY_ENDPOINT}\"; rm -f ${TMP_FILENAME};" /dev/null 2>&1 &
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "$DAEMON" == "0" ]; then
|
|
||||||
log "Uploading ${FILE_SIZE} bytes to dsym server in foreground"
|
|
||||||
foreground_upload "${TMP_FILENAME}"
|
|
||||||
else
|
|
||||||
log "Uploading ${FILE_SIZE} bytes to dsym server in background"
|
|
||||||
background_upload "${TMP_FILENAME}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
log "TestFairy .dSYM upload script ends"
|
|
||||||
|
|
|
@ -8234,6 +8234,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"react-native-testfairy": {
|
||||||
|
"version": "2.8.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-native-testfairy/-/react-native-testfairy-2.8.0.tgz",
|
||||||
|
"integrity": "sha512-wWQ8xaYq1enjZKM3C7T4jOHHkXW2mBwWoF1p64mbpk0tuFiyH2U1lr9FLNfYDaiqWkMN13iqzZjXciF0f+IS9Q=="
|
||||||
|
},
|
||||||
"react-native-udp": {
|
"react-native-udp": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-native-udp/-/react-native-udp-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-native-udp/-/react-native-udp-2.2.1.tgz",
|
||||||
|
|
|
@ -67,6 +67,7 @@
|
||||||
"react-native-splash-screen": "3.0.6",
|
"react-native-splash-screen": "3.0.6",
|
||||||
"react-native-svg": "6.3.1",
|
"react-native-svg": "6.3.1",
|
||||||
"react-native-tcp": "3.3.0",
|
"react-native-tcp": "3.3.0",
|
||||||
|
"react-native-testfairy": "2.8.0",
|
||||||
"react-native-udp": "2.2.1",
|
"react-native-udp": "2.2.1",
|
||||||
"react-native-webview-bridge": "github:status-im/react-native-webview-bridge#feature/camera-permissions",
|
"react-native-webview-bridge": "github:status-im/react-native-webview-bridge#feature/camera-permissions",
|
||||||
"readable-stream": "1.1.14",
|
"readable-stream": "1.1.14",
|
||||||
|
|
|
@ -27,3 +27,4 @@
|
||||||
(def EventEmmiter (js/require "react-native/Libraries/vendor/emitter/EventEmitter"))
|
(def EventEmmiter (js/require "react-native/Libraries/vendor/emitter/EventEmitter"))
|
||||||
(def background-timer (.-default (js/require "react-native-background-timer")))
|
(def background-timer (.-default (js/require "react-native-background-timer")))
|
||||||
(def fetch (.-default (js/require "react-native-fetch-polyfill")))
|
(def fetch (.-default (js/require "react-native-fetch-polyfill")))
|
||||||
|
(def testfairy (js/require "react-native-testfairy"))
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
[status-im.native-module.core :as status]
|
[status-im.native-module.core :as status]
|
||||||
[taoensso.timbre :as log]
|
[taoensso.timbre :as log]
|
||||||
[status-im.utils.config :as config]
|
[status-im.utils.config :as config]
|
||||||
|
[status-im.react-native.js-dependencies :as js-dependencies]
|
||||||
[goog.object :as object]))
|
[goog.object :as object]))
|
||||||
|
|
||||||
(when js/goog.DEBUG
|
(when js/goog.DEBUG
|
||||||
|
@ -14,4 +15,6 @@
|
||||||
(log/set-level! config/log-level)
|
(log/set-level! config/log-level)
|
||||||
(error-handler/register-exception-handler!)
|
(error-handler/register-exception-handler!)
|
||||||
(status/init-jail)
|
(status/init-jail)
|
||||||
|
(when config/testfairy-enabled?
|
||||||
|
(.begin js-dependencies/testfairy config/testfairy-token))
|
||||||
(.registerComponent react/app-registry "StatusIm" #(reagent/reactify-component app-root)))
|
(.registerComponent react/app-registry "StatusIm" #(reagent/reactify-component app-root)))
|
||||||
|
|
|
@ -1,28 +1,39 @@
|
||||||
(ns status-im.ui.screens.accounts.recover.views
|
(ns status-im.ui.screens.accounts.recover.views
|
||||||
(:require-macros [status-im.utils.views :refer [defview letsubs]])
|
(:require-macros [status-im.utils.views :refer [defview letsubs]])
|
||||||
(:require [re-frame.core :as re-frame]
|
(:require [re-frame.core :as re-frame]
|
||||||
|
[reagent.core :as reagent]
|
||||||
[status-im.ui.components.text-input.view :as text-input]
|
[status-im.ui.components.text-input.view :as text-input]
|
||||||
[status-im.ui.components.react :as react]
|
[status-im.ui.components.react :as react]
|
||||||
[status-im.ui.components.status-bar.view :as status-bar]
|
[status-im.ui.components.status-bar.view :as status-bar]
|
||||||
|
[status-im.ui.components.styles :as components.styles]
|
||||||
[status-im.ui.components.toolbar.view :as toolbar]
|
[status-im.ui.components.toolbar.view :as toolbar]
|
||||||
[status-im.i18n :as i18n]
|
[status-im.i18n :as i18n]
|
||||||
[status-im.ui.screens.accounts.recover.styles :as styles]
|
[status-im.ui.screens.accounts.recover.styles :as styles]
|
||||||
[status-im.ui.screens.accounts.recover.db :as recover.db]
|
[status-im.ui.screens.accounts.recover.db :as recover.db]
|
||||||
[status-im.ui.screens.accounts.db :as db]
|
[status-im.ui.screens.accounts.db :as db]
|
||||||
|
[status-im.utils.config :as config]
|
||||||
|
[status-im.react-native.js-dependencies :as js-dependencies]
|
||||||
[cljs.spec.alpha :as spec]
|
[cljs.spec.alpha :as spec]
|
||||||
[status-im.ui.components.common.common :as components.common]))
|
[status-im.ui.components.common.common :as components.common]))
|
||||||
|
|
||||||
(defview passphrase-input [passphrase]
|
(defview passphrase-input [passphrase]
|
||||||
(letsubs [error [:get-in [:accounts/recover :passphrase-error]]]
|
(letsubs [error [:get-in [:accounts/recover :passphrase-error]]
|
||||||
|
input-ref (reagent/atom nil)]
|
||||||
|
{:component-did-mount (fn [_] (when config/testfairy-enabled?
|
||||||
|
;; NOTE(dmitryn) Doesn't work on Android without setTimeout
|
||||||
|
(js/setTimeout
|
||||||
|
#(.hideView js-dependencies/testfairy @input-ref)
|
||||||
|
100)))}
|
||||||
[text-input/text-input-with-label
|
[text-input/text-input-with-label
|
||||||
{:style {:flex 1}
|
{:style components.styles/flex
|
||||||
:height 92
|
:height 92
|
||||||
:label (i18n/label :t/passphrase)
|
:ref (partial reset! input-ref)
|
||||||
:placeholder (i18n/label :t/enter-12-words)
|
:label (i18n/label :t/passphrase)
|
||||||
:multiline true
|
:placeholder (i18n/label :t/enter-12-words)
|
||||||
:default-value passphrase
|
:multiline true
|
||||||
:on-change-text #(re-frame/dispatch [:set-in [:accounts/recover :passphrase] %])
|
:default-value passphrase
|
||||||
:error error}]))
|
:on-change-text #(re-frame/dispatch [:set-in [:accounts/recover :passphrase] %])
|
||||||
|
:error error}]))
|
||||||
|
|
||||||
(defview password-input [password]
|
(defview password-input [password]
|
||||||
(letsubs [error [:get-in [:accounts/recover :password-error]]]
|
(letsubs [error [:get-in [:accounts/recover :password-error]]]
|
||||||
|
|
|
@ -5,14 +5,17 @@
|
||||||
[status-im.ui.components.toolbar.view :as toolbar]
|
[status-im.ui.components.toolbar.view :as toolbar]
|
||||||
[status-im.ui.components.toolbar.actions :as actions]
|
[status-im.ui.components.toolbar.actions :as actions]
|
||||||
[status-im.ui.components.colors :as colors]
|
[status-im.ui.components.colors :as colors]
|
||||||
|
[status-im.react-native.js-dependencies :as js-dependencies]
|
||||||
[status-im.react-native.resources :as resources]
|
[status-im.react-native.resources :as resources]
|
||||||
[status-im.ui.components.common.common :as components.common]
|
[status-im.ui.components.common.common :as components.common]
|
||||||
[re-frame.core :as re-frame]
|
[re-frame.core :as re-frame]
|
||||||
|
[reagent.core :as reagent]
|
||||||
[status-im.ui.components.text-input.view :as text-input]
|
[status-im.ui.components.text-input.view :as text-input]
|
||||||
[status-im.ui.components.icons.vector-icons :as icons]
|
[status-im.ui.components.icons.vector-icons :as icons]
|
||||||
[status-im.ui.components.common.common :as components.common]
|
[status-im.ui.components.common.common :as components.common]
|
||||||
[status-im.ui.components.common.styles :as components.common.styles]
|
[status-im.ui.components.common.styles :as components.common.styles]
|
||||||
[clojure.string :as string]
|
[clojure.string :as string]
|
||||||
|
[status-im.utils.config :as config]
|
||||||
[status-im.utils.utils :as utils]
|
[status-im.utils.utils :as utils]
|
||||||
[status-im.ui.screens.profile.seed.styles :as styles]
|
[status-im.ui.screens.profile.seed.styles :as styles]
|
||||||
[status-im.i18n :as i18n]
|
[status-im.i18n :as i18n]
|
||||||
|
@ -56,12 +59,19 @@
|
||||||
(when (not= i (first (last words)))
|
(when (not= i (first (last words)))
|
||||||
[react/view {:style styles/six-words-separator}])])])
|
[react/view {:style styles/six-words-separator}])])])
|
||||||
|
|
||||||
(defn twelve-words [{:keys [mnemonic]}]
|
(defview twelve-words [{:keys [mnemonic]}]
|
||||||
(let [mnemonic-vec (vec (map-indexed vector (clojure.string/split mnemonic #" ")))]
|
(letsubs [mnemonic-vec (vec (map-indexed vector (clojure.string/split mnemonic #" ")))
|
||||||
|
ref (reagent/atom nil)]
|
||||||
|
{:component-did-mount (fn [_] (when config/testfairy-enabled?
|
||||||
|
;; NOTE(dmitryn) Doesn't work on Android without setTimeout
|
||||||
|
(js/setTimeout
|
||||||
|
#(.hideView js-dependencies/testfairy @ref)
|
||||||
|
100)))}
|
||||||
[react/view {:style styles/twelve-words-container}
|
[react/view {:style styles/twelve-words-container}
|
||||||
[react/text {:style styles/twelve-words-label}
|
[react/text {:style styles/twelve-words-label}
|
||||||
(i18n/label :t/your-seed-phrase)]
|
(i18n/label :t/your-seed-phrase)]
|
||||||
[react/view {:style styles/twelve-words-columns}
|
[react/view {:style styles/twelve-words-columns
|
||||||
|
:ref (partial reset! ref)}
|
||||||
[six-words (subvec mnemonic-vec 0 6)]
|
[six-words (subvec mnemonic-vec 0 6)]
|
||||||
[react/view {:style styles/twelve-words-columns-separator}]
|
[react/view {:style styles/twelve-words-columns-separator}]
|
||||||
[six-words (subvec mnemonic-vec 6 12)]]
|
[six-words (subvec mnemonic-vec 6 12)]]
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
(def compile-views-enabled? (enabled? (get-config :COMPILE_VIEWS_ENABLED 0)))
|
(def compile-views-enabled? (enabled? (get-config :COMPILE_VIEWS_ENABLED 0)))
|
||||||
(def mixpanel-token (get-config :MIXPANEL_TOKEN))
|
(def mixpanel-token (get-config :MIXPANEL_TOKEN))
|
||||||
(def default-network (get-config :DEFAULT_NETWORK))
|
(def default-network (get-config :DEFAULT_NETWORK))
|
||||||
|
(def testfairy-token (get-config :TESTFAIRY_TOKEN))
|
||||||
|
|
||||||
(def pow-target (js/parseFloat (get-config :POW_TARGET "0.001")))
|
(def pow-target (js/parseFloat (get-config :POW_TARGET "0.001")))
|
||||||
(def pow-time (js/parseInt (get-config :POW_TIME "1")))
|
(def pow-time (js/parseInt (get-config :POW_TIME "1")))
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
(def snoopy-buffer #js {:default #js {}})
|
(def snoopy-buffer #js {:default #js {}})
|
||||||
(def EventEmmiter #js {})
|
(def EventEmmiter #js {})
|
||||||
(def fetch #js {})
|
(def fetch #js {})
|
||||||
|
(def testfairy #js {})
|
||||||
|
|
||||||
(def background-timer #js {:setTimeout js/setTimeout
|
(def background-timer #js {:setTimeout js/setTimeout
|
||||||
:setInterval js/setInterval
|
:setInterval js/setInterval
|
||||||
|
|
Loading…
Reference in New Issue