From a37ff23825f4cc819261c7e2ade441c14192103b Mon Sep 17 00:00:00 2001 From: Jarrad Hope Date: Sun, 13 Nov 2016 12:06:58 +0700 Subject: [PATCH] instabug integration --- .gitignore | 4 + android/app/build.gradle | 1 + .../java/com/statusim/MainApplication.java | 2 + android/settings.gradle | 2 + ios/Podfile | 16 + ios/Podfile.lock | 12 + ios/StatusIm.xcodeproj/project.pbxproj | 278 +++++++++++++++++- ios/StatusIm/AppDelegate.m | 2 + ios/StatusIm/Info.plist | 2 + package.json | 1 + src/status_im/chat/handlers.cljs | 2 +- src/status_im/chat/sign_up.cljs | 13 +- src/status_im/chat/views/message.cljs | 45 ++- src/status_im/components/drawer/styles.cljs | 2 + src/status_im/components/drawer/view.cljs | 18 +- src/status_im/translations/en.cljs | 2 + 16 files changed, 372 insertions(+), 30 deletions(-) create mode 100644 ios/Podfile create mode 100644 ios/Podfile.lock diff --git a/.gitignore b/.gitignore index aa074c1dd8..d482b2b618 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,7 @@ re-natal # status-go Statusgo.framework + +#ios +ios/Pods +ios/StatusIm.xcworkspace diff --git a/android/app/build.gradle b/android/app/build.gradle index c73186b0db..c8dd3f3aad 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -132,6 +132,7 @@ android { } dependencies { + compile project(':instabug-reactnative') compile project(':react-native-image-resizer') compile project(':react-native-dialogs') compile project(':react-native-randombytes') diff --git a/android/app/src/main/java/com/statusim/MainApplication.java b/android/app/src/main/java/com/statusim/MainApplication.java index c6b9b9078b..536fdfbe01 100644 --- a/android/app/src/main/java/com/statusim/MainApplication.java +++ b/android/app/src/main/java/com/statusim/MainApplication.java @@ -3,6 +3,7 @@ package com.statusim; import android.app.Application; import com.facebook.react.ReactApplication; +import com.instabug.reactlibrary.RNInstabugReactnativePackage; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; @@ -38,6 +39,7 @@ public class MainApplication extends Application implements ReactApplication { protected List getPackages() { return Arrays.asList( new MainReactPackage(), + new RNInstabugReactnativePackage("b239f82a9cb00464e4c72cc703e6821e",MainApplication.this,"shake"), new StatusPackage(), new RealmReactPackage(), new VectorIconsPackage(), diff --git a/android/settings.gradle b/android/settings.gradle index 48440b5102..9652fb493b 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,6 +1,8 @@ rootProject.name = 'StatusIm' include ':app' +include ':instabug-reactnative' +project(':instabug-reactnative').projectDir = new File(rootProject.projectDir, '../node_modules/instabug-reactnative/android') include ':react-native-image-resizer' project(':react-native-image-resizer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-resizer/android') include ':react-native-dialogs' diff --git a/ios/Podfile b/ios/Podfile new file mode 100644 index 0000000000..82f8e1e3af --- /dev/null +++ b/ios/Podfile @@ -0,0 +1,16 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'StatusIm' do + # Uncomment the next line if you're using Swift or would like to use dynamic frameworks + # use_frameworks! + + # Pods for StatusIm + pod 'Instabug' + + target 'StatusImTests' do + inherit! :search_paths + # Pods for testing + end + +end diff --git a/ios/Podfile.lock b/ios/Podfile.lock new file mode 100644 index 0000000000..d2915c82ab --- /dev/null +++ b/ios/Podfile.lock @@ -0,0 +1,12 @@ +PODS: + - Instabug (6.0.4) + +DEPENDENCIES: + - Instabug + +SPEC CHECKSUMS: + Instabug: 7431c30f6e8883b2e6a9ce4b922ed51cbb25ad19 + +PODFILE CHECKSUM: 392b4ab0b282276a6abcfc179a215dda2de3962e + +COCOAPODS: 1.1.1 diff --git a/ios/StatusIm.xcodeproj/project.pbxproj b/ios/StatusIm.xcodeproj/project.pbxproj index f4a980e461..2a2d397ab4 100644 --- a/ios/StatusIm.xcodeproj/project.pbxproj +++ b/ios/StatusIm.xcodeproj/project.pbxproj @@ -37,11 +37,14 @@ 3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C2A4E93F6B154AEFA3485B45 /* libTcpSockets.a */; }; 4D3D740D5EFA4F8592B048D7 /* libBVLinearGradient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DF1CD4C3D1254774ACCAE4E8 /* libBVLinearGradient.a */; }; 4FFAE7B0414A463991039A2E /* libRNRandomBytes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C55F15EB4D4DAF9202A662 /* libRNRandomBytes.a */; }; + 5F8585D411844E5981B94F40 /* libRNInstabug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4EC426A98043452BB6F9C134 /* libRNInstabug.a */; }; 67F099D82798449FADF8358A /* libRCTOrientation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5535217F57E44D77AA9CF083 /* libRCTOrientation.a */; }; 6CE6374707AC4EC788354DD1 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11632AA0A5F84F029DD91797 /* libRNVectorIcons.a */; }; 74242ACAF37A48D0BFACDE82 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2756305FAFF144C4A6B0A039 /* Zocial.ttf */; }; + 81C6E6AE0AA739BE9D87C1D0 /* libPods-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FC1CBCFE6C906043D6CCEEE1 /* libPods-StatusImTests.a */; }; 82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; + 8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 101A4045637A2ADF57D28EF5 /* libPods-StatusIm.a */; }; 9E3AB6D01D87DB2B008846B4 /* libReact-Native-Webview-Bridge.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E3AB6C61D87DA2B008846B4 /* libReact-Native-Webview-Bridge.a */; }; 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 */; }; @@ -244,6 +247,62 @@ remoteGlobalIDString = 4114DC4C1C187C3A003CD988; remoteInfo = "React-Native-Webview-Bridge"; }; + 9E3F1BED1DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A283A1D9B042B00D4039D; + remoteInfo = "RCTImage-tvOS"; + }; + 9E3F1BF21DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28471D9B043800D4039D; + remoteInfo = "RCTLinking-tvOS"; + }; + 9E3F1BF61DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28541D9B044C00D4039D; + remoteInfo = "RCTNetwork-tvOS"; + }; + 9E3F1BFB1DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28611D9B046600D4039D; + remoteInfo = "RCTSettings-tvOS"; + }; + 9E3F1C001DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A287B1D9B048500D4039D; + remoteInfo = "RCTText-tvOS"; + }; + 9E3F1C051DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28881D9B049200D4039D; + remoteInfo = "RCTWebSocket-tvOS"; + }; + 9E3F1C0A1DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 2D2A28131D9B038B00D4039D; + remoteInfo = "React-tvOS"; + }; + 9E3F1C111DDAE781005E4779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F3548417D8DA4362B6796A54 /* RNInstabug.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 24DF11ED1DA3A2B90056F77C; + remoteInfo = RNInstabug; + }; CE4E319D1D8693090033ED64 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 5E5A7625B76441D984EA8C0D /* RCTImageResizer.xcodeproj */; @@ -278,8 +337,10 @@ 00E356EE1AD99517003FC87E /* StatusImTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StatusImTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* StatusImTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusImTests.m; sourceTree = ""; }; + 064351D2FD901F8B6C9AE2A5 /* Pods-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StatusImTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-StatusImTests/Pods-StatusImTests.debug.xcconfig"; sourceTree = ""; }; 09F98D1521C24548AC72563A /* RCTContacts.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTContacts.xcodeproj; path = "../node_modules/react-native-contacts/ios/RCTContacts.xcodeproj"; sourceTree = ""; }; 0A50F58D6FC94DE696FC3EB5 /* libRCTCamera.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTCamera.a; sourceTree = ""; }; + 101A4045637A2ADF57D28EF5 /* libPods-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 11632AA0A5F84F029DD91797 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; @@ -305,12 +366,14 @@ 305F194186D848FDB07AF34C /* RNFS.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNFS.xcodeproj; path = "../node_modules/react-native-fs/RNFS.xcodeproj"; sourceTree = ""; }; 3384AFA9609A409B81928AD5 /* libRCTContacts.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTContacts.a; sourceTree = ""; }; 359B076A658B4FBAB5128B03 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; }; + 38A44830EC5708E89387F641 /* Pods-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StatusIm.release.xcconfig"; path = "Pods/Target Support Files/Pods-StatusIm/Pods-StatusIm.release.xcconfig"; sourceTree = ""; }; 38E1A2C8D0734EE99E2B16CE /* TcpSockets.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = TcpSockets.xcodeproj; path = "../node_modules/react-native-tcp/ios/TcpSockets.xcodeproj"; sourceTree = ""; }; 439B6B4B407A4E2AACAFE5BE /* RCTStatus.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTStatus.xcodeproj; path = "../modules/react-native-status/ios/RCTStatus/RCTStatus.xcodeproj"; sourceTree = ""; }; 43A6FA689D844B0BAF3AA8B4 /* RCTOrientation.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTOrientation.xcodeproj; path = "../node_modules/react-native-orientation/iOS/RCTOrientation.xcodeproj"; sourceTree = ""; }; 45FB5F523DE04BDE9877869C /* RNRandomBytes.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNRandomBytes.xcodeproj; path = "../node_modules/react-native-randombytes/RNRandomBytes.xcodeproj"; sourceTree = ""; }; 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNI18n.xcodeproj; path = "../node_modules/react-native-i18n/RNI18n.xcodeproj"; sourceTree = ""; }; 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 4EC426A98043452BB6F9C134 /* libRNInstabug.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNInstabug.a; sourceTree = ""; }; 52E205D210BC48B7A553BB62 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; }; 52F6ED6465184513A082652B /* libRNI18n.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNI18n.a; sourceTree = ""; }; 54E2B86FB12D4CC49DA05C69 /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; @@ -331,14 +394,18 @@ 9ED2F4601D9D577B00B36508 /* SF-UI-Text-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Text-Bold.otf"; sourceTree = ""; }; 9F1854E6D9654226B1FC8308 /* RCTCamera.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTCamera.xcodeproj; path = "../node_modules/react-native-camera/ios/RCTCamera.xcodeproj"; sourceTree = ""; }; A96279092BEC4C4B93914F48 /* libUdpSockets.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libUdpSockets.a; sourceTree = ""; }; + ACA66A8F16CD2FE21F38738B /* Pods-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StatusIm.debug.xcconfig"; path = "Pods/Target Support Files/Pods-StatusIm/Pods-StatusIm.debug.xcconfig"; sourceTree = ""; }; B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StatusIm/Images.xcassets; sourceTree = ""; }; B3B19223008342D096AA356E /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; }; C2A4E93F6B154AEFA3485B45 /* libTcpSockets.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libTcpSockets.a; sourceTree = ""; }; CD48A32459B64E96843BB238 /* libRealmReact.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmReact.a; sourceTree = ""; }; CE4E31B21D8695250033ED64 /* Statusgo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Statusgo.framework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.framework"; sourceTree = ""; }; CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; }; + D489EE8D5F52DA10AC715727 /* Pods-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-StatusImTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-StatusImTests/Pods-StatusImTests.release.xcconfig"; sourceTree = ""; }; DF1CD4C3D1254774ACCAE4E8 /* libBVLinearGradient.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libBVLinearGradient.a; sourceTree = ""; }; F090E261B9854867A728CE4F /* RealmReact.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RealmReact.xcodeproj; path = "../node_modules/realm/react-native/ios/RealmReact.xcodeproj"; sourceTree = ""; }; + F3548417D8DA4362B6796A54 /* RNInstabug.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNInstabug.xcodeproj; path = "../node_modules/instabug-reactnative/ios/RNInstabug.xcodeproj"; sourceTree = ""; }; + FC1CBCFE6C906043D6CCEEE1 /* libPods-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -346,6 +413,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 81C6E6AE0AA739BE9D87C1D0 /* libPods-StatusImTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -383,6 +451,8 @@ 3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */, AD5063BC2B2A4C52ACE0A0B4 /* libUdpSockets.a in Frameworks */, E0AD9E8F495A4907B65104BF /* libRCTImageResizer.a in Frameworks */, + 5F8585D411844E5981B94F40 /* libRNInstabug.a in Frameworks */, + 8E55E6877F950B81C8D711C5 /* libPods-StatusIm.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -409,6 +479,7 @@ isa = PBXGroup; children = ( 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */, + 9E3F1BEE1DDAE781005E4779 /* libRCTImage-tvOS.a */, ); name = Products; sourceTree = ""; @@ -417,6 +488,7 @@ isa = PBXGroup; children = ( 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */, + 9E3F1BF71DDAE781005E4779 /* libRCTNetwork-tvOS.a */, ); name = Products; sourceTree = ""; @@ -450,6 +522,7 @@ isa = PBXGroup; children = ( 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */, + 9E3F1BFC1DDAE781005E4779 /* libRCTSettings-tvOS.a */, ); name = Products; sourceTree = ""; @@ -458,6 +531,7 @@ isa = PBXGroup; children = ( 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, + 9E3F1C061DDAE781005E4779 /* libRCTWebSocket-tvOS.a */, ); name = Products; sourceTree = ""; @@ -480,6 +554,7 @@ isa = PBXGroup; children = ( 146834041AC3E56700842450 /* libReact.a */, + 9E3F1C0B1DDAE781005E4779 /* libReact-tvOS.a */, ); name = Products; sourceTree = ""; @@ -619,10 +694,22 @@ name = Products; sourceTree = ""; }; + 5C1C8762251D6EF495FB2384 /* Pods */ = { + isa = PBXGroup; + children = ( + ACA66A8F16CD2FE21F38738B /* Pods-StatusIm.debug.xcconfig */, + 38A44830EC5708E89387F641 /* Pods-StatusIm.release.xcconfig */, + 064351D2FD901F8B6C9AE2A5 /* Pods-StatusImTests.debug.xcconfig */, + D489EE8D5F52DA10AC715727 /* Pods-StatusImTests.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; 78C398B11ACF4ADC00677621 /* Products */ = { isa = PBXGroup; children = ( 78C398B91ACF4ADC00677621 /* libRCTLinking.a */, + 9E3F1BF31DDAE781005E4779 /* libRCTLinking-tvOS.a */, ); name = Products; sourceTree = ""; @@ -655,6 +742,7 @@ 2F0276A9E90843E996A0E762 /* UdpSockets.xcodeproj */, 439B6B4B407A4E2AACAFE5BE /* RCTStatus.xcodeproj */, 5E5A7625B76441D984EA8C0D /* RCTImageResizer.xcodeproj */, + F3548417D8DA4362B6796A54 /* RNInstabug.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -663,6 +751,7 @@ isa = PBXGroup; children = ( 832341B51AAA6A8300B99B32 /* libRCTText.a */, + 9E3F1C011DDAE781005E4779 /* libRCTText-tvOS.a */, ); name = Products; sourceTree = ""; @@ -678,6 +767,7 @@ 83CBBA001A601CBA00E9B192 /* Products */, A97BA941B2FB44B4B66EE6D3 /* Frameworks */, 1E7837547A9A40E18AD63CF3 /* Resources */, + 5C1C8762251D6EF495FB2384 /* Pods */, ); indentWidth = 2; sourceTree = ""; @@ -700,6 +790,14 @@ name = Products; sourceTree = ""; }; + 9E3F1BE31DDAE781005E4779 /* Products */ = { + isa = PBXGroup; + children = ( + 9E3F1C121DDAE781005E4779 /* libRNInstabug.a */, + ); + name = Products; + sourceTree = ""; + }; A97BA941B2FB44B4B66EE6D3 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -708,6 +806,8 @@ CE4E31B21D8695250033ED64 /* Statusgo.framework */, 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */, 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */, + 101A4045637A2ADF57D28EF5 /* libPods-StatusIm.a */, + FC1CBCFE6C906043D6CCEEE1 /* libPods-StatusImTests.a */, ); name = Frameworks; sourceTree = ""; @@ -727,9 +827,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StatusImTests" */; buildPhases = ( + 49A69B853BD9751F84878340 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, + 1986C962445001A2631E6AB0 /* [CP] Embed Pods Frameworks */, + 967469AF8BA27D5CEC47B13C /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -745,11 +848,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StatusIm" */; buildPhases = ( + 2EAC54E16AB243C3EBBFE1BA /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 20B6B6891D92C42700CC5C6A /* Embed Frameworks */, + 9E71BA90038083A3D24E18E9 /* [CP] Embed Pods Frameworks */, + E883D1F9B22B8292CC879292 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -874,6 +980,10 @@ ProductGroup = 20B7D1041D3F74CD00B70F14 /* Products */; ProjectRef = 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */; }, + { + ProductGroup = 9E3F1BE31DDAE781005E4779 /* Products */; + ProjectRef = F3548417D8DA4362B6796A54 /* RNInstabug.xcodeproj */; + }, { ProductGroup = 20B7D0F01D3F74CC00B70F14 /* Products */; ProjectRef = 45FB5F523DE04BDE9877869C /* RNRandomBytes.xcodeproj */; @@ -1075,6 +1185,62 @@ remoteRef = 9E3AB6C51D87DA2B008846B4 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E3F1BEE1DDAE781005E4779 /* libRCTImage-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTImage-tvOS.a"; + remoteRef = 9E3F1BED1DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9E3F1BF31DDAE781005E4779 /* libRCTLinking-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTLinking-tvOS.a"; + remoteRef = 9E3F1BF21DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9E3F1BF71DDAE781005E4779 /* libRCTNetwork-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTNetwork-tvOS.a"; + remoteRef = 9E3F1BF61DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9E3F1BFC1DDAE781005E4779 /* libRCTSettings-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTSettings-tvOS.a"; + remoteRef = 9E3F1BFB1DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9E3F1C011DDAE781005E4779 /* libRCTText-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTText-tvOS.a"; + remoteRef = 9E3F1C001DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9E3F1C061DDAE781005E4779 /* libRCTWebSocket-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRCTWebSocket-tvOS.a"; + remoteRef = 9E3F1C051DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9E3F1C0B1DDAE781005E4779 /* libReact-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libReact-tvOS.a"; + remoteRef = 9E3F1C0A1DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9E3F1C121DDAE781005E4779 /* libRNInstabug.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNInstabug.a; + remoteRef = 9E3F1C111DDAE781005E4779 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; CE4E319E1D8693090033ED64 /* libRCTImageResizer.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1133,6 +1299,96 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; }; + 1986C962445001A2631E6AB0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-StatusImTests/Pods-StatusImTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 2EAC54E16AB243C3EBBFE1BA /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 49A69B853BD9751F84878340 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 967469AF8BA27D5CEC47B13C /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-StatusImTests/Pods-StatusImTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 9E71BA90038083A3D24E18E9 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-StatusIm/Pods-StatusIm-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + E883D1F9B22B8292CC879292 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-StatusIm/Pods-StatusIm-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -1178,6 +1434,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 064351D2FD901F8B6C9AE2A5 /* Pods-StatusImTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( @@ -1207,6 +1464,7 @@ "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StatusIm.app/StatusIm"; @@ -1215,6 +1473,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = D489EE8D5F52DA10AC715727 /* Pods-StatusImTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -1241,6 +1500,7 @@ "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StatusIm.app/StatusIm"; @@ -1249,6 +1509,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = ACA66A8F16CD2FE21F38738B /* Pods-StatusIm.debug.xcconfig */; buildSettings = { ARCHS = ( "$(ARCHS_STANDARD)", @@ -1258,7 +1519,11 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../modules/react-native-status/ios/RCTStatus"; + FRAMEWORK_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../modules/react-native-status/ios/RCTStatus", + "$(inherited)", + "$(PROJECT_DIR)/Pods/**", + ); HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, @@ -1276,6 +1541,7 @@ "$(SRCROOT)/../node_modules/react-native-udp/ios/**", "$(SRCROOT)/../modules/react-native-status/ios/RCTStatus/**", "$(SRCROOT)/../node_modules/react-native-image-resizer/ios/RCTImageResizer", + "$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug", ); INFOPLIST_FILE = StatusIm/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; @@ -1293,6 +1559,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 38A44830EC5708E89387F641 /* Pods-StatusIm.release.xcconfig */; buildSettings = { ARCHS = ( "$(ARCHS_STANDARD)", @@ -1302,7 +1569,11 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = ""; - FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../modules/react-native-status/ios/RCTStatus"; + FRAMEWORK_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../modules/react-native-status/ios/RCTStatus", + "$(inherited)", + "$(PROJECT_DIR)/Pods/**", + ); HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, @@ -1320,6 +1591,7 @@ "$(SRCROOT)/../node_modules/react-native-udp/ios/**", "$(SRCROOT)/../modules/react-native-status/ios/RCTStatus/**", "$(SRCROOT)/../node_modules/react-native-image-resizer/ios/RCTImageResizer", + "$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug", ); INFOPLIST_FILE = StatusIm/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.0; @@ -1387,6 +1659,7 @@ "$(SRCROOT)/../modules/react-native-status/ios/RCTStatus/**", "$(SRCROOT)/../modules/react-native-status/ios/RCTStatus/**", "$(SRCROOT)/../node_modules/react-native-image-resizer/ios/RCTImageResizer", + "$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -1441,6 +1714,7 @@ "$(SRCROOT)/../modules/react-native-status/ios/RCTStatus/**", "$(SRCROOT)/../modules/react-native-status/ios/RCTStatus/**", "$(SRCROOT)/../node_modules/react-native-image-resizer/ios/RCTImageResizer", + "$(SRCROOT)/../node_modules/instabug-reactnative/ios/RNInstabug", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/ios/StatusIm/AppDelegate.m b/ios/StatusIm/AppDelegate.m index edeb5e5680..27595f0bc2 100644 --- a/ios/StatusIm/AppDelegate.m +++ b/ios/StatusIm/AppDelegate.m @@ -11,6 +11,7 @@ #import "RCTBundleURLProvider.h" #import "RCTRootView.h" +#import @implementation AppDelegate @@ -31,6 +32,7 @@ rootViewController.view = rootView; self.window.rootViewController = rootViewController; [self.window makeKeyAndVisible]; + [Instabug startWithToken:@"5534212f4a44f477c9ab270ab5cd2062" invocationEvent:IBGInvocationEventShake]; return YES; } diff --git a/ios/StatusIm/Info.plist b/ios/StatusIm/Info.plist index f3f7488818..5e53449670 100644 --- a/ios/StatusIm/Info.plist +++ b/ios/StatusIm/Info.plist @@ -6,6 +6,8 @@ We need to access your camera NSPhotoLibraryUsageDescription We need to access your photo storage to give you an ability to select photos + NSMicrophoneUsageDescription + We need to access your microphone NSContactsUsageDescription We need to access your contacts CFBundleDevelopmentRegion diff --git a/package.json b/package.json index 17c03a8d31..07e1a03c86 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "homoglyph-finder": "^1.1.1", "https-browserify": "0.0.1", "identicon.js": "github:status-im/identicon.js", + "instabug-reactnative": "git+https://github.com/Instabug/instabug-reactnative.git", "os-browserify": "^0.1.2", "path-browserify": "0.0.0", "process": "^0.11.5", diff --git a/src/status_im/chat/handlers.cljs b/src/status_im/chat/handlers.cljs index da150c9539..44b86dc9b1 100644 --- a/src/status_im/chat/handlers.cljs +++ b/src/status_im/chat/handlers.cljs @@ -232,7 +232,7 @@ (u/side-effect! (fn [{:keys [chats]} [_ mnemonic]] (let [messages-count (count (get-in chats [console-chat-id :messages]))] - (sign-up-service/passpharse-messages mnemonic messages-count))))) + (sign-up-service/passphrase-messages mnemonic messages-count))))) (register-handler :sign-up (after (fn [_ [_ phone-number]] diff --git a/src/status_im/chat/sign_up.cljs b/src/status_im/chat/sign_up.cljs index 5249fe5130..7fd2f9ce41 100644 --- a/src/status_im/chat/sign_up.cljs +++ b/src/status_im/chat/sign_up.cljs @@ -102,7 +102,15 @@ :outgoing false :chat-id console-chat-id :from console-chat-id - :to "me"}]))) + :to "me"}])) + (dispatch [:received-message + {:message-id (random/id) + :content (label :t/shake-your-phone) + :content-type text-content-type + :outgoing false + :chat-id console-chat-id + :from console-chat-id + :to "me"}])) ;; -- Saving password ---------------------------------------- (defn account-generation-message [] @@ -115,7 +123,7 @@ :from console-chat-id :to "me"}])) -(defn passpharse-messages [mnemonic messages-count] +(defn passphrase-messages [mnemonic messages-count] (dispatch [:received-message {:message-id (random/id) :content (if (> messages-count 3) @@ -134,7 +142,6 @@ :chat-id console-chat-id :from console-chat-id :to "me"}]) - ;; TODO highlight '!phone' (start-signup)) (def intro-status diff --git a/src/status_im/chat/views/message.cljs b/src/status_im/chat/views/message.cljs index 0dd95842bb..0a49893a09 100644 --- a/src/status_im/chat/views/message.cljs +++ b/src/status_im/chat/views/message.cljs @@ -148,23 +148,42 @@ [wrapper message] [wrapper message [message-content-command-request message]]) +(def replacements + {"\\*[^*]+\\*" {:font-weight :bold} + "~[^~]+~" {:font-style :italic}}) + +(def regx (re-pattern (s/join "|" (map first replacements)))) + +(defn get-style [string] + (->> replacements + (into [] (comp + (map first) + (map #(vector % (re-pattern %))) + (drop-while (fn [[_ regx]] (not (re-matches regx string)))) + (take 1))) + ffirst + replacements)) + ;; todo rewrite this, naive implementation (defn- parse-text [string] (if (string? string) - (let [regx #"\*[^*]+\*" - general-text (s/split string regx) - bold-text (vec (map-indexed + (let [general-text (s/split string regx) + general-text' (if (zero? (count general-text)) + [nil] + general-text) + styled-text (vec (map-indexed (fn [idx string] - [text - {:key (str idx "_" string) - :style {:font-weight :bold}} - (subs string 1 (- (count string) 1))]) + (let [style (get-style string)] + [text + {:key (str idx "_" string) + :style style} + (subs string 1 (- (count string) 1))])) (re-seq regx string))) - bold-text' (if (> (count general-text) - (count bold-text)) - (conj bold-text nil) - bold-text)] - (mapcat vector general-text bold-text')) + styled-text' (if (> (count general-text) + (count styled-text)) + (conj styled-text nil) + styled-text)] + (mapcat vector general-text' styled-text')) (str string))) (defn text-message @@ -323,7 +342,7 @@ (fn [message & children] @layout-height [animated-view {:style (st/message-animated-container anim-value)} - (into [view {:style (st/message-container window-width) + (into [view {:style (st/message-container window-width) :onLayout (fn [event] (let [height (.. event -nativeEvent -layout -height)] (reset! layout-height height)))}] diff --git a/src/status_im/components/drawer/styles.cljs b/src/status_im/components/drawer/styles.cljs index 60d6daa545..f9c63d4c5f 100644 --- a/src/status_im/components/drawer/styles.cljs +++ b/src/status_im/components/drawer/styles.cljs @@ -85,3 +85,5 @@ {:font-size 14 :line-height 21 :color text3-color}) + +(def feedback {:text-align :center}) diff --git a/src/status_im/components/drawer/view.cljs b/src/status_im/components/drawer/view.cljs index a4f4963f86..a37d99dee8 100644 --- a/src/status_im/components/drawer/view.cljs +++ b/src/status_im/components/drawer/view.cljs @@ -65,7 +65,7 @@ :value name :on-change-text #(dispatch [:set-in [:profile-edit :name] %]) :on-end-editing #(when (and new-name (not (str/blank? new-name))) - (dispatch [:account-update {:name new-name}]))}]] + (dispatch [:account-update {:name new-name}]))}]] [view st/status-container [text-input {:style st/status-input :editable true @@ -91,19 +91,15 @@ :handler #(dispatch [:navigate-to :discovery])}] [menu-item {:name (label :t/contacts) :handler #(dispatch [:navigate-to :contact-list])}] - [menu-item {:name (label :t/invite-friends) - :handler (fn [] - ;; TODO not implemented - )}] - [menu-item {:name (label :t/faq) - :handler (fn [])}]] - (when (= @keyboard-height 0) + ] + (when (zero? @keyboard-height) + [text {:style st/feedback + :font :default} (label :t/feedback)]) + (when (zero? @keyboard-height) [view st/switch-users-container [touchable-opacity {:onPress (fn [] (close-drawer) - (dispatch [:navigate-to :accounts]) - ;; TODO not implemented - )} + (dispatch [:navigate-to :accounts]))} [text {:style st/switch-users-text :font :default} (label :t/switch-users)]]])]]])))) diff --git a/src/status_im/translations/en.cljs b/src/status_im/translations/en.cljs index a63064e3be..955cfb9deb 100644 --- a/src/status_im/translations/en.cljs +++ b/src/status_im/translations/en.cljs @@ -13,6 +13,7 @@ :invite-friends "Invite friends" :faq "FAQ" :switch-users "Switch users" + :feedback "Got Feedback?\nShake your phone!" ;chat :is-typing "is typing" @@ -89,6 +90,7 @@ :here-is-your-passphrase "Here is your passphrase, *write this down and keep this safe!* You will need it to recover your account." :written-down "Make sure you had securely written it down" :phone-number-required "Tap here to enter your phone number & I'll find your friends" + :shake-your-phone "Find a bug or have a suggestion? Just ~shake~ your phone!" :intro-status "Chat with me to setup your account and change your settings!" :intro-message1 "Welcome to Status\nTap this message to set your password & get started!" :account-generation-message "Gimmie a sec, I gotta do some crazy math to generate your account!"