From 0c7791848bfcb56c66d6feeec4d0ffdb90739e50 Mon Sep 17 00:00:00 2001 From: aeddi Date: Thu, 4 Oct 2018 17:35:34 +0200 Subject: [PATCH 1/5] fix(ios-build): init --- .../mobile/ios/berty.xcodeproj/project.pbxproj | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/react-native/mobile/ios/berty.xcodeproj/project.pbxproj b/client/react-native/mobile/ios/berty.xcodeproj/project.pbxproj index 3c65aa0381..2322df2959 100644 --- a/client/react-native/mobile/ios/berty.xcodeproj/project.pbxproj +++ b/client/react-native/mobile/ios/berty.xcodeproj/project.pbxproj @@ -1448,7 +1448,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = WMBQ84HN4T; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1484,10 +1484,10 @@ ALWAYS_SEARCH_USER_PATHS = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = WMBQ84HN4T; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1509,7 +1509,7 @@ PRODUCT_BUNDLE_IDENTIFIER = chat.berty.ios; PRODUCT_NAME = berty; PROVISIONING_PROFILE = "4b569825-a062-4e3b-927e-22ea802c7ca3"; - PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.berty.ios"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "modules/berty-Bridging-Header.h"; SWIFT_VERSION = 3.0; VERSIONING_SYSTEM = "apple-generic"; @@ -1701,10 +1701,10 @@ ALWAYS_SEARCH_USER_PATHS = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_IDENTITY = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = WMBQ84HN4T; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1726,7 +1726,7 @@ PRODUCT_BUNDLE_IDENTIFIER = chat.berty.ios; PRODUCT_NAME = berty; PROVISIONING_PROFILE = "8cb57e8b-642d-4c1f-b5b3-0acde7d99f"; - PROVISIONING_PROFILE_SPECIFIER = "match AdHoc chat.berty.ios"; + PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OBJC_BRIDGING_HEADER = "modules/berty-Bridging-Header.h"; SWIFT_VERSION = 3.0; VERSIONING_SYSTEM = "apple-generic"; From f126c6bda8bc924a24fef5164fc888dca6be79a4 Mon Sep 17 00:00:00 2001 From: aeddi Date: Tue, 9 Oct 2018 23:23:16 +0200 Subject: [PATCH 2/5] refactor(rn): refactor react-native folder and fix build issues --- client/react-native/.babelrc | 7 +- client/react-native/.env.example | 18 - client/react-native/.gitignore | 15 +- client/react-native/Makefile | 182 +- .../{mobile => }/android/.project | 0 .../org.eclipse.buildship.core.prefs | 0 .../react-native/{mobile => }/android/Gemfile | 0 .../{mobile => }/android/Gemfile.lock | 0 .../{mobile => }/android/app/.classpath | 0 .../{mobile => }/android/app/.project | 0 .../org.eclipse.buildship.core.prefs | 0 .../{mobile => }/android/app/BUCK | 0 .../{mobile => }/android/app/build.gradle | 5 +- .../android/app/proguard-rules.pro | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../app/src/main/assets/fonts/AntDesign.ttf | Bin 0 -> 70344 bytes .../app/src/main/assets/fonts/Entypo.ttf | Bin .../app/src/main/assets/fonts/EvilIcons.ttf | Bin .../app/src/main/assets/fonts/Feather.ttf | Bin .../app/src/main/assets/fonts/FontAwesome.ttf | Bin .../main/assets/fonts/FontAwesome5_Brands.ttf | Bin 116280 -> 118324 bytes .../assets/fonts/FontAwesome5_Regular.ttf | Bin 40416 -> 40348 bytes .../main/assets/fonts/FontAwesome5_Solid.ttf | Bin 168176 -> 180500 bytes .../app/src/main/assets/fonts/Foundation.ttf | Bin .../app/src/main/assets/fonts/Ionicons.ttf | Bin .../assets/fonts/MaterialCommunityIcons.ttf | Bin 373772 -> 416816 bytes .../src/main/assets/fonts/MaterialIcons.ttf | Bin .../app/src/main/assets/fonts/Octicons.ttf | Bin .../src/main/assets/fonts/SimpleLineIcons.ttf | Bin .../app/src/main/assets/fonts/Zocial.ttf | Bin .../main/java/chat/berty/core/CoreModule.java | 0 .../java/chat/berty/core/CorePackage.java | 0 .../java/chat/berty/main/MainActivity.java | 0 .../java/chat/berty/main/MainApplication.java | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../res/mipmap-xhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin .../app/src/main/res/values/strings.xml | 0 .../app/src/main/res/values/styles.xml | 0 .../{mobile => }/android/build.gradle | 0 .../{mobile => }/android/fastlane/Appfile | 0 .../{mobile => }/android/fastlane/Fastfile | 0 .../{mobile => }/android/fastlane/README.md | 0 .../{mobile => }/android/gradle.properties | 0 .../android/gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 .../react-native/{mobile => }/android/gradlew | 0 .../{mobile => }/android/gradlew.bat | 180 +- .../{mobile => }/android/keystores/BUCK | 0 .../keystores/debug.keystore.properties | 0 .../{mobile => }/android/settings.gradle | 6 + client/react-native/app.json | 4 + client/react-native/common/package.json | 6 - .../common/registerServiceWorker.js | 4 + client/react-native/common/yarn.lock | 4 - client/react-native/gomobile/.gitkeep | 0 client/react-native/gomobile/Makefile | 85 +- client/react-native/gomobile/package.json | 11 - client/react-native/gomobile/yarn.lock | 4 - client/react-native/index.js | 1 + .../{mobile => }/ios/berty-tvOS/Info.plist | 0 .../ios/berty-tvOSTests/Info.plist | 0 .../ios/berty.xcodeproj/project.pbxproj | 383 +- .../xcshareddata/xcschemes/adhoc.xcscheme | 0 .../xcshareddata/xcschemes/debug.xcscheme | 0 .../xcshareddata/xcschemes/release.xcscheme | 0 .../{mobile => }/ios/berty/AppDelegate.h | 0 .../{mobile => }/ios/berty/AppDelegate.m | 0 .../ios/berty/Base.lproj/LaunchScreen.xib | 17 +- .../ios/berty/BertyBluetoothModule.h | 0 .../ios/berty/BertyBluetoothModule.m | 0 .../ios/berty/BertyCentralManager.h | 0 .../ios/berty/BertyCentralManager.m | 0 .../{mobile => }/ios/berty/BertyPeripheral.h | 0 .../{mobile => }/ios/berty/BertyPeripheral.m | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Icon.png | Bin .../AppIcon.appiconset/icon_20pt@2x.png | Bin .../AppIcon.appiconset/icon_20pt@3x.png | Bin .../AppIcon.appiconset/icon_29pt.png | Bin .../AppIcon.appiconset/icon_29pt@2x.png | Bin .../AppIcon.appiconset/icon_29pt@3x.png | Bin .../AppIcon.appiconset/icon_40pt@2x.png | Bin .../AppIcon.appiconset/icon_40pt@3x.png | Bin .../AppIcon.appiconset/icon_60pt@2x.png | Bin .../AppIcon.appiconset/icon_60pt@3x.png | Bin .../ios/berty/Images.xcassets/Contents.json | 0 .../{mobile => }/ios/berty/Info.plist | 19 +- .../{mobile => }/ios/berty/main.m | 0 .../{mobile => }/ios/bertyTests/Info.plist | 0 .../{mobile => }/ios/bertyTests/bertyTests.m | 0 .../ios/modules/berty-Bridging-Header.h | 0 .../ios/modules/core/CoreModule.m | 0 .../ios/modules/core/CoreModule.swift | 0 client/react-native/mobile/.babelrc | 1 - client/react-native/mobile/.buckconfig | 6 - client/react-native/mobile/.eslint | 1 - client/react-native/mobile/.flowconfig | 67 - client/react-native/mobile/.gitattributes | 1 - client/react-native/mobile/.gitignore | 56 - client/react-native/mobile/.watchmanconfig | 1 - client/react-native/mobile/app.json | 7 - client/react-native/mobile/index.js | 1 - client/react-native/mobile/package.json | 18 - client/react-native/mobile/yarn.lock | 4 - client/react-native/package.json | 68 +- .../patch/ios-install-third-party.sh.patch | 11 - .../react-native/patch/project.pbxproj.patch | 36 - client/react-native/web/config/env.js | 92 - .../web/config/jest/babelTransform.js | 8 - .../web/config/jest/cssTransform.js | 14 - .../web/config/jest/fileTransform.js | 22 - .../web/config/jest/graphqlTransform.js | 9 - client/react-native/web/config/paths.js | 55 - client/react-native/web/config/polyfills.js | 21 - .../web/config/webpack.config.dev.js | 277 - .../web/config/webpack.config.prod.js | 356 - .../web/config/webpackDevServer.config.js | 94 - client/react-native/web/index.web.js | 36 - client/react-native/web/package.json | 57 +- client/react-native/web/public/favicon.ico | Bin 3870 -> 0 bytes client/react-native/web/public/index.html | 28 - client/react-native/web/public/manifest.json | 15 - client/react-native/web/scripts/build.js | 150 - client/react-native/web/scripts/start.js | 107 - client/react-native/web/scripts/test.js | 27 - client/react-native/web/yarn.lock | 7341 ----------------- client/react-native/yarn.lock | 3959 ++++----- 135 files changed, 2331 insertions(+), 11572 deletions(-) delete mode 100644 client/react-native/.env.example rename client/react-native/{mobile => }/android/.project (100%) rename client/react-native/{mobile => }/android/.settings/org.eclipse.buildship.core.prefs (100%) rename client/react-native/{mobile => }/android/Gemfile (100%) rename client/react-native/{mobile => }/android/Gemfile.lock (100%) rename client/react-native/{mobile => }/android/app/.classpath (100%) rename client/react-native/{mobile => }/android/app/.project (100%) rename client/react-native/{mobile => }/android/app/.settings/org.eclipse.buildship.core.prefs (100%) rename client/react-native/{mobile => }/android/app/BUCK (100%) rename client/react-native/{mobile => }/android/app/build.gradle (97%) rename client/react-native/{mobile => }/android/app/proguard-rules.pro (100%) rename client/react-native/{mobile => }/android/app/src/main/AndroidManifest.xml (100%) create mode 100644 client/react-native/android/app/src/main/assets/fonts/AntDesign.ttf rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/Entypo.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/EvilIcons.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/Feather.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/FontAwesome.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf (89%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf (92%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf (73%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/Foundation.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/Ionicons.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf (84%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/MaterialIcons.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/Octicons.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/SimpleLineIcons.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/assets/fonts/Zocial.ttf (100%) rename client/react-native/{mobile => }/android/app/src/main/java/chat/berty/core/CoreModule.java (100%) rename client/react-native/{mobile => }/android/app/src/main/java/chat/berty/core/CorePackage.java (100%) rename client/react-native/{mobile => }/android/app/src/main/java/chat/berty/main/MainActivity.java (100%) rename client/react-native/{mobile => }/android/app/src/main/java/chat/berty/main/MainApplication.java (84%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename client/react-native/{mobile => }/android/app/src/main/res/values/strings.xml (100%) rename client/react-native/{mobile => }/android/app/src/main/res/values/styles.xml (100%) rename client/react-native/{mobile => }/android/build.gradle (100%) rename client/react-native/{mobile => }/android/fastlane/Appfile (100%) rename client/react-native/{mobile => }/android/fastlane/Fastfile (100%) rename client/react-native/{mobile => }/android/fastlane/README.md (100%) rename client/react-native/{mobile => }/android/gradle.properties (100%) rename client/react-native/{mobile => }/android/gradle/wrapper/gradle-wrapper.jar (100%) rename client/react-native/{mobile => }/android/gradle/wrapper/gradle-wrapper.properties (100%) rename client/react-native/{mobile => }/android/gradlew (100%) rename client/react-native/{mobile => }/android/gradlew.bat (96%) rename client/react-native/{mobile => }/android/keystores/BUCK (100%) rename client/react-native/{mobile => }/android/keystores/debug.keystore.properties (100%) rename client/react-native/{mobile => }/android/settings.gradle (52%) create mode 100644 client/react-native/app.json delete mode 100644 client/react-native/common/package.json delete mode 100644 client/react-native/common/yarn.lock delete mode 100644 client/react-native/gomobile/.gitkeep delete mode 100644 client/react-native/gomobile/package.json delete mode 100644 client/react-native/gomobile/yarn.lock create mode 100644 client/react-native/index.js rename client/react-native/{mobile => }/ios/berty-tvOS/Info.plist (100%) rename client/react-native/{mobile => }/ios/berty-tvOSTests/Info.plist (100%) rename client/react-native/{mobile => }/ios/berty.xcodeproj/project.pbxproj (85%) rename client/react-native/{mobile => }/ios/berty.xcodeproj/xcshareddata/xcschemes/adhoc.xcscheme (100%) rename client/react-native/{mobile => }/ios/berty.xcodeproj/xcshareddata/xcschemes/debug.xcscheme (100%) rename client/react-native/{mobile => }/ios/berty.xcodeproj/xcshareddata/xcschemes/release.xcscheme (100%) rename client/react-native/{mobile => }/ios/berty/AppDelegate.h (100%) rename client/react-native/{mobile => }/ios/berty/AppDelegate.m (100%) rename client/react-native/{mobile => }/ios/berty/Base.lproj/LaunchScreen.xib (72%) rename client/react-native/{mobile => }/ios/berty/BertyBluetoothModule.h (100%) rename client/react-native/{mobile => }/ios/berty/BertyBluetoothModule.m (100%) rename client/react-native/{mobile => }/ios/berty/BertyCentralManager.h (100%) rename client/react-native/{mobile => }/ios/berty/BertyCentralManager.m (100%) rename client/react-native/{mobile => }/ios/berty/BertyPeripheral.h (100%) rename client/react-native/{mobile => }/ios/berty/BertyPeripheral.m (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/Contents.json (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/Icon.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@2x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@3x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@2x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@3x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@2x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@3x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@2x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@3x.png (100%) rename client/react-native/{mobile => }/ios/berty/Images.xcassets/Contents.json (100%) rename client/react-native/{mobile => }/ios/berty/Info.plist (97%) rename client/react-native/{mobile => }/ios/berty/main.m (100%) rename client/react-native/{mobile => }/ios/bertyTests/Info.plist (100%) rename client/react-native/{mobile => }/ios/bertyTests/bertyTests.m (100%) rename client/react-native/{mobile => }/ios/modules/berty-Bridging-Header.h (100%) rename client/react-native/{mobile => }/ios/modules/core/CoreModule.m (100%) rename client/react-native/{mobile => }/ios/modules/core/CoreModule.swift (100%) delete mode 120000 client/react-native/mobile/.babelrc delete mode 100644 client/react-native/mobile/.buckconfig delete mode 120000 client/react-native/mobile/.eslint delete mode 100644 client/react-native/mobile/.flowconfig delete mode 100644 client/react-native/mobile/.gitattributes delete mode 100644 client/react-native/mobile/.gitignore delete mode 100644 client/react-native/mobile/.watchmanconfig delete mode 100644 client/react-native/mobile/app.json delete mode 100644 client/react-native/mobile/index.js delete mode 100644 client/react-native/mobile/package.json delete mode 100644 client/react-native/mobile/yarn.lock delete mode 100644 client/react-native/patch/ios-install-third-party.sh.patch delete mode 100644 client/react-native/patch/project.pbxproj.patch delete mode 100644 client/react-native/web/config/env.js delete mode 100644 client/react-native/web/config/jest/babelTransform.js delete mode 100644 client/react-native/web/config/jest/cssTransform.js delete mode 100644 client/react-native/web/config/jest/fileTransform.js delete mode 100644 client/react-native/web/config/jest/graphqlTransform.js delete mode 100644 client/react-native/web/config/paths.js delete mode 100644 client/react-native/web/config/polyfills.js delete mode 100644 client/react-native/web/config/webpack.config.dev.js delete mode 100644 client/react-native/web/config/webpack.config.prod.js delete mode 100644 client/react-native/web/config/webpackDevServer.config.js delete mode 100644 client/react-native/web/index.web.js delete mode 100644 client/react-native/web/public/favicon.ico delete mode 100644 client/react-native/web/public/index.html delete mode 100644 client/react-native/web/public/manifest.json delete mode 100644 client/react-native/web/scripts/build.js delete mode 100644 client/react-native/web/scripts/start.js delete mode 100644 client/react-native/web/scripts/test.js diff --git a/client/react-native/.babelrc b/client/react-native/.babelrc index c11361214e..eb6c0e73f8 100644 --- a/client/react-native/.babelrc +++ b/client/react-native/.babelrc @@ -1,9 +1,8 @@ { - "presets": ["react-native", "react-app", "stage-0"], - "env": { - "browser": true - }, + "presets": ["module:metro-react-native-babel-preset"], "plugins": [ + "module:@babel/plugin-syntax-export-namespace-from", + "transform-export-extensions", "relay" ] } diff --git a/client/react-native/.env.example b/client/react-native/.env.example deleted file mode 100644 index c7d7fb75d0..0000000000 --- a/client/react-native/.env.example +++ /dev/null @@ -1,18 +0,0 @@ -# FASTLANE - -# FASTLANE_USER= -# FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD= - -FASTLANE_SKIP_UPDATE_CHECK=1 -FASTLANE_HIDE_CHANGELOG=1 - -MATCH_USERNAME= -MATCH_GIT_URL= -MATCH_APP_IDENTIFIER=chat.berty.tech -MATCH_PASSWORD= - -PILOT_USERNAME= -PILOT_APPLE_ID= -PILOT_TEAM_ID= -PILOT_IPA=.build/ios/berty.ipa -PILOT_SKIP_WAITING_FOR_BUILD_PROCESSING=true diff --git a/client/react-native/.gitignore b/client/react-native/.gitignore index 8ad2d0185d..991c9826c0 100644 --- a/client/react-native/.gitignore +++ b/client/react-native/.gitignore @@ -1,5 +1,8 @@ # See https://help.github.com/ignore-files/ for more about ignoring files. +# Fastlane +.build + # junk files # *~ @@ -14,8 +17,8 @@ gin-bin ## Gomobile # -mobile/ios/core.framework -mobile/android/app/libs/core.aar +ios/core.framework +android/app/libs/core.aar # Xcode # @@ -84,14 +87,14 @@ fastlane/Appfile fastlane/Matchfile # Gomobile -mobile/android/app/libs/*.aar -mobile/android/app/libs/*-sources.jar +android/app/libs/*.aar +android/app/libs/*-sources.jar gomobile/vendor gomobile/bin gomobile/_vendor-* gomobile/tags -mobile/android/libs/ -mobile/ios/libs/ +android/libs/ +ios/libs/ # mobile shim.js diff --git a/client/react-native/Makefile b/client/react-native/Makefile index 3452a94bdc..08f6f5a386 100644 --- a/client/react-native/Makefile +++ b/client/react-native/Makefile @@ -1,17 +1,14 @@ +# Deps / build related +ROOT := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) +WEB := $(ROOT)/web +GOMOB := $(ROOT)/gomobile +IOS := $(ROOT)/ios +ANDROID := $(ROOT)/android + +# Fastlane build related IOS_VERSION ?= $(shell git describe --tags --always | cut -d - -f 1,2 | tr - .| tail -c +2) ANDROID_VERSION ?= $(shell git rev-list --all --count) -XCODE_MAJOR := $(shell xcodebuild -version | head -1 | sed 's~^Xcode \(.*\)\..*$$~\1~') - -PWD := $(shell pwd) -ROOT := $(PWD) -DIRS := common mobile web gomobile -DEPS := $(addsuffix /node_modules, $(DIRS) $(ROOT)) -CLEAN := $(addsuffix .clean, $(DIRS) $(ROOT)) -FCLEAN := $(addsuffix .fclean, $(DIRS) $(ROOT)) -RE := $(addsuffix .re, $(DIRS) $(ROOT)) -START := $(addsuffix .start, $(DIRS) $(ROOT)) - -# build related env + NAME ?= berty BUILD ?= .build BUILD_IOS ?= $(BUILD)/ios @@ -20,73 +17,110 @@ BUILD_ANDROID ?= $(BUILD)/android KEYCHAIN_NAME ?= berty_keychain KEYCHAIN_PASSWORD ?= berty_pass +# Dockerised webapp related SCALE ?= 1 PORT ?= 0 SERV ?= -.PHONY: all -all: $(ROOT) $(DEPS) - .PHONY: help help: @echo "React-Native commands:" @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | grep -v / | sed 's/^/ $(HELP_MSG_PREFIX)make /' -.PHONY: deps -deps: $(DEPS) - -.PHONY: fclean -fclean: $(FCLEAN) - yarn cache clean && watchman watch-del-all - -.PHONY: re -re: $(RE) - -$(DEPS): %/node_modules: %/package.json - cd $(dir $@) && yarn - -.PHONY: $(DIRS) -$(DIRS): %: %/node_modules $(ROOT)/node_modules - -.PHONY: android -android: mobile - make -C gomobile android - cd mobile && yarn android && yarn start - - -.PHONY: patch-xcode10 -patch-xcode10: -ifeq ("$(XCODE_MAJOR)", "10") - cd node_modules/react-native \ - && cp scripts/ios-install-third-party.sh . \ - && rm -rf third-party \ - && ./ios-install-third-party.sh \ - && cp scripts/ios-configure-glog.sh third-party/glog-0.3.4 \ - && cd third-party/glog-0.3.4 \ - && ./ios-configure-glog.sh - patch -N ./node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj/project.pbxproj ./patch/project.pbxproj.patch || true -else - @echo "patch-xcode10: skipping patch, using xcode $(XCODE_MAJOR)" -endif - -.PHONY: ios -ios: mobile patch-xcode10 - make -C gomobile ios - cd mobile && yarn ios --device '$(device)' && yarn start - -.PHONY: $(FCLEAN) -$(FCLEAN): - rm -rf $(basename $@)/node_modules - -.PHONY: $(RE) -$(RE): %.re: %.fclean %/node_modules - -$(START): %.start: % - cd $< && yarn start - -$(BUILD): %.build: % - cd $< && yarn build +### Dependencies part ### +.PHONY: deps +deps: + cd $(ROOT) && yarn + +.PHONY: deps.android +deps.android: deps + $(MAKE) -C $(GOMOB) build.android + cd $(ROOT) && react-native link + +.PHONY: deps.ios +deps.ios: deps + $(MAKE) -C $(GOMOB) build.ios + if [ ! -e $(ROOT)/node_modules/react-native/third-party/glog-0.*/Makefile ]; then \ + cd $(ROOT)/node_modules/react-native \ + && rm -rf third-party \ + && ./scripts/ios-install-third-party.sh \ + && cd third-party/glog-0.* \ + && ../../scripts/ios-configure-glog.sh; \ + fi + cd $(ROOT) && react-native link + +.PHONY: deps.web +deps.web: deps + cd $(WEB) && yarn +############################## + + +### Build release/debug part ### +.PHONY: debug.android +debug.android: deps.android + cd $(ROOT) && react-native run-android --no-packager \ + && react-native start --reset-cache + +.PHONY: release.android +release.android: deps.android + @echo "Not implemented yet" + +.PHONY: debug.ios +debug.ios: deps.ios + cd $(ROOT) && react-native run-ios --no-packager --configuration=Debug --scheme=debug --device '$(device)' \ + && react-native start --reset-cache + +.PHONY: release.ios +release.ios: deps.ios + cd $(ROOT) && react-native run-ios --no-packager --configuration=Release --scheme=release --device '$(device)' + +.PHONY: debug.web +debug.web: deps.web + @echo "Not implemented yet" +############################## + + +### Clean dependencies part ### +.PHONY: clean +clean: + cd $(ROOT) \ + && rm -rf node_modules \ + && yarn cache clean \ + && watchman watch-del-all + rm -rf $$TMPDIR/metro-* + rm -rf $$TMPDIR/react-* + rm -rf $$TMPDIR/haste-* + +.PHONY: clean.android +clean.android: clean + $(MAKE) -C $(GOMOB) clean.android + cd $(ANDROID) && rm -rf build && ./gradlew clean + +.PHONY: clean.ios +clean.ios: clean + $(MAKE) -C $(GOMOB) clean.ios + cd $(IOS) && rm -rf build && xcodebuild clean + +.PHONY: clean.web +clean.web: clean + cd $(WEB) \ + && rm -rf node_modules \ + && yarn cache clean \ + && watchman watch-del-all + +.PHONY: re.android +re.android: clean.android debug.android + +.PHONY: re.ios +re.ios: clean.ios debug.ios + +.PHONY: re.web +re.web: clean.web debug.web +############################## + + +### Dockerized webapp part ### webapp.start: @docker-compose up -d --build --scale core-service=$(SCALE) @@ -141,13 +175,16 @@ webapp.rm: webapp.stop COUNT=$$(echo "$$CONT_ID" | sed '/^\s*$$/d' | wc -w | tr -d ' '); \ echo "Deleting $$COUNT previously generated containers..."; \ if [ $$COUNT -ne 0 ]; then docker rm $$CONT_ID; fi +############################## + +### Fastlane build part ### .PHONY: version version: mkdir -p $(BUILD) - plutil -replace CFBundleShortVersionString -string $(IOS_VERSION) mobile/ios/berty/Info.plist - bundle exec fastlane run increment_version_code version_code:$(ANDROID_VERSION) gradle_file_path:./mobile/android/app/build.gradle + plutil -replace CFBundleShortVersionString -string $(IOS_VERSION) $(IOS)/berty/Info.plist + bundle exec fastlane run increment_version_code version_code:$(ANDROID_VERSION) gradle_file_path:$(ANDROID)/app/build.gradle echo "ios:$(IOS_VERSION)\nandroid:$(ANDROID_VERSION)\n" > $(BUILD)/version fastlane.match.development: @@ -177,7 +214,7 @@ fastlane.ios.build: GYM_OPTION_PROVISIONING_PROFILE='match AdHoc chat.berty.ios' \ GYM_OUTPUT_NAME=$(NAME) \ GYM_OUTPUT_DIRECTORY=$(BUILD_IOS) \ - GYM_PROJECT=mobile/ios/berty.xcodeproj \ + GYM_PROJECT=ios/berty.xcodeproj \ GYM_SCHEME=adhoc \ GYM_INCLUDE_SYMBOLS=false \ time bundle exec fastlane ios build --verbose @@ -187,3 +224,4 @@ fastlane.ios.build: fastlane.ios.release: time bundle exec fastlane run pilot upload --verbose ipa:$(BUILD_IOS)/berty.ipa skip_waiting_for_build_processing:true +############################## diff --git a/client/react-native/mobile/android/.project b/client/react-native/android/.project similarity index 100% rename from client/react-native/mobile/android/.project rename to client/react-native/android/.project diff --git a/client/react-native/mobile/android/.settings/org.eclipse.buildship.core.prefs b/client/react-native/android/.settings/org.eclipse.buildship.core.prefs similarity index 100% rename from client/react-native/mobile/android/.settings/org.eclipse.buildship.core.prefs rename to client/react-native/android/.settings/org.eclipse.buildship.core.prefs diff --git a/client/react-native/mobile/android/Gemfile b/client/react-native/android/Gemfile similarity index 100% rename from client/react-native/mobile/android/Gemfile rename to client/react-native/android/Gemfile diff --git a/client/react-native/mobile/android/Gemfile.lock b/client/react-native/android/Gemfile.lock similarity index 100% rename from client/react-native/mobile/android/Gemfile.lock rename to client/react-native/android/Gemfile.lock diff --git a/client/react-native/mobile/android/app/.classpath b/client/react-native/android/app/.classpath similarity index 100% rename from client/react-native/mobile/android/app/.classpath rename to client/react-native/android/app/.classpath diff --git a/client/react-native/mobile/android/app/.project b/client/react-native/android/app/.project similarity index 100% rename from client/react-native/mobile/android/app/.project rename to client/react-native/android/app/.project diff --git a/client/react-native/mobile/android/app/.settings/org.eclipse.buildship.core.prefs b/client/react-native/android/app/.settings/org.eclipse.buildship.core.prefs similarity index 100% rename from client/react-native/mobile/android/app/.settings/org.eclipse.buildship.core.prefs rename to client/react-native/android/app/.settings/org.eclipse.buildship.core.prefs diff --git a/client/react-native/mobile/android/app/BUCK b/client/react-native/android/app/BUCK similarity index 100% rename from client/react-native/mobile/android/app/BUCK rename to client/react-native/android/app/BUCK diff --git a/client/react-native/mobile/android/app/build.gradle b/client/react-native/android/app/build.gradle similarity index 97% rename from client/react-native/mobile/android/app/build.gradle rename to client/react-native/android/app/build.gradle index 0426378e42..750c1937e8 100644 --- a/client/react-native/mobile/android/app/build.gradle +++ b/client/react-native/android/app/build.gradle @@ -101,7 +101,7 @@ android { applicationId "com.berty" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 1 + versionCode 509 versionName "1.0" ndk { abiFilters "armeabi-v7a", "x86" @@ -141,6 +141,9 @@ android { } dependencies { + compile project(':react-native-vector-icons') + compile project(':react-native-network-info') + compile project(':react-native-image-picker') api project(':react-native-image-picker') api project(':react-native-network-info') api project(':react-native-vector-icons') diff --git a/client/react-native/mobile/android/app/proguard-rules.pro b/client/react-native/android/app/proguard-rules.pro similarity index 100% rename from client/react-native/mobile/android/app/proguard-rules.pro rename to client/react-native/android/app/proguard-rules.pro diff --git a/client/react-native/mobile/android/app/src/main/AndroidManifest.xml b/client/react-native/android/app/src/main/AndroidManifest.xml similarity index 100% rename from client/react-native/mobile/android/app/src/main/AndroidManifest.xml rename to client/react-native/android/app/src/main/AndroidManifest.xml diff --git a/client/react-native/android/app/src/main/assets/fonts/AntDesign.ttf b/client/react-native/android/app/src/main/assets/fonts/AntDesign.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2abf03542c17e6f7a7806a226c3be732b51c5a40 GIT binary patch literal 70344 zcmeFa34B}CwKux=Ihw3l)@;d=C0UZ^Nw#Ijj_u5e6Oxb#NJtf zwNMB{p#yLWZ7E?0l!gRoDNx2z3bYKj(9^nb+dwHzd!v)@zs^2#d%rL7 z(wWa*ds_2ehjGT3jcsExYniop>C^|*9sk7`@50%s3l=xGE&J=-AsnBN<7FpoT)k=k zF}JQ~%ycPZWuSn+2KE-K(vIn@75^DKpdD-1aU5eP zVfxH@OYo$4vADuFoVPe+$>mSjz_3)}hZt{ek<%xD7bdKPpN_uhDiGaBXf>S`7PmBS4;04q>;G-@_Q1amT~;Y>|JUgXs$v8Xt!og~GE@m#CRgAr zQMCqaL49%FApHf$NrpWT$gRrX|7ag_5BY{tL+PQep#?)n4s9R0XXpn*&knsl^w|NT z)>{?!M|sFK+Qi^Nf%1WHMOZk^bgr)wuKegm)KeCbM_CmkNtrC2RoZ> zWj_L!eVd)b&SmGZ^VtRLLWT}w7qM;NX_v6Su`jbr*>Bhm_G9)Sdx$;2E@NL|m$NI_ zmFz0^RdzqSnthF3!>(o5vFq6l?Cb0s>_&DI`zE`Y-NLrBTiI>wc6JB*7Q2((#lFqH z!~T=~iT#B=#hzx*u)nfDv!Ah_vya%b>=*1g_B?xm{gS=NUScn^SJ=nwRrVVD6?>ii zn!UmP#r})!=aoFh<2=c;ypGrN6wmN#p5`^Ymc7fq%kE+KvWM9t?Dy<5_IIYT1DtWr zB`$LVH*ymg2**$E3LWK8+!Qy2cW26mw+TUg^mer&=Q4?0Yv&0Iwtx8I-}4rkvO!hLdO8i zSfQ*;1@Vu}u+RZP)=RbgKT&@ZOw07}Lb9YE8V zq64TKQ*;2GV~P%-cudg&w2vt|fC@522hc;N=m5&d6dgb#nW6*n4@C#iO{VAo3d$56 zKuejT1E?xfbO3#2iVmQ(Owj=}mnk}c`Z7fa&|#+N0E)~M9YC9zq64TjQ*;2mW{M7= z+)U8{G@L0qfSNN!2heq<=l}}O6dge8nW6(5z`hQk|4h*VoPa4hfG03T2XF_b=m0*! z6dk}Zn4$xC2UBza7h%e50pKT0nIiz4g(-sqz+;#)R{*#TQ|1W(-(kuT0>FWoGG73A z5mOcj09RtlLIL1UOgT~jI2BVC2_W53Su6nDiz!P4fR8a{sQ_>^rYsY{c4K>#0B|{` z94!F+jw#0o0Ow=Masl9hOj#iS+>j~93IJbZ%1Qy?kW5)60KAeZ#|Z$}WXkaZz(1L? zS^zjHQ`QIoPi4vp0>E9FvQ_~2EK^Pt0FKL)bppV9nX+C0xG+;r5&(Y8l#>O3Gc)BB z0pQV0IaL6-HB&YS0N-ZHMgid9OgT*ecsWx}7XYr#luZJ_-*9!Fy(v! zkSmySfdEJtOu0}1WDTZVBmhzeQ??0!{K1rq1wayE$|V9IlQ8AW0wA3*bBE@R5=0wAF=`eKU07&mld0hbHc&7YX z03>>*ydeOxJyWQU0g&>U@}>aD`%Iy641na%6dK0>=m1RltpI2PO!=Jv=mku9M*uVg zro1Zvx&l+)69BD&Dent_{=gK%2>?xkDZdv0oq{PJ2!M9Mln(_!&tS?Q1VH0piXs5I z2UGqi09puBsBQr0BTN|*0L_Fcgew3#3R4It0JIgR&@}+`7N-1{0BA5wp>_d4mthLk z833(@DSHJ#zhTNJ0-)(IG{Kem4pz$>x+OaPBz`*#66&Y)up;7M!^0(cf%qX1rq ztw{jM@P9N5;3;e^0(b`7G6B3ATdM$`#?~f)*I;WG0IiD+xdcG}Vnc2L(8Sn~R{(S} zHslik?TihfJOb!xYzXfqfX2p#x&%OXV?zrBK#OBTM+$&G$A&OB2%y=qAsR$?Fafpz&+T4 z{t)nTYgR?r^)^C%IqqoaEW=dB1#K`K9H*_cnQt_Fm$B z-Ph#1)c13LyMK%S`9NJ@L*V{kP4LX%u25U(`yn;FD*VInpDXT;B%`6|*2=!how0?n zyJMfm2dmnvZmRk$u_f_9(wRIZD`$?rZ@9=c2ahG_Vt?Hnw_-+ zwOec7uJhH+uKQuVss4%vYr}O7A2%*)ysGi{O>Iq=G(FTDXuhy{cS}pl-7TNBcD0_? z`be9lZFbvrZLj5gxrMo_a?j+{_Nnb(X@9=M*D=`f-HuN?kM7*rxi?>zzahW3tFPXiBzCuUq~0n)z$K zz2@^1)}8SB+UaYzpE&)*drwr>RjgaJ?t%5D^(`k2oOHvxRw^ zTQ=5h{Oq)+PW#vC(@)>IDYohEGp3*M;hAk`zP;JK`I;>lxnw0c@SpM%atL~O4fMk4 zB+qkGJx@BNN}kBJH%ax}pD_A^KBt^bWfSI9vPquIgGrMw(AL?W37X6%7tA{`o=dcK zW}Boe?`ZFndU#u)lJjt+VsUvoS}tG5t)Xn}GIdb;HuuLEXg{qo9W3K~ z+cxfvR5|bI_f&ZBcYZ~{TOKyM9hOjqBUSC=XMbo5dF_>%4`>d7N*#Dy?vrPdeV~kc z+BXG*muGaVjo%49u#oX_Gv^1EDq0`nMTW=3Xm`_!Pz z#fJjTlGH5l)Sf#ap6hHwOPI`wCOmf|J@@tEb7p~d@i}V4ZRn?Mcn(w?9L)^FH!Rl~ zCYw!7ytAKYn|L2=sR5tF-csK)nRw!@w|K&2Qr~O&$PP?wFTZT#{;2&Un|zT`eebQe z)%T1>o_HHK6+Zr*jR&K)r=GS|2DtSd8w3#1Z^bepsf;Mo$(wnmy`Oi+IHqPW29`Xk z(6u%cWw(87tJI4gTdK#Vm1Pr!KmC-gQX4B1l<75Pnz`A@n>dPXLq$zv%8c47txrE~ z)#_lavc6;GV++0A#%-^>f|jTRZiL>5GDo$o*KA6nqJ2CN=lMPmpfN?p-Vp@_iY1RJ zQEeCHpczED)V7dX^!^ONa@UF0Z9^jlF&3O0Wuh;$nNF0L@64BUb=I5BI0+Zr6{BWo zm)J3j7Mz<%@nquM1&bam**|7ff4ub{qenqLnLKB~q8*FopPR(L;oaGz28U6N9_*mv z=opEA{&4Y^edxD7j*dj#nqaR-A0BoE9>#bY9>>&s@?qD2yKEQ?fl3=hE=t9XpQxjXI1N)&E{U{O{MH&^2Bi zK!Y(MxGb?M#?oaN7k%*DfOY0`F;1-0oND64I#WqZ3OIN!R4;WJf+-hY=XYtm5PePea+rL-lWzrwXZjbV^i9CcG8cj4SAm}vnL`)`+ zSX<|0-ky;g8a7T=A2`zZOWeB&v3w>*U<$Xd-4W|FCha$o>JzKZh%q%c3pStL>!AyfFA zQfeH``s9xG3_p#pJlhtC+8?x9cY?B8&r$E0ykTjhKju$PStPA+(WXiL&Q@z6YTKdT zvy~syOZQ0A&bCJbwg+vMww+dx->r?yHuRFH)3j(x@_ez`Y8!C}Z_sWL^>`BX7=V-l zKAO+z_0TXU$tRT{X)&GXL&MdBY-$bL(Zq$2wDDJea#U11J`ShD5E#qVC%xe?|0kbP z9uAk|QY7X0nB!XbAAfSBB94z=qw~BAH>Jam(uF@cQx*1)U&RTp`ipXicGRvV_@q;# zOAKn5pml*&a16Hmhoz-@36T*0m4=qL6xC30RLQ_T9hPhG!$+a2;e>hgJ&fsc@D!E? z11U}>O{z;J$2rA+WHUJV1?pukIf$Wux7)2A<8b-Zd&fPE$zwk_!G7SVbEx;xj2e4V zj6L9UPZ6I)G7FIbauP%aa~Vdt*)+~6so7;$k9NEH-Of}{cBz-~3!DaHS8&Ih(&X}x1Z5kq!+0p*-4eY!?Ewqd zs!HOWkK`7jV#y4DLwh%mI?@haIsEQ=sZV<~&p^h0Q@pzHwDxL2r!JMAqxX6f*-X18 zGLn#<%zy?=rj>Qa=~d9q%MzysZ=XCfdNI z<)bF7bMd{!R;qTq5=x^b1iss(OUVDqH8j!dke{GQfvN}OZC3R@8a6-Bx{SB-9Cewr zWZdpO_`corzH~d@l?0mLz8KmuO!Eoe_p!^t@4--Bt_>o7p891PM53Q`UW4}~NNT5d zLZ$+KPT zeI!>sDenQjHo!ZLSY|`&McErxqf&X_>m&ku zut z6=Jc^Y|56Fk1CHrVddlnNAA!B;1tQiJB}o|IGH@E1TF3xgV_F;CMQxO9uRW$8wcA( zjOi)-yA*doGj2r7SB`i;Klb2rBkMW)FzYF&z_m!ZujC|(wE6-)99)jn{Cr0aY`V1_ z0%u9nQu9wx_nRL@x43ml(E|z>1V_ZQ}9?>K^JY^*L>#QcXHK-sNBF9y@S% za9`YqzrwEso^BuS(YhF2uHNN?>6z?q#ra&V#j+hS5>M}hb1hYrgtg%Z%(WKOWMT|I zIR!2RzLq@ffv7I^yHF3ms~1%fwY##Ksv0}|(b&b0E7nx~S+S<5wc?^?z^Fu@U|>Eb z{X&ZXgkK|l*wy&P#Q0soZyYZ6+JnVP(PFWBxs52E;uB%PLm=Jb9b4g=CE>A)< zZ>-2v;BQaR!~aU6y6W)+PxI0#O_nGfTR~Pevd@gg_o9p-jWOzoF#}0esi0)AM!a>* zH2S?(?6vg!lt2becW}IrO@g8$dr@|g03WnV2*NzVF5#J|#>;goJZzlMNbNDB$k*E= z8%FL*CPzLXh&fp%N|}nWunkRkMzJm%^(HK(P1%vHC)22f6^UjiEN0YvFziqpy2dgT zhYbdU?b~4zqu+!3V_LIt3aLW3-bzZ%t+$r!m(qzSY~NFW4JmwCp?c{$Oi<{4&>-Xz zThD}(Q+g2!)HrBux4k*4StsBM(tPW9$O3Ubc~lEe#2rV_|4}2<%Tu5$sbRYrjCEv_ z9EDq*dJC70Wo16wMzc8*H810{(9mO=R=rF8ra?BAKk10N%+4G6Y$%@?swMQ-iwL?d zviWA4Ai+VACXJosx=ix$n)6llv1OJ>#BAPZ^OcnuWquO+`gfzyovLGa6#nMw0qnL($BP$DQqt#!SvBctKm+_CF?b{1` z?Zn5Y$qPg;Yxp;Hj&vl$-53lU3lDPlIRMy$i_ z@F(7lIH(8U4}J_WWj}}i{WbW@-=tZ9-U3>hwNv|nh!ezrvbtnph-iz!H3aTyGIv58 zBBP9El9AB0WERCaBQ&-^FrUd1KncS6U?!Vy&3kbwmu$`DTRO6Ns7QDPOm&?(Bh;E; zATDXo@z#!fTQ1cC*Ak3N8WqjAPllis?CdbpGyUA>@4y_yvvMYj$J(>NFO#JwT5&RK zGIs!9zbTK`;+36wd8Wx$v8uQKivHeJVY?|*?@m>OGpz=L)6Z+>uHJC`yqcPHRSoA; zo8*@1)0&M_x2~!P7*dgN1)sYA*IY77a=*llHiI1F&N7!p;#Py*XtWzR0+?qRjZ@;0 zNZgp04LsA-V>I?O8BIomWH6}LZa_$M!ci`11klpPx$!)MY_G1A@lTTIS9b9-6aIy5 zPNz+>7)@@Qi+6L5LX3#0o)!uBtO!?Bgje)bM9N};=AKl4IBg^2*$3^b2D910RqY?Q zuS&t4yf0e z@z2OVppCgjmS@Pg=|P*>Y?BN|eU6@fpM8A?v6zY@N z1M|ABKFJABBHfYjb8?+Qp3z)sBq5TF4Y{y*EbrWZT^t=&6PGv9wl=o^I(ZX8p@U38 zfXB-Q}1vX^P+?u!yf&tzRQvw0X02m(Trk4td1|4NaahN(bEktn{h6 z(PsM^95&Yw3;WV$TP3sxbbg$E(42(pMbJszutGFaWG}A;tu56^jeg8#7wTC-m#09~vi!N&&MwAM~8|X^l$?a#=f~nIX%2hebaw>C8;7`-C^YAE`!r2NtwhznoAXr*N3aa zHh;ixlg^1J;*;jol3J3V3u|4v#oO7HoKxotNafBzu4>AHs_d-7XWkH;{9d~qY`RoF z_fhAIOdq%UYTUSq)#}dgvZA=}sD(3uvy>QNqUiC@dWc-BX>5#wE$; zG`PySp*h|Zkff-)F4#0#o0*Z^l({o1LZLA-)BZPk2)68Wh<`6JqdijRag|E}ce+2; z+~~^2+~r*AZKB4no|21HMk-JNZS_Wpu9!xI#*q|-Tw1dU1=6%R2_9Nf#Z*ZZWvZdp z4%8Z{_CDSQ^%vcB_`2f{vy$|MEg-bC>TcEyto!9|Qm54wTG_!-G z+ZhfXQGb+R4cxQ1Uju|$EleJmjMZfAV4(@C8 z|DYYAUGpOyj-tXxM5wf95~GgCpgDn%UHF8M0r0H8GY0pG^c4R1$hsV?7uvW~Pplf* z!kD}?ZL_-3s*;auuF1lx2DyN6gV|~fQiUN9(3<#OLV7O@pQU|TP3u<>(&87K7OY2iy_8ATGV~{hf)-6(%&PA`3&Jh=O+M_m`ZA;;O znkLfO{6D$P>~;PG=PGSms2)$1p3s=Bu0KtcCXv4L1z3G|g0lHQ={u zBiApHv((%w+@-=4hWf~T$wz?+@Dbsqe?P>mP>kcU)WlxQ5<|Z2l*VZ`LI_ zuQ<2>ZDZmE%73E5*H6$pyaZ7%dp-Oj`^ACp7<6d6&$=H$n`t z*`xImvk`Wa)?_x#F}gfP=p&u^w5LTr3yvL44Us<4)R0rv&t#j+ZB_qE`cA>co8yg* zabAa|-8J#THM#A&JU{?EdF)KtLXXY!Mf<>Oc>Hw!ig>cu9h z9V)HxnM2c#Np1R}X06gA2FMWTL$H^A*j}_Q(6JQT;cf0{N&9@>9h®9K?4Tre1; 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

9po(mC;xgZJxI5gC)~i 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

R0AMv>n9kBSrZWQv zj8gze2D43>%1lq=EoEYKXnJNcW0)Apj%Q300}~mniO~t`cy@Yp@8}R8Su?eG2E#oz zY#1FM%pQ@b);e`ybSzV&eM06J7y%kZ ze0N}M2;9eXc2XW1p(e}wMyE$+1|2yr1@mz~0B`3wNBcx}Wl4Gh8cbcvLHEh*B$Sh*B@x=+zqSq9$vZnV2gBzYHA3 z3K=-6gGafR<8>4Jv@cE!@8tzE;i`;&Z(^DkEHmT# z$Fqld*>pHN$y<~*4rATWe{-%-lT{962dRO|^Z;-;eq|7Cm_mgqaH&|()5hTeJQ|qF zC^U>%Hl~s6%;dhYfvG8Rf99yPcWhuE7W>ic%(Mc;K{Hd_vbk59+CMrjO=q)XB4&{l zy{5&zZxZteeVd%5`eto9(*wtRk=GFq42+ATQ-`E|qkE_2(P6wYY&igwIRq?&b!-Lt z#45{-0en-^BoL&$d0=m5`lx((U<~~*9M0kkG#2!A;L-8@a{pv@V&tfi7BXOv&J`LA zW25^s4FJv*FYrr(6~6>PX2u57$|R;Xz=M$*15ncPzy#1`TH&XftZ`s`crrUWj2l|P zJ}@?Vcwl@V{jbTUEqRx~&`0%knYPWBQOh`yJ)D`$?%iveo*Wp?92l6~FYN`IFww|! zoNSoN&WsNmXq}Hphk@p#siWgVSbzIQ$7LL85GDbXf#Ece_0-hBzD(Kx%(*`!_H0;b zMr%QZCNnizQ?7`|Lj&V!nnaliqB59z*g^~pO;4GovSTy+mV`C6Um}7F>t&6k5IU~W@Ue-PX$_dL*#X8G-8XInmzOjr9qJ1n2en@-h*gG(U36b5ezocLsCNM$FT5Vzj97L$l_}of% z&^($sP;($Vp4~S&aDcGi*uY@!HZ2zdy|8hkVQT-;iHvP}AUima)qfz@Ms3|IG>>Nn zGxA|Vh11G3mN`~{;c#YjFe~--uU(USTdQy75A+`C7g}#EOVOdtm_BH{3^*K}88;jo z86BBX1~VgI5;Ml($X^j< literal 0 HcmV?d00001 diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/Entypo.ttf b/client/react-native/android/app/src/main/assets/fonts/Entypo.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/Entypo.ttf rename to client/react-native/android/app/src/main/assets/fonts/Entypo.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/EvilIcons.ttf b/client/react-native/android/app/src/main/assets/fonts/EvilIcons.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/EvilIcons.ttf rename to client/react-native/android/app/src/main/assets/fonts/EvilIcons.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/Feather.ttf b/client/react-native/android/app/src/main/assets/fonts/Feather.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/Feather.ttf rename to client/react-native/android/app/src/main/assets/fonts/Feather.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/FontAwesome.ttf b/client/react-native/android/app/src/main/assets/fonts/FontAwesome.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/FontAwesome.ttf rename to client/react-native/android/app/src/main/assets/fonts/FontAwesome.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/client/react-native/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf similarity index 89% rename from client/react-native/mobile/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf rename to client/react-native/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf index 2ffa92d4fadb1ccccee6568190d19de33a649c87..ecbc761ef8cbce6bed98c0d4abb01f6dac5c471e 100644 GIT binary patch delta 8709 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 AlK=n! delta 943 zcma)(TWHf@6vxk(rc1K4X*<)j#g8EJ&hPwl@_pxg`DgSV zF?){~Hmi58>{|uknE*Jxp|Y#I(|z`4CjiXiFe*@EAF%f0{h@v3{$0`CzPA7u900bq!GVK^rl0RE0$dIO zP*Z^5+|&~3v44KmR#)LGumnB@@b>7$`oFnOqH~0;22dZdm7UcIfftSlGd{^T?ic*G z7KRtz5Vwdki~1x;7|ZTMqkBr>OJ>c{Bn z=&e|1tQPyc)V=gdM^DFtPQ7z%S=+L~xEvpfHxk2%H=3kf*S;r9$?@cu)cGz`ck65Q zF?}wVHq(=aV2otQ%=XNOY$ZFhyp(g~%-o*b?c8iWR1gZ4qN6xoa+J=L8r_xdXJ*{o zXdW=f>vugTTrun#pc?QH1|3$wI)F$@2q3;iX_wWsM>p~)C3roV3$J!`SJ4+cMcEsE zix}IQ{6DGv*^4U87WWH1R&L^%rJ6WxsV3fA$^y3C1~C5={Xmm-QNAi}uYm^?{6m$f zBDZ)wywKI2GKxr7ZU1iU>-zl-=;cH68ZSvavM4tC2$CdDn$tKT)0Fteto0J3@rfi5 zPmm@_ye7yxTRfAjl6dSC+K(QA528?l&Da_*-$LQ&K(bmyafGKf{fX*ESIW>;>q5Mc zGBT+k^70gis1{05qj3~f(|QSIWDb{oLURQXcGk%JS!q3vkei{n)-|mh#b6hzc4}A^ zDTbk9S%zawB`?$V5bbhqak}V`otE>8)|+5yubXkPgo8dtI|$arxV~GH;iO&aqkjRm#>p-K diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/client/react-native/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf similarity index 73% rename from client/react-native/mobile/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf rename to client/react-native/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf index a1da1bbb5cfe3dada307313edf776231171c80e9..2a05512698c686d42e010ac9988efa86d10cdd22 100644 GIT binary patch delta 29453 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 VQnm3F{udDy?W*-VpL@;Y{{h+D^ELng diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/Foundation.ttf b/client/react-native/android/app/src/main/assets/fonts/Foundation.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/Foundation.ttf rename to client/react-native/android/app/src/main/assets/fonts/Foundation.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/Ionicons.ttf b/client/react-native/android/app/src/main/assets/fonts/Ionicons.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/Ionicons.ttf rename to client/react-native/android/app/src/main/assets/fonts/Ionicons.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/client/react-native/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf similarity index 84% rename from client/react-native/mobile/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf rename to client/react-native/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf index 7845112675481a1feaec41905f7bf47d55cb8ff3..42a11c8830e4b3aaa2e6c92571b90af09b9b4b9f 100644 GIT binary patch delta 53185 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%0D^ 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 diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/MaterialIcons.ttf b/client/react-native/android/app/src/main/assets/fonts/MaterialIcons.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/MaterialIcons.ttf rename to client/react-native/android/app/src/main/assets/fonts/MaterialIcons.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/Octicons.ttf b/client/react-native/android/app/src/main/assets/fonts/Octicons.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/Octicons.ttf rename to client/react-native/android/app/src/main/assets/fonts/Octicons.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/client/react-native/android/app/src/main/assets/fonts/SimpleLineIcons.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/SimpleLineIcons.ttf rename to client/react-native/android/app/src/main/assets/fonts/SimpleLineIcons.ttf diff --git a/client/react-native/mobile/android/app/src/main/assets/fonts/Zocial.ttf b/client/react-native/android/app/src/main/assets/fonts/Zocial.ttf similarity index 100% rename from client/react-native/mobile/android/app/src/main/assets/fonts/Zocial.ttf rename to client/react-native/android/app/src/main/assets/fonts/Zocial.ttf diff --git a/client/react-native/mobile/android/app/src/main/java/chat/berty/core/CoreModule.java b/client/react-native/android/app/src/main/java/chat/berty/core/CoreModule.java similarity index 100% rename from client/react-native/mobile/android/app/src/main/java/chat/berty/core/CoreModule.java rename to client/react-native/android/app/src/main/java/chat/berty/core/CoreModule.java diff --git a/client/react-native/mobile/android/app/src/main/java/chat/berty/core/CorePackage.java b/client/react-native/android/app/src/main/java/chat/berty/core/CorePackage.java similarity index 100% rename from client/react-native/mobile/android/app/src/main/java/chat/berty/core/CorePackage.java rename to client/react-native/android/app/src/main/java/chat/berty/core/CorePackage.java diff --git a/client/react-native/mobile/android/app/src/main/java/chat/berty/main/MainActivity.java b/client/react-native/android/app/src/main/java/chat/berty/main/MainActivity.java similarity index 100% rename from client/react-native/mobile/android/app/src/main/java/chat/berty/main/MainActivity.java rename to client/react-native/android/app/src/main/java/chat/berty/main/MainActivity.java diff --git a/client/react-native/mobile/android/app/src/main/java/chat/berty/main/MainApplication.java b/client/react-native/android/app/src/main/java/chat/berty/main/MainApplication.java similarity index 84% rename from client/react-native/mobile/android/app/src/main/java/chat/berty/main/MainApplication.java rename to client/react-native/android/app/src/main/java/chat/berty/main/MainApplication.java index 618dd8517d..f820216763 100644 --- a/client/react-native/mobile/android/app/src/main/java/chat/berty/main/MainApplication.java +++ b/client/react-native/android/app/src/main/java/chat/berty/main/MainApplication.java @@ -6,6 +6,9 @@ import com.oblador.vectoricons.VectorIconsPackage; import com.pusherman.networkinfo.RNNetworkInfoPackage; import com.imagepicker.ImagePickerPackage; +import com.oblador.vectoricons.VectorIconsPackage; +import com.pusherman.networkinfo.RNNetworkInfoPackage; +import com.imagepicker.ImagePickerPackage; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.shell.MainReactPackage; @@ -28,6 +31,9 @@ public boolean getUseDeveloperSupport() { protected List getPackages() { return Arrays.asList( new MainReactPackage(), + new VectorIconsPackage(), + new RNNetworkInfoPackage(), + new ImagePickerPackage(), new CorePackage(), new VectorIconsPackage(), new RNNetworkInfoPackage(), diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/client/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to client/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/client/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to client/react-native/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/client/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to client/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/client/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to client/react-native/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/client/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to client/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/client/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to client/react-native/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/client/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to client/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/client/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to client/react-native/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/client/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to client/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/client/react-native/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/client/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to client/react-native/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/client/react-native/mobile/android/app/src/main/res/values/strings.xml b/client/react-native/android/app/src/main/res/values/strings.xml similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/values/strings.xml rename to client/react-native/android/app/src/main/res/values/strings.xml diff --git a/client/react-native/mobile/android/app/src/main/res/values/styles.xml b/client/react-native/android/app/src/main/res/values/styles.xml similarity index 100% rename from client/react-native/mobile/android/app/src/main/res/values/styles.xml rename to client/react-native/android/app/src/main/res/values/styles.xml diff --git a/client/react-native/mobile/android/build.gradle b/client/react-native/android/build.gradle similarity index 100% rename from client/react-native/mobile/android/build.gradle rename to client/react-native/android/build.gradle diff --git a/client/react-native/mobile/android/fastlane/Appfile b/client/react-native/android/fastlane/Appfile similarity index 100% rename from client/react-native/mobile/android/fastlane/Appfile rename to client/react-native/android/fastlane/Appfile diff --git a/client/react-native/mobile/android/fastlane/Fastfile b/client/react-native/android/fastlane/Fastfile similarity index 100% rename from client/react-native/mobile/android/fastlane/Fastfile rename to client/react-native/android/fastlane/Fastfile diff --git a/client/react-native/mobile/android/fastlane/README.md b/client/react-native/android/fastlane/README.md similarity index 100% rename from client/react-native/mobile/android/fastlane/README.md rename to client/react-native/android/fastlane/README.md diff --git a/client/react-native/mobile/android/gradle.properties b/client/react-native/android/gradle.properties similarity index 100% rename from client/react-native/mobile/android/gradle.properties rename to client/react-native/android/gradle.properties diff --git a/client/react-native/mobile/android/gradle/wrapper/gradle-wrapper.jar b/client/react-native/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from client/react-native/mobile/android/gradle/wrapper/gradle-wrapper.jar rename to client/react-native/android/gradle/wrapper/gradle-wrapper.jar diff --git a/client/react-native/mobile/android/gradle/wrapper/gradle-wrapper.properties b/client/react-native/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from client/react-native/mobile/android/gradle/wrapper/gradle-wrapper.properties rename to client/react-native/android/gradle/wrapper/gradle-wrapper.properties diff --git a/client/react-native/mobile/android/gradlew b/client/react-native/android/gradlew similarity index 100% rename from client/react-native/mobile/android/gradlew rename to client/react-native/android/gradlew diff --git a/client/react-native/mobile/android/gradlew.bat b/client/react-native/android/gradlew.bat similarity index 96% rename from client/react-native/mobile/android/gradlew.bat rename to client/react-native/android/gradlew.bat index aec99730b4..8a0b282aa6 100644 --- a/client/react-native/mobile/android/gradlew.bat +++ b/client/react-native/android/gradlew.bat @@ -1,90 +1,90 @@ -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windowz variants - -if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_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=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -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% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_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=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +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% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/client/react-native/mobile/android/keystores/BUCK b/client/react-native/android/keystores/BUCK similarity index 100% rename from client/react-native/mobile/android/keystores/BUCK rename to client/react-native/android/keystores/BUCK diff --git a/client/react-native/mobile/android/keystores/debug.keystore.properties b/client/react-native/android/keystores/debug.keystore.properties similarity index 100% rename from client/react-native/mobile/android/keystores/debug.keystore.properties rename to client/react-native/android/keystores/debug.keystore.properties diff --git a/client/react-native/mobile/android/settings.gradle b/client/react-native/android/settings.gradle similarity index 52% rename from client/react-native/mobile/android/settings.gradle rename to client/react-native/android/settings.gradle index 7d3c38a167..60a6c79458 100644 --- a/client/react-native/mobile/android/settings.gradle +++ b/client/react-native/android/settings.gradle @@ -1,4 +1,10 @@ rootProject.name = 'berty' +include ':react-native-vector-icons' +project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') +include ':react-native-network-info' +project(':react-native-network-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-network-info/android') +include ':react-native-image-picker' +project(':react-native-image-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-picker/android') include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') diff --git a/client/react-native/app.json b/client/react-native/app.json new file mode 100644 index 0000000000..6ca56dc237 --- /dev/null +++ b/client/react-native/app.json @@ -0,0 +1,4 @@ +{ + "name": "Berty", + "displayName": "Berty" +} \ No newline at end of file diff --git a/client/react-native/common/package.json b/client/react-native/common/package.json deleted file mode 100644 index 5ae211b61d..0000000000 --- a/client/react-native/common/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@berty/common", - "version": "0.0.1", - "description": "Berty's react native common", - "main": "index.js" -} diff --git a/client/react-native/common/registerServiceWorker.js b/client/react-native/common/registerServiceWorker.js index 4f6fa3e107..0147fb8b21 100644 --- a/client/react-native/common/registerServiceWorker.js +++ b/client/react-native/common/registerServiceWorker.js @@ -8,6 +8,10 @@ // To learn more about the benefits of this model, read https://goo.gl/KwvDNy. // This link also includes instructions on opting out of this behavior. +/** + * @jest-environment jsdom + */ + import fetch from 'whatwg-fetch' const isLocalhost = Boolean( diff --git a/client/react-native/common/yarn.lock b/client/react-native/common/yarn.lock deleted file mode 100644 index fb57ccd13a..0000000000 --- a/client/react-native/common/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - diff --git a/client/react-native/gomobile/.gitkeep b/client/react-native/gomobile/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/client/react-native/gomobile/Makefile b/client/react-native/gomobile/Makefile index f1070f6ba0..f0808a0a09 100644 --- a/client/react-native/gomobile/Makefile +++ b/client/react-native/gomobile/Makefile @@ -1,27 +1,33 @@ -PWD := $(shell pwd) +MAKEFILE_DIR := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) -CORE_PACKAGE := $(PWD)/../../../core -CORE_SOURCES := $(shell find $(CORE_PACKAGE) -type f -name "*.go") \ - $(shell find . -type f -name "*.go") -BUILD_PATCH_PATH := $(PWD)/../../../.circleci/docker +CORE_PACKAGE := $(MAKEFILE_DIR)/../../../core +CORE_SOURCES := $(shell find $(CORE_PACKAGE) -type f -name "*.go") \ + $(shell find . -type f -name "*.go") + +BUILD_PATCH_PATH := $(MAKEFILE_DIR)/../../../.circleci/docker GOPATH ?= $(HOME)/go -CGO_CPPFLAGS ?= -I$(PWD)/../../common/openssl/built/include +CGO_CPPFLAGS ?= -I$(MAKEFILE_DIR)/../../common/openssl/built/include + +LIBS_PATH := $(MAKEFILE_DIR)/../../common/openssl/built -LIBS_PATH := $(PWD)/../../common/openssl/built +IOS_BUILD_PATH := $(MAKEFILE_DIR)/../ios +IOS_LDFLAGS := -L$(LIBS_PATH)/ios -IOS_BUILD_PATH := $(PWD)/../mobile/ios -IOS_LDFLAGS := -L$(LIBS_PATH)/ios +ANDROID_NDK_HOME := /usr/local/share/android-ndk/ +ANDROID_ARCHS := aarch64 arm x86_64 x86 +ANDROID_LIBS_PATHS := $(addprefix $(LIBS_PATH)/android/, $(ANDROID_ARCHS)) +ANDROID_LDFLAGS := $(addprefix -L, $(ANDROID_LIBS_PATHS)) +ANDROID_BUILD_PATH := $(MAKEFILE_DIR)/../android/app/libs +ANDROID_BUILD := $(addprefix $(ANDROID_BUILD_PATH)/core., $(addsuffix .aar, $(ANDROID_ARCHS))) -ANDROID_NDK_HOME := /usr/local/share/android-ndk/ -ANDROID_ARCHS := aarch64 arm x86_64 x86 -ANDROID_LIBS_PATHS := $(addprefix $(LIBS_PATH)/android/, $(ANDROID_ARCHS)) -ANDROID_LDFLAGS := $(addprefix -L, $(ANDROID_LIBS_PATHS)) -ANDROID_BUILD_PATH := $(PWD)/../mobile/android/app/libs -ANDROID_BUILD := $(addprefix $(ANDROID_BUILD_PATH)/core., $(addsuffix .aar, $(ANDROID_ARCHS))) +GOTEST_TIMEOUT ?= 30s -GOTEST_TIMEOUT ?= 30s +.PHONY: help +help: + @echo "Gomobile commands:" + @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | grep -v / | sed 's/^/ $(HELP_MSG_PREFIX)make /' .PHONY: deps-osx deps-osx: @@ -39,8 +45,21 @@ deps: init: deps gomobile init -v -ndk $(ANDROID_NDK_HOME) -.PHONY: ios -ios: $(IOS_BUILD_PATH)/core.framework/Core +.PHONY: test +test: + go test -test.timeout $(GOTEST_TIMEOUT) -v ./... + +.PHONY: build.android +build.android: $(ANDROID_BUILD_PATH)/core.aar + +$(ANDROID_BUILD_PATH)/core.aar: $(CORE_SOURCES) + GO111MODULE=on go mod vendor + mkdir -p $(ANDROID_BUILD_PATH) + CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_LDFLAGS="$(ANDROID_LDFLAGS)" \ + gomobile bind -v -target=android -o $(ANDROID_BUILD_PATH)/core.aar . + +.PHONY: build.ios +build.ios: $(IOS_BUILD_PATH)/core.framework/Core $(IOS_BUILD_PATH)/core.framework/Core: $(CORE_SOURCES) GO111MODULE=on go mod vendor @@ -48,17 +67,25 @@ $(IOS_BUILD_PATH)/core.framework/Core: $(CORE_SOURCES) CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_LDFLAGS="$(IOS_LDFLAGS)" \ gomobile bind -v -target=ios -o $(IOS_BUILD_PATH)/core.framework . -.PHONY: android -android: $(ANDROID_BUILD_PATH)/core.aar +.PHONY: build +build: build.android build.ios -$(ANDROID_BUILD_PATH)/core.aar: $(CORE_SOURCES) - GO111MODULE=on go mod vendor - mkdir -p $(ANDROID_BUILD_PATH) - CGO_CPPFLAGS="$(CGO_CPPFLAGS)" CGO_LDFLAGS="$(ANDROID_LDFLAGS)" \ - gomobile bind -v -target=android -o $(ANDROID_BUILD_PATH)/core.aar . +.PHONY: clean.android +clean.android: + rm -rf $(ANDROID_BUILD_PATH)/core.aar -.PHONY: test -test: - go test -test.timeout $(GOTEST_TIMEOUT) -v ./... +.PHONY: clean.ios +clean.ios: + rm -rf $(IOS_BUILD_PATH)/core.framework + +.PHONY: clean +clean: clean.android clean.ios + +.PHONY: re.android +re.android: clean.android build.android + +.PHONY: re.ios +re.ios: clean.ios build.ios -build: android ios +.PHONY: re +re: clean build diff --git a/client/react-native/gomobile/package.json b/client/react-native/gomobile/package.json deleted file mode 100644 index 7bfadad34c..0000000000 --- a/client/react-native/gomobile/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "@berty/gomobile", - "version": "0.0.1", - "description": "Berty's react native gomobile", - "scripts": { - "build": "make build", - "android:build": "make android.build", - "ios:build": "make ios.build", - "start": "true" - } -} diff --git a/client/react-native/gomobile/yarn.lock b/client/react-native/gomobile/yarn.lock deleted file mode 100644 index fb57ccd13a..0000000000 --- a/client/react-native/gomobile/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - diff --git a/client/react-native/index.js b/client/react-native/index.js new file mode 100644 index 0000000000..42c63c6898 --- /dev/null +++ b/client/react-native/index.js @@ -0,0 +1 @@ +import './common' diff --git a/client/react-native/mobile/ios/berty-tvOS/Info.plist b/client/react-native/ios/berty-tvOS/Info.plist similarity index 100% rename from client/react-native/mobile/ios/berty-tvOS/Info.plist rename to client/react-native/ios/berty-tvOS/Info.plist diff --git a/client/react-native/mobile/ios/berty-tvOSTests/Info.plist b/client/react-native/ios/berty-tvOSTests/Info.plist similarity index 100% rename from client/react-native/mobile/ios/berty-tvOSTests/Info.plist rename to client/react-native/ios/berty-tvOSTests/Info.plist diff --git a/client/react-native/mobile/ios/berty.xcodeproj/project.pbxproj b/client/react-native/ios/berty.xcodeproj/project.pbxproj similarity index 85% rename from client/react-native/mobile/ios/berty.xcodeproj/project.pbxproj rename to client/react-native/ios/berty.xcodeproj/project.pbxproj index 2322df2959..fe46145592 100644 --- a/client/react-native/mobile/ios/berty.xcodeproj/project.pbxproj +++ b/client/react-native/ios/berty.xcodeproj/project.pbxproj @@ -5,14 +5,12 @@ }; objectVersion = 46; objects = { - /* Begin PBXBuildFile section */ 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; - 0422FEFDDC544525976ABFED /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2B5D27E5252244899403D47C /* FontAwesome5_Regular.ttf */; }; 133E29F31AD74F7200F7D852 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; 139105C61AF99C1200B5F7CC /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; @@ -22,10 +20,11 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 140ED2AC1D01E1AD002B40FF /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; - 178D61F1DE4F4D289FEC0B07 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 165DE059991944759015999E /* FontAwesome.ttf */; }; - 1A7C2FDDDF924BD3857CD66F /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 4B708943F7BA4873A25C673D /* Feather.ttf */; }; - 1C709F7764B9493EAE6C48EA /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CE4B5BA10EE44951967C4DA8 /* Foundation.ttf */; }; - 2795D4E7135D4BF2BBDBE975 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 13132FE8F7A04E12A5BA1E0B /* MaterialIcons.ttf */; }; + 15804C3171594FAD8EAFF7E8 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 04E7937ED9CF4AC0B7FCA7BA /* Octicons.ttf */; }; + 1602CB65A6F4468489AA576F /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = D3057E8AA2B04CB093CEC5A3 /* FontAwesome.ttf */; }; + 17BD5AB851A04E34AB404DA8 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 04D7EC08EAA3437A8CC092F3 /* MaterialIcons.ttf */; }; + 1DFA50AC0AA844B89687899D /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 79A0D7000718461284080F41 /* FontAwesome5_Brands.ttf */; }; + 25FAD9B3EEE04D409A9610FA /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 597349D7D2564BC6A6F835A0 /* FontAwesome5_Solid.ttf */; }; 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; @@ -38,27 +37,28 @@ 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */; }; 2D16E6881FA4F8E400B85C8A /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D16E6891FA4F8E400B85C8A /* libReact.a */; }; 2DF0FFEE2056DD460020B375 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA31DF850E9000B6D8A /* libReact.a */; }; - 3CF43BBF511D49BA85A5596B /* libRNImagePicker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1723FA72EE2642CC8B2BB388 /* libRNImagePicker.a */; }; + 332AAAC2C1B448C9BA3733FD /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6F3EDD80F55E47099C547289 /* Foundation.ttf */; }; + 3B7A603BB8C64BCC865E40A1 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1DA87E00DBD641BDBCDAF6A7 /* FontAwesome5_Regular.ttf */; }; + 49E4290CC7F2415998B3CEE3 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 34D4021F4FFA416DB205D7EF /* MaterialCommunityIcons.ttf */; }; + 5CA679621DE140FA934FA0D2 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CDF9925124584CE0AC91F2EC /* Feather.ttf */; }; 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; - 6E9F74FE768A42B09E52A27E /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1791E0D1F9B346C8A68607FA /* Octicons.ttf */; }; + 6D74F667495B440FA73132F9 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = FAE79814EB924BB0BC581997 /* Ionicons.ttf */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; - 8BE05731D4114D808A909334 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3CFF0EED95594F98B7AA6A50 /* Zocial.ttf */; }; - 8E4104F64A4D4265AEEC570E /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F667511A0660437B8CFB10EA /* libRNVectorIcons.a */; }; - 9178C24DF2D941DABC754314 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 46FAF9546D834A90A9D9AD9C /* FontAwesome5_Brands.ttf */; }; - A2B0F9E2DA59437BB76090B3 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = BD9D68487EDB415DB1F2605B /* MaterialCommunityIcons.ttf */; }; - AB44A868A1B240938308B0A3 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 47586ADB6E2F409CB1A4654A /* Entypo.ttf */; }; + 8D1BA426216CF8EA00FEF0AE /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D1BA425216CF8EA00FEF0AE /* libcrypto.a */; }; + 8D1BA428216CF8F700FEF0AE /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D1BA427216CF8F700FEF0AE /* libssl.a */; }; + 9DCA912C306A4EB7999DBF40 /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 425A4FFA83EC474E98FC26BE /* AntDesign.ttf */; }; + 9EEB23509F324CA688E76C34 /* libRNImagePicker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 39EFE5A2E0D043059AB11785 /* libRNImagePicker.a */; }; + A0B8B30261534026846A215A /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E49DE5C99E2B44679EBC6026 /* SimpleLineIcons.ttf */; }; + A63BD0C1C3A04C79B733654F /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 35E3F92CA4FA4713B8C5E9E7 /* libRNVectorIcons.a */; }; ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */; }; - CB04920C0A13423280692377 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 12B6AC934DDA4879A4331729 /* SimpleLineIcons.ttf */; }; - D1F574B813194C638DBB8677 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 1B56A66221FD44708D3DF553 /* EvilIcons.ttf */; }; - D2C37F48A843479C88E01010 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DD138C911CB146FD8E521DC7 /* Ionicons.ttf */; }; - F18833A248144C8FBB4B7EA0 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F4414BBA1619425594FBE61D /* FontAwesome5_Solid.ttf */; }; - F81633C3215E66D000425F92 /* libRNImagePicker.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F81633C1215E66A300425F92 /* libRNImagePicker.a */; }; + AF51D23FB3DB4315A5D22493 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 9057A9D47783465592889951 /* Entypo.ttf */; }; + E032F97CCBE84C2BB7825966 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 35FDB99112F94DFCA6E26B81 /* EvilIcons.ttf */; }; F8799D7A2136F44B003B9FD7 /* CoreModule.m in Sources */ = {isa = PBXBuildFile; fileRef = F8799D752136F3C5003B9FD7 /* CoreModule.m */; }; F8799D7B2136F44E003B9FD7 /* CoreModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8799D782136F3EA003B9FD7 /* CoreModule.swift */; }; - F8799E3121395847003B9FD7 /* libRNNetworkInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F8799E2F21395818003B9FD7 /* libRNNetworkInfo.a */; }; + F8B69118C9334208A17CF8D5 /* libRNVectorIcons-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F7C5FF30E8474A549A627CF2 /* libRNVectorIcons-tvOS.a */; }; F8EF7F482136A10600FDCCB5 /* core.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F8EF7F472136A10500FDCCB5 /* core.framework */; }; - F8EF7F7E2136A27E00FDCCB5 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F8EF7F7D2136A27E00FDCCB5 /* libssl.a */; }; - F8EF7F802136A5AA00FDCCB5 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F8EF7F7F2136A5AA00FDCCB5 /* libcrypto.a */; }; + FA1A40EC8DE349799EA2E24D /* libRNNetworkInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4101FF330B604854B1D20B9B /* libRNNetworkInfo.a */; }; + FBF7330BA5D047C7B9146BBF /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A2E83CA200C346FAB977AD76 /* Zocial.ttf */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -328,40 +328,40 @@ remoteGlobalIDString = 58B5119B1A9E6C1200147676; remoteInfo = RCTText; }; - 8D63B06A2166335D00442190 /* PBXContainerItemProxy */ = { + 8DC38236216D3CDA00FD3DBB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 85FA2536A2C744CF86F40F35 /* RNImagePicker.xcodeproj */; + containerPortal = 31569589202648C1BFBF88CF /* RNImagePicker.xcodeproj */; proxyType = 2; remoteGlobalIDString = 014A3B5C1C6CF33500B6D375; remoteInfo = RNImagePicker; }; - ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = { + 8DC3823A216D3CDA00FD3DBB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; + containerPortal = 8C739B6C1E9A43D68AEB09EE /* RNVectorIcons.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 358F4ED71D1E81A9004DF814; - remoteInfo = RCTBlob; + remoteGlobalIDString = 5DBEB1501B18CEA900B34395; + remoteInfo = RNVectorIcons; }; - F81633C0215E66A300425F92 /* PBXContainerItemProxy */ = { + 8DC3823C216D3CDA00FD3DBB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = F81633BC215E66A200425F92 /* RNImagePicker.xcodeproj */; + containerPortal = 8C739B6C1E9A43D68AEB09EE /* RNVectorIcons.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 014A3B5C1C6CF33500B6D375; - remoteInfo = RNImagePicker; + remoteGlobalIDString = A39873CE1EA65EE60051E01A; + remoteInfo = "RNVectorIcons-tvOS"; }; - F8799E2E21395818003B9FD7 /* PBXContainerItemProxy */ = { + 8DC38241216D3D1E00FD3DBB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = F8799E0521395818003B9FD7 /* RNNetworkInfo.xcodeproj */; + containerPortal = 8B2F3209AFCC4A368F2E825D /* RNNetworkInfo.xcodeproj */; proxyType = 2; remoteGlobalIDString = 045BEB3C1B52EA6A0013C1B9; remoteInfo = RNNetworkInfo; }; - F89E8F63212B11DF00F907A3 /* PBXContainerItemProxy */ = { + ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 9E9EB990FABF44D99028EA66 /* RNVectorIcons.xcodeproj */; + containerPortal = ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 5DBEB1501B18CEA900B34395; - remoteInfo = RNVectorIcons; + remoteGlobalIDString = 358F4ED71D1E81A9004DF814; + remoteInfo = RCTBlob; }; /* End PBXContainerItemProxy section */ @@ -373,8 +373,8 @@ 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTNetwork.xcodeproj; path = "../node_modules/react-native/Libraries/Network/RCTNetwork.xcodeproj"; sourceTree = ""; }; 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVibration.xcodeproj; path = "../node_modules/react-native/Libraries/Vibration/RCTVibration.xcodeproj"; sourceTree = ""; }; 00E356EE1AD99517003FC87E /* bertyTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = bertyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 12B6AC934DDA4879A4331729 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; }; - 13132FE8F7A04E12A5BA1E0B /* 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 = ""; }; + 04D7EC08EAA3437A8CC092F3 /* 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 = ""; }; + 04E7937ED9CF4AC0B7FCA7BA /* 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 = ""; }; 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 = ""; }; 13B07F961A680F5B00A75B9A /* berty.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = berty.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -385,37 +385,39 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = berty/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = berty/main.m; sourceTree = ""; }; 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; - 165DE059991944759015999E /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; }; - 1723FA72EE2642CC8B2BB388 /* libRNImagePicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNImagePicker.a; sourceTree = ""; }; - 1791E0D1F9B346C8A68607FA /* 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 = ""; }; - 1B56A66221FD44708D3DF553 /* 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 = ""; }; - 2B5D27E5252244899403D47C /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; }; + 1DA87E00DBD641BDBCDAF6A7 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Regular.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf"; sourceTree = ""; }; 2D02E47B1E0B4A5D006451C7 /* berty-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "berty-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D02E4901E0B4A5D006451C7 /* berty-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "berty-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 2D16E6891FA4F8E400B85C8A /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 3CFF0EED95594F98B7AA6A50 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; }; - 46FAF9546D834A90A9D9AD9C /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; }; - 47586ADB6E2F409CB1A4654A /* 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 = ""; }; - 4B708943F7BA4873A25C673D /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = ""; }; + 31569589202648C1BFBF88CF /* RNImagePicker.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNImagePicker.xcodeproj; path = "../node_modules/react-native-image-picker/ios/RNImagePicker.xcodeproj"; sourceTree = ""; }; + 34D4021F4FFA416DB205D7EF /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; }; + 35E3F92CA4FA4713B8C5E9E7 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; + 35FDB99112F94DFCA6E26B81 /* 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 = ""; }; + 39EFE5A2E0D043059AB11785 /* libRNImagePicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNImagePicker.a; sourceTree = ""; }; + 4101FF330B604854B1D20B9B /* libRNNetworkInfo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNNetworkInfo.a; sourceTree = ""; }; + 425A4FFA83EC474E98FC26BE /* AntDesign.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = AntDesign.ttf; path = "../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf"; sourceTree = ""; }; + 597349D7D2564BC6A6F835A0 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; }; 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTAnimation.xcodeproj; path = "../node_modules/react-native/Libraries/NativeAnimation/RCTAnimation.xcodeproj"; sourceTree = ""; }; + 6F3EDD80F55E47099C547289 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; }; 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 79A0D7000718461284080F41 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Brands.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf"; sourceTree = ""; }; 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; - 85FA2536A2C744CF86F40F35 /* RNImagePicker.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNImagePicker.xcodeproj; path = "../../node_modules/react-native-image-picker/ios/RNImagePicker.xcodeproj"; sourceTree = ""; }; - 9E9EB990FABF44D99028EA66 /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; + 8B2F3209AFCC4A368F2E825D /* RNNetworkInfo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNNetworkInfo.xcodeproj; path = "../node_modules/react-native-network-info/ios/RNNetworkInfo.xcodeproj"; sourceTree = ""; }; + 8C739B6C1E9A43D68AEB09EE /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; + 8D1BA425216CF8EA00FEF0AE /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = ../../common/openssl/built/ios/libcrypto.a; sourceTree = ""; }; + 8D1BA427216CF8F700FEF0AE /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = ../../common/openssl/built/ios/libssl.a; sourceTree = ""; }; + 9057A9D47783465592889951 /* 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 = ""; }; + A2E83CA200C346FAB977AD76 /* Zocial.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Zocial.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Zocial.ttf"; sourceTree = ""; }; ADBDB91F1DFEBF0600ED6528 /* RCTBlob.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTBlob.xcodeproj; path = "../node_modules/react-native/Libraries/Blob/RCTBlob.xcodeproj"; sourceTree = ""; }; - BD9D68487EDB415DB1F2605B /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; }; - CE4B5BA10EE44951967C4DA8 /* Foundation.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Foundation.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Foundation.ttf"; sourceTree = ""; }; - DD138C911CB146FD8E521DC7 /* 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 = ""; }; - F4414BBA1619425594FBE61D /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome5_Solid.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf"; sourceTree = ""; }; - F667511A0660437B8CFB10EA /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; - F81633BC215E66A200425F92 /* RNImagePicker.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNImagePicker.xcodeproj; path = "../../node_modules/react-native-image-picker/ios/RNImagePicker.xcodeproj"; sourceTree = ""; }; + CDF9925124584CE0AC91F2EC /* Feather.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Feather.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Feather.ttf"; sourceTree = ""; }; + D3057E8AA2B04CB093CEC5A3 /* FontAwesome.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = FontAwesome.ttf; path = "../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf"; sourceTree = ""; }; + E49DE5C99E2B44679EBC6026 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = SimpleLineIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf"; sourceTree = ""; }; + F7C5FF30E8474A549A627CF2 /* libRNVectorIcons-tvOS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = "libRNVectorIcons-tvOS.a"; sourceTree = ""; }; F8799D752136F3C5003B9FD7 /* CoreModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CoreModule.m; sourceTree = ""; }; F8799D772136F3EA003B9FD7 /* berty-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "berty-Bridging-Header.h"; sourceTree = ""; }; F8799D782136F3EA003B9FD7 /* CoreModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreModule.swift; sourceTree = ""; }; - F8799E0521395818003B9FD7 /* RNNetworkInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNNetworkInfo.xcodeproj; path = "../../node_modules/react-native-network-info/ios/RNNetworkInfo.xcodeproj"; sourceTree = ""; }; F8EF7F472136A10500FDCCB5 /* core.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = core.framework; sourceTree = ""; }; - F8EF7F7D2136A27E00FDCCB5 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = ../../../common/openssl/built/ios/libssl.a; sourceTree = ""; }; - F8EF7F7F2136A5AA00FDCCB5 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = ../../../common/openssl/built/ios/libcrypto.a; sourceTree = ""; }; + FAE79814EB924BB0BC581997 /* 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 = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -431,15 +433,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F81633C3215E66D000425F92 /* libRNImagePicker.a in Frameworks */, - F8799E3121395847003B9FD7 /* libRNNetworkInfo.a in Frameworks */, - F8EF7F802136A5AA00FDCCB5 /* libcrypto.a in Frameworks */, - F8EF7F7E2136A27E00FDCCB5 /* libssl.a in Frameworks */, + 8D1BA428216CF8F700FEF0AE /* libssl.a in Frameworks */, ADBDB9381DFEBF1600ED6528 /* libRCTBlob.a in Frameworks */, 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, F8EF7F482136A10600FDCCB5 /* core.framework in Frameworks */, 146834051AC3E58100842450 /* libReact.a in Frameworks */, 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */, + 8D1BA426216CF8EA00FEF0AE /* libcrypto.a in Frameworks */, 00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */, 00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */, 00C302E81ABCBA2D00DB3ED1 /* libRCTImage.a in Frameworks */, @@ -449,8 +449,9 @@ 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, - 8E4104F64A4D4265AEEC570E /* libRNVectorIcons.a in Frameworks */, - 3CF43BBF511D49BA85A5596B /* libRNImagePicker.a in Frameworks */, + 9EEB23509F324CA688E76C34 /* libRNImagePicker.a in Frameworks */, + FA1A40EC8DE349799EA2E24D /* libRNNetworkInfo.a in Frameworks */, + A63BD0C1C3A04C79B733654F /* libRNVectorIcons.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -466,6 +467,7 @@ 2D02E4C61E0B4AEC006451C7 /* libRCTSettings-tvOS.a in Frameworks */, 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, + F8B69118C9334208A17CF8D5 /* libRNVectorIcons-tvOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -582,9 +584,8 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( - F81633BC215E66A200425F92 /* RNImagePicker.xcodeproj */, - F8EF7F7F2136A5AA00FDCCB5 /* libcrypto.a */, - F8EF7F7D2136A27E00FDCCB5 /* libssl.a */, + 8D1BA427216CF8F700FEF0AE /* libssl.a */, + 8D1BA425216CF8EA00FEF0AE /* libcrypto.a */, F8EF7F472136A10500FDCCB5 /* core.framework */, 2D16E6891FA4F8E400B85C8A /* libReact.a */, ); @@ -603,20 +604,21 @@ 6E762EC1696A4D73A16C7F86 /* Resources */ = { isa = PBXGroup; children = ( - 47586ADB6E2F409CB1A4654A /* Entypo.ttf */, - 1B56A66221FD44708D3DF553 /* EvilIcons.ttf */, - 4B708943F7BA4873A25C673D /* Feather.ttf */, - 165DE059991944759015999E /* FontAwesome.ttf */, - 46FAF9546D834A90A9D9AD9C /* FontAwesome5_Brands.ttf */, - 2B5D27E5252244899403D47C /* FontAwesome5_Regular.ttf */, - F4414BBA1619425594FBE61D /* FontAwesome5_Solid.ttf */, - CE4B5BA10EE44951967C4DA8 /* Foundation.ttf */, - DD138C911CB146FD8E521DC7 /* Ionicons.ttf */, - BD9D68487EDB415DB1F2605B /* MaterialCommunityIcons.ttf */, - 13132FE8F7A04E12A5BA1E0B /* MaterialIcons.ttf */, - 1791E0D1F9B346C8A68607FA /* Octicons.ttf */, - 12B6AC934DDA4879A4331729 /* SimpleLineIcons.ttf */, - 3CFF0EED95594F98B7AA6A50 /* Zocial.ttf */, + 425A4FFA83EC474E98FC26BE /* AntDesign.ttf */, + 9057A9D47783465592889951 /* Entypo.ttf */, + 35FDB99112F94DFCA6E26B81 /* EvilIcons.ttf */, + CDF9925124584CE0AC91F2EC /* Feather.ttf */, + D3057E8AA2B04CB093CEC5A3 /* FontAwesome.ttf */, + 79A0D7000718461284080F41 /* FontAwesome5_Brands.ttf */, + 1DA87E00DBD641BDBCDAF6A7 /* FontAwesome5_Regular.ttf */, + 597349D7D2564BC6A6F835A0 /* FontAwesome5_Solid.ttf */, + 6F3EDD80F55E47099C547289 /* Foundation.ttf */, + FAE79814EB924BB0BC581997 /* Ionicons.ttf */, + 34D4021F4FFA416DB205D7EF /* MaterialCommunityIcons.ttf */, + 04D7EC08EAA3437A8CC092F3 /* MaterialIcons.ttf */, + 04E7937ED9CF4AC0B7FCA7BA /* Octicons.ttf */, + E49DE5C99E2B44679EBC6026 /* SimpleLineIcons.ttf */, + A2E83CA200C346FAB977AD76 /* Zocial.ttf */, ); name = Resources; sourceTree = ""; @@ -633,7 +635,6 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - F8799E0521395818003B9FD7 /* RNNetworkInfo.xcodeproj */, 5E91572D1DD0AC6500FF2AA8 /* RCTAnimation.xcodeproj */, 146833FF1AC3E56700842450 /* React.xcodeproj */, 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */, @@ -646,8 +647,9 @@ 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, - 9E9EB990FABF44D99028EA66 /* RNVectorIcons.xcodeproj */, - 85FA2536A2C744CF86F40F35 /* RNImagePicker.xcodeproj */, + 31569589202648C1BFBF88CF /* RNImagePicker.xcodeproj */, + 8B2F3209AFCC4A368F2E825D /* RNNetworkInfo.xcodeproj */, + 8C739B6C1E9A43D68AEB09EE /* RNVectorIcons.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -670,7 +672,7 @@ 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, 6E762EC1696A4D73A16C7F86 /* Resources */, - F89E8F3A212B11D800F907A3 /* Recovered References */, + 8DC3820B216D3CD800FD3DBB /* Recovered References */, ); indentWidth = 2; sourceTree = ""; @@ -688,72 +690,67 @@ name = Products; sourceTree = ""; }; - 8D63B0672166335D00442190 /* Products */ = { + 8DC3820B216D3CD800FD3DBB /* Recovered References */ = { isa = PBXGroup; children = ( - 8D63B06B2166335D00442190 /* libRNImagePicker.a */, + 39EFE5A2E0D043059AB11785 /* libRNImagePicker.a */, + 4101FF330B604854B1D20B9B /* libRNNetworkInfo.a */, + 35E3F92CA4FA4713B8C5E9E7 /* libRNVectorIcons.a */, + F7C5FF30E8474A549A627CF2 /* libRNVectorIcons-tvOS.a */, ); - name = Products; + name = "Recovered References"; sourceTree = ""; }; - ADBDB9201DFEBF0600ED6528 /* Products */ = { + 8DC38231216D3CDA00FD3DBB /* Products */ = { isa = PBXGroup; children = ( - ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */, - 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */, + 8DC3823B216D3CDA00FD3DBB /* libRNVectorIcons.a */, + 8DC3823D216D3CDA00FD3DBB /* libRNVectorIcons-tvOS.a */, ); name = Products; sourceTree = ""; }; - F81633BD215E66A200425F92 /* Products */ = { + 8DC38233216D3CDA00FD3DBB /* Products */ = { isa = PBXGroup; children = ( - F81633C1215E66A300425F92 /* libRNImagePicker.a */, + 8DC38237216D3CDA00FD3DBB /* libRNImagePicker.a */, ); name = Products; sourceTree = ""; }; - F8799D4D2136F37F003B9FD7 /* modules */ = { - isa = PBXGroup; - children = ( - F8799D772136F3EA003B9FD7 /* berty-Bridging-Header.h */, - F8799D742136F3A7003B9FD7 /* core */, - ); - path = modules; - sourceTree = ""; - }; - F8799D742136F3A7003B9FD7 /* core */ = { + 8DC3823E216D3D1E00FD3DBB /* Products */ = { isa = PBXGroup; children = ( - F8799D752136F3C5003B9FD7 /* CoreModule.m */, - F8799D782136F3EA003B9FD7 /* CoreModule.swift */, + 8DC38242216D3D1E00FD3DBB /* libRNNetworkInfo.a */, ); - path = core; + name = Products; sourceTree = ""; }; - F8799E0621395818003B9FD7 /* Products */ = { + ADBDB9201DFEBF0600ED6528 /* Products */ = { isa = PBXGroup; children = ( - F8799E2F21395818003B9FD7 /* libRNNetworkInfo.a */, + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */, + 2D16E6721FA4F8DC00B85C8A /* libRCTBlob-tvOS.a */, ); name = Products; sourceTree = ""; }; - F89E8F3A212B11D800F907A3 /* Recovered References */ = { + F8799D4D2136F37F003B9FD7 /* modules */ = { isa = PBXGroup; children = ( - F667511A0660437B8CFB10EA /* libRNVectorIcons.a */, - 1723FA72EE2642CC8B2BB388 /* libRNImagePicker.a */, + F8799D772136F3EA003B9FD7 /* berty-Bridging-Header.h */, + F8799D742136F3A7003B9FD7 /* core */, ); - name = "Recovered References"; + path = modules; sourceTree = ""; }; - F89E8F60212B11DC00F907A3 /* Products */ = { + F8799D742136F3A7003B9FD7 /* core */ = { isa = PBXGroup; children = ( - F89E8F64212B11DF00F907A3 /* libRNVectorIcons.a */, + F8799D752136F3C5003B9FD7 /* CoreModule.m */, + F8799D782136F3EA003B9FD7 /* CoreModule.swift */, ); - name = Products; + path = core; sourceTree = ""; }; /* End PBXGroup section */ @@ -921,20 +918,16 @@ ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, { - ProductGroup = 8D63B0672166335D00442190 /* Products */; - ProjectRef = 85FA2536A2C744CF86F40F35 /* RNImagePicker.xcodeproj */; - }, - { - ProductGroup = F81633BD215E66A200425F92 /* Products */; - ProjectRef = F81633BC215E66A200425F92 /* RNImagePicker.xcodeproj */; + ProductGroup = 8DC38233216D3CDA00FD3DBB /* Products */; + ProjectRef = 31569589202648C1BFBF88CF /* RNImagePicker.xcodeproj */; }, { - ProductGroup = F8799E0621395818003B9FD7 /* Products */; - ProjectRef = F8799E0521395818003B9FD7 /* RNNetworkInfo.xcodeproj */; + ProductGroup = 8DC3823E216D3D1E00FD3DBB /* Products */; + ProjectRef = 8B2F3209AFCC4A368F2E825D /* RNNetworkInfo.xcodeproj */; }, { - ProductGroup = F89E8F60212B11DC00F907A3 /* Products */; - ProjectRef = 9E9EB990FABF44D99028EA66 /* RNVectorIcons.xcodeproj */; + ProductGroup = 8DC38231216D3CDA00FD3DBB /* Products */; + ProjectRef = 8C739B6C1E9A43D68AEB09EE /* RNVectorIcons.xcodeproj */; }, ); projectRoot = ""; @@ -1200,39 +1193,39 @@ remoteRef = 832341B41AAA6A8300B99B32 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 8D63B06B2166335D00442190 /* libRNImagePicker.a */ = { + 8DC38237216D3CDA00FD3DBB /* libRNImagePicker.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libRNImagePicker.a; - remoteRef = 8D63B06A2166335D00442190 /* PBXContainerItemProxy */; + remoteRef = 8DC38236216D3CDA00FD3DBB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = { + 8DC3823B216D3CDA00FD3DBB /* libRNVectorIcons.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRCTBlob.a; - remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */; + path = libRNVectorIcons.a; + remoteRef = 8DC3823A216D3CDA00FD3DBB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - F81633C1215E66A300425F92 /* libRNImagePicker.a */ = { + 8DC3823D216D3CDA00FD3DBB /* libRNVectorIcons-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNImagePicker.a; - remoteRef = F81633C0215E66A300425F92 /* PBXContainerItemProxy */; + path = "libRNVectorIcons-tvOS.a"; + remoteRef = 8DC3823C216D3CDA00FD3DBB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - F8799E2F21395818003B9FD7 /* libRNNetworkInfo.a */ = { + 8DC38242216D3D1E00FD3DBB /* libRNNetworkInfo.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libRNNetworkInfo.a; - remoteRef = F8799E2E21395818003B9FD7 /* PBXContainerItemProxy */; + remoteRef = 8DC38241216D3D1E00FD3DBB /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - F89E8F64212B11DF00F907A3 /* libRNVectorIcons.a */ = { + ADBDB9271DFEBF0700ED6528 /* libRCTBlob.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNVectorIcons.a; - remoteRef = F89E8F63212B11DF00F907A3 /* PBXContainerItemProxy */; + path = libRCTBlob.a; + remoteRef = ADBDB9261DFEBF0700ED6528 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -1251,20 +1244,21 @@ files = ( 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, - AB44A868A1B240938308B0A3 /* Entypo.ttf in Resources */, - D1F574B813194C638DBB8677 /* EvilIcons.ttf in Resources */, - 1A7C2FDDDF924BD3857CD66F /* Feather.ttf in Resources */, - 178D61F1DE4F4D289FEC0B07 /* FontAwesome.ttf in Resources */, - 9178C24DF2D941DABC754314 /* FontAwesome5_Brands.ttf in Resources */, - 0422FEFDDC544525976ABFED /* FontAwesome5_Regular.ttf in Resources */, - F18833A248144C8FBB4B7EA0 /* FontAwesome5_Solid.ttf in Resources */, - 1C709F7764B9493EAE6C48EA /* Foundation.ttf in Resources */, - D2C37F48A843479C88E01010 /* Ionicons.ttf in Resources */, - A2B0F9E2DA59437BB76090B3 /* MaterialCommunityIcons.ttf in Resources */, - 2795D4E7135D4BF2BBDBE975 /* MaterialIcons.ttf in Resources */, - 6E9F74FE768A42B09E52A27E /* Octicons.ttf in Resources */, - CB04920C0A13423280692377 /* SimpleLineIcons.ttf in Resources */, - 8BE05731D4114D808A909334 /* Zocial.ttf in Resources */, + 9DCA912C306A4EB7999DBF40 /* AntDesign.ttf in Resources */, + AF51D23FB3DB4315A5D22493 /* Entypo.ttf in Resources */, + E032F97CCBE84C2BB7825966 /* EvilIcons.ttf in Resources */, + 5CA679621DE140FA934FA0D2 /* Feather.ttf in Resources */, + 1602CB65A6F4468489AA576F /* FontAwesome.ttf in Resources */, + 1DFA50AC0AA844B89687899D /* FontAwesome5_Brands.ttf in Resources */, + 3B7A603BB8C64BCC865E40A1 /* FontAwesome5_Regular.ttf in Resources */, + 25FAD9B3EEE04D409A9610FA /* FontAwesome5_Solid.ttf in Resources */, + 332AAAC2C1B448C9BA3733FD /* Foundation.ttf in Resources */, + 6D74F667495B440FA73132F9 /* Ionicons.ttf in Resources */, + 49E4290CC7F2415998B3CEE3 /* MaterialCommunityIcons.ttf in Resources */, + 17BD5AB851A04E34AB404DA8 /* MaterialIcons.ttf in Resources */, + 15804C3171594FAD8EAFF7E8 /* Octicons.ttf in Resources */, + A0B8B30261534026846A215A /* SimpleLineIcons.ttf in Resources */, + FBF7330BA5D047C7B9146BBF /* Zocial.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1390,8 +1384,9 @@ ); HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = bertyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; @@ -1400,6 +1395,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1418,8 +1415,9 @@ COPY_PHASE_STRIP = NO; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = bertyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; @@ -1428,6 +1426,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1448,7 +1448,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = WMBQ84HN4T; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1456,12 +1456,16 @@ ); HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = berty/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../../common/openssl/built/ios"; + LIBRARY_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../../common/openssl/built/ios", + "$(PROJECT_DIR)", + ); OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -1485,9 +1489,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = WMBQ84HN4T; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1495,12 +1499,16 @@ ); HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = berty/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../../common/openssl/built/ios"; + LIBRARY_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../../common/openssl/built/ios", + "$(PROJECT_DIR)", + ); OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -1509,7 +1517,7 @@ PRODUCT_BUNDLE_IDENTIFIER = chat.berty.ios; PRODUCT_NAME = berty; PROVISIONING_PROFILE = "4b569825-a062-4e3b-927e-22ea802c7ca3"; - PROVISIONING_PROFILE_SPECIFIER = ""; + PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.berty.ios"; SWIFT_OBJC_BRIDGING_HEADER = "modules/berty-Bridging-Header.h"; SWIFT_VERSION = 3.0; VERSIONING_SYSTEM = "apple-generic"; @@ -1530,8 +1538,9 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = "berty-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -1539,6 +1548,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1566,8 +1577,9 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = "berty-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -1575,6 +1587,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1601,8 +1615,9 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = "berty-tvOSTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -1610,6 +1625,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1636,8 +1653,9 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = "berty-tvOSTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -1645,6 +1663,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1702,9 +1722,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = WMBQ84HN4T; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -1712,12 +1732,16 @@ ); HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = berty/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../../../common/openssl/built/ios"; + LIBRARY_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../../common/openssl/built/ios", + "$(PROJECT_DIR)", + ); OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -1726,7 +1750,7 @@ PRODUCT_BUNDLE_IDENTIFIER = chat.berty.ios; PRODUCT_NAME = berty; PROVISIONING_PROFILE = "8cb57e8b-642d-4c1f-b5b3-0acde7d99f"; - PROVISIONING_PROFILE_SPECIFIER = ""; + PROVISIONING_PROFILE_SPECIFIER = "match AdHoc chat.berty.ios"; SWIFT_OBJC_BRIDGING_HEADER = "modules/berty-Bridging-Header.h"; SWIFT_VERSION = 3.0; VERSIONING_SYSTEM = "apple-generic"; @@ -1741,8 +1765,9 @@ COPY_PHASE_STRIP = NO; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = bertyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; @@ -1751,6 +1776,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1775,8 +1802,9 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = "berty-tvOS/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -1784,6 +1812,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1810,8 +1840,9 @@ GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-image-picker/ios", + "$(SRCROOT)/../node_modules/react-native-network-info/ios", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", - "$(SRCROOT)/../../node_modules/react-native-image-picker/ios", ); INFOPLIST_FILE = "berty-tvOSTests/Info.plist"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; @@ -1819,6 +1850,8 @@ "$(inherited)", "\"$(SRCROOT)/$(TARGET_NAME)\"", "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", ); OTHER_LDFLAGS = ( "-ObjC", diff --git a/client/react-native/mobile/ios/berty.xcodeproj/xcshareddata/xcschemes/adhoc.xcscheme b/client/react-native/ios/berty.xcodeproj/xcshareddata/xcschemes/adhoc.xcscheme similarity index 100% rename from client/react-native/mobile/ios/berty.xcodeproj/xcshareddata/xcschemes/adhoc.xcscheme rename to client/react-native/ios/berty.xcodeproj/xcshareddata/xcschemes/adhoc.xcscheme diff --git a/client/react-native/mobile/ios/berty.xcodeproj/xcshareddata/xcschemes/debug.xcscheme b/client/react-native/ios/berty.xcodeproj/xcshareddata/xcschemes/debug.xcscheme similarity index 100% rename from client/react-native/mobile/ios/berty.xcodeproj/xcshareddata/xcschemes/debug.xcscheme rename to client/react-native/ios/berty.xcodeproj/xcshareddata/xcschemes/debug.xcscheme diff --git a/client/react-native/mobile/ios/berty.xcodeproj/xcshareddata/xcschemes/release.xcscheme b/client/react-native/ios/berty.xcodeproj/xcshareddata/xcschemes/release.xcscheme similarity index 100% rename from client/react-native/mobile/ios/berty.xcodeproj/xcshareddata/xcschemes/release.xcscheme rename to client/react-native/ios/berty.xcodeproj/xcshareddata/xcschemes/release.xcscheme diff --git a/client/react-native/mobile/ios/berty/AppDelegate.h b/client/react-native/ios/berty/AppDelegate.h similarity index 100% rename from client/react-native/mobile/ios/berty/AppDelegate.h rename to client/react-native/ios/berty/AppDelegate.h diff --git a/client/react-native/mobile/ios/berty/AppDelegate.m b/client/react-native/ios/berty/AppDelegate.m similarity index 100% rename from client/react-native/mobile/ios/berty/AppDelegate.m rename to client/react-native/ios/berty/AppDelegate.m diff --git a/client/react-native/mobile/ios/berty/Base.lproj/LaunchScreen.xib b/client/react-native/ios/berty/Base.lproj/LaunchScreen.xib similarity index 72% rename from client/react-native/mobile/ios/berty/Base.lproj/LaunchScreen.xib rename to client/react-native/ios/berty/Base.lproj/LaunchScreen.xib index 2aa04a0fe7..2217dd6c6c 100644 --- a/client/react-native/mobile/ios/berty/Base.lproj/LaunchScreen.xib +++ b/client/react-native/ios/berty/Base.lproj/LaunchScreen.xib @@ -1,9 +1,12 @@ - - + + + + + - - + + @@ -12,20 +15,20 @@ - - + diff --git a/client/react-native/mobile/ios/berty/BertyBluetoothModule.h b/client/react-native/ios/berty/BertyBluetoothModule.h similarity index 100% rename from client/react-native/mobile/ios/berty/BertyBluetoothModule.h rename to client/react-native/ios/berty/BertyBluetoothModule.h diff --git a/client/react-native/mobile/ios/berty/BertyBluetoothModule.m b/client/react-native/ios/berty/BertyBluetoothModule.m similarity index 100% rename from client/react-native/mobile/ios/berty/BertyBluetoothModule.m rename to client/react-native/ios/berty/BertyBluetoothModule.m diff --git a/client/react-native/mobile/ios/berty/BertyCentralManager.h b/client/react-native/ios/berty/BertyCentralManager.h similarity index 100% rename from client/react-native/mobile/ios/berty/BertyCentralManager.h rename to client/react-native/ios/berty/BertyCentralManager.h diff --git a/client/react-native/mobile/ios/berty/BertyCentralManager.m b/client/react-native/ios/berty/BertyCentralManager.m similarity index 100% rename from client/react-native/mobile/ios/berty/BertyCentralManager.m rename to client/react-native/ios/berty/BertyCentralManager.m diff --git a/client/react-native/mobile/ios/berty/BertyPeripheral.h b/client/react-native/ios/berty/BertyPeripheral.h similarity index 100% rename from client/react-native/mobile/ios/berty/BertyPeripheral.h rename to client/react-native/ios/berty/BertyPeripheral.h diff --git a/client/react-native/mobile/ios/berty/BertyPeripheral.m b/client/react-native/ios/berty/BertyPeripheral.m similarity index 100% rename from client/react-native/mobile/ios/berty/BertyPeripheral.m rename to client/react-native/ios/berty/BertyPeripheral.m diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/Contents.json b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/Contents.json rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/Icon.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/Icon.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/Icon.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/Icon.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@2x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@2x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@2x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@2x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@3x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@3x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@3x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_20pt@3x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@2x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@2x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@2x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@2x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@3x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@3x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_29pt@3x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@2x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@2x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@2x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@3x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@3x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@3x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_40pt@3x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@2x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@2x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@2x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@2x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@3x.png b/client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@3x.png similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@3x.png rename to client/react-native/ios/berty/Images.xcassets/AppIcon.appiconset/icon_60pt@3x.png diff --git a/client/react-native/mobile/ios/berty/Images.xcassets/Contents.json b/client/react-native/ios/berty/Images.xcassets/Contents.json similarity index 100% rename from client/react-native/mobile/ios/berty/Images.xcassets/Contents.json rename to client/react-native/ios/berty/Images.xcassets/Contents.json diff --git a/client/react-native/mobile/ios/berty/Info.plist b/client/react-native/ios/berty/Info.plist similarity index 97% rename from client/react-native/mobile/ios/berty/Info.plist rename to client/react-native/ios/berty/Info.plist index 46a8c12fab..8de460dfa1 100644 --- a/client/react-native/mobile/ios/berty/Info.plist +++ b/client/react-native/ios/berty/Info.plist @@ -17,7 +17,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 0.0.0 + 0.0.488 CFBundleSignature ???? CFBundleVersion @@ -35,8 +35,16 @@ + NSCameraUsageDescription + Berty would like to use your camera NSLocationWhenInUseUsageDescription + NSMicrophoneUsageDescription + Berty would like to your microphone (for videos) + NSPhotoLibraryAddUsageDescription + Berty would like to save photos to your photo gallery + NSPhotoLibraryUsageDescription + Berty would like access to your photo gallery UIAppFonts Entypo.ttf @@ -53,6 +61,7 @@ Octicons.ttf SimpleLineIcons.ttf Zocial.ttf + AntDesign.ttf UILaunchStoryboardName LaunchScreen @@ -68,13 +77,5 @@ UIViewControllerBasedStatusBarAppearance - NSPhotoLibraryUsageDescription - Berty would like access to your photo gallery - NSCameraUsageDescription - Berty would like to use your camera - NSPhotoLibraryAddUsageDescription - Berty would like to save photos to your photo gallery - NSMicrophoneUsageDescription - Berty would like to your microphone (for videos) diff --git a/client/react-native/mobile/ios/berty/main.m b/client/react-native/ios/berty/main.m similarity index 100% rename from client/react-native/mobile/ios/berty/main.m rename to client/react-native/ios/berty/main.m diff --git a/client/react-native/mobile/ios/bertyTests/Info.plist b/client/react-native/ios/bertyTests/Info.plist similarity index 100% rename from client/react-native/mobile/ios/bertyTests/Info.plist rename to client/react-native/ios/bertyTests/Info.plist diff --git a/client/react-native/mobile/ios/bertyTests/bertyTests.m b/client/react-native/ios/bertyTests/bertyTests.m similarity index 100% rename from client/react-native/mobile/ios/bertyTests/bertyTests.m rename to client/react-native/ios/bertyTests/bertyTests.m diff --git a/client/react-native/mobile/ios/modules/berty-Bridging-Header.h b/client/react-native/ios/modules/berty-Bridging-Header.h similarity index 100% rename from client/react-native/mobile/ios/modules/berty-Bridging-Header.h rename to client/react-native/ios/modules/berty-Bridging-Header.h diff --git a/client/react-native/mobile/ios/modules/core/CoreModule.m b/client/react-native/ios/modules/core/CoreModule.m similarity index 100% rename from client/react-native/mobile/ios/modules/core/CoreModule.m rename to client/react-native/ios/modules/core/CoreModule.m diff --git a/client/react-native/mobile/ios/modules/core/CoreModule.swift b/client/react-native/ios/modules/core/CoreModule.swift similarity index 100% rename from client/react-native/mobile/ios/modules/core/CoreModule.swift rename to client/react-native/ios/modules/core/CoreModule.swift diff --git a/client/react-native/mobile/.babelrc b/client/react-native/mobile/.babelrc deleted file mode 120000 index efde5266a6..0000000000 --- a/client/react-native/mobile/.babelrc +++ /dev/null @@ -1 +0,0 @@ -../.babelrc \ No newline at end of file diff --git a/client/react-native/mobile/.buckconfig b/client/react-native/mobile/.buckconfig deleted file mode 100644 index 934256cb29..0000000000 --- a/client/react-native/mobile/.buckconfig +++ /dev/null @@ -1,6 +0,0 @@ - -[android] - target = Google Inc.:Google APIs:23 - -[maven_repositories] - central = https://repo1.maven.org/maven2 diff --git a/client/react-native/mobile/.eslint b/client/react-native/mobile/.eslint deleted file mode 120000 index 8a7b10984c..0000000000 --- a/client/react-native/mobile/.eslint +++ /dev/null @@ -1 +0,0 @@ -../.eslintrc \ No newline at end of file diff --git a/client/react-native/mobile/.flowconfig b/client/react-native/mobile/.flowconfig deleted file mode 100644 index 3c0adb5663..0000000000 --- a/client/react-native/mobile/.flowconfig +++ /dev/null @@ -1,67 +0,0 @@ -[ignore] -; We fork some components by platform -.*/*[.]android.js - -; Ignore "BUCK" generated dirs -/\.buckd/ - -; Ignore unexpected extra "@providesModule" -.*/node_modules/.*/node_modules/fbjs/.* - -; Ignore duplicate module providers -; For RN Apps installed via npm, "Libraries" folder is inside -; "node_modules/react-native" but in the source repo it is in the root -.*/Libraries/react-native/React.js - -; Ignore polyfills -.*/Libraries/polyfills/.* - -; Ignore metro -.*/node_modules/metro/.* - -[include] - -[libs] -node_modules/react-native/Libraries/react-native/react-native-interface.js -node_modules/react-native/flow/ -node_modules/react-native/flow-github/ - -[options] -emoji=true - -module.system=haste -module.system.haste.use_name_reducers=true -# get basename -module.system.haste.name_reducers='^.*/\([a-zA-Z0-9$_.-]+\.js\(\.flow\)?\)$' -> '\1' -# strip .js or .js.flow suffix -module.system.haste.name_reducers='^\(.*\)\.js\(\.flow\)?$' -> '\1' -# strip .ios suffix -module.system.haste.name_reducers='^\(.*\)\.ios$' -> '\1' -module.system.haste.name_reducers='^\(.*\)\.android$' -> '\1' -module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1' -module.system.haste.paths.blacklist=.*/__tests__/.* -module.system.haste.paths.blacklist=.*/__mocks__/.* -module.system.haste.paths.blacklist=/node_modules/react-native/Libraries/Animated/src/polyfills/.* -module.system.haste.paths.whitelist=/node_modules/react-native/Libraries/.* - -munge_underscores=true - -module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> 'RelativeImageStub' - -module.file_ext=.js -module.file_ext=.jsx -module.file_ext=.json -module.file_ext=.native.js - -suppress_type=$FlowIssue -suppress_type=$FlowFixMe -suppress_type=$FlowFixMeProps -suppress_type=$FlowFixMeState - -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ -suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy -suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError - -[version] -^0.75.0 diff --git a/client/react-native/mobile/.gitattributes b/client/react-native/mobile/.gitattributes deleted file mode 100644 index d42ff18354..0000000000 --- a/client/react-native/mobile/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.pbxproj -text diff --git a/client/react-native/mobile/.gitignore b/client/react-native/mobile/.gitignore deleted file mode 100644 index 5d647565fa..0000000000 --- a/client/react-native/mobile/.gitignore +++ /dev/null @@ -1,56 +0,0 @@ -# OSX -# -.DS_Store - -# Xcode -# -build/ -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata -*.xccheckout -*.moved-aside -DerivedData -*.hmap -*.ipa -*.xcuserstate -project.xcworkspace - -# Android/IntelliJ -# -build/ -.idea -.gradle -local.properties -*.iml - -# node.js -# -node_modules/ -npm-debug.log -yarn-error.log - -# BUCK -buck-out/ -\.buckd/ -*.keystore - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://docs.fastlane.tools/best-practices/source-control/ - -*/fastlane/report.xml -*/fastlane/Preview.html -*/fastlane/screenshots - -# Bundle artifact -*.jsbundle diff --git a/client/react-native/mobile/.watchmanconfig b/client/react-native/mobile/.watchmanconfig deleted file mode 100644 index 0967ef424b..0000000000 --- a/client/react-native/mobile/.watchmanconfig +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/client/react-native/mobile/app.json b/client/react-native/mobile/app.json deleted file mode 100644 index 83f1f98e31..0000000000 --- a/client/react-native/mobile/app.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "expo": { - "sdkVersion": "27.0.0" - }, - "name": "berty", - "displayName": "Berty" -} diff --git a/client/react-native/mobile/index.js b/client/react-native/mobile/index.js deleted file mode 100644 index 59506f2fff..0000000000 --- a/client/react-native/mobile/index.js +++ /dev/null @@ -1 +0,0 @@ -import '../common' diff --git a/client/react-native/mobile/package.json b/client/react-native/mobile/package.json deleted file mode 100644 index 4e25f6c10a..0000000000 --- a/client/react-native/mobile/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "@berty/mobile", - "version": "0.0.1", - "scripts": { - "postinstall": "mkdir -p node_modules/@berty && yarn link:rn && yarn link:rn-vector-icons && yarn link:rn-net-info && yarn link:rn-img-pick && yarn link:berty", - "start": "rm -rf $TMPDIR/metro-* && react-native start --reset-cache --root $PWD/../common", - "android": "react-native run-android --no-packager", - "ios": "react-native run-ios --no-packager --scheme=debug", - "debug:relay": "relay-devtools", - "debug:react-native": "open \"rndebugger://set-debugger-loc?host=localhost&port=8081\"", - "test": "jest", - "link:rn": "ln -fs ../../node_modules/react-native node_modules", - "link:rn-vector-icons": "ln -fs ../../node_modules/react-native-vector-icons node_modules", - "link:rn-net-info": "ln -fs ../../node_modules/react-native-network-info node_modules", - "link:rn-img-pick": "ln -fs ../../node_modules/react-native-image-picker node_modules", - "link:berty": "ln -fs ../../../common node_modules/@berty" - } -} diff --git a/client/react-native/mobile/yarn.lock b/client/react-native/mobile/yarn.lock deleted file mode 100644 index fb57ccd13a..0000000000 --- a/client/react-native/mobile/yarn.lock +++ /dev/null @@ -1,4 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - diff --git a/client/react-native/package.json b/client/react-native/package.json index 1220f57343..cd8f3451fe 100644 --- a/client/react-native/package.json +++ b/client/react-native/package.json @@ -1,62 +1,42 @@ { "name": "@berty/react-native", - "version": "0.0.0", + "version": "0.0.1", "description": "Berty's react native", "license": "Apache-2.0", "scripts": { - "postinstall": "relay-compiler --src common --schema common/schema.graphql" + "start": "node node_modules/react-native/local-cli/cli.js start", + "test": "jest" }, "dependencies": { "b64-lite": "^1.3.1", - "graphql": "^0.13.2", + "graphql": "^14.0.2", "graphql-relay": "^0.5.5", "isomorphic-fetch": "^2.2.1", "qrcode-react": "^0.1.16", - "react": "^16.4.2", - "react-art": "^16.4.2", - "react-dom": "^16.4.2", - "react-native": "^0.55.4", - "react-native-image-picker": "^0.26.10", + "react": "16.5.0", + "react-dom": "16.4.2", + "react-native": "0.57.2", + "react-native-image-picker": "^0.27.1", "react-native-keyboard-spacer": "^0.4.1", - "react-native-network-info": "^3.2.2", - "react-native-vector-icons": "^5.0.0", - "react-native-web": "^0.8.9", - "react-navigation": "^2.12.1", - "react-qr-reader": "^2.1.0", - "react-relay": "^1.4.1", - "relay-compiler": "^1.4.1", + "react-native-network-info": "^4.0.0", + "react-native-vector-icons": "^6.0.1", + "react-native-web": "^0.9.1", + "react-navigation": "^2.17.0", + "react-qr-reader": "^2.1.1", + "react-relay": "^1.6.2", + "relay-compiler": "^1.6.2", "relay-devtools": "^1.4.0", - "subscriptions-transport-ws": "^0.9.14" + "subscriptions-transport-ws": "^0.9.15" }, "devDependencies": { - "babel-core": "^6.26.3", - "babel-eslint": "^8.2.6", - "babel-loader": "^7.1.5", - "babel-plugin-react-native-web": "^0.8.9", + "@babel/plugin-proposal-export-namespace-from": "^7.0.0", + "babel-jest": "23.6.0", "babel-plugin-relay": "^1.6.2", - "babel-preset-react-app": "^3.1.2", - "babel-preset-react-native": "^4.0.0", - "babel-preset-stage-0": "^6.24.1", - "babel-runtime": "^6.26.0", - "eslint": "^5.4.0", - "eslint-config-prettier": "^3.0.1", - "eslint-config-prettier-standard": "^2.0.0", - "eslint-config-react-app": "^2.1.0", - "eslint-config-standard": "^11.0.0", - "eslint-config-standard-react": "^6.0.0", - "eslint-config-typescript": "^1.1.0", - "eslint-loader": "^2.1.0", - "eslint-plugin-flowtype": "2.50.0", - "eslint-plugin-import": "^2.13.0", - "eslint-plugin-jsx-a11y": "^6.1.1", - "eslint-plugin-node": "^7.0.1", - "eslint-plugin-prettier": "^2.6.2", - "eslint-plugin-promise": "^3.8.0", - "eslint-plugin-react": "^7.11.1", - "eslint-plugin-standard": "^3.1.0", - "eslint-plugin-typescript": "^0.12.0", - "prettier": "^1.13.7", - "prettier-eslint": "^8.8.2", - "prettier-eslint-cli": "^4.7.1" + "babel-plugin-transform-export-extensions": "^6.22.0", + "jest": "23.6.0", + "metro-react-native-babel-preset": "0.48.0" + }, + "jest": { + "preset": "react-native" } } diff --git a/client/react-native/patch/ios-install-third-party.sh.patch b/client/react-native/patch/ios-install-third-party.sh.patch deleted file mode 100644 index 47c5ee5a17..0000000000 --- a/client/react-native/patch/ios-install-third-party.sh.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- scripts/ios-install-third-party.sh 2018-09-19 11:51:10.000000000 +0200 -+++ scripts/ios-install-third-party.sh.new 2018-09-19 11:50:05.000000000 +0200 -@@ -59,7 +59,7 @@ - - mkdir -p third-party - --SCRIPTDIR=$(dirname "$0") -+SCRIPTDIR="$PWD/$(dirname $0)" - - fetch_and_unpack glog-0.3.4.tar.gz https://github.com/google/glog/archive/v0.3.4.tar.gz 69f91cd5a1de35ead0bc4103ea87294b0206a456 "\"$SCRIPTDIR/ios-configure-glog.sh\"" - fetch_and_unpack double-conversion-1.1.5.tar.gz https://github.com/google/double-conversion/archive/v1.1.5.tar.gz 96a8aba1b4ce7d4a7a3c123be26c379c2fed1def diff --git a/client/react-native/patch/project.pbxproj.patch b/client/react-native/patch/project.pbxproj.patch deleted file mode 100644 index d62b489e61..0000000000 --- a/client/react-native/patch/project.pbxproj.patch +++ /dev/null @@ -1,36 +0,0 @@ ---- project.pbxproj 2018-09-19 12:00:47.000000000 +0200 -+++ project.pbxproj.new 2018-09-19 12:00:59.000000000 +0200 -@@ -9,7 +9,6 @@ - /* Begin PBXBuildFile section */ - 1338BBE01B04ACC80064A9C9 /* RCTSRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 1338BBDD1B04ACC80064A9C9 /* RCTSRWebSocket.m */; }; - 1338BBE11B04ACC80064A9C9 /* RCTWebSocketExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1338BBDF1B04ACC80064A9C9 /* RCTWebSocketExecutor.m */; }; -- 13526A521F362F7F0008EF00 /* libfishhook.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 13526A511F362F7F0008EF00 /* libfishhook.a */; }; - 2D3B5F3D1D9B165B00451313 /* RCTSRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 1338BBDD1B04ACC80064A9C9 /* RCTSRWebSocket.m */; }; - 2D3B5F3E1D9B165B00451313 /* RCTWebSocketExecutor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1338BBDF1B04ACC80064A9C9 /* RCTWebSocketExecutor.m */; }; - 2D3B5F401D9B165B00451313 /* RCTWebSocketModule.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C86DF7B1ADF695F0047B81A /* RCTWebSocketModule.m */; }; -@@ -19,6 +18,7 @@ - 3DBE0D151F3B185A0099AA32 /* fishhook.c in Sources */ = {isa = PBXBuildFile; fileRef = 3DBE0D121F3B185A0099AA32 /* fishhook.c */; }; - 3DBE0D801F3B1AF00099AA32 /* fishhook.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DBE0D131F3B185A0099AA32 /* fishhook.h */; }; - 3DBE0D821F3B1B0C0099AA32 /* fishhook.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3DBE0D131F3B185A0099AA32 /* fishhook.h */; }; -+ 48E9CF3C215255DA0068DE0F /* libfishhook.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DBE0D001F3B181A0099AA32 /* libfishhook.a */; }; - A12E9E2E1E5DEC4E0029001B /* RCTReconnectingWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = A12E9E2D1E5DEC4E0029001B /* RCTReconnectingWebSocket.m */; }; - A12E9E2F1E5DEC550029001B /* RCTReconnectingWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = A12E9E2D1E5DEC4E0029001B /* RCTReconnectingWebSocket.m */; }; - /* End PBXBuildFile section */ -@@ -87,7 +87,7 @@ - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( -- 13526A521F362F7F0008EF00 /* libfishhook.a in Frameworks */, -+ 48E9CF3C215255DA0068DE0F /* libfishhook.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -@@ -435,7 +435,7 @@ - EXECUTABLE_PREFIX = lib; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", -- "RCT_METRO_PORT=${RCT_METRO_PORT}", -+ "RCT_METRO_PORT=${RCT_METRO_PORT}", - "$(inherited)", - ); - GCC_TREAT_WARNINGS_AS_ERRORS = NO; diff --git a/client/react-native/web/config/env.js b/client/react-native/web/config/env.js deleted file mode 100644 index 1707c381d3..0000000000 --- a/client/react-native/web/config/env.js +++ /dev/null @@ -1,92 +0,0 @@ - -const fs = require('fs') -const path = require('path') -const paths = require('./paths') - -// Make sure that including paths.js after env.js will read .env variables. -delete require.cache[require.resolve('./paths')] - -const NODE_ENV = process.env.NODE_ENV -if (!NODE_ENV) { - throw new Error( - 'The NODE_ENV environment variable is required but was not specified.' - ) -} - -// https://github.com/bkeepers/dotenv#what-other-env-files-can-i-use -var dotenvFiles = [ - `${paths.dotenv}.${NODE_ENV}.local`, - `${paths.dotenv}.${NODE_ENV}`, - // Don't include `.env.local` for `test` environment - // since normally you expect tests to produce the same - // results for everyone - NODE_ENV !== 'test' && `${paths.dotenv}.local`, - paths.dotenv, -].filter(Boolean) - -// Load environment variables from .env* files. Suppress warnings using silent -// if this file is missing. dotenv will never modify any environment variables -// that have already been set. Variable expansion is supported in .env files. -// https://github.com/motdotla/dotenv -// https://github.com/motdotla/dotenv-expand -dotenvFiles.forEach(dotenvFile => { - if (fs.existsSync(dotenvFile)) { - require('dotenv-expand')( - require('dotenv').config({ - path: dotenvFile, - }) - ) - } -}) - -// We support resolving modules according to `NODE_PATH`. -// This lets you use absolute paths in imports inside large monorepos: -// https://github.com/facebook/create-react-app/issues/253. -// It works similar to `NODE_PATH` in Node itself: -// https://nodejs.org/api/modules.html#modules_loading_from_the_global_folders -// Note that unlike in Node, only *relative* paths from `NODE_PATH` are honored. -// Otherwise, we risk importing Node.js core modules into an app instead of Webpack shims. -// https://github.com/facebook/create-react-app/issues/1023#issuecomment-265344421 -// We also resolve them to make sure all tools using them work consistently. -const appDirectory = fs.realpathSync(process.cwd()) -process.env.NODE_PATH = (process.env.NODE_PATH || '') - .split(path.delimiter) - .filter(folder => folder && !path.isAbsolute(folder)) - .map(folder => path.resolve(appDirectory, folder)) - .join(path.delimiter) - -// Grab NODE_ENV and REACT_APP_* environment variables and prepare them to be -// injected into the application via DefinePlugin in Webpack configuration. -const REACT_APP = /^REACT_APP_/i - -function getClientEnvironment (publicUrl) { - const raw = Object.keys(process.env) - .filter(key => REACT_APP.test(key)) - .reduce( - (env, key) => { - env[key] = process.env[key] - return env - }, - { - // Useful for determining whether we’re running in production mode. - // Most importantly, it switches React into the correct mode. - NODE_ENV: process.env.NODE_ENV || 'development', - // Useful for resolving the correct path to static assets in `public`. - // For example, . - // This should only be used as an escape hatch. Normally you would put - // images into the `src` and `import` them in code to get their paths. - PUBLIC_URL: publicUrl, - } - ) - // Stringify all values so we can feed into Webpack DefinePlugin - const stringified = { - 'process.env': Object.keys(raw).reduce((env, key) => { - env[key] = JSON.stringify(raw[key]) - return env - }, {}), - } - - return { raw, stringified } -} - -module.exports = getClientEnvironment diff --git a/client/react-native/web/config/jest/babelTransform.js b/client/react-native/web/config/jest/babelTransform.js deleted file mode 100644 index 885cb2adca..0000000000 --- a/client/react-native/web/config/jest/babelTransform.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -const babelJest = require('babel-jest'); - -module.exports = babelJest.createTransformer({ - presets: [require.resolve('babel-preset-react-app')], - -}); diff --git a/client/react-native/web/config/jest/cssTransform.js b/client/react-native/web/config/jest/cssTransform.js deleted file mode 100644 index 8f65114812..0000000000 --- a/client/react-native/web/config/jest/cssTransform.js +++ /dev/null @@ -1,14 +0,0 @@ -'use strict'; - -// This is a custom Jest transformer turning style imports into empty objects. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process() { - return 'module.exports = {};'; - }, - getCacheKey() { - // The output is always the same. - return 'cssTransform'; - }, -}; diff --git a/client/react-native/web/config/jest/fileTransform.js b/client/react-native/web/config/jest/fileTransform.js deleted file mode 100644 index e167d31bb1..0000000000 --- a/client/react-native/web/config/jest/fileTransform.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -const path = require('path'); - -// This is a custom Jest transformer turning file imports into filenames. -// http://facebook.github.io/jest/docs/en/webpack.html - -module.exports = { - process(src, filename) { - const assetFilename = JSON.stringify(path.basename(filename)); - - if (filename.match(/\.svg$/)) { - return `module.exports = { - __esModule: true, - default: ${assetFilename}, - ReactComponent: () => ${assetFilename}, - };`; - } - - return `module.exports = ${assetFilename};`; - }, -}; diff --git a/client/react-native/web/config/jest/graphqlTransform.js b/client/react-native/web/config/jest/graphqlTransform.js deleted file mode 100644 index 1249902010..0000000000 --- a/client/react-native/web/config/jest/graphqlTransform.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const loader = require('graphql-tag/loader'); - -module.exports = { - process(src) { - return loader.call({ cacheable() {} }, src); - }, -}; diff --git a/client/react-native/web/config/paths.js b/client/react-native/web/config/paths.js deleted file mode 100644 index 6a9cdeee50..0000000000 --- a/client/react-native/web/config/paths.js +++ /dev/null @@ -1,55 +0,0 @@ - -const path = require('path') -const fs = require('fs') -const url = require('url') - -// Make sure any symlinks in the project folder are resolved: -// https://github.com/facebookincubator/create-react-app/issues/637 -const appDirectory = fs.realpathSync(process.cwd()) -const resolveApp = relativePath => path.resolve(appDirectory, relativePath) - -const envPublicUrl = process.env.PUBLIC_URL - -function ensureSlash (path, needsSlash) { - const hasSlash = path.endsWith('/') - if (hasSlash && !needsSlash) { - return path.substr(path, path.length - 1) - } else if (!hasSlash && needsSlash) { - return `${path}/` - } else { - return path - } -} - -const getPublicUrl = appPackageJson => - envPublicUrl || require(appPackageJson).homepage - -// We use `PUBLIC_URL` environment variable or "homepage" field to infer -// "public path" at which the app is served. -// Webpack needs to know it to put the right