diff --git a/.flowconfig b/.flowconfig index ee340094c2..e28e2f5bd5 100644 --- a/.flowconfig +++ b/.flowconfig @@ -1,70 +1,13 @@ [ignore] # We fork some components by platform. -.*/*.web.js .*/*.android.js -# Some modules have their own node_modules with overlap -.*/node_modules/node-haste/.* - -# Ugh -.*/node_modules/babel.* -.*/node_modules/babylon.* -.*/node_modules/invariant.* - -# Ignore react and fbjs where there are overlaps, but don't ignore -# anything that react-native relies on -.*/node_modules/fbjs/lib/Map.js -.*/node_modules/fbjs/lib/fetch.js -.*/node_modules/fbjs/lib/ExecutionEnvironment.js -.*/node_modules/fbjs/lib/ErrorUtils.js - -# Flow has a built-in definition for the 'react' module which we prefer to use -# over the currently-untyped source -.*/node_modules/react/react.js -.*/node_modules/react/lib/React.js -.*/node_modules/react/lib/ReactDOM.js - -.*/__mocks__/.* -.*/__tests__/.* - -.*/commoner/test/source/widget/share.js - -# Ignore commoner tests -.*/node_modules/commoner/test/.* - -# See https://github.com/facebook/flow/issues/442 -.*/react-tools/node_modules/commoner/lib/reader.js - -# Ignore jest -.*/node_modules/jest-cli/.* - -# Ignore Website -.*/website/.* - -# Ignore generators +# Ignore templates with `@flow` in header .*/local-cli/generator.* -# Ignore BUCK generated folders -.*\.buckd/ - -.*/node_modules/is-my-json-valid/test/.*\.json -.*/node_modules/iconv-lite/encodings/tables/.*\.json +# Ignore malformed json .*/node_modules/y18n/test/.*\.json -.*/node_modules/spdx-license-ids/spdx-license-ids.json -.*/node_modules/spdx-exceptions/index.json -.*/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json -.*/node_modules/resolve/lib/core.json -.*/node_modules/jsonparse/samplejson/.*\.json -.*/node_modules/json5/test/.*\.json -.*/node_modules/ua-parser-js/test/.*\.json -.*/node_modules/builtin-modules/builtin-modules.json -.*/node_modules/binary-extensions/binary-extensions.json -.*/node_modules/url-regex/tlds.json -.*/node_modules/joi/.*\.json -.*/node_modules/isemail/.*\.json -.*/node_modules/tr46/.*\.json - [include] @@ -79,18 +22,20 @@ module.system=haste esproposal.class_static_fields=enable esproposal.class_instance_fields=enable +experimental.strict_type_args=true + munge_underscores=true module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub' -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\)$' -> 'RelativeImageStub' +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' suppress_type=$FlowIssue suppress_type=$FlowFixMe suppress_type=$FixMe -suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(2[0-2]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) -suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(2[0-2]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(2[0-7]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(2[0-7]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy [version] -^0.22.0 +^0.27.0 diff --git a/.re-natal b/.re-natal index 3df6476527..29e05a1828 100644 --- a/.re-natal +++ b/.re-natal @@ -1,13 +1,12 @@ { "name": "StatusIm", "interface": "reagent", - "androidHost": "10.0.3.2", + "androidHost": "localhost", "modules": [ "react-native-contacts", "react-native-invertible-scroll-view", "awesome-phonenumber", "realm", - "react-native-loading-spinner-overlay", "react-native-i18n", "realm/react-native", "react-native-action-button", diff --git a/android/app/build.gradle b/android/app/build.gradle index 0682d5fac0..a1d00ae137 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -120,7 +120,8 @@ android { } dependencies { - compile project(':randombytes') + compile project(':react-native-randombytes') + compile project(':react-native-android-sms-listener') compile project(':realm') compile project(':react-native-vector-icons') compile fileTree(dir: "libs", include: ["*.jar"]) @@ -129,7 +130,6 @@ dependencies { compile project(':react-native-contacts') compile project(':react-native-i18n') compile project(':react-native-linear-gradient') - compile project(':ReactNativeAndroidSmsListener') compile project(':react-native-camera') compile project(':react-native-status') compile project(':react-native-orientation') diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 7d72e46927..48361a9015 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -26,11 +26,14 @@ # See http://sourceforge.net/p/proguard/bugs/466/ -keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip -keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters +-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip # Do not strip any method/class that is annotated with @DoNotStrip -keep @com.facebook.proguard.annotations.DoNotStrip class * +-keep @com.facebook.common.internal.DoNotStrip class * -keepclassmembers class * { @com.facebook.proguard.annotations.DoNotStrip *; + @com.facebook.common.internal.DoNotStrip *; } -keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * { @@ -51,9 +54,9 @@ -keepattributes Signature -keepattributes *Annotation* --keep class com.squareup.okhttp.** { *; } --keep interface com.squareup.okhttp.** { *; } --dontwarn com.squareup.okhttp.** +-keep class okhttp3.** { *; } +-keep interface okhttp3.** { *; } +-dontwarn okhttp3.** # okio @@ -61,7 +64,3 @@ -dontwarn java.nio.file.* -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -dontwarn okio.** - -# stetho - --dontwarn com.facebook.stetho.** diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 05008651d2..8131fa84ff 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,32 +1,33 @@ + package="com.statusim"> - - - - - + + + + + - - - - - - - - + android:allowBackup="true" + android:label="@string/app_name" + android:icon="@mipmap/ic_launcher" + android:theme="@style/AppTheme" + android:name=".MainApplication"> + + + + + + + + diff --git a/android/app/src/main/assets/fonts/Ionicons.ttf b/android/app/src/main/assets/fonts/Ionicons.ttf index c4e4632486..307ad889aa 100644 Binary files a/android/app/src/main/assets/fonts/Ionicons.ttf and b/android/app/src/main/assets/fonts/Ionicons.ttf differ diff --git a/android/app/src/main/java/com/statusim/MainActivity.java b/android/app/src/main/java/com/statusim/MainActivity.java index 81a745793a..cc26f91d5f 100644 --- a/android/app/src/main/java/com/statusim/MainActivity.java +++ b/android/app/src/main/java/com/statusim/MainActivity.java @@ -1,38 +1,17 @@ package com.statusim; -import com.facebook.react.ReactActivity; -import com.statusim.geth.module.GethPackage; -import io.realm.react.RealmReactPackage; -import com.oblador.vectoricons.VectorIconsPackage; -import com.facebook.react.ReactPackage; -import com.facebook.react.shell.MainReactPackage; -import com.rt2zz.reactnativecontacts.ReactNativeContacts; -import android.os.Bundle; import android.app.AlertDialog; import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; import android.content.DialogInterface.OnCancelListener; +import android.content.DialogInterface.OnClickListener; import android.content.Intent; - -import com.bitgo.randombytes.RandomBytesPackage; -import com.BV.LinearGradient.LinearGradientPackage; -import com.centaurwarchief.smslistener.SmsListener; -import com.github.yamill.orientation.OrientationPackage; - -import java.util.Arrays; -import java.util.List; -import java.util.Properties; -import java.io.File; -import com.statusim.Jail.JailPackage; - -import com.lwansbrough.RCTCamera.*; -import com.i18n.reactnativei18n.ReactNativeI18n; import android.content.res.Configuration; +import android.os.Bundle; +import com.facebook.react.ReactActivity; -import com.rnfs.RNFSPackage; +import java.util.Properties; public class MainActivity extends ReactActivity { - private static final String TAG = "MainActivity"; protected void startStatus() { @@ -46,29 +25,34 @@ public class MainActivity extends ReactActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if(!RootUtil.isDeviceRooted()) { + if (!RootUtil.isDeviceRooted()) { startStatus(); } else { - AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).setMessage(getResources().getString(R.string.root_warning)) + AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) + .setMessage(getResources().getString(R.string.root_warning)) .setPositiveButton(getResources().getString(R.string.root_okay), new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); startStatus(); } - }).setNegativeButton(getResources().getString(R.string.root_cancel), new OnClickListener() { + }) + .setNegativeButton(getResources().getString(R.string.root_cancel), new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); MainActivity.this.finishAffinity(); } - }).setOnCancelListener(new OnCancelListener() { + }) + .setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { dialog.dismiss(); MainActivity.this.finishAffinity(); } - }).create(); + }) + .create(); + dialog.show(); } } @@ -87,38 +71,6 @@ public class MainActivity extends ReactActivity { return "StatusIm"; } - /** - * Returns whether dev mode should be enabled. - * This enables e.g. the dev menu. - */ - @Override - protected boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - /** - * A list of packages used by the app. If the app uses additional views - * or modules besides the default ones, add more packages here. - */ - @Override - protected List getPackages() { - return Arrays.asList( - new MainReactPackage(), - new JailPackage(this), - new RealmReactPackage(), - new VectorIconsPackage(), - new ReactNativeContacts(), - new ReactNativeI18n(), - new RandomBytesPackage(), - new LinearGradientPackage(), - new RCTCameraPackage(), - new SmsListener(this), - new OrientationPackage(this), - new RNFSPackage(), - new GethPackage() - ); - } - @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); diff --git a/android/app/src/main/java/com/statusim/MainApplication.java b/android/app/src/main/java/com/statusim/MainApplication.java new file mode 100644 index 0000000000..ae3045e59a --- /dev/null +++ b/android/app/src/main/java/com/statusim/MainApplication.java @@ -0,0 +1,58 @@ +package com.statusim; + +import android.app.Application; + +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.shell.MainReactPackage; + +import com.statusim.Jail.JailPackage; +import io.realm.react.RealmReactPackage; +import com.oblador.vectoricons.VectorIconsPackage; +import com.rt2zz.reactnativecontacts.ReactNativeContacts; +import com.i18n.reactnativei18n.ReactNativeI18n; +import com.bitgo.randombytes.RandomBytesPackage; +import com.BV.LinearGradient.LinearGradientPackage; +import com.lwansbrough.RCTCamera.*; +import com.centaurwarchief.smslistener.SmsListenerPackage; +import com.github.yamill.orientation.OrientationPackage; +import com.rnfs.RNFSPackage; +import com.statusim.geth.module.GethPackage; + +import java.util.Arrays; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { + @Override + protected boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } + + @Override + protected List getPackages() { + return Arrays.asList( + new MainReactPackage(), + new JailPackage(), + new RealmReactPackage(), + new VectorIconsPackage(), + new ReactNativeContacts(), + new ReactNativeI18n(), + new RandomBytesPackage(), + new LinearGradientPackage(), + new RCTCameraPackage(), + new SmsListenerPackage(), + new OrientationPackage(), + new RNFSPackage(), + new GethPackage() + ); + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } +} diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 428623ba43..90015aba8f 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,4 +1,6 @@ + + Status Your phone appears to be ROOTED, by pressing CONTINUE you understand and accept the risks in using this software. Continue diff --git a/android/build.gradle b/android/build.gradle index 3bd68882a8..fec9574948 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -18,7 +18,7 @@ allprojects { jcenter() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm - url "$projectDir/../../node_modules/react-native/android" + url "$rootDir/../node_modules/react-native/android" } // for geth flatDir { diff --git a/android/settings.gradle b/android/settings.gradle index 77a38a09cf..df86d401f0 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,31 +1,25 @@ rootProject.name = 'StatusIm' include ':app' - +include ':react-native-randombytes' +project(':react-native-randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android') +include ':react-native-android-sms-listener' +project(':react-native-android-sms-listener').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-android-sms-listener/android') include ':react-native-contacts' project(':react-native-contacts').projectDir = new File(settingsDir, '../node_modules/react-native-contacts/android') - include ':react-native-i18n' project(':react-native-i18n').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-i18n/android') -// realm dependency include ':react-native-vector-icons' project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') include ':realm' project(':realm').projectDir = new File(rootProject.projectDir, '../node_modules/realm/android') -include ':randombytes' -project(':randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android') include ':react-native-linear-gradient' project(':react-native-linear-gradient').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-linear-gradient/android') -include ':ReactNativeAndroidSmsListener' -project(':ReactNativeAndroidSmsListener').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-android-sms-listener/android') - include ':react-native-status' project(':react-native-status').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-status/android') include ':react-native-camera' project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') - include ':react-native-orientation', ':app' project(':react-native-orientation').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-orientation/android') - include ':react-native-fs' project(':react-native-fs').projectDir = new File(settingsDir, '../node_modules/react-native-fs/android') diff --git a/env/dev/env/android/main.cljs b/env/dev/env/android/main.cljs index f0c3d96fca..1bf474e505 100644 --- a/env/dev/env/android/main.cljs +++ b/env/dev/env/android/main.cljs @@ -10,7 +10,7 @@ (def root-el (r/as-element [reloader])) (figwheel/watch-and-reload - :websocket-url "ws://10.0.3.2:3449/figwheel-ws" + :websocket-url "ws://localhost:3449/figwheel-ws" :heads-up-display false :jsload-callback #(swap! cnt inc)) diff --git a/figwheel-bridge.js b/figwheel-bridge.js index 6a36687e4e..6c02270954 100644 --- a/figwheel-bridge.js +++ b/figwheel-bridge.js @@ -5,6 +5,7 @@ */ var CLOSURE_UNCOMPILED_DEFINES = null; +var debugEnabled = false; var config = { basePath: "target/", @@ -12,14 +13,26 @@ var config = { serverPort: 8081 }; -var React = require('react-native'); +var React = require('react'); +var ReactNative = require('react-native'); +var WebSocket = require('WebSocket'); var self; var scriptQueue = []; var serverHost = null; // will be set dynamically var fileBasePath = null; // will be set dynamically var evaluate = eval; // This is needed, direct calls to eval does not work (RN packager???) var externalModules = {}; -var evalListeners = []; // functions to be called when a script is evaluated +var evalListeners = [ // Functions to be called after each js file is loaded and evaluated + function (url) { + if (url.indexOf('jsloader') > -1) { + shimJsLoader(); + } + }, + function (url) { + if (url.indexOf('/figwheel/client/socket') > -1) { + setCorrectWebSocketImpl(); + } + }]; var figwheelApp = function (platform, devHost) { return React.createClass({ @@ -30,9 +43,9 @@ var figwheelApp = function (platform, devHost) { if (!this.state.loaded) { var plainStyle = {flex: 1, alignItems: 'center', justifyContent: 'center'}; return ( - - Waiting for Figwheel to load files. - + + Waiting for Figwheel to load files. + ); } return this.state.root; @@ -40,7 +53,7 @@ var figwheelApp = function (platform, devHost) { componentDidMount: function () { var app = this; if (typeof goog === "undefined") { - loadApp(platform, devHost, function(appRoot) { + loadApp(platform, devHost, function (appRoot) { app.setState({root: appRoot, loaded: true}) }); } @@ -48,20 +61,25 @@ var figwheelApp = function (platform, devHost) { }) }; +function logDebug(msg) { + if (debugEnabled) { + console.log(msg); + } +} + // evaluates js code ensuring proper ordering function customEval(url, javascript, success, error) { if (scriptQueue.length > 0) { if (scriptQueue[0] === url) { try { evaluate(javascript); - console.info('Evaluated: ' + url); + logDebug('Evaluated: ' + url); scriptQueue.shift(); evalListeners.forEach(function (listener) { listener(url) }); success(); } catch (e) { - console.error('Evaluation error in: ' + url); console.error(e); error(); } @@ -81,7 +99,7 @@ var isChrome = function () { }; function asyncImportScripts(url, success, error) { - console.info('(asyncImportScripts) Importing: ' + url); + logDebug('(asyncImportScripts) Importing: ' + url); scriptQueue.push(url); fetch(url) .then(function (response) { @@ -91,7 +109,6 @@ function asyncImportScripts(url, success, error) { return customEval(url, responseText, success, error); }) .catch(function (error) { - console.error('Error loading script, please check your config setup.'); console.error(error); return error(); }); @@ -100,12 +117,13 @@ function asyncImportScripts(url, success, error) { function syncImportScripts(url, success, error) { try { importScripts(url); - console.info('Evaluated: ' + url); + logDebug('Evaluated: ' + url); evalListeners.forEach(function (listener) { listener(url) }); success(); } catch (e) { + console.error(e); error() } } @@ -123,7 +141,7 @@ function importJs(src, success, error) { var file = fileBasePath + '/' + src; - console.info('(importJs) Importing: ' + file); + logDebug('(importJs) Importing: ' + file); if (isChrome()) { syncImportScripts(serverBaseUrl("localhost") + '/' + file, success, error); } else { @@ -143,32 +161,39 @@ function interceptRequire() { }; } -// do not show debug messages in yellow box -function debugToLog() { - console.debug = console.log; +function compileWarningsToYellowBox() { + var log = window.console.log; + var compileWarningRx = /Figwheel: Compile/; + window.console.log = function (msg) { + if (compileWarningRx.test(msg)) { + console.warn(msg); + } else { + log.apply(window.console, arguments); + } + }; } function serverBaseUrl(host) { return "http://" + host + ":" + config.serverPort } +function setCorrectWebSocketImpl() { + figwheel.client.socket.get_websocket_imp = function () { + return WebSocket; + }; +} + function loadApp(platform, devHost, onLoadCb) { serverHost = devHost; fileBasePath = config.basePath + platform; - evalListeners.push(function (url) { - if (url.indexOf('jsloader') > -1) { - shimJsLoader(); - } - }); - // callback when app is ready to get the reloadable component var mainJs = '/env/' + platform + '/main.js'; var mainTestJs = '/env/' + platform + '_test/main.js'; evalListeners.push(function (url) { if (url.indexOf(mainJs) > -1) { onLoadCb(env[platform].main.root_el); - console.log('Done loading Clojure app'); + console.info('Done loading Clojure app'); } if (url.indexOf(mainTestJs) > -1) { @@ -178,14 +203,13 @@ function loadApp(platform, devHost, onLoadCb) { }); if (typeof goog === "undefined") { - console.log('Loading Closure base.'); + console.info('Loading Closure base.'); interceptRequire(); + compileWarningsToYellowBox(); importJs('goog/base.js', function () { shimBaseGoog(); - fakeLocalStorageAndDocument(); importJs('cljs_deps.js'); importJs('goog/deps.js', function () { - debugToLog(); // This is needed because of RN packager // seriously React packager? why. var googreq = goog.require; @@ -197,7 +221,7 @@ function loadApp(platform, devHost, onLoadCb) { } function startApp(appName, platform, devHost) { - React.AppRegistry.registerComponent( + ReactNative.AppRegistry.registerComponent( appName, () => figwheelApp(platform, devHost)); } @@ -215,39 +239,6 @@ function shimBaseGoog() { importJs(src); return true; }; - goog.inHtmlDocument_ = function () { - return true; - }; -} - -function fakeLocalStorageAndDocument() { - window.localStorage = {}; - window.localStorage.getItem = function () { - return 'true'; - }; - window.localStorage.setItem = function () { - }; - - window.document = {}; - window.document.body = {}; - window.document.body.dispatchEvent = function () { - }; - window.document.createElement = function () { - }; - - if (typeof window.location === 'undefined') { - window.location = {}; - } - console.debug = console.warn; - window.addEventListener = function () { - }; - // make figwheel think that heads-up-display divs are there - window.document.querySelector = function (selector) { - return {}; - }; - window.document.getElementById = function (id) { - return {style:{}}; - }; } // Figwheel fixes diff --git a/ios/StatusIm.xcodeproj/project.pbxproj b/ios/StatusIm.xcodeproj/project.pbxproj index d933ac7b4f..86af60ba25 100644 --- a/ios/StatusIm.xcodeproj/project.pbxproj +++ b/ios/StatusIm.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 00C302E91ABCBA2D00DB3ED1 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; 00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; }; + 0F942CF509F74CCDB5CB35B0 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 54E2B86FB12D4CC49DA05C69 /* MaterialIcons.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 */; }; @@ -21,7 +22,25 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 213311F38CA74CE280FD09AD /* libRNI18n.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 52F6ED6465184513A082652B /* libRNI18n.a */; }; + 22118DE1207A419FBFE7B62D /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CD48A32459B64E96843BB238 /* libRealmReact.a */; }; + 25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */; }; + 4D3D740D5EFA4F8592B048D7 /* libBVLinearGradient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DF1CD4C3D1254774ACCAE4E8 /* libBVLinearGradient.a */; }; + 4FFAE7B0414A463991039A2E /* libRNRandomBytes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C55F15EB4D4DAF9202A662 /* libRNRandomBytes.a */; }; + 67F099D82798449FADF8358A /* libRCTOrientation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5535217F57E44D77AA9CF083 /* libRCTOrientation.a */; }; + 6CE6374707AC4EC788354DD1 /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 11632AA0A5F84F029DD91797 /* libRNVectorIcons.a */; }; + 74242ACAF37A48D0BFACDE82 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 2756305FAFF144C4A6B0A039 /* Zocial.ttf */; }; + 82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */; }; 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; + A39C8FE8BF9E45CF896017A7 /* libRCTCamera.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A50F58D6FC94DE696FC3EB5 /* libRCTCamera.a */; }; + A6AF670051B842249D520C7B /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7ED174A34D7D42358313368B /* Foundation.ttf */; }; + AE97D4B08C9F4821B8E9C50B /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 359B076A658B4FBAB5128B03 /* Ionicons.ttf */; }; + B45B40B471414274A7A83185 /* libRCTContacts.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3384AFA9609A409B81928AD5 /* libRCTContacts.a */; }; + BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; }; + C3EE9AEA6F77464588FBAA64 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7B5870D9ED504F32B6A09C35 /* FontAwesome.ttf */; }; + D28AEFB4C39548EB80416889 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 52E205D210BC48B7A553BB62 /* Entypo.ttf */; }; + EF2B5857B4A34E0C9707FB3F /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B3B19223008342D096AA356E /* Octicons.ttf */; }; + FD4F213C3873473CB703B1D2 /* libRNFS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674B3D9595A047AB8D518F4E /* libRNFS.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -88,6 +107,76 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 20B7D0FD1D3F74CC00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 45FB5F523DE04BDE9877869C /* RNRandomBytes.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 73EEC9391BFE4B1D00D468EB; + remoteInfo = RNRandomBytes; + }; + 20B7D1021D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AE71EE8751F4652B13BFE83 /* RNVectorIcons.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5DBEB1501B18CEA900B34395; + remoteInfo = RNVectorIcons; + }; + 20B7D1091D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09F98D1521C24548AC72563A /* RCTContacts.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 1441618E1BD0A79300FA4F59; + remoteInfo = RCTContacts; + }; + 20B7D10D1D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = CDD7BF781B2D5125006FDA75; + remoteInfo = RNI18n; + }; + 20B7D10F1D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = CDD7BF831B2D5126006FDA75; + remoteInfo = RNI18nTests; + }; + 20B7D1141D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 9F1854E6D9654226B1FC8308 /* RCTCamera.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4107012F1ACB723B00C6AA39; + remoteInfo = RCTCamera; + }; + 20B7D1191D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 305F194186D848FDB07AF34C /* RNFS.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F12AFB9B1ADAF8F800E0535D; + remoteInfo = RNFS; + }; + 20B7D11E1D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 807594C429CA44128AB5666B /* BVLinearGradient.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = BVLinearGradient; + }; + 20B7D1231D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 43A6FA689D844B0BAF3AA8B4 /* RCTOrientation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RCTOrientation; + }; + 20B7D1281D3F74CD00B70F14 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F090E261B9854867A728CE4F /* RealmReact.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = F60690131CA2766F0003FB26; + remoteInfo = RealmReact; + }; 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; @@ -105,17 +194,20 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = main.jsbundle; path = main.jsbundle; sourceTree = ""; }; - 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = ../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj; sourceTree = ""; }; - 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = ../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj; sourceTree = ""; }; - 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = ../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj; sourceTree = ""; }; - 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 = ""; }; + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTActionSheet.xcodeproj; path = "../node_modules/react-native/Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj"; sourceTree = ""; }; + 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTGeolocation.xcodeproj; path = "../node_modules/react-native/Libraries/Geolocation/RCTGeolocation.xcodeproj"; sourceTree = ""; }; + 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTImage.xcodeproj; path = "../node_modules/react-native/Libraries/Image/RCTImage.xcodeproj"; sourceTree = ""; }; + 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 /* StatusImTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StatusImTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* StatusImTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusImTests.m; sourceTree = ""; }; - 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 = ""; }; + 09F98D1521C24548AC72563A /* RCTContacts.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTContacts.xcodeproj; path = "../node_modules/react-native-contacts/ios/RCTContacts.xcodeproj"; sourceTree = ""; }; + 0A50F58D6FC94DE696FC3EB5 /* libRCTCamera.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTCamera.a; sourceTree = ""; }; + 11632AA0A5F84F029DD91797 /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; + 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTSettings.xcodeproj; path = "../node_modules/react-native/Libraries/Settings/RCTSettings.xcodeproj"; sourceTree = ""; }; + 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "../node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* StatusIm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StatusIm.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StatusIm/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = StatusIm/AppDelegate.m; sourceTree = ""; }; @@ -123,9 +215,34 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StatusIm/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StatusIm/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StatusIm/main.m; sourceTree = ""; }; - 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = ../node_modules/react-native/React/React.xcodeproj; sourceTree = ""; }; - 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = ../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj; sourceTree = ""; }; - 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = ../node_modules/react-native/Libraries/Text/RCTText.xcodeproj; sourceTree = ""; }; + 146833FF1AC3E56700842450 /* React.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = React.xcodeproj; path = "../node_modules/react-native/React/React.xcodeproj"; sourceTree = ""; }; + 2756305FAFF144C4A6B0A039 /* 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 = ""; }; + 305F194186D848FDB07AF34C /* RNFS.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNFS.xcodeproj; path = "../node_modules/react-native-fs/RNFS.xcodeproj"; sourceTree = ""; }; + 3384AFA9609A409B81928AD5 /* libRCTContacts.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTContacts.a; sourceTree = ""; }; + 359B076A658B4FBAB5128B03 /* Ionicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Ionicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf"; sourceTree = ""; }; + 43A6FA689D844B0BAF3AA8B4 /* RCTOrientation.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTOrientation.xcodeproj; path = "../node_modules/react-native-orientation/iOS/RCTOrientation.xcodeproj"; sourceTree = ""; }; + 45FB5F523DE04BDE9877869C /* RNRandomBytes.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNRandomBytes.xcodeproj; path = "../node_modules/react-native-randombytes/RNRandomBytes.xcodeproj"; sourceTree = ""; }; + 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNI18n.xcodeproj; path = "../node_modules/react-native-i18n/RNI18n.xcodeproj"; sourceTree = ""; }; + 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 52E205D210BC48B7A553BB62 /* Entypo.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Entypo.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Entypo.ttf"; sourceTree = ""; }; + 52F6ED6465184513A082652B /* libRNI18n.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNI18n.a; sourceTree = ""; }; + 54E2B86FB12D4CC49DA05C69 /* MaterialIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = MaterialIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf"; sourceTree = ""; }; + 5535217F57E44D77AA9CF083 /* libRCTOrientation.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTOrientation.a; sourceTree = ""; }; + 674B3D9595A047AB8D518F4E /* libRNFS.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFS.a; sourceTree = ""; }; + 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "../node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = ""; }; + 78C55F15EB4D4DAF9202A662 /* libRNRandomBytes.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNRandomBytes.a; sourceTree = ""; }; + 7B5870D9ED504F32B6A09C35 /* 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 = ""; }; + 7ED174A34D7D42358313368B /* 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 = ""; }; + 807594C429CA44128AB5666B /* BVLinearGradient.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = BVLinearGradient.xcodeproj; path = "../node_modules/react-native-linear-gradient/BVLinearGradient.xcodeproj"; sourceTree = ""; }; + 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; + 8AE71EE8751F4652B13BFE83 /* 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 = ""; }; + 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; + 9F1854E6D9654226B1FC8308 /* RCTCamera.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTCamera.xcodeproj; path = "../node_modules/react-native-camera/ios/RCTCamera.xcodeproj"; sourceTree = ""; }; + B3B19223008342D096AA356E /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; }; + CD48A32459B64E96843BB238 /* libRealmReact.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmReact.a; sourceTree = ""; }; + CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = EvilIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf"; sourceTree = ""; }; + DF1CD4C3D1254774ACCAE4E8 /* libBVLinearGradient.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libBVLinearGradient.a; sourceTree = ""; }; + F090E261B9854867A728CE4F /* RealmReact.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RealmReact.xcodeproj; path = "../node_modules/realm/react-native/ios/RealmReact.xcodeproj"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -150,6 +267,17 @@ 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */, 00C302EA1ABCBA2D00DB3ED1 /* libRCTVibration.a in Frameworks */, 139FDEF61B0652A700C62182 /* libRCTWebSocket.a in Frameworks */, + A39C8FE8BF9E45CF896017A7 /* libRCTCamera.a in Frameworks */, + B45B40B471414274A7A83185 /* libRCTContacts.a in Frameworks */, + FD4F213C3873473CB703B1D2 /* libRNFS.a in Frameworks */, + 213311F38CA74CE280FD09AD /* libRNI18n.a in Frameworks */, + 4D3D740D5EFA4F8592B048D7 /* libBVLinearGradient.a in Frameworks */, + 67F099D82798449FADF8358A /* libRCTOrientation.a in Frameworks */, + 4FFAE7B0414A463991039A2E /* libRNRandomBytes.a in Frameworks */, + 6CE6374707AC4EC788354DD1 /* libRNVectorIcons.a in Frameworks */, + 22118DE1207A419FBFE7B62D /* libRealmReact.a in Frameworks */, + 25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */, + BA68A2377A20496EA737000D /* libz.tbd in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -251,6 +379,94 @@ name = Products; sourceTree = ""; }; + 1E7837547A9A40E18AD63CF3 /* Resources */ = { + isa = PBXGroup; + children = ( + 52E205D210BC48B7A553BB62 /* Entypo.ttf */, + CEB0E2659D1A4F5FA842057A /* EvilIcons.ttf */, + 7B5870D9ED504F32B6A09C35 /* FontAwesome.ttf */, + 7ED174A34D7D42358313368B /* Foundation.ttf */, + 359B076A658B4FBAB5128B03 /* Ionicons.ttf */, + 54E2B86FB12D4CC49DA05C69 /* MaterialIcons.ttf */, + B3B19223008342D096AA356E /* Octicons.ttf */, + 2756305FAFF144C4A6B0A039 /* Zocial.ttf */, + ); + name = Resources; + sourceTree = ""; + }; + 20B7D0F01D3F74CC00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D0FE1D3F74CC00B70F14 /* libRNRandomBytes.a */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D0FF1D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D1031D3F74CD00B70F14 /* libRNVectorIcons.a */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D1041D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D10E1D3F74CD00B70F14 /* libRNI18n.a */, + 20B7D1101D3F74CD00B70F14 /* RNI18nTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D1061D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D10A1D3F74CD00B70F14 /* libRCTContacts.a */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D1111D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D1151D3F74CD00B70F14 /* libRCTCamera.a */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D1161D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D11A1D3F74CD00B70F14 /* libRNFS.a */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D11B1D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D11F1D3F74CD00B70F14 /* libBVLinearGradient.a */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D1201D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D1241D3F74CD00B70F14 /* libRCTOrientation.a */, + ); + name = Products; + sourceTree = ""; + }; + 20B7D1251D3F74CD00B70F14 /* Products */ = { + isa = PBXGroup; + children = ( + 20B7D1291D3F74CD00B70F14 /* libRealmReact.a */, + ); + name = Products; + sourceTree = ""; + }; 78C398B11ACF4ADC00677621 /* Products */ = { isa = PBXGroup; children = ( @@ -272,6 +488,15 @@ 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */, 00C302DF1ABCB9EE00DB3ED1 /* RCTVibration.xcodeproj */, 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */, + 9F1854E6D9654226B1FC8308 /* RCTCamera.xcodeproj */, + 09F98D1521C24548AC72563A /* RCTContacts.xcodeproj */, + 305F194186D848FDB07AF34C /* RNFS.xcodeproj */, + 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */, + 807594C429CA44128AB5666B /* BVLinearGradient.xcodeproj */, + 43A6FA689D844B0BAF3AA8B4 /* RCTOrientation.xcodeproj */, + 45FB5F523DE04BDE9877869C /* RNRandomBytes.xcodeproj */, + 8AE71EE8751F4652B13BFE83 /* RNVectorIcons.xcodeproj */, + F090E261B9854867A728CE4F /* RealmReact.xcodeproj */, ); name = Libraries; sourceTree = ""; @@ -291,6 +516,8 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* StatusImTests */, 83CBBA001A601CBA00E9B192 /* Products */, + A97BA941B2FB44B4B66EE6D3 /* Frameworks */, + 1E7837547A9A40E18AD63CF3 /* Resources */, ); indentWidth = 2; sourceTree = ""; @@ -305,6 +532,15 @@ name = Products; sourceTree = ""; }; + A97BA941B2FB44B4B66EE6D3 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */, + 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -350,7 +586,7 @@ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0610; + LastUpgradeCheck = 610; ORGANIZATIONNAME = Facebook; TargetAttributes = { 00E356ED1AD99517003FC87E = { @@ -371,10 +607,22 @@ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; projectDirPath = ""; projectReferences = ( + { + ProductGroup = 20B7D11B1D3F74CD00B70F14 /* Products */; + ProjectRef = 807594C429CA44128AB5666B /* BVLinearGradient.xcodeproj */; + }, { ProductGroup = 00C302A81ABCB8CE00DB3ED1 /* Products */; ProjectRef = 00C302A71ABCB8CE00DB3ED1 /* RCTActionSheet.xcodeproj */; }, + { + ProductGroup = 20B7D1111D3F74CD00B70F14 /* Products */; + ProjectRef = 9F1854E6D9654226B1FC8308 /* RCTCamera.xcodeproj */; + }, + { + ProductGroup = 20B7D1061D3F74CD00B70F14 /* Products */; + ProjectRef = 09F98D1521C24548AC72563A /* RCTContacts.xcodeproj */; + }, { ProductGroup = 00C302B61ABCB90400DB3ED1 /* Products */; ProjectRef = 00C302B51ABCB90400DB3ED1 /* RCTGeolocation.xcodeproj */; @@ -391,6 +639,10 @@ ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */; ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */; }, + { + ProductGroup = 20B7D1201D3F74CD00B70F14 /* Products */; + ProjectRef = 43A6FA689D844B0BAF3AA8B4 /* RCTOrientation.xcodeproj */; + }, { ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */; ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */; @@ -411,6 +663,26 @@ ProductGroup = 146834001AC3E56700842450 /* Products */; ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, + { + ProductGroup = 20B7D1251D3F74CD00B70F14 /* Products */; + ProjectRef = F090E261B9854867A728CE4F /* RealmReact.xcodeproj */; + }, + { + ProductGroup = 20B7D1161D3F74CD00B70F14 /* Products */; + ProjectRef = 305F194186D848FDB07AF34C /* RNFS.xcodeproj */; + }, + { + ProductGroup = 20B7D1041D3F74CD00B70F14 /* Products */; + ProjectRef = 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */; + }, + { + ProductGroup = 20B7D0F01D3F74CC00B70F14 /* Products */; + ProjectRef = 45FB5F523DE04BDE9877869C /* RNRandomBytes.xcodeproj */; + }, + { + ProductGroup = 20B7D0FF1D3F74CD00B70F14 /* Products */; + ProjectRef = 8AE71EE8751F4652B13BFE83 /* RNVectorIcons.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -477,6 +749,76 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 20B7D0FE1D3F74CC00B70F14 /* libRNRandomBytes.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNRandomBytes.a; + remoteRef = 20B7D0FD1D3F74CC00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D1031D3F74CD00B70F14 /* libRNVectorIcons.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNVectorIcons.a; + remoteRef = 20B7D1021D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D10A1D3F74CD00B70F14 /* libRCTContacts.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTContacts.a; + remoteRef = 20B7D1091D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D10E1D3F74CD00B70F14 /* libRNI18n.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNI18n.a; + remoteRef = 20B7D10D1D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D1101D3F74CD00B70F14 /* RNI18nTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = RNI18nTests.xctest; + remoteRef = 20B7D10F1D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D1151D3F74CD00B70F14 /* libRCTCamera.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTCamera.a; + remoteRef = 20B7D1141D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D11A1D3F74CD00B70F14 /* libRNFS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNFS.a; + remoteRef = 20B7D1191D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D11F1D3F74CD00B70F14 /* libBVLinearGradient.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libBVLinearGradient.a; + remoteRef = 20B7D11E1D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D1241D3F74CD00B70F14 /* libRCTOrientation.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRCTOrientation.a; + remoteRef = 20B7D1231D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 20B7D1291D3F74CD00B70F14 /* libRealmReact.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRealmReact.a; + remoteRef = 20B7D1281D3F74CD00B70F14 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -507,6 +849,14 @@ files = ( 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, + D28AEFB4C39548EB80416889 /* Entypo.ttf in Resources */, + 82E689BAF9FB43C8AC6FF1CA /* EvilIcons.ttf in Resources */, + C3EE9AEA6F77464588FBAA64 /* FontAwesome.ttf in Resources */, + A6AF670051B842249D520C7B /* Foundation.ttf in Resources */, + AE97D4B08C9F4821B8E9C50B /* Ionicons.ttf in Resources */, + 0F942CF509F74CCDB5CB35B0 /* MaterialIcons.ttf in Resources */, + EF2B5857B4A34E0C9707FB3F /* Octicons.ttf in Resources */, + 74242ACAF37A48D0BFACDE82 /* Zocial.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -526,7 +876,6 @@ runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/packager/react-native-xcode.sh"; - showEnvVarsInLog = 1; }; /* End PBXShellScriptBuildPhase section */ @@ -586,6 +935,18 @@ INFOPLIST_FILE = StatusImTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StatusIm.app/StatusIm"; }; @@ -603,6 +964,18 @@ INFOPLIST_FILE = StatusImTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 8.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + "\"$(SRCROOT)/$(TARGET_NAME)\"", + ); PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StatusIm.app/StatusIm"; }; @@ -617,10 +990,23 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", + "$(SRCROOT)/../node_modules/react-native-camera/ios", + "$(SRCROOT)/../node_modules/react-native-contacts/ios/RCTContacts", + "$(SRCROOT)/../node_modules/react-native-fs/**", + "$(SRCROOT)/../node_modules/react-native-i18n/RNI18n", + "$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient", + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", + "$(SRCROOT)/../node_modules/react-native-randombytes", + "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", + "$(SRCROOT)/../node_modules/realm/src/**", ); - INFOPLIST_FILE = "StatusIm/Info.plist"; + INFOPLIST_FILE = StatusIm/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = "-ObjC"; + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.statusim; PRODUCT_NAME = StatusIm; }; name = Debug; @@ -629,14 +1015,28 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + DEAD_CODE_STRIPPING = NO; HEADER_SEARCH_PATHS = ( "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", + "$(SRCROOT)/../node_modules/react-native-camera/ios", + "$(SRCROOT)/../node_modules/react-native-contacts/ios/RCTContacts", + "$(SRCROOT)/../node_modules/react-native-fs/**", + "$(SRCROOT)/../node_modules/react-native-i18n/RNI18n", + "$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient", + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", + "$(SRCROOT)/../node_modules/react-native-randombytes", + "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", + "$(SRCROOT)/../node_modules/realm/src/**", ); - INFOPLIST_FILE = "StatusIm/Info.plist"; + INFOPLIST_FILE = StatusIm/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - OTHER_LDFLAGS = "-ObjC"; + OTHER_LDFLAGS = ( + "-ObjC", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.statusim; PRODUCT_NAME = StatusIm; }; name = Release; @@ -679,6 +1079,15 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", + "$(SRCROOT)/../node_modules/react-native-camera/ios", + "$(SRCROOT)/../node_modules/react-native-contacts/ios/RCTContacts", + "$(SRCROOT)/../node_modules/react-native-fs/**", + "$(SRCROOT)/../node_modules/react-native-i18n/RNI18n", + "$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient", + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", + "$(SRCROOT)/../node_modules/react-native-randombytes", + "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", + "$(SRCROOT)/../node_modules/realm/src/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = YES; @@ -719,6 +1128,15 @@ "$(inherited)", /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, "$(SRCROOT)/../node_modules/react-native/React/**", + "$(SRCROOT)/../node_modules/react-native-camera/ios", + "$(SRCROOT)/../node_modules/react-native-contacts/ios/RCTContacts", + "$(SRCROOT)/../node_modules/react-native-fs/**", + "$(SRCROOT)/../node_modules/react-native-i18n/RNI18n", + "$(SRCROOT)/../node_modules/react-native-linear-gradient/BVLinearGradient", + "$(SRCROOT)/../node_modules/react-native-orientation/iOS/RCTOrientation/**", + "$(SRCROOT)/../node_modules/react-native-randombytes", + "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", + "$(SRCROOT)/../node_modules/realm/src/**", ); IPHONEOS_DEPLOYMENT_TARGET = 7.0; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/ios/StatusIm/AppDelegate.m b/ios/StatusIm/AppDelegate.m index 8d0df9f4bc..92f2c6058e 100644 --- a/ios/StatusIm/AppDelegate.m +++ b/ios/StatusIm/AppDelegate.m @@ -9,6 +9,7 @@ #import "AppDelegate.h" +#import "RCTBundleURLProvider.h" #import "RCTRootView.h" @implementation AppDelegate @@ -17,36 +18,14 @@ { NSURL *jsCodeLocation; - /** - * Loading JavaScript code - uncomment the one you want. - * - * OPTION 1 - * Load from development server. Start the server from the repository root: - * - * $ npm start - * - * To run on device, change `localhost` to the IP address of your computer - * (you can get this by typing `ifconfig` into the terminal and selecting the - * `inet` value under `en0:`) and make sure your computer and iOS device are - * on the same Wi-Fi network. - */ - - jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"]; - - /** - * OPTION 2 - * Load from pre-bundled file on disk. The static bundle is automatically - * generated by the "Bundle React Native code and images" build step when - * running the project on an actual device or running the project on the - * simulator in the "Release" build configuration. - */ - -// jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; - + [[RCTBundleURLProvider sharedSettings] setDefaults]; + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil]; + RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation moduleName:@"StatusIm" initialProperties:nil launchOptions:launchOptions]; + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; UIViewController *rootViewController = [UIViewController new]; diff --git a/ios/StatusIm/Info.plist b/ios/StatusIm/Info.plist index 91963b2670..987f5a738e 100644 --- a/ios/StatusIm/Info.plist +++ b/ios/StatusIm/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier - org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier) + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -22,6 +22,24 @@ 1 LSRequiresIPhoneOS + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSLocationWhenInUseUsageDescription + + UIAppFonts + + Entypo.ttf + EvilIcons.ttf + FontAwesome.ttf + Foundation.ttf + Ionicons.ttf + MaterialIcons.ttf + Octicons.ttf + Zocial.ttf + UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities @@ -36,13 +54,5 @@ UIViewControllerBasedStatusBarAppearance - NSLocationWhenInUseUsageDescription - - NSAppTransportSecurity - - - NSAllowsArbitraryLoads - - diff --git a/ios/StatusIm/main.m b/ios/StatusIm/main.m index afe0335e03..3d767fcbb9 100644 --- a/ios/StatusIm/main.m +++ b/ios/StatusIm/main.m @@ -8,15 +8,11 @@ */ #import -#import + #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { - dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - run("--bootnodes enode://e2f28126720452aa82f7d3083e49e6b3945502cb94d9750a15e27ee310eed6991618199f878e5fbc7dfa0e20f0af9554b41f491dc8f1dbae8f0f2d37a3a613aa@139.162.13.89:30303 --shh --ipcdisable --nodiscover --rpc --rpcapi db,eth,net,web3,shh --fast"); - }); - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } diff --git a/ios/StatusImTests/StatusImTests.m b/ios/StatusImTests/StatusImTests.m index 362b123fd3..56fd4597f4 100644 --- a/ios/StatusImTests/StatusImTests.m +++ b/ios/StatusImTests/StatusImTests.m @@ -13,7 +13,7 @@ #import "RCTLog.h" #import "RCTRootView.h" -#define TIMEOUT_SECONDS 240 +#define TIMEOUT_SECONDS 600 #define TEXT_TO_LOOK_FOR @"Welcome to React Native!" @interface StatusImTests : XCTestCase diff --git a/package.json b/package.json index 4842893288..8ba9e933dd 100644 --- a/package.json +++ b/package.json @@ -3,30 +3,105 @@ "version": "0.0.1", "private": true, "scripts": { - "start": "node_modules/react-native/packager/packager.sh" + "start": "node_modules/react-native/packager/packager.sh", + "postinstall": "./node_modules/.bin/rn-nodeify --install --hack" + }, + "devDependencies": { + "rn-nodeify": "^6.0.1" }, "dependencies": { + "assert": "^1.4.1", "awesome-phonenumber": "^1.0.13", + "browserify-zlib": "^0.1.4", + "console-browserify": "^1.1.0", + "constants-browserify": "0.0.1", + "dns.js": "^1.0.1", + "domain-browser": "^1.1.7", + "events": "^1.1.1", + "https-browserify": "0.0.1", "identicon.js": "github:status-im/identicon.js", - "react": "^0.14.5", - "react-native": "^0.24.1", - "react-native-action-button": "^1.1.4", - "react-native-android-sms-listener": "^0.1.3", + "os-browserify": "^0.1.2", + "path-browserify": "0.0.0", + "process": "^0.11.5", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "react": "^15.2.0", + "react-native": "^0.29.2", + "react-native-action-button": "^1.1.11", + "react-native-android-sms-listener": "github:alwx/react-native-android-sms-listener#rn0.29-support", "react-native-camera": "github:codyhazelwood/react-native-camera", - "react-native-circle-checkbox": "^0.1.3", + "react-native-circle-checkbox": "github:paramoshkinandrew/ReactNativeCircleCheckbox", "react-native-contacts": "^0.2.4", + "react-native-crypto": "^2.0.1", "react-native-fs": "^1.5.1", + "react-native-http": "github:tradle/react-native-http#834492d", "react-native-i18n": "0.0.8", "react-native-invertible-scroll-view": "^1.0.0", + "react-native-level-fs": "^2.0.1", "react-native-linear-gradient": "1.5.7", - "react-native-loading-spinner-overlay": "0.0.8", - "react-native-orientation": "^1.17.0", + "react-native-orientation": "github:youennPennarun/react-native-orientation", "react-native-qrcode": "^0.2.2", "react-native-randombytes": "^2.1.0", - "react-native-status": "git+ssh://git@github.com/status-im/react-native-status", - "react-native-vector-icons": "^1.3.4", - "react-native-orientation": "^1.17.0", - "realm": "^0.11.1", - "react-native-status": "git+ssh://git@github.com/status-im/react-native-status.git#set-soft-input-mode" + "react-native-status": "github:status-im/react-native-status", + "react-native-tcp": "^1.0.1", + "react-native-udp": "^1.2.5", + "react-native-vector-icons": "^2.0.3", + "readable-stream": "^1.0.33", + "realm": "^0.14.0", + "stream-browserify": "^1.0.0", + "timers-browserify": "^1.4.2", + "tty-browserify": "0.0.0", + "url": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "browser": { + "crypto": "react-native-crypto", + "_stream_transform": "readable-stream/transform", + "_stream_readable": "readable-stream/readable", + "_stream_writable": "readable-stream/writable", + "_stream_duplex": "readable-stream/duplex", + "_stream_passthrough": "readable-stream/passthrough", + "stream": "stream-browserify", + "zlib": "browserify-zlib", + "console": "console-browserify", + "constants": "constants-browserify", + "dns": "dns.js", + "net": "react-native-tcp", + "domain": "domain-browser", + "http": "react-native-http", + "https": "https-browserify", + "os": "os-browserify", + "path": "path-browserify", + "querystring": "querystring-es3", + "fs": "react-native-level-fs", + "dgram": "react-native-udp", + "timers": "timers-browserify", + "tty": "tty-browserify", + "vm": "vm-browserify" + }, + "react-native": { + "crypto": "react-native-crypto", + "_stream_transform": "readable-stream/transform", + "_stream_readable": "readable-stream/readable", + "_stream_writable": "readable-stream/writable", + "_stream_duplex": "readable-stream/duplex", + "_stream_passthrough": "readable-stream/passthrough", + "stream": "stream-browserify", + "zlib": "browserify-zlib", + "console": "console-browserify", + "constants": "constants-browserify", + "dns": "dns.js", + "net": "react-native-tcp", + "domain": "domain-browser", + "http": "react-native-http", + "https": "https-browserify", + "os": "os-browserify", + "path": "path-browserify", + "querystring": "querystring-es3", + "fs": "react-native-level-fs", + "dgram": "react-native-udp", + "timers": "timers-browserify", + "tty": "tty-browserify", + "vm": "vm-browserify" } -} +} \ No newline at end of file diff --git a/project.clj b/project.clj index 4fe9b62f32..45da1f4146 100644 --- a/project.clj +++ b/project.clj @@ -11,7 +11,7 @@ ^{:voom {:repo "git@github.com:status-im/status-lib.git" :branch "master"}} [status-im/protocol "0.1.1-20160706_085008-ge61756a"] - [natal-shell "0.1.6"] + [natal-shell "0.3.0"] [com.andrewmcveigh/cljs-time "0.4.0"]] :plugins [[lein-cljsbuild "1.1.1"] [lein-figwheel "0.5.0-2"]] diff --git a/src/cljsjs/react.cljs b/src/cljsjs/react.cljs index 582c4c83e0..db9e774237 100644 --- a/src/cljsjs/react.cljs +++ b/src/cljsjs/react.cljs @@ -1,4 +1,9 @@ (ns cljsjs.react) (when (exists? js/window) - (set! js/window.React (js/require "react-native"))) + ;; cause there is no window.document object in the newest version + ;; of React Native, but chance.js requires it + (set! js/window.document #js {}) + + (set! js/window.React (js/require "react")) + (set! js/ReactNative (js/require "react-native"))) diff --git a/src/status_im/android/core.cljs b/src/status_im/android/core.cljs index 859d12dbeb..2b13c9c616 100644 --- a/src/status_im/android/core.cljs +++ b/src/status_im/android/core.cljs @@ -5,7 +5,9 @@ [re-frame.core :refer [subscribe dispatch dispatch-sync]] [status-im.handlers] [status-im.subs] - [status-im.components.react :refer [navigator app-registry device-event-emitter + [status-im.components.react :refer [navigator + app-registry + keyboard orientation]] [status-im.components.main-tabs :refer [main-tabs]] [status-im.contacts.views.contact-list :refer [contact-list]] @@ -58,13 +60,13 @@ orientation #(dispatch [:set :orientation (orientation->keyword %)])) (.lockToPortrait orientation) - (.addListener device-event-emitter + (.addListener keyboard "keyboardDidShow" (fn [e] (let [h (.. e -endCoordinates -height)] (when-not (= h @keyboard-height) (dispatch [:set :keyboard-height h]))))) - (.addListener device-event-emitter + (.addListener keyboard "keyboardDidHide" #(when-not (= 0 @keyboard-height) (dispatch [:set :keyboard-height 0])))) diff --git a/src/status_im/chat/handlers.cljs b/src/status_im/chat/handlers.cljs index 0506fba958..815fb08756 100644 --- a/src/status_im/chat/handlers.cljs +++ b/src/status_im/chat/handlers.cljs @@ -193,6 +193,7 @@ :delivery-status (default-delivery-status current-chat-id) :outgoing true :timestamp (time/now-ms)})] + _ (.log js/console "WOW3") (if command (commands/set-command-input db :commands command) (assoc db :new-message (when-not (str/blank? text) message))))) diff --git a/src/status_im/chats_list/screen.cljs b/src/status_im/chats_list/screen.cljs index 1b3e6e5f98..7bcfb38a83 100644 --- a/src/status_im/chats_list/screen.cljs +++ b/src/status_im/chats_list/screen.cljs @@ -76,12 +76,12 @@ {:title (label :t/new-chat) :buttonColor :#9b59b6 :onPress #(dispatch [:show-group-contacts :people])} - [icon {:name :android-create + [icon {:name :md-create :style st/create-icon}]] [action-button-item {:title (label :t/new-group-chat) :buttonColor :#1abc9c :onPress #(dispatch [:show-group-new])} - [icon {:name :person-stalker + [icon {:name :md-person :style st/person-stalker-icon}]]]] [bottom-gradient]]))) diff --git a/src/status_im/chats_list/styles.cljs b/src/status_im/chats_list/styles.cljs index 42f8c39ca2..466a2fa81b 100644 --- a/src/status_im/chats_list/styles.cljs +++ b/src/status_im/chats_list/styles.cljs @@ -120,6 +120,6 @@ {:position :absolute :right 0 :height 230 - :width 80 + :width 220 :bottom 0 :transform [{:translateY (if animation? offset-y 1)}]}) diff --git a/src/status_im/components/animation.cljs b/src/status_im/components/animation.cljs index 0176b6e360..21a6cac5c1 100644 --- a/src/status_im/components/animation.cljs +++ b/src/status_im/components/animation.cljs @@ -42,7 +42,7 @@ (.setValue anim-value value)) (defn create-value [value] - (js/React.Animated.Value. value)) + (js/ReactNative.Animated.Value. value)) (defn x [value-xy] (.-x value-xy)) @@ -54,4 +54,4 @@ (js->clj (.getLayout value-xy))) (defn create-value-xy [x y] - (js/React.Animated.ValueXY. (clj->js {:x x, :y y}))) + (js/ReactNative.Animated.ValueXY. (clj->js {:x x, :y y}))) diff --git a/src/status_im/components/carousel/carousel.cljs b/src/status_im/components/carousel/carousel.cljs index 8c61cb114e..5f1bbc85dc 100644 --- a/src/status_im/components/carousel/carousel.cljs +++ b/src/status_im/components/carousel/carousel.cljs @@ -10,7 +10,7 @@ (defn window-page-width [] - (.-width (.get (.. r/react -Dimensions) "window"))) + (.-width (.get (.. r/react-native -Dimensions) "window"))) (def defaults {:gap 10 :sneak 10 diff --git a/src/status_im/components/drawer/view.cljs b/src/status_im/components/drawer/view.cljs index 726f9251d4..a85d4c40bf 100644 --- a/src/status_im/components/drawer/view.cljs +++ b/src/status_im/components/drawer/view.cljs @@ -2,7 +2,7 @@ (:require [clojure.string :as s] [re-frame.core :refer [subscribe dispatch dispatch-sync]] [reagent.core :as r] - [status-im.components.react :refer [react + [status-im.components.react :refer [react-native view text image @@ -73,7 +73,7 @@ (defn drawer-view [items] [drawer-layout-android {:drawerWidth 260 - :drawerPosition js/React.DrawerLayoutAndroid.positions.Left + :drawerPosition js/ReactNative.DrawerLayoutAndroid.positions.Left :render-navigation-view #(r/as-element [drawer-menu]) :ref (fn [drawer] (reset! drawer-atom drawer))} diff --git a/src/status_im/components/jail.cljs b/src/status_im/components/jail.cljs index 35d922f4a0..b80077e4ac 100644 --- a/src/status_im/components/jail.cljs +++ b/src/status_im/components/jail.cljs @@ -6,8 +6,8 @@ (def status-js (slurp "resources/status.js")) (def jail - (when (exists? (.-NativeModules r/react)) - (.-Jail (.-NativeModules r/react)))) + (when (exists? (.-NativeModules r/react-native)) + (.-Jail (.-NativeModules r/react-native)))) (when jail (.init jail status-js)) diff --git a/src/status_im/components/react.cljs b/src/status_im/components/react.cljs index c3096ece0f..e73c31b076 100644 --- a/src/status_im/components/react.cljs +++ b/src/status_im/components/react.cljs @@ -3,11 +3,11 @@ [status-im.components.styles :as st] [status-im.utils.utils :as u])) -(def react (u/require "react-native")) -(def native-modules (.-NativeModules react)) +(def react-native (u/require "react-native")) +(def native-modules (.-NativeModules react-native)) (defn get-react-property [name] - (aget react name)) + (aget react-native name)) (defn adapt-class [class] (when class (r/adapt-react-class class))) @@ -52,12 +52,12 @@ (when-let [picker (get-react-property "Picker")] (adapt-class (.-Item picker)))) -(def pan-responder (.-PanResponder js/React)) -(def animated (.-Animated js/React)) +(def pan-responder (.-PanResponder js/ReactNative)) +(def animated (.-Animated js/ReactNative)) (def animated-view (r/adapt-react-class (.-View animated))) (def animated-text (r/adapt-react-class (.-Text animated))) -(def dimensions (.-Dimensions js/React)) +(def dimensions (.-Dimensions js/ReactNative)) (defn get-dimensions [name] (js->clj (.get dimensions name) :keywordize-keys true)) @@ -75,15 +75,14 @@ (def platform - (when-let [pl (.-Platform react)] (.-OS pl))) + (when-let [pl (.-Platform react-native)] (.-OS pl))) (def android? (= platform "android")) (defn list-item [component] (r/as-element component)) -(def dismiss-keyboard! (u/require "dismissKeyboard")) -(def device-event-emitter (.-DeviceEventEmitter react)) (def orientation (u/require "react-native-orientation")) +(def keyboard (.-Keyboard react-native)) (def geth (.-Geth native-modules)) diff --git a/src/status_im/components/spinner.cljs b/src/status_im/components/spinner.cljs deleted file mode 100644 index fe4d760d5e..0000000000 --- a/src/status_im/components/spinner.cljs +++ /dev/null @@ -1,6 +0,0 @@ -(ns status-im.components.spinner - (:require [reagent.core :as r])) - -(def react-spinner (.-default (js/require "react-native-loading-spinner-overlay"))) - -(def spinner (r/adapt-react-class react-spinner)) diff --git a/src/status_im/components/text_field/view.cljs b/src/status_im/components/text_field/view.cljs index 4949c00ef2..0a3c6e2d6f 100644 --- a/src/status_im/components/text_field/view.cljs +++ b/src/status_im/components/text_field/view.cljs @@ -2,7 +2,7 @@ (:require [clojure.string :as s] [re-frame.core :refer [subscribe dispatch dispatch-sync]] [reagent.core :as r] - [status-im.components.react :refer [react + [status-im.components.react :refer [react-native view text animated-text diff --git a/src/status_im/contacts/screen.cljs b/src/status_im/contacts/screen.cljs index 21aaf4910d..7cd360f7d1 100644 --- a/src/status_im/contacts/screen.cljs +++ b/src/status_im/contacts/screen.cljs @@ -97,6 +97,6 @@ {:title (label :t/new-contact) :buttonColor :#9b59b6 :onPress #(dispatch [:navigate-to :new-contact])} - [icon {:name :android-create + [icon {:name :md-create :style create-icon}]]]] [bottom-gradient]]))) diff --git a/src/status_im/discovery/views/popular.cljs b/src/status_im/discovery/views/popular.cljs index b91b233603..28b1d8c0c3 100644 --- a/src/status_im/discovery/views/popular.cljs +++ b/src/status_im/discovery/views/popular.cljs @@ -11,7 +11,7 @@ [status-im.components.react :as r])) (defn page-width [] - (.-width (.get (.. r/react -Dimensions) "window"))) + (.-width (.get (.. r/react-native -Dimensions) "window"))) (defview popular [] [popular-tags [:get-popular-tags 3]] diff --git a/src/status_im/ios/core.cljs b/src/status_im/ios/core.cljs index ebe6286dbe..97cbc651dc 100644 --- a/src/status_im/ios/core.cljs +++ b/src/status_im/ios/core.cljs @@ -1,33 +1,30 @@ (ns status-im.ios.core (:require [reagent.core :as r :refer [atom]] - [re-frame.core :refer [subscribe dispatch dispatch-sync]] - [status-im.handlers] - [status-im.subs])) + [re-frame.core :refer [subscribe dispatch dispatch-sync]])) -(set! js/window.React (js/require "react-native")) +(set! js/window.React (js/require "react")) +(set! js/ReactNative (js/require "react-native")) -(def app-registry (.-AppRegistry js/React)) -(def text (r/adapt-react-class (.-Text js/React))) -(def view (r/adapt-react-class (.-View js/React))) -(def image (r/adapt-react-class (.-Image js/React))) -(def touchable-highlight (r/adapt-react-class (.-TouchableHighlight js/React))) +(def app-registry (.-AppRegistry js/ReactNative)) +(def text (r/adapt-react-class (.-Text js/ReactNative))) +(def view (r/adapt-react-class (.-View js/ReactNative))) +(def image (r/adapt-react-class (.-Image js/ReactNative))) +(def touchable-highlight (r/adapt-react-class (.-TouchableHighlight js/ReactNative))) (def logo-img (js/require "./images/cljs.png")) (defn alert [title] - (.alert (.-Alert js/React) title)) + (.alert (.-Alert js/ReactNative) title)) (defn app-root [] - (let [greeting (subscribe [:get-greeting])] - (fn [] - [view {:style {:flex-direction "column" :margin 40 :align-items :center}} - [text {:style {:font-size 30 :font-weight "100" :margin-bottom 20 :text-align :center}} @greeting] - [image {:source logo-img - :style {:width 80 :height 80 :margin-bottom 30}}] - [touchable-highlight {:style {:background-color "#999" :padding 10 :border-radius 5} - :on-press #(alert "HELLO!")} - [text {:style {:color :white :text-align :center :font-weight "bold"}} "press me"]]]))) + (fn [] + [view {:style {:flex-direction "column" :margin 40 :align-items :center}} + [text {:style {:font-size 30 :font-weight "100" :margin-bottom 20 :text-align :center}} "Test"] + [image {:source logo-img + :style {:width 80 :height 80 :margin-bottom 30}}] + [touchable-highlight {:style {:background-color "#999" :padding 10 :border-radius 5} + :on-press #(alert "HELLO!")} + [text {:style {:color :white :text-align :center :font-weight "bold"}} "press me"]]])) (defn init [] - (dispatch-sync [:initialize-db]) (.registerComponent app-registry "StatusIm" #(r/reactify-component app-root)))