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/.gitignore b/.gitignore
index 3e79181fd8..3a88223cee 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,6 @@ figwheel_server.log
#
out
doo-index.html
+
+# Re-natal
+re-natal
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/FontAwesome.ttf b/android/app/src/main/assets/fonts/FontAwesome.ttf
index 26dea7951a..f221e50a2e 100644
Binary files a/android/app/src/main/assets/fonts/FontAwesome.ttf and b/android/app/src/main/assets/fonts/FontAwesome.ttf differ
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..995c84454f 100644
--- a/android/app/src/main/res/values/strings.xml
+++ b/android/app/src/main/res/values/strings.xml
@@ -1,4 +1,8 @@
+
+
+
+
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/env/dev/env/ios/main.cljs b/env/dev/env/ios/main.cljs
index 3f518fd9da..07d23b6f62 100644
--- a/env/dev/env/ios/main.cljs
+++ b/env/dev/env/ios/main.cljs
@@ -1,9 +1,10 @@
(ns ^:figwheel-no-load env.ios.main
(:require [reagent.core :as r]
[status-im.ios.core :as core]
- [figwheel.client :as figwheel :include-macros true]))
+ [figwheel.client :as figwheel :include-macros true]
+ [cljs.pprint]))
- (enable-console-print!)
+(enable-console-print!)
(def cnt (r/atom 0))
(defn reloader [] @cnt [core/app-root])
diff --git a/figwheel-bridge.js b/figwheel-bridge.js
index 6a36687e4e..6d44d98094 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,49 +161,49 @@ 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');
- }
-
- if (url.indexOf(mainTestJs) > -1) {
- onLoadCb(env[platform + "_test"].main.root_el);
- console.log('Done loading Clojure app');
+ console.info('Done loading Clojure app');
}
});
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 +215,7 @@ function loadApp(platform, devHost, onLoadCb) {
}
function startApp(appName, platform, devHost) {
- React.AppRegistry.registerComponent(
+ ReactNative.AppRegistry.registerComponent(
appName, () => figwheelApp(platform, devHost));
}
@@ -215,39 +233,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
@@ -293,4 +278,4 @@ self = {
start: startApp
};
-module.exports = self;
+module.exports = self;
\ No newline at end of file
diff --git a/images/cljs.png b/images/cljs.png
deleted file mode 100644
index a7eca5dfe0..0000000000
Binary files a/images/cljs.png and /dev/null differ
diff --git a/images/cljs@2x.png b/images/cljs@2x.png
deleted file mode 100644
index 79af2b668d..0000000000
Binary files a/images/cljs@2x.png and /dev/null differ
diff --git a/images/cljs@3x.png b/images/cljs@3x.png
deleted file mode 100644
index 685d699682..0000000000
Binary files a/images/cljs@3x.png and /dev/null differ
diff --git a/ios/SF-UI-Display-Medium.otf b/ios/SF-UI-Display-Medium.otf
new file mode 100644
index 0000000000..dc2df0571e
Binary files /dev/null and b/ios/SF-UI-Display-Medium.otf differ
diff --git a/ios/SF-UI-Display-Regular.otf b/ios/SF-UI-Display-Regular.otf
new file mode 100644
index 0000000000..14c96528c4
Binary files /dev/null and b/ios/SF-UI-Display-Regular.otf differ
diff --git a/ios/SF-UI-Display-Semibold.otf b/ios/SF-UI-Display-Semibold.otf
new file mode 100644
index 0000000000..4ea7ea73ec
Binary files /dev/null and b/ios/SF-UI-Display-Semibold.otf differ
diff --git a/ios/SF-UI-Display-Thin.otf b/ios/SF-UI-Display-Thin.otf
new file mode 100644
index 0000000000..f02dcda5e4
Binary files /dev/null and b/ios/SF-UI-Display-Thin.otf differ
diff --git a/ios/StatusIm.xcodeproj/project.pbxproj b/ios/StatusIm.xcodeproj/project.pbxproj
index d933ac7b4f..9e042d902c 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,33 @@
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 */; };
+ 2028DFF91D4275B600227DCD /* SF-UI-Display-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF51D4275B600227DCD /* SF-UI-Display-Medium.otf */; };
+ 2028DFFA1D4275B600227DCD /* SF-UI-Display-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF61D4275B600227DCD /* SF-UI-Display-Regular.otf */; };
+ 2028DFFB1D4275B600227DCD /* SF-UI-Display-Semibold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF71D4275B600227DCD /* SF-UI-Display-Semibold.otf */; };
+ 2028DFFC1D4275B600227DCD /* SF-UI-Display-Thin.otf in Resources */ = {isa = PBXBuildFile; fileRef = 2028DFF81D4275B600227DCD /* SF-UI-Display-Thin.otf */; };
+ 20AB9EC61D47CC0300E7FD9C /* libRCTJail.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 201067C41D4789F700FA83B6 /* libRCTJail.a */; };
+ 20B2DBFC1D47C70C00427CD8 /* Statusgo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20B2DBFB1D47C70C00427CD8 /* Statusgo.framework */; };
+ 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 */; };
+ 3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C2A4E93F6B154AEFA3485B45 /* libTcpSockets.a */; };
+ 4D3D740D5EFA4F8592B048D7 /* libBVLinearGradient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DF1CD4C3D1254774ACCAE4E8 /* libBVLinearGradient.a */; };
+ 4FFAE7B0414A463991039A2E /* libRNRandomBytes.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C55F15EB4D4DAF9202A662 /* libRNRandomBytes.a */; };
+ 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 */; };
+ AD5063BC2B2A4C52ACE0A0B4 /* libUdpSockets.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A96279092BEC4C4B93914F48 /* libUdpSockets.a */; };
+ 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 +115,97 @@
remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192;
remoteInfo = React;
};
+ 2010676C1D477F5E00FA83B6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 38E1A2C8D0734EE99E2B16CE /* TcpSockets.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 134814201AA4EA6300B7C361;
+ remoteInfo = TcpSockets;
+ };
+ 201067711D477F5E00FA83B6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 2F0276A9E90843E996A0E762 /* UdpSockets.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 134814201AA4EA6300B7C361;
+ remoteInfo = UdpSockets;
+ };
+ 201067C31D4789F700FA83B6 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 439B6B4B407A4E2AACAFE5BE /* RCTJail.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 206C9F3A1D474E910063E3E6;
+ remoteInfo = RCTJail;
+ };
+ 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 +223,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 +244,46 @@
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 = ""; };
+ 2028DFF51D4275B600227DCD /* SF-UI-Display-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Display-Medium.otf"; sourceTree = ""; };
+ 2028DFF61D4275B600227DCD /* SF-UI-Display-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Display-Regular.otf"; sourceTree = ""; };
+ 2028DFF71D4275B600227DCD /* SF-UI-Display-Semibold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Display-Semibold.otf"; sourceTree = ""; };
+ 2028DFF81D4275B600227DCD /* SF-UI-Display-Thin.otf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "SF-UI-Display-Thin.otf"; sourceTree = ""; };
+ 20B2DBDD1D47BD5E00427CD8 /* Statusgo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Statusgo.framework; path = "../node_modules/react-native-status/ios/RCTJail/Statusgo.framework"; sourceTree = ""; };
+ 20B2DBF71D47C25500427CD8 /* Statusgo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Statusgo.framework; sourceTree = ""; };
+ 20B2DBFB1D47C70C00427CD8 /* Statusgo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Statusgo.framework; path = "../node_modules/react-native-status/ios/Statusgo.framework"; 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 = ""; };
+ 2F0276A9E90843E996A0E762 /* UdpSockets.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = UdpSockets.xcodeproj; path = "../node_modules/react-native-udp/ios/UdpSockets.xcodeproj"; 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 = ""; };
+ 38E1A2C8D0734EE99E2B16CE /* TcpSockets.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = TcpSockets.xcodeproj; path = "../node_modules/react-native-tcp/ios/TcpSockets.xcodeproj"; sourceTree = ""; };
+ 439B6B4B407A4E2AACAFE5BE /* RCTJail.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTJail.xcodeproj; path = "../node_modules/react-native-status/ios/RCTJail/RCTJail.xcodeproj"; sourceTree = ""; };
+ 43A6FA689D844B0BAF3AA8B4 /* RCTOrientation.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTOrientation.xcodeproj; path = "../node_modules/react-native-orientation/iOS/RCTOrientation.xcodeproj"; sourceTree = ""; };
+ 45FB5F523DE04BDE9877869C /* RNRandomBytes.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNRandomBytes.xcodeproj; path = "../node_modules/react-native-randombytes/RNRandomBytes.xcodeproj"; sourceTree = ""; };
+ 46E2F6052EB44C698C680894 /* RNI18n.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNI18n.xcodeproj; path = "../node_modules/react-native-i18n/RNI18n.xcodeproj"; sourceTree = ""; };
+ 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
+ 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 = ""; };
+ A96279092BEC4C4B93914F48 /* libUdpSockets.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libUdpSockets.a; sourceTree = ""; };
+ B3B19223008342D096AA356E /* Octicons.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = Octicons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/Octicons.ttf"; sourceTree = ""; };
+ C2A4E93F6B154AEFA3485B45 /* libTcpSockets.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libTcpSockets.a; sourceTree = ""; };
+ CD48A32459B64E96843BB238 /* libRealmReact.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRealmReact.a; sourceTree = ""; };
+ 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 */
@@ -140,6 +298,8 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 20B2DBFC1D47C70C00427CD8 /* Statusgo.framework in Frameworks */,
+ 20AB9EC61D47CC0300E7FD9C /* libRCTJail.a in Frameworks */,
146834051AC3E58100842450 /* libReact.a in Frameworks */,
00C302E51ABCBA2D00DB3ED1 /* libRCTActionSheet.a in Frameworks */,
00C302E71ABCBA2D00DB3ED1 /* libRCTGeolocation.a in Frameworks */,
@@ -150,6 +310,19 @@
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 */,
+ 3E15DFEC1F6F4D7CAE088F49 /* libTcpSockets.a in Frameworks */,
+ AD5063BC2B2A4C52ACE0A0B4 /* libUdpSockets.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -251,6 +424,130 @@
name = Products;
sourceTree = "";
};
+ 1E7837547A9A40E18AD63CF3 /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 2028E0111D4275BD00227DCD /* SF */,
+ 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 = "";
+ };
+ 201067551D477F5E00FA83B6 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 2010676D1D477F5E00FA83B6 /* libTcpSockets.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 2010676E1D477F5E00FA83B6 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 201067721D477F5E00FA83B6 /* libUdpSockets.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 201067BA1D4789F700FA83B6 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 201067C41D4789F700FA83B6 /* libRCTJail.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 2028E0111D4275BD00227DCD /* SF */ = {
+ isa = PBXGroup;
+ children = (
+ 2028DFF51D4275B600227DCD /* SF-UI-Display-Medium.otf */,
+ 2028DFF61D4275B600227DCD /* SF-UI-Display-Regular.otf */,
+ 2028DFF71D4275B600227DCD /* SF-UI-Display-Semibold.otf */,
+ 2028DFF81D4275B600227DCD /* SF-UI-Display-Thin.otf */,
+ );
+ name = SF;
+ 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 +569,18 @@
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 */,
+ 38E1A2C8D0734EE99E2B16CE /* TcpSockets.xcodeproj */,
+ 2F0276A9E90843E996A0E762 /* UdpSockets.xcodeproj */,
+ 439B6B4B407A4E2AACAFE5BE /* RCTJail.xcodeproj */,
);
name = Libraries;
sourceTree = "";
@@ -291,6 +600,8 @@
832341AE1AAA6A7D00B99B32 /* Libraries */,
00E356EF1AD99517003FC87E /* StatusImTests */,
83CBBA001A601CBA00E9B192 /* Products */,
+ A97BA941B2FB44B4B66EE6D3 /* Frameworks */,
+ 1E7837547A9A40E18AD63CF3 /* Resources */,
);
indentWidth = 2;
sourceTree = "";
@@ -305,6 +616,18 @@
name = Products;
sourceTree = "";
};
+ A97BA941B2FB44B4B66EE6D3 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ 20B2DBFB1D47C70C00427CD8 /* Statusgo.framework */,
+ 20B2DBF71D47C25500427CD8 /* Statusgo.framework */,
+ 20B2DBDD1D47BD5E00427CD8 /* Statusgo.framework */,
+ 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */,
+ 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -350,7 +673,7 @@
83CBB9F71A601CBA00E9B192 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 0610;
+ LastUpgradeCheck = 610;
ORGANIZATIONNAME = Facebook;
TargetAttributes = {
00E356ED1AD99517003FC87E = {
@@ -371,10 +694,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 */;
@@ -383,6 +718,10 @@
ProductGroup = 00C302BC1ABCB91800DB3ED1 /* Products */;
ProjectRef = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */;
},
+ {
+ ProductGroup = 201067BA1D4789F700FA83B6 /* Products */;
+ ProjectRef = 439B6B4B407A4E2AACAFE5BE /* RCTJail.xcodeproj */;
+ },
{
ProductGroup = 78C398B11ACF4ADC00677621 /* Products */;
ProjectRef = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */;
@@ -391,6 +730,10 @@
ProductGroup = 00C302D41ABCB9D200DB3ED1 /* Products */;
ProjectRef = 00C302D31ABCB9D200DB3ED1 /* RCTNetwork.xcodeproj */;
},
+ {
+ ProductGroup = 20B7D1201D3F74CD00B70F14 /* Products */;
+ ProjectRef = 43A6FA689D844B0BAF3AA8B4 /* RCTOrientation.xcodeproj */;
+ },
{
ProductGroup = 139105B71AF99BAD00B5F7CC /* Products */;
ProjectRef = 139105B61AF99BAD00B5F7CC /* RCTSettings.xcodeproj */;
@@ -411,6 +754,34 @@
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 */;
+ },
+ {
+ ProductGroup = 201067551D477F5E00FA83B6 /* Products */;
+ ProjectRef = 38E1A2C8D0734EE99E2B16CE /* TcpSockets.xcodeproj */;
+ },
+ {
+ ProductGroup = 2010676E1D477F5E00FA83B6 /* Products */;
+ ProjectRef = 2F0276A9E90843E996A0E762 /* UdpSockets.xcodeproj */;
+ },
);
projectRoot = "";
targets = (
@@ -477,6 +848,97 @@
remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
+ 2010676D1D477F5E00FA83B6 /* libTcpSockets.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libTcpSockets.a;
+ remoteRef = 2010676C1D477F5E00FA83B6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 201067721D477F5E00FA83B6 /* libUdpSockets.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libUdpSockets.a;
+ remoteRef = 201067711D477F5E00FA83B6 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 201067C41D4789F700FA83B6 /* libRCTJail.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = libRCTJail.a;
+ remoteRef = 201067C31D4789F700FA83B6 /* 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 +969,18 @@
files = (
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
+ 2028DFFA1D4275B600227DCD /* SF-UI-Display-Regular.otf in Resources */,
+ 2028DFF91D4275B600227DCD /* SF-UI-Display-Medium.otf in Resources */,
+ 2028DFFC1D4275B600227DCD /* SF-UI-Display-Thin.otf in Resources */,
+ 2028DFFB1D4275B600227DCD /* SF-UI-Display-Semibold.otf 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 +1000,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 +1059,22 @@
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)\"",
+ "\"$(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 +1092,22 @@
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)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ "\"$(SRCROOT)/$(TARGET_NAME)\"",
+ );
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/StatusIm.app/StatusIm";
};
@@ -611,33 +1116,80 @@
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ARCHS = (
+ "$(ARCHS_STANDARD)",
+ x86_64,
+ );
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
DEAD_CODE_STRIPPING = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../node_modules/react-native-status/ios";
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/**",
+ "$(SRCROOT)/../node_modules/react-native-tcp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-udp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
);
- 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;
+ VALID_ARCHS = "arm64 armv7 armv7s x86_64";
};
name = Debug;
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ARCHS = (
+ "$(ARCHS_STANDARD)",
+ x86_64,
+ );
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ DEAD_CODE_STRIPPING = NO;
+ FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../node_modules/react-native-status/ios";
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/**",
+ "$(SRCROOT)/../node_modules/react-native-tcp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-udp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
);
- 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;
+ VALID_ARCHS = "arm64 armv7 armv7s x86_64";
};
name = Release;
};
@@ -679,6 +1231,19 @@
"$(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/**",
+ "$(SRCROOT)/../node_modules/react-native-tcp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-udp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
);
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -719,6 +1284,19 @@
"$(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/**",
+ "$(SRCROOT)/../node_modules/react-native-tcp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-udp/ios/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
+ "$(SRCROOT)/../node_modules/react-native-status/ios/RCTJail/RCTJail/**",
);
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = NO;
diff --git a/ios/StatusIm/AppDelegate.m b/ios/StatusIm/AppDelegate.m
index 8d0df9f4bc..edeb5e5680 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,13 @@
{
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"];
+ 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/Images.xcassets/Contents.json b/ios/StatusIm/Images.xcassets/Contents.json
new file mode 100644
index 0000000000..da4a164c91
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/avatar.imageset/Contents.json b/ios/StatusIm/Images.xcassets/avatar.imageset/Contents.json
new file mode 100644
index 0000000000..c995bd82c7
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/avatar.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "avatar.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/avatar.imageset/avatar.png b/ios/StatusIm/Images.xcassets/avatar.imageset/avatar.png
new file mode 100644
index 0000000000..7fb2d0b42b
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/avatar.imageset/avatar.png differ
diff --git a/ios/StatusIm/Images.xcassets/corner_left_bottom.imageset/Contents.json b/ios/StatusIm/Images.xcassets/corner_left_bottom.imageset/Contents.json
new file mode 100644
index 0000000000..8f7abaebbb
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/corner_left_bottom.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "corner_left_bottom.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/corner_left_bottom.imageset/corner_left_bottom.png b/ios/StatusIm/Images.xcassets/corner_left_bottom.imageset/corner_left_bottom.png
new file mode 100644
index 0000000000..0fff341220
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/corner_left_bottom.imageset/corner_left_bottom.png differ
diff --git a/ios/StatusIm/Images.xcassets/corner_left_top.imageset/Contents.json b/ios/StatusIm/Images.xcassets/corner_left_top.imageset/Contents.json
new file mode 100644
index 0000000000..8a4261dfff
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/corner_left_top.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "corner_left_top.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/corner_left_top.imageset/corner_left_top.png b/ios/StatusIm/Images.xcassets/corner_left_top.imageset/corner_left_top.png
new file mode 100644
index 0000000000..e25037ece3
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/corner_left_top.imageset/corner_left_top.png differ
diff --git a/ios/StatusIm/Images.xcassets/corner_right_bottom.imageset/Contents.json b/ios/StatusIm/Images.xcassets/corner_right_bottom.imageset/Contents.json
new file mode 100644
index 0000000000..077dc66507
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/corner_right_bottom.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "corner_right_bottom.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/corner_right_bottom.imageset/corner_right_bottom.png b/ios/StatusIm/Images.xcassets/corner_right_bottom.imageset/corner_right_bottom.png
new file mode 100644
index 0000000000..e542ec0d64
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/corner_right_bottom.imageset/corner_right_bottom.png differ
diff --git a/ios/StatusIm/Images.xcassets/corner_right_top.imageset/Contents.json b/ios/StatusIm/Images.xcassets/corner_right_top.imageset/Contents.json
new file mode 100644
index 0000000000..4a70ee3948
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/corner_right_top.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "corner_right_top.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/corner_right_top.imageset/corner_right_top.png b/ios/StatusIm/Images.xcassets/corner_right_top.imageset/corner_right_top.png
new file mode 100644
index 0000000000..a6a65aedc9
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/corner_right_top.imageset/corner_right_top.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_add.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_add.imageset/Contents.json
new file mode 100644
index 0000000000..32c01ec112
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_add.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_add.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_add.imageset/icon_add.png b/ios/StatusIm/Images.xcassets/icon_add.imageset/icon_add.png
new file mode 100644
index 0000000000..2780585768
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_add.imageset/icon_add.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_add_gray.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_add_gray.imageset/Contents.json
new file mode 100644
index 0000000000..bd31b2dad5
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_add_gray.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_add_gray.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_add_gray.imageset/icon_add_gray.png b/ios/StatusIm/Images.xcassets/icon_add_gray.imageset/icon_add_gray.png
new file mode 100644
index 0000000000..55a1592352
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_add_gray.imageset/icon_add_gray.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_avatar.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_avatar.imageset/Contents.json
new file mode 100644
index 0000000000..d7258658d9
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_avatar.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_avatar.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_avatar.imageset/icon_avatar.png b/ios/StatusIm/Images.xcassets/icon_avatar.imageset/icon_avatar.png
new file mode 100644
index 0000000000..f3b8d0770d
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_avatar.imageset/icon_avatar.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_back.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_back.imageset/Contents.json
new file mode 100644
index 0000000000..26468eea27
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_back.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_back.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_back.imageset/icon_back.png b/ios/StatusIm/Images.xcassets/icon_back.imageset/icon_back.png
new file mode 100644
index 0000000000..4d688372c9
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_back.imageset/icon_back.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_back_white.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_back_white.imageset/Contents.json
new file mode 100644
index 0000000000..1a8177ac16
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_back_white.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_back_white.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_back_white.imageset/icon_back_white.png b/ios/StatusIm/Images.xcassets/icon_back_white.imageset/icon_back_white.png
new file mode 100644
index 0000000000..166bc865a4
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_back_white.imageset/icon_back_white.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_bin.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_bin.imageset/Contents.json
new file mode 100644
index 0000000000..3dd5b54b3c
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_bin.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_bin.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_bin.imageset/icon_bin.png b/ios/StatusIm/Images.xcassets/icon_bin.imageset/icon_bin.png
new file mode 100644
index 0000000000..fa960dbf1d
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_bin.imageset/icon_bin.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_close_gray.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_close_gray.imageset/Contents.json
new file mode 100644
index 0000000000..cdbac7a9e1
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_close_gray.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_close_gray.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_close_gray.imageset/icon_close_gray.png b/ios/StatusIm/Images.xcassets/icon_close_gray.imageset/icon_close_gray.png
new file mode 100644
index 0000000000..c1f1c5f300
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_close_gray.imageset/icon_close_gray.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_close_white.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_close_white.imageset/Contents.json
new file mode 100644
index 0000000000..aa3fb77e9e
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_close_white.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_close_white.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_close_white.imageset/icon_close_white.png b/ios/StatusIm/Images.xcassets/icon_close_white.imageset/icon_close_white.png
new file mode 100644
index 0000000000..32e84becb6
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_close_white.imageset/icon_close_white.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_dollar.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_dollar.imageset/Contents.json
new file mode 100644
index 0000000000..ed48a38167
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_dollar.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_dollar.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_dollar.imageset/icon_dollar.png b/ios/StatusIm/Images.xcassets/icon_dollar.imageset/icon_dollar.png
new file mode 100644
index 0000000000..85d93cab2c
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_dollar.imageset/icon_dollar.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_dollar_green.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_dollar_green.imageset/Contents.json
new file mode 100644
index 0000000000..4acd2dadd6
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_dollar_green.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_dollar_green.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_dollar_green.imageset/icon_dollar_green.png b/ios/StatusIm/Images.xcassets/icon_dollar_green.imageset/icon_dollar_green.png
new file mode 100644
index 0000000000..dac30955fe
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_dollar_green.imageset/icon_dollar_green.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_dots.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_dots.imageset/Contents.json
new file mode 100644
index 0000000000..0e5ab17112
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_dots.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_dots.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_dots.imageset/icon_dots.png b/ios/StatusIm/Images.xcassets/icon_dots.imageset/icon_dots.png
new file mode 100644
index 0000000000..464cfeb09f
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_dots.imageset/icon_dots.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_drag_down.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_drag_down.imageset/Contents.json
new file mode 100644
index 0000000000..25da82bc5e
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_drag_down.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_drag_down.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_drag_down.imageset/icon_drag_down.png b/ios/StatusIm/Images.xcassets/icon_drag_down.imageset/icon_drag_down.png
new file mode 100644
index 0000000000..7e7a4912bc
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_drag_down.imageset/icon_drag_down.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_drag_white.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_drag_white.imageset/Contents.json
new file mode 100644
index 0000000000..f802fecef4
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_drag_white.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_drag_white.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_drag_white.imageset/icon_drag_white.png b/ios/StatusIm/Images.xcassets/icon_drag_white.imageset/icon_drag_white.png
new file mode 100644
index 0000000000..23fa971c5e
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_drag_white.imageset/icon_drag_white.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_group.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_group.imageset/Contents.json
new file mode 100644
index 0000000000..1e9bce3278
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_group.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_group.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_group.imageset/icon_group.png b/ios/StatusIm/Images.xcassets/icon_group.imageset/icon_group.png
new file mode 100644
index 0000000000..b14d23f73b
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_group.imageset/icon_group.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_group_big.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_group_big.imageset/Contents.json
new file mode 100644
index 0000000000..54bb50362d
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_group_big.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_group_big.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_group_big.imageset/icon_group_big.png b/ios/StatusIm/Images.xcassets/icon_group_big.imageset/icon_group_big.png
new file mode 100644
index 0000000000..a1bff88bb0
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_group_big.imageset/icon_group_big.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_hamburger.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_hamburger.imageset/Contents.json
new file mode 100644
index 0000000000..7466451000
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_hamburger.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_hamburger.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_hamburger.imageset/icon_hamburger.png b/ios/StatusIm/Images.xcassets/icon_hamburger.imageset/icon_hamburger.png
new file mode 100644
index 0000000000..8bd85bc66a
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_hamburger.imageset/icon_hamburger.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_input_list.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_input_list.imageset/Contents.json
new file mode 100644
index 0000000000..5fcc1377bb
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_input_list.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_input_list.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_input_list.imageset/icon_input_list.png b/ios/StatusIm/Images.xcassets/icon_input_list.imageset/icon_input_list.png
new file mode 100644
index 0000000000..9e4fd528b3
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_input_list.imageset/icon_input_list.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_list.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_list.imageset/Contents.json
new file mode 100644
index 0000000000..5a463f3dea
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_list.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_list.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_list.imageset/icon_list.png b/ios/StatusIm/Images.xcassets/icon_list.imageset/icon_list.png
new file mode 100644
index 0000000000..e253971bae
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_list.imageset/icon_list.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_lock_gray.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_lock_gray.imageset/Contents.json
new file mode 100644
index 0000000000..ced131029f
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_lock_gray.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_lock_gray.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_lock_gray.imageset/icon_lock_gray.png b/ios/StatusIm/Images.xcassets/icon_lock_gray.imageset/icon_lock_gray.png
new file mode 100644
index 0000000000..f18aaa61e1
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_lock_gray.imageset/icon_lock_gray.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_lock_white.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_lock_white.imageset/Contents.json
new file mode 100644
index 0000000000..1ceca537cf
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_lock_white.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_lock_white.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_lock_white.imageset/icon_lock_white.png b/ios/StatusIm/Images.xcassets/icon_lock_white.imageset/icon_lock_white.png
new file mode 100644
index 0000000000..ccddc79dec
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_lock_white.imageset/icon_lock_white.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_menu_group.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_menu_group.imageset/Contents.json
new file mode 100644
index 0000000000..e499cb9f09
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_menu_group.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_menu_group.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_menu_group.imageset/icon_menu_group.png b/ios/StatusIm/Images.xcassets/icon_menu_group.imageset/icon_menu_group.png
new file mode 100644
index 0000000000..a356f7ccdd
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_menu_group.imageset/icon_menu_group.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_more_vertical.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_more_vertical.imageset/Contents.json
new file mode 100644
index 0000000000..bb21bc5206
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_more_vertical.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_more_vertical.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_more_vertical.imageset/icon_more_vertical.png b/ios/StatusIm/Images.xcassets/icon_more_vertical.imageset/icon_more_vertical.png
new file mode 100644
index 0000000000..d30018f924
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_more_vertical.imageset/icon_more_vertical.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_more_vertical_blue.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_more_vertical_blue.imageset/Contents.json
new file mode 100644
index 0000000000..2581b977ee
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_more_vertical_blue.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_more_vertical_blue.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_more_vertical_blue.imageset/icon_more_vertical_blue.png b/ios/StatusIm/Images.xcassets/icon_more_vertical_blue.imageset/icon_more_vertical_blue.png
new file mode 100644
index 0000000000..79449d9dff
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_more_vertical_blue.imageset/icon_more_vertical_blue.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_muted.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_muted.imageset/Contents.json
new file mode 100644
index 0000000000..052a64996d
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_muted.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_muted.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_muted.imageset/icon_muted.png b/ios/StatusIm/Images.xcassets/icon_muted.imageset/icon_muted.png
new file mode 100644
index 0000000000..674a9faa66
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_muted.imageset/icon_muted.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_notifications_on.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_notifications_on.imageset/Contents.json
new file mode 100644
index 0000000000..fecfd53e27
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_notifications_on.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_notifications_on.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_notifications_on.imageset/icon_notifications_on.png b/ios/StatusIm/Images.xcassets/icon_notifications_on.imageset/icon_notifications_on.png
new file mode 100644
index 0000000000..a0ee3c3fd5
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_notifications_on.imageset/icon_notifications_on.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_ok.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_ok.imageset/Contents.json
new file mode 100644
index 0000000000..3fe06efeae
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_ok.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_ok.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_ok.imageset/icon_ok.png b/ios/StatusIm/Images.xcassets/icon_ok.imageset/icon_ok.png
new file mode 100644
index 0000000000..4abb3e2e57
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_ok.imageset/icon_ok.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_blue.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_ok_blue.imageset/Contents.json
new file mode 100644
index 0000000000..d29ccc9482
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_ok_blue.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_ok_blue.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_blue.imageset/icon_ok_blue.png b/ios/StatusIm/Images.xcassets/icon_ok_blue.imageset/icon_ok_blue.png
new file mode 100644
index 0000000000..9e8661249d
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_ok_blue.imageset/icon_ok_blue.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_disabled.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_ok_disabled.imageset/Contents.json
new file mode 100644
index 0000000000..66360b34ca
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_ok_disabled.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_ok_disabled.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_disabled.imageset/icon_ok_disabled.png b/ios/StatusIm/Images.xcassets/icon_ok_disabled.imageset/icon_ok_disabled.png
new file mode 100644
index 0000000000..513a2177a2
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_ok_disabled.imageset/icon_ok_disabled.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_purple.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_ok_purple.imageset/Contents.json
new file mode 100644
index 0000000000..96fbd01abb
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_ok_purple.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_ok_purple.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_purple.imageset/icon_ok_purple.png b/ios/StatusIm/Images.xcassets/icon_ok_purple.imageset/icon_ok_purple.png
new file mode 100644
index 0000000000..b294224264
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_ok_purple.imageset/icon_ok_purple.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_small.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_ok_small.imageset/Contents.json
new file mode 100644
index 0000000000..92a81a0b71
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_ok_small.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_ok_small.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_small.imageset/icon_ok_small.png b/ios/StatusIm/Images.xcassets/icon_ok_small.imageset/icon_ok_small.png
new file mode 100644
index 0000000000..e824f5e8eb
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_ok_small.imageset/icon_ok_small.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_small_copy_2.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_ok_small_copy_2.imageset/Contents.json
new file mode 100644
index 0000000000..eac35ff2a0
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_ok_small_copy_2.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_ok_small_copy_2.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_ok_small_copy_2.imageset/icon_ok_small_copy_2.png b/ios/StatusIm/Images.xcassets/icon_ok_small_copy_2.imageset/icon_ok_small_copy_2.png
new file mode 100644
index 0000000000..e824f5e8eb
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_ok_small_copy_2.imageset/icon_ok_small_copy_2.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_plus.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_plus.imageset/Contents.json
new file mode 100644
index 0000000000..1b8c20f1c6
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_plus.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_plus.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_plus.imageset/icon_plus.png b/ios/StatusIm/Images.xcassets/icon_plus.imageset/icon_plus.png
new file mode 100644
index 0000000000..dad95d1814
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_plus.imageset/icon_plus.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_qr.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_qr.imageset/Contents.json
new file mode 100644
index 0000000000..bd62d825e7
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_qr.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_qr.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_qr.imageset/icon_qr.png b/ios/StatusIm/Images.xcassets/icon_qr.imageset/icon_qr.png
new file mode 100644
index 0000000000..f7b3c5ad15
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_qr.imageset/icon_qr.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_scan_white.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_scan_white.imageset/Contents.json
new file mode 100644
index 0000000000..dcdc616423
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_scan_white.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_scan_white.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_scan_white.imageset/icon_scan_white.png b/ios/StatusIm/Images.xcassets/icon_scan_white.imageset/icon_scan_white.png
new file mode 100644
index 0000000000..9aeeecba40
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_scan_white.imageset/icon_scan_white.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_search.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_search.imageset/Contents.json
new file mode 100644
index 0000000000..aaef9bba5c
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_search.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_search.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_search.imageset/icon_search.png b/ios/StatusIm/Images.xcassets/icon_search.imageset/icon_search.png
new file mode 100644
index 0000000000..b057823f3b
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_search.imageset/icon_search.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_search_gray_copy.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_search_gray_copy.imageset/Contents.json
new file mode 100644
index 0000000000..90a07d3f4b
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_search_gray_copy.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_search_gray_copy.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_search_gray_copy.imageset/icon_search_gray_copy.png b/ios/StatusIm/Images.xcassets/icon_search_gray_copy.imageset/icon_search_gray_copy.png
new file mode 100644
index 0000000000..d138f4e4b9
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_search_gray_copy.imageset/icon_search_gray_copy.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_send.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_send.imageset/Contents.json
new file mode 100644
index 0000000000..9498f71507
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_send.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_send.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_send.imageset/icon_send.png b/ios/StatusIm/Images.xcassets/icon_send.imageset/icon_send.png
new file mode 100644
index 0000000000..29c51712c3
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_send.imageset/icon_send.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_settings.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_settings.imageset/Contents.json
new file mode 100644
index 0000000000..dfa2c91077
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_settings.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_settings.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_settings.imageset/icon_settings.png b/ios/StatusIm/Images.xcassets/icon_settings.imageset/icon_settings.png
new file mode 100644
index 0000000000..561a5dcc25
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_settings.imageset/icon_settings.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_smile.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_smile.imageset/Contents.json
new file mode 100644
index 0000000000..322839f98e
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_smile.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_smile.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_smile.imageset/icon_smile.png b/ios/StatusIm/Images.xcassets/icon_smile.imageset/icon_smile.png
new file mode 100644
index 0000000000..45dfb63996
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_smile.imageset/icon_smile.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_tab_chats.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_tab_chats.imageset/Contents.json
new file mode 100644
index 0000000000..02a839408c
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_tab_chats.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_tab_chats.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_tab_chats.imageset/icon_tab_chats.png b/ios/StatusIm/Images.xcassets/icon_tab_chats.imageset/icon_tab_chats.png
new file mode 100644
index 0000000000..382bcaaaf6
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_tab_chats.imageset/icon_tab_chats.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_tab_contacts.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_tab_contacts.imageset/Contents.json
new file mode 100644
index 0000000000..1bd385d0a8
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_tab_contacts.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_tab_contacts.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_tab_contacts.imageset/icon_tab_contacts.png b/ios/StatusIm/Images.xcassets/icon_tab_contacts.imageset/icon_tab_contacts.png
new file mode 100644
index 0000000000..19f17a0942
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_tab_contacts.imageset/icon_tab_contacts.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_tab_discovery.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_tab_discovery.imageset/Contents.json
new file mode 100644
index 0000000000..d0cf0bd329
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_tab_discovery.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_tab_discovery.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_tab_discovery.imageset/icon_tab_discovery.png b/ios/StatusIm/Images.xcassets/icon_tab_discovery.imageset/icon_tab_discovery.png
new file mode 100644
index 0000000000..8bc25d2ab3
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_tab_discovery.imageset/icon_tab_discovery.png differ
diff --git a/ios/StatusIm/Images.xcassets/icon_up.imageset/Contents.json b/ios/StatusIm/Images.xcassets/icon_up.imageset/Contents.json
new file mode 100644
index 0000000000..1b137c08cd
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/icon_up.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_up.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/icon_up.imageset/icon_up.png b/ios/StatusIm/Images.xcassets/icon_up.imageset/icon_up.png
new file mode 100644
index 0000000000..01e16f8ce1
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/icon_up.imageset/icon_up.png differ
diff --git a/ios/StatusIm/Images.xcassets/scan_blue.imageset/Contents.json b/ios/StatusIm/Images.xcassets/scan_blue.imageset/Contents.json
new file mode 100644
index 0000000000..3be5fbd2eb
--- /dev/null
+++ b/ios/StatusIm/Images.xcassets/scan_blue.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "scan_blue.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/ios/StatusIm/Images.xcassets/scan_blue.imageset/scan_blue.png b/ios/StatusIm/Images.xcassets/scan_blue.imageset/scan_blue.png
new file mode 100644
index 0000000000..b89f57307c
Binary files /dev/null and b/ios/StatusIm/Images.xcassets/scan_blue.imageset/scan_blue.png differ
diff --git a/ios/StatusIm/Info.plist b/ios/StatusIm/Info.plist
index 91963b2670..ee2fe54827 100644
--- a/ios/StatusIm/Info.plist
+++ b/ios/StatusIm/Info.plist
@@ -1,48 +1,62 @@
-
- CFBundleDevelopmentRegion
- en
- CFBundleExecutable
- $(EXECUTABLE_NAME)
- CFBundleIdentifier
- org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)
- CFBundleInfoDictionaryVersion
- 6.0
- CFBundleName
- $(PRODUCT_NAME)
- CFBundlePackageType
- APPL
- CFBundleShortVersionString
- 1.0
- CFBundleSignature
- ????
- CFBundleVersion
- 1
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIRequiredDeviceCapabilities
-
- armv7
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UIViewControllerBasedStatusBarAppearance
-
- NSLocationWhenInUseUsageDescription
-
- NSAppTransportSecurity
-
- NSAllowsArbitraryLoads
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSRequiresIPhoneOS
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+
+ NSLocationWhenInUseUsageDescription
+
+ UIAppFonts
+
+ SF-UI-Display-Medium.otf
+ SF-UI-Display-Regular.otf
+ SF-UI-Display-Semibold.otf
+ SF-UI-Display-Thin.otf
+ Entypo.ttf
+ EvilIcons.ttf
+ FontAwesome.ttf
+ Foundation.ttf
+ Ionicons.ttf
+ MaterialIcons.ttf
+ Octicons.ttf
+ Zocial.ttf
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIRequiredDeviceCapabilities
+
+ armv7
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UIViewControllerBasedStatusBarAppearance
+
-
-
+
\ No newline at end of file
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..75ed14a03f 100644
--- a/package.json
+++ b/package.json
@@ -3,30 +3,106 @@
"version": "0.0.1",
"private": true,
"scripts": {
- "start": "node_modules/react-native/packager/packager.sh"
+ "start": "node_modules/react-native/packager/packager.sh",
+ "postinstall": "./postinstall.sh"
+ },
+ "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",
+ "re-natal": "0.2.38",
+ "react": "^15.2.0",
+ "react-native": "^0.30.0",
+ "react-native-action-button": "^1.1.11",
+ "react-native-android-sms-listener": "github:alwx/react-native-android-sms-listener#listener-bugfix",
"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#ios-module",
+ "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"
}
}
diff --git a/postinstall.sh b/postinstall.sh
new file mode 100755
index 0000000000..a5dab99b06
--- /dev/null
+++ b/postinstall.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+# rn-nodeify
+./node_modules/.bin/rn-nodeify --install --hack;
+
+# symlink for re-natal
+if ! [ -f re-natal ]; then
+ ln -s ./node_modules/re-natal/index.js re-natal;
+else
+ echo "exists"
+fi
diff --git a/project.clj b/project.clj
index 4fe9b62f32..7d8c65b347 100644
--- a/project.clj
+++ b/project.clj
@@ -6,12 +6,12 @@
:dependencies [[org.clojure/clojure "1.9.0-alpha7"]
[org.clojure/clojurescript "1.9.76"]
[reagent "0.5.1" :exclusions [cljsjs/react]]
- [re-frame "0.6.0"]
+ [re-frame "0.7.0"]
[prismatic/schema "1.0.4"]
^{: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/shim.js b/shim.js
new file mode 100644
index 0000000000..872e76863e
--- /dev/null
+++ b/shim.js
@@ -0,0 +1,22 @@
+if (typeof __dirname === 'undefined') global.__dirname = '/'
+if (typeof __filename === 'undefined') global.__filename = ''
+if (typeof process === 'undefined') {
+ global.process = require('process')
+} else {
+ var bProcess = require('process')
+ for (var p in bProcess) {
+ if (!(p in process)) {
+ process[p] = bProcess[p]
+ }
+ }
+}
+
+process.browser = false
+if (typeof Buffer === 'undefined') global.Buffer = require('buffer').Buffer
+
+// global.location = global.location || { port: 80 }
+var isDev = typeof __DEV__ === 'boolean' && __DEV__
+process.env.NODE_ENV = isDev ? 'development' : 'production'
+if (typeof localStorage !== 'undefined') {
+ localStorage.debug = isDev ? '*' : ''
+}
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/accounts/handlers.cljs b/src/status_im/accounts/handlers.cljs
index c9de35487b..e9117410fd 100644
--- a/src/status_im/accounts/handlers.cljs
+++ b/src/status_im/accounts/handlers.cljs
@@ -2,7 +2,7 @@
(:require [status-im.models.accounts :as accounts]
[re-frame.core :refer [register-handler after dispatch dispatch-sync debug]]
[status-im.utils.logging :as log]
- [status-im.components.react :refer [geth]]
+ [status-im.components.geth :as geth]
[status-im.utils.types :refer [json->clj]]
[status-im.persistence.simple-kv-store :as kv]
[status-im.protocol.state.storage :as storage]
@@ -45,7 +45,7 @@
(register-handler :create-account
(-> (fn [db [_ password]]
- (.createAccount geth password (fn [result] (account-created db result password)))
+ (geth/create-account password (fn [result] (account-created db result password)))
db)))
(defn initialize-account [db account]
@@ -68,14 +68,14 @@
(register-handler :login-account
(-> (fn [db [_ address password]]
- (.login geth address password (fn [result]
- (let [data (json->clj result)
- error (:error data)
- success (zero? (count error))]
- (log/debug "Logged in account: " address result)
- (if success
- (logged-in db address)
- (dispatch [:set-in [:login :error] error])))))
+ (geth/login address password (fn [result]
+ (let [data (json->clj result)
+ error (:error data)
+ success (zero? (count error))]
+ (log/debug "Logged in account: " address result)
+ (if success
+ (logged-in db address)
+ (dispatch [:set-in [:login :error] error])))))
db)))
(defn load-accounts! [db _]
diff --git a/src/status_im/accounts/login/screen.cljs b/src/status_im/accounts/login/screen.cljs
index 490f04e028..765794b907 100644
--- a/src/status_im/accounts/login/screen.cljs
+++ b/src/status_im/accounts/login/screen.cljs
@@ -2,11 +2,12 @@
(:require-macros [status-im.utils.views :refer [defview]])
(:require [re-frame.core :refer [subscribe dispatch dispatch-sync]]
[status-im.components.react :refer [view
- text-class
+ text
text-input
image
linear-gradient
touchable-highlight]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.components.text-field.view :refer [text-field]]
[status-im.components.styles :refer [color-purple
@@ -24,13 +25,15 @@
[status-im.i18n :refer [label]]
[status-im.accounts.login.styles :as st]))
-(def toolbar-title
+(defn toolbar-title [platform-specific]
[view toolbar-title-container
- [text-class {:style (merge toolbar-title-text {:color color-white})}
+ [text {:style (merge toolbar-title-text {:color color-white})
+ :platform-specific platform-specific
+ :font :medium}
(label :t/login)]])
(defview address-input [address]
- [view button-input-container
+ [view
[text-field
{:value address
:editable false
@@ -39,53 +42,57 @@
:lineColor :white
:inputStyle st/input-style
:wrapperStyle (merge button-input st/address-input-wrapper)
- :onChangeText #(dispatch [:set-in [:login :address] %])}]
- ;[scan-button {:labelStyle st/scan-label
- ; :icon :icon_scan_white
- ; :showLabel (zero? (count address))
- ; :handler #(dispatch [:scan-qr-code {:toolbar-title (label :t/login)} :set-address-from-qr])}]
- ])
+ :onChangeText #(dispatch [:set-in [:login :address] %])}]])
(defview password-input [error]
- [text-field
- {:value ""
- :error (when (pos? (count error)) (label :t/wrong-password))
- :errorColor :white
- :label (label :t/password)
- :labelColor "#ffffff80"
- :lineColor :white
- :inputStyle st/input-style
- :onChangeText #(do
- (dispatch [:set-in [:login :password] %])
- (dispatch [:set-in [:login :error] ""]))}])
+ [view
+ [text-field
+ {:value ""
+ :error (when (pos? (count error)) (label :t/wrong-password))
+ :errorColor :white
+ :label (label :t/password)
+ :labelColor "#ffffff80"
+ :lineColor :white
+ :inputStyle st/input-style
+ :onChangeText #(do
+ (dispatch [:set-in [:login :password] %])
+ (dispatch [:set-in [:login :error] ""]))}]])
-(defview login []
+(defview login [{platform-specific :platform-specific}]
[{:keys [address password error]} [:get :login]]
- [view st/screen-container
- [linear-gradient {:colors ["rgba(182, 116, 241, 1)" "rgba(107, 147, 231, 1)" "rgba(43, 171, 238, 1)"]
- :start [0, 0]
- :end [0.5, 1]
- :locations [0, 0.8, 1]
- :style st/gradient-background}]
-
- [toolbar {:background-color :transparent
- :nav-action {:image {:source {:uri :icon_back_white}
- :style icon-back}
- :handler #(dispatch [:navigate-back])}
- :custom-content toolbar-title
- :action {:image {:style icon-search}
- :handler #()}}]
- [view st/form-container
+ [view st/screen-container
+ [linear-gradient {:colors ["rgba(182, 116, 241, 1)" "rgba(107, 147, 231, 1)" "rgba(43, 171, 238, 1)"]
+ :start [0, 0]
+ :end [0.5, 1]
+ :locations [0, 0.8, 1]
+ :style st/gradient-background}]
+ [status-bar {:platform-specific platform-specific
+ :type :transparent}]
+ [toolbar {:background-color :transparent
+ :nav-action {:image {:source {:uri :icon_back_white}
+ :style icon-back}
+ :handler #(dispatch [:navigate-back])}
+ :custom-content [toolbar-title platform-specific]
+ :action {:image {:style icon-search}
+ :handler #()}}]
+ [view st/form-container
+ [view st/form-container-inner
[address-input (or address "")]
- [password-input error]
- ]
- [view st/bottom-actions-container
- [view st/recover-text-container
- [touchable-highlight
- {:on-press #()}
- [text-class {:style st/recover-text} (label :t/recover-access)]]]
- [view st/connect-button-container
- [touchable-highlight
- {:on-press #(dispatch [:login-account address password])}
- [view st/connect-button
- [text-class {:style st/connect-button-text} (label :t/connect)]]]]]])
+ [password-input error]]]
+ (let [keyboard-height @(subscribe [:get :keyboard-height])]
+ [view st/bottom-actions-container
+ (when (= keyboard-height 0)
+ [view st/recover-button-container
+ [touchable-highlight
+ {:on-press #()}
+ [view st/recover-button
+ [text {:style st/recover-button-text
+ :platform-specific platform-specific}
+ (label :t/recover-access)]]]])
+ [view st/connect-button-container
+ [touchable-highlight
+ {:on-press #(dispatch [:login-account address password])}
+ [view st/connect-button
+ [text {:style st/connect-button-text
+ :platform-specific platform-specific}
+ (label :t/connect)]]]]])])
diff --git a/src/status_im/accounts/login/styles.cljs b/src/status_im/accounts/login/styles.cljs
index e718fed938..deeff1033a 100644
--- a/src/status_im/accounts/login/styles.cljs
+++ b/src/status_im/accounts/login/styles.cljs
@@ -1,6 +1,5 @@
(ns status-im.accounts.login.styles
- (:require [status-im.components.styles :refer [font
- title-font
+ (:require [status-im.components.styles :refer [title-font
text1-color
color-white
toolbar-background2
@@ -19,8 +18,15 @@
:left 0})
(def form-container
- {:marginLeft 16
- :margin-top 70})
+ {:flex 1
+ :flex-direction "row"
+ :align-items "center"
+ :justifyContent "center"})
+
+(def form-container-inner
+ {:flex 1
+ :padding-bottom 100
+ :margin-left 16})
(def bottom-actions-container
{:position :absolute
@@ -28,12 +34,16 @@
:right 0
:bottom 0})
-(def recover-text-container
- {:flex 1
- :alignItems :center
- :padding 16})
+(def recover-button-container
+ {:flex 1})
-(def recover-text
+(def recover-button
+ {:flex 1
+ :alignItems :center
+ :paddingVertical 16
+ :paddingHorizontal 28})
+
+(def recover-button-text
{:flex 1
:color color-white
:fontSize 16})
@@ -46,8 +56,7 @@
:flex 1
:alignItems :center
:paddingVertical 16
- :paddingHorizontal 28
- })
+ :paddingHorizontal 28})
(def connect-button-text
{:color "#7099e6"
diff --git a/src/status_im/accounts/screen.cljs b/src/status_im/accounts/screen.cljs
index 028ceeeaea..ca5a64ebfc 100644
--- a/src/status_im/accounts/screen.cljs
+++ b/src/status_im/accounts/screen.cljs
@@ -9,6 +9,7 @@
image
linear-gradient
touchable-highlight]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.components.styles :refer [color-purple
color-white
@@ -28,10 +29,13 @@
[status-im.accounts.styles :as st]
[status-im.utils.logging :as log]))
-(def toolbar-title
- [view toolbar-title-container
- [text {:style (merge toolbar-title-text {:color color-white})}
- (label :t/switch-users)]])
+(defn toolbar-title [platform-specific]
+ (let [style (merge toolbar-title-text {:color color-white})]
+ [view toolbar-title-container
+ [text {:style style
+ :platform-specific platform-specific
+ :font :medium}
+ (label :t/switch-users)]]))
(defn render-row [row _ _]
(list-item [account-view row]))
@@ -46,25 +50,29 @@
(dispatch [:navigate-to-clean :accounts])
(dispatch [:navigate-to :chat "console"]))
-(defview accounts []
+(defview accounts [{platform-specific :platform-specific}]
[accounts [:get :accounts]
stack [:get :navigation-stack]]
- (let [accounts (vals accounts)
- show-back? (> (count stack) 1)]
+ (let [accounts (vals accounts)
+ show-back? (> (count stack) 1)]
[view st/screen-container
- [linear-gradient {:colors ["rgba(182, 116, 241, 1)" "rgba(107, 147, 231, 1)" "rgba(43, 171, 238, 1)"]
+ [linear-gradient {:colors ["rgba(182, 116, 241, 1)"
+ "rgba(107, 147, 231, 1)"
+ "rgba(43, 171, 238, 1)"]
:start [0, 0]
:end [0.5, 1]
:locations [0, 0.8, 1]
:style st/gradient-background}
- [toolbar {:background-color :transparent
- :nav-action {:image {:source (if show-back? {:uri :icon_back_white} nil)
- :style icon-back}
- :handler (if show-back? #(dispatch [:navigate-back]) nil)}
- :custom-content toolbar-title
- :action {:image {:style icon-search}
- :handler #()}
- :style st/toolbar}]
+ [status-bar {:platform-specific platform-specific
+ :type :transparent}]
+ [toolbar {:background-color :transparent
+ :nav-action {:image {:source (if show-back? {:uri :icon_back_white} nil)
+ :style icon-back}
+ :handler (if show-back? #(dispatch [:navigate-back]) nil)}
+ :custom-content [toolbar-title platform-specific]
+ :action {:image {:style icon-search}
+ :handler #()}
+ :platform-specific platform-specific}]
[list-view {:dataSource (lw/to-datasource accounts)
:enableEmptySections true
:renderRow render-row
@@ -76,4 +84,7 @@
[view st/add-account-button
[image {:source {:uri :icon_add}
:style st/icon-plus}]
- [text {:style st/add-account-text} (label :t/add-account)]]]]]]))
+ [text {:style st/add-account-text
+ :platform-specific platform-specific
+ :font :default}
+ (label :t/add-account)]]]]]]))
diff --git a/src/status_im/accounts/styles.cljs b/src/status_im/accounts/styles.cljs
index 52dd53c3c7..91cbbb8b5f 100644
--- a/src/status_im/accounts/styles.cljs
+++ b/src/status_im/accounts/styles.cljs
@@ -1,7 +1,5 @@
(ns status-im.accounts.styles
- (:require [status-im.components.styles :refer [font
- title-font
- text1-color
+ (:require [status-im.components.styles :refer [text1-color
color-white
toolbar-background2
online-color]]
@@ -49,18 +47,16 @@
:justifyContent :center})
(def account-photo-container
- {:flex 1
- :backgroundColor "rgba(255, 255, 255, 0.2)"
- :borderRadius 50
- :width 36
- :height 36
- :alignItems :center
- :justifyContent :center})
+ {:flex 1
+ :width 36
+ :height 36
+ :alignItems :center
+ :justifyContent :center})
(def photo-image
- {:borderRadius 50
- :width 36
- :height 36})
+ {:width 36
+ :height 36
+ :border-radius 18})
(def name-container
{:flex 1
@@ -103,9 +99,3 @@
:color :white
:fontSize 16
:marginLeft 8})
-
-(def toolbar
- {:position :absolute
- :top 0
- :left 0
- :right 0})
diff --git a/src/status_im/android/core.cljs b/src/status_im/android/core.cljs
index 859d12dbeb..e0b65f4aa6 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.android.styles :refer [styles]]
+ [status-im.components.react :refer [app-registry
+ keyboard
orientation]]
[status-im.components.main-tabs :refer [main-tabs]]
[status-im.contacts.views.contact-list :refer [contact-list]]
@@ -43,10 +45,10 @@
(keyword (.toLowerCase o)))
(defn app-root []
- (let [signed-up (subscribe [:get :signed-up])
- _ (log/debug "signed up: " @signed-up)
- view-id (subscribe [:get :view-id])
- account (subscribe [:get :user-identity])
+ (let [signed-up (subscribe [:get :signed-up])
+ _ (log/debug "signed up: " @signed-up)
+ view-id (subscribe [:get :view-id])
+ account (subscribe [:get :user-identity])
keyboard-height (subscribe [:get :keyboard-height])]
(log/debug "Current account: " @account)
(r/create-class
@@ -58,49 +60,50 @@
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]))))
:render
(fn []
- (let [startup-view (if @account
+ (let [startup-view (if @account
(if @signed-up
@view-id
:chat)
- (if (contains? #{:login :chat} @view-id)
- @view-id
+ (if (contains? #{:login :chat} @view-id)
+ @view-id
:accounts))]
(log/debug startup-view)
- (case (if true startup-view :chat)
- :discovery [main-tabs]
- :discovery-tag [discovery-tag]
- :add-participants [new-participants]
- :remove-participants [remove-participants]
- :chat-list [main-tabs]
- :new-group [new-group]
- :group-settings [group-settings]
- :contact-list [main-tabs]
- :group-contacts [contact-list]
- :new-contact [new-contact]
- :qr-scanner [qr-scanner]
- :chat [chat]
- :profile [profile]
- :accounts [accounts]
- :login [login]
- :my-profile [my-profile])))})))
+ (let [component (case (if true startup-view :chat)
+ :discovery main-tabs
+ :discovery-tag discovery-tag
+ :add-participants new-participants
+ :remove-participants remove-participants
+ :chat-list main-tabs
+ :new-group new-group
+ :group-settings group-settings
+ :contact-list main-tabs
+ :group-contacts contact-list
+ :new-contact new-contact
+ :qr-scanner qr-scanner
+ :chat chat
+ :profile profile
+ :accounts accounts
+ :login login
+ :my-profile my-profile)]
+ [component {:platform-specific {:styles styles}}])))})))
(defn init [& [env]]
(dispatch-sync [:reset-app])
(dispatch [:initialize-crypt])
(dispatch [:initialize-geth])
- (.setSoftInputMode j/jail j/adjust-resize)
+ (j/set-soft-input-mode j/adjust-resize)
(dispatch [:load-user-phone-number])
(init-back-button-handler!)
(.registerComponent app-registry "StatusIm" #(r/reactify-component app-root)))
diff --git a/src/status_im/android/styles.cljs b/src/status_im/android/styles.cljs
new file mode 100644
index 0000000000..e38eae689f
--- /dev/null
+++ b/src/status_im/android/styles.cljs
@@ -0,0 +1,19 @@
+(ns status-im.android.styles
+ (:require [status-im.components.styles :as styles]))
+
+(def components
+ {:status-bar {:default {:height 0
+ :bar-style "default"
+ :color styles/color-gray}
+ :transparent {:height 20
+ :bar-style "default"
+ :translucent? true
+ :color styles/color-transparent}}})
+
+(def fonts
+ {:default {:font-family "sans-serif"}
+ :medium {:font-family "sans-serif-medium"}})
+
+(def styles
+ {:components components
+ :fonts fonts})
\ No newline at end of file
diff --git a/src/status_im/chat/handlers.cljs b/src/status_im/chat/handlers.cljs
index 0506fba958..5966c78926 100644
--- a/src/status_im/chat/handlers.cljs
+++ b/src/status_im/chat/handlers.cljs
@@ -21,7 +21,6 @@
[status-im.utils.phone-number :refer [format-phone-number
valid-mobile-number?]]
[status-im.utils.datetime :as time]
- [status-im.components.react :refer [geth]]
[status-im.components.jail :as j]
[status-im.utils.types :refer [json->clj]]
[status-im.commands.utils :refer [generate-hiccup]]
@@ -193,6 +192,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)))))
@@ -544,8 +544,8 @@
(after
(fn [{:keys [current-chat-id]} [_ mode chat-id]]
(when (or (nil? chat-id) (= current-chat-id chat-id))
- (.setSoftInputMode j/jail (if (= :pan mode)
- j/adjust-pan
- j/adjust-resize)))))
+ (j/set-soft-input-mode (if (= :pan mode)
+ j/adjust-pan
+ j/adjust-resize)))))
(fn [db [_ chat-id mode]]
(assoc-in db [:kb-mode chat-id] mode)))
diff --git a/src/status_im/chat/screen.cljs b/src/status_im/chat/screen.cljs
index d2b7126cbb..af1aa1993e 100644
--- a/src/status_im/chat/screen.cljs
+++ b/src/status_im/chat/screen.cljs
@@ -5,11 +5,11 @@
[status-im.components.react :refer [view
animated-view
text
- image
icon
touchable-highlight
list-view
list-item]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.chat-icon.screen :refer [chat-icon-view-action
chat-icon-view-menu-item]]
[status-im.chat.styles.screen :as st]
@@ -48,25 +48,27 @@
;; TODO stub data ('online' property)
[chat-icon-view-action chat-id group-chat name color true])
-(defn typing [member]
+(defn typing [member platform-specific]
[view st/typing-view
[view st/typing-background
- [text {:style st/typing-text}
+ [text {:style st/typing-text
+ :platform-specific platform-specific
+ :font :default}
(str member " " (label :t/is-typing))]]])
-(defn typing-all []
+(defn typing-all [platform-specific]
[view st/typing-all
;; TODO stub data
(for [member ["Geoff" "Justas"]]
- ^{:key member} [typing member])])
+ ^{:key member} [typing member platform-specific])])
-(defn message-row [contact-by-identity group-chat messages-count]
+(defn message-row [{:keys [contact-by-identity platform-specific group-chat messages-count]}]
(fn [row _ idx]
(let [msg (-> row
(add-msg-color contact-by-identity)
(assoc :group-chat group-chat)
(assoc :last-msg (= (js/parseInt idx) (dec messages-count))))]
- (list-item [chat-message msg]))))
+ (list-item [chat-message msg platform-specific]))))
(defn on-action-selected [position]
(case position
@@ -81,8 +83,13 @@
[view nil]]
items])
-(defn action-view [{:keys [icon-style custom-icon handler title subtitle]
- icon-name :icon}]
+(defn action-view [{{:keys [icon-style
+ custom-icon
+ handler
+ title
+ subtitle]
+ icon-name :icon} :action
+ platform-specific :platform-specific}]
[touchable-highlight {:on-press (fn []
(dispatch [:set-show-actions false])
(when handler
@@ -92,9 +99,13 @@
(or custom-icon
[icon icon-name icon-style])]
[view st/action-view
- [text {:style st/action-title} title]
+ [text {:style st/action-title
+ :platform-specific platform-specific
+ :font :medium} title]
(when-let [subtitle subtitle]
- [text {:style st/action-subtitle}
+ [text {:style st/action-subtitle
+ :platform-specific platform-specific
+ :font :default}
subtitle])]]])
(defview menu-item-icon-profile []
@@ -108,10 +119,10 @@
(defn members-text [members]
(truncate-str (str (s/join ", " (map #(:name %) members)) " " (label :t/and-you)) 35))
-(defn actions-list-view []
- (let [{:keys [group-chat chat-id]}
- (subscribe [:chat-properties [:group-chat :chat-id]])
- members (subscribe [:current-chat-contacts])]
+(defn actions-list-view [{styles :styles :as platform-specific}]
+ (let [{:keys [group-chat chat-id]} (subscribe [:chat-properties [:group-chat :chat-id]])
+ members (subscribe [:current-chat-contacts])
+ status-bar-height (get-in styles [:components :status-bar :default :height])]
(when-let [actions (if @group-chat
[{:title (label :t/members-title)
:subtitle (members-text @members)
@@ -168,32 +179,41 @@
:height 13}
;; TODO not implemented: action Settings
:handler nil}])]
- [view st/actions-wrapper
+ [view (-> (st/actions-wrapper status-bar-height)
+ (merge (get-in styles [:components :actions-list-view])))
[view st/actions-separator]
[view st/actions-view
(for [action actions]
- ^{:key action} [action-view action])]])))
+ ^{:key action} [action-view {:platform-specific platform-specific
+ :action action}])]])))
-(defn actions-view []
+(defn actions-view [platform-specific]
[overlay {:on-click-outside #(dispatch [:set-show-actions false])}
- [actions-list-view]])
+ [actions-list-view platform-specific]])
-(defn toolbar-content []
+(defn toolbar-content [platform-specific]
(let [{:keys [group-chat name contacts]}
(subscribe [:chat-properties [:group-chat :name :contacts]])
show-actions (subscribe [:show-actions])]
(fn []
[view (st/chat-name-view @show-actions)
- [text {:style st/chat-name-text}
+ [text {:style st/chat-name-text
+ :platform-specific platform-specific
+ :font :medium}
(truncate-str (or @name (label :t/chat-name)) 30)]
(if @group-chat
[view {:flexDirection :row}
[icon :group st/group-icon]
- [text {:style st/members}
+ [text {:style st/members
+ :platform-specific platform-specific
+ :font :medium}
(let [cnt (inc (count @contacts))]
(label-pluralize cnt :t/members))]]
;; TODO stub data: last activity
- [text {:style st/last-activity} (label :t/last-active)])])))
+ [text {:style st/last-activity
+ :platform-specific platform-specific
+ :font :default}
+ (label :t/last-active)])])))
(defn toolbar-action []
(let [show-actions (subscribe [:show-actions])]
@@ -208,20 +228,24 @@
[view st/action
[chat-icon]]]))))
-(defn chat-toolbar []
- (let [{:keys [group-chat name contacts]}
- (subscribe [:chat-properties [:group-chat :name :contacts]])
- show-actions (subscribe [:show-actions])]
- (fn []
- [toolbar {:hide-nav? @show-actions
- :custom-content [toolbar-content]
- :custom-action [toolbar-action]}])))
+(defn chat-toolbar [platform-specific]
+ (let [{:keys [group-chat name contacts]} (subscribe [:chat-properties [:group-chat :name :contacts]])
+ show-actions (subscribe [:show-actions])]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar {:hide-nav? @show-actions
+ :custom-content [toolbar-content platform-specific]
+ :custom-action [toolbar-action]
+ :style (get-in platform-specific [:styles :components :toolbar])}]]))
-(defview messages-view [group-chat]
+(defview messages-view [platform-specific group-chat]
[messages [:chat :messages]
contacts [:chat :contacts]]
(let [contacts' (contacts-by-identity contacts)]
- [list-view {:renderRow (message-row contacts' group-chat (count messages))
+ [list-view {:renderRow (message-row {:contact-by-identity contacts'
+ :platform-specific platform-specific
+ :group-chat group-chat
+ :messages-count (count messages)})
:renderScrollComponent #(invertible-scroll-view (js->clj %))
:onEndReached #(dispatch [:load-more-messages])
:enableEmptySections true
@@ -250,7 +274,7 @@
[animated-view {:style (st/messages-container messages-offset)}
messages])})))
-(defview chat []
+(defview chat [{platform-specific :platform-specific}]
[group-chat [:chat :group-chat]
show-actions-atom [:show-actions]
command [:get-chat-command]
@@ -263,11 +287,11 @@
(let [height (.. event -nativeEvent -layout -height)]
(when (not= height layout-height)
(dispatch [:set-layout-height height]))))}
- [chat-toolbar]
+ [chat-toolbar platform-specific]
[messages-container
- [messages-view group-chat]]
- (when group-chat [typing-all])
+ [messages-view platform-specific group-chat]]
+ (when group-chat [typing-all platform-specific])
[response-view]
(when-not command? [suggestion-container])
- [chat-message-new]
- (when show-actions-atom [actions-view])])
+ [chat-message-new platform-specific]
+ (when show-actions-atom [actions-view platform-specific])])
diff --git a/src/status_im/chat/styles/message.cljs b/src/status_im/chat/styles/message.cljs
index 7996abac00..80edef0a43 100644
--- a/src/status_im/chat/styles/message.cljs
+++ b/src/status_im/chat/styles/message.cljs
@@ -1,6 +1,5 @@
(ns status-im.chat.styles.message
- (:require [status-im.components.styles :refer [font
- color-light-blue-transparent
+ (:require [status-im.components.styles :refer [color-light-blue-transparent
color-white
color-black
color-blue
@@ -13,13 +12,11 @@
(def style-message-text
{:fontSize 14
- :fontFamily font
:lineHeight 21
:color text1-color})
(def style-sub-text
{:top -2
- :fontFamily font
:fontSize 12
:color text2-color
:lineHeight 14
@@ -66,7 +63,6 @@
(def selected-message
{:marginTop 18
:marginLeft 40
- :fontFamily font
:fontSize 12
:color text2-color})
@@ -81,9 +77,9 @@
(def message-author {:width 24})
-(def photo-view {:borderRadius 50})
+(def photo-view {:borderRadius 12})
(def photo
- {:borderRadius 50
+ {:borderRadius 12
:width 24
:height 24})
@@ -97,8 +93,7 @@
:height 7})
(def delivery-text
- {:fontFamily font
- :fontSize 12
+ {:fontSize 12
:color text2-color
:marginLeft 5})
@@ -149,7 +144,7 @@
(defn command-request-image-view [command scale]
{:width 32
:height 32
- :borderRadius 50
+ :borderRadius 16
:backgroundColor (:color command)
:transform [{:scale scale}]})
@@ -189,7 +184,6 @@
(def command-name
{:fontSize 12
- :fontFamily font
:color color-white})
(def command-image
@@ -203,11 +197,6 @@
{:marginTop 8
:marginHorizontal 0}))
-(def message-author-text
- {:marginTop 0
- :fontSize 12
- :fontFamily font})
-
(def audio-container
{:flexDirection :row
:alignItems :center})
@@ -215,7 +204,7 @@
(def play-view
{:width 33
:height 33
- :borderRadius 50
+ :borderRadius 16
:elevation 1})
(def play-image
@@ -248,17 +237,17 @@
{:position :absolute
:left 1
:top 11
- :fontFamily font
:fontSize 11
:color :#4A5258
:letterSpacing 1
:lineHeight 15})
(def status-container
- {:flex 1
- :alignSelf :center
- :alignItems :center
- :width 249})
+ {:flex 1
+ :alignSelf :center
+ :alignItems :center
+ :width 249
+ :padding-bottom 16})
(def status-image-view
{:marginTop 20})
@@ -266,12 +255,10 @@
(def status-from
{:marginTop 20
:fontSize 18
- :fontFamily font
:color text1-color})
(def status-text
{:marginTop 10
- :fontFamily font
:fontSize 14
:lineHeight 20
:textAlign :center
@@ -283,7 +270,7 @@
:left 44
:width 24
:height 24
- :borderRadius 50
+ :borderRadius 12
:backgroundColor online-color
:borderWidth 2
:borderColor color-white})
@@ -293,7 +280,7 @@
:top 8
:width 4
:height 4
- :borderRadius 50
+ :borderRadius 2
:backgroundColor color-white})
(def online-dot-left
@@ -303,17 +290,17 @@
(assoc online-dot :left 11))
(def contact-photo-container
- {:borderRadius 50})
+ {:borderRadius 32})
(def contact-photo
- {:borderRadius 50
+ {:borderRadius 32
:width 64
:height 64})
(def message-date-container
{:backgroundColor color-light-blue-transparent
:height 24
- :borderRadius 50
+ :borderRadius 12
:alignSelf :center
:marginTop 20
:marginBottom 20
diff --git a/src/status_im/chat/styles/message_input.cljs b/src/status_im/chat/styles/message_input.cljs
index c27a359646..e48f7efa5c 100644
--- a/src/status_im/chat/styles/message_input.cljs
+++ b/src/status_im/chat/styles/message_input.cljs
@@ -26,5 +26,5 @@
:marginRight 10
:width 36
:height 36
- :borderRadius 50
+ :borderRadius 18
:backgroundColor color-blue})
diff --git a/src/status_im/chat/styles/plain_message.cljs b/src/status_im/chat/styles/plain_message.cljs
index fa639b39fa..429982957f 100644
--- a/src/status_im/chat/styles/plain_message.cljs
+++ b/src/status_im/chat/styles/plain_message.cljs
@@ -16,7 +16,7 @@
:justifyContent :center})
(def list-icon
- {:width 16
+ {:width 20
:height 16})
(def requests-icon
diff --git a/src/status_im/chat/styles/response.cljs b/src/status_im/chat/styles/response.cljs
index a0a5c08cd5..01024dcfba 100644
--- a/src/status_im/chat/styles/response.cljs
+++ b/src/status_im/chat/styles/response.cljs
@@ -25,7 +25,7 @@
:height 32
:alignItems :center
:justifyContent :center
- :borderRadius 50
+ :borderRadius 16
:backgroundColor color-white})
(def command-icon
diff --git a/src/status_im/chat/styles/screen.cljs b/src/status_im/chat/styles/screen.cljs
index e7ae9e22d9..d71bbf2a83 100644
--- a/src/status_im/chat/styles/screen.cljs
+++ b/src/status_im/chat/styles/screen.cljs
@@ -1,14 +1,14 @@
(ns status-im.chat.styles.screen
(:require [status-im.components.styles :refer [font
- title-font
- color-white
- chat-background
- online-color
- selected-message-color
- separator-color
- text1-color
- text2-color
- toolbar-background1]]))
+ title-font
+ color-white
+ chat-background
+ online-color
+ selected-message-color
+ separator-color
+ text1-color
+ text2-color
+ toolbar-background1]]))
(def chat-view
{:flex 1
@@ -74,11 +74,11 @@
:fontSize 12
:fontFamily font})
-(def actions-wrapper
+(defn actions-wrapper [status-bar-height]
{:backgroundColor toolbar-background1
:elevation 2
:position :absolute
- :top 56
+ :top (+ 55 status-bar-height)
:left 0
:right 0})
@@ -105,16 +105,14 @@
:justifyContent :center})
(def action-title
- {:marginTop -2.5
+ {:margin-top -2.5
:color text1-color
- :fontSize 14
- :fontFamily font})
+ :font-size 14})
(def action-subtitle
- {:marginTop 1
+ {:margin-top 1
:color text2-color
- :fontSize 12
- :fontFamily font})
+ :font-size 12})
(def typing-all
{:marginBottom 20})
diff --git a/src/status_im/chat/subs.cljs b/src/status_im/chat/subs.cljs
index f21124a4fc..18614dd638 100644
--- a/src/status_im/chat/subs.cljs
+++ b/src/status_im/chat/subs.cljs
@@ -1,6 +1,7 @@
(ns status-im.chat.subs
(:require-macros [reagent.ratom :refer [reaction]])
(:require [re-frame.core :refer [register-sub dispatch subscribe path]]
+ [status-im.components.react :refer [ios?]]
[status-im.models.commands :as commands]
[status-im.constants :refer [response-suggesstion-resize-duration]]
[status-im.chat.constants :as c]
@@ -220,12 +221,14 @@
command (subscribe [:get-chat-command])
focused (subscribe [:get :focused])
mode (subscribe [:kb-mode])]
- (reaction (cond (and (not @focused)
- (= :on-send (keyword (:suggestions-trigger @command)))
- (pos? @kb-height))
- @kb-height
+ (reaction
+ (cond (or ios?
+ (and (not @focused)
+ (= :on-send (keyword (:suggestions-trigger @command)))
+ (pos? @kb-height)))
+ @kb-height
- (and @focused (= :pan @mode) (pos? @kb-height))
- 20
+ (and @focused (= :pan @mode) (pos? @kb-height))
+ 20
- :else 0)))))
+ :else 0)))))
diff --git a/src/status_im/chat/views/message.cljs b/src/status_im/chat/views/message.cljs
index 58ceabe552..2248746dcd 100644
--- a/src/status_im/chat/views/message.cljs
+++ b/src/status_im/chat/views/message.cljs
@@ -20,10 +20,13 @@
content-type-command
content-type-command-request]]))
-(defn message-date [timestamp]
+(defn message-date [timestamp platform-specific]
[view {}
[view st/message-date-container
- [text {:style st/message-date-text} (time/to-short-str timestamp)]]])
+ [text {:style st/message-date-text
+ :platform-specific platform-specific
+ :font :default}
+ (time/to-short-str timestamp)]]])
(defn contact-photo [{:keys [photo-path]}]
[view st/contact-photo-container
@@ -38,15 +41,21 @@
[view st/online-dot-left]
[view st/online-dot-right]]))
-(defn message-content-status [{:keys [from content]}]
+(defn message-content-status [{:keys [from content]} platform-specific]
[view st/status-container
[view st/status-image-view
[contact-photo {}]
[contact-online {:online true}]]
- [text {:style st/status-from} from]
- [text {:style st/status-text} content]])
+ [text {:style st/status-from
+ :platform-specific platform-specific
+ :font :default}
+ from]
+ [text {:style st/status-text
+ :platform-specific platform-specific
+ :font :default}
+ content]])
-(defn message-content-audio [_]
+(defn message-content-audio [{:keys [platform-specific]}]
[view st/audio-container
[view st/play-view
[image {:source res/play
@@ -54,16 +63,21 @@
[view st/track-container
[view st/track]
[view st/track-mark]
- [text {:style st/track-duration-text} "03:39"]]])
+ [text {:style st/track-duration-text
+ :platform-specific platform-specific
+ :font :default}
+ "03:39"]]])
-(defview message-content-command [content preview]
+(defview message-content-command [content preview platform-specific]
[commands [:get-commands-and-responses]]
(let [{:keys [command content]} (parse-command-msg-content commands content)
{:keys [name icon type]} command]
[view st/content-command-view
[view st/command-container
[view (st/command-view command)
- [text {:style st/command-name}
+ [text {:style st/command-name
+ :platform-specific platform-specific
+ :font :default}
(str (if (= :command type) "!" "") name)]]]
(when icon
[view st/command-image-view
@@ -71,7 +85,10 @@
:style st/command-image}]])
(if preview
preview
- [text {:style st/command-text} content])]))
+ [text {:style st/command-text
+ :platform-specific platform-specific
+ :font :default}
+ content])]))
(defn set-chat-command [msg-id command]
(dispatch [:set-response-chat-command msg-id (keyword (:name command))]))
@@ -84,40 +101,46 @@
"Justas"])
content])
-(defmulti message-content (fn [_ message]
+(defmulti message-content (fn [_ message _]
(message :content-type)))
(defmethod message-content content-type-command-request
- [wrapper message]
- [wrapper message [message-content-command-request message]])
+ [wrapper message platform-specific]
+ [wrapper message [message-content-command-request message platform-specific] platform-specific])
(defn text-message
- [{:keys [content] :as message}]
+ [{:keys [content] :as message} platform-specific]
[message-view message
- [text {:style (st/text-message message)} content]])
+ [text {:style (st/text-message message)
+ :platform-specific platform-specific
+ :font :default}
+ content]])
(defmethod message-content text-content-type
- [wrapper message]
- [wrapper message [text-message message]])
+ [wrapper message platform-specific]
+ [wrapper message [text-message message platform-specific] platform-specific])
(defmethod message-content content-type-status
- [_ message]
- [message-content-status message])
+ [_ message platform-specific]
+ [message-content-status message platform-specific])
(defmethod message-content content-type-command
- [wrapper {:keys [content rendered-preview] :as message}]
+ [wrapper {:keys [content rendered-preview] :as message} platform-specific]
[wrapper message
- [message-view message [message-content-command content rendered-preview]]])
+ [message-view message [message-content-command content rendered-preview platform-specific]]
+ platform-specific])
(defmethod message-content :default
- [wrapper {:keys [content-type content] :as message}]
+ [wrapper {:keys [content-type content] :as message} platform-specific]
[wrapper message
[message-view message
- [message-content-audio {:content content
- :content-type content-type}]]])
+ [message-content-audio {:content content
+ :content-type content-type
+ :platform-specific platform-specific}]]
+ platform-specific])
(defview message-delivery-status
- [{:keys [delivery-status msg-id to] :as m}]
+ [{:keys [delivery-status msg-id to] :as m} platform-specific]
[status [:get-in [:message-status to msg-id]]]
[view st/delivery-view
[image {:source (case (or status delivery-status)
@@ -126,7 +149,9 @@
:failed res/delivery-failed-icon
nil)
:style st/delivery-image}]
- [text {:style st/delivery-text}
+ [text {:style st/delivery-text
+ :platform-specific platform-specific
+ :font :default}
(case (or status delivery-status)
:delivered "Sent"
:seen "Seen"
@@ -142,11 +167,13 @@
:style st/photo}]])
(defn incoming-group-message-body
- [{:keys [selected same-author] :as message} content]
+ [{:keys [selected same-author] :as message} content platform-specific]
(let [delivery-status :seen-by-everyone]
[view st/group-message-wrapper
(when selected
- [text {:style st/selected-message}
+ [text {:style st/selected-message
+ :platform-specific platform-specific
+ :font :default}
"Mar 7th, 15:22"])
[view (st/incoming-group-message-body-st message)
[view st/message-author
@@ -155,14 +182,14 @@
content
;; TODO show for last or selected
(when (and selected delivery-status)
- [message-delivery-status {:delivery-status delivery-status}])]]]))
+ [message-delivery-status {:delivery-status delivery-status} platform-specific])]]]))
(defn message-body
- [{:keys [outgoing delivery-status] :as message} content]
+ [{:keys [outgoing delivery-status] :as message} content platform-specific]
[view (st/message-body message)
content
(when outgoing
- [message-delivery-status message])])
+ [message-delivery-status message platform-specific])])
(defn message-container-animation-logic [{:keys [to-value val callback]}]
(fn [_]
@@ -202,7 +229,8 @@
(defn chat-message
[{:keys [outgoing delivery-status timestamp new-day group-chat msg-id chat-id]
- :as message}]
+ :as message}
+ platform-specific]
(let [status (subscribe [:get-in [:message-status chat-id msg-id]])]
(r/create-class
{:component-did-mount
@@ -217,7 +245,7 @@
[message-container message
;; TODO there is no new-day info in message
(when new-day
- [message-date timestamp])
+ [message-date timestamp platform-specific])
[view
(let [incoming-group (and group-chat (not outgoing))]
[message-content
@@ -225,4 +253,5 @@
incoming-group-message-body
message-body)
(merge message {:delivery-status (keyword delivery-status)
- :incoming-group incoming-group})])]])})))
+ :incoming-group incoming-group})
+ platform-specific])]])})))
diff --git a/src/status_im/chat/views/message_input.cljs b/src/status_im/chat/views/message_input.cljs
index 9032b5beb1..28759ea9e7 100644
--- a/src/status_im/chat/views/message_input.cljs
+++ b/src/status_im/chat/views/message_input.cljs
@@ -22,10 +22,10 @@
(defn message-input-container [input]
[view st/message-input-container input])
-(defn plain-input-options [disbale?]
+(defn plain-input-options [disable?]
{:style st-message/message-input
- :onChangeText (when-not disbale? plain-message/set-input-message)
- :editable (not disbale?)
+ :onChangeText (when-not disable? plain-message/set-input-message)
+ :editable (not disable?)
:onSubmitEditing plain-message/send})
(defn on-press-commands-handler
@@ -34,9 +34,9 @@
#(dispatch [:invoke-commands-suggestions!])
command/send-command))
-(defn command-input-options [command icon-width disbale?]
- {:style (st-response/command-input icon-width disbale?)
- :onChangeText (when-not disbale? command/set-input-message)
+(defn command-input-options [command icon-width disable?]
+ {:style (st-response/command-input icon-width disable?)
+ :onChangeText (when-not disable? command/set-input-message)
:onSubmitEditing (on-press-commands-handler command)})
(defview message-input [input-options {:keys [suggestions-trigger] :as command}]
@@ -44,18 +44,18 @@
input-message [:get-chat-input-text]
input-command [:get-chat-command-content]
icon-width [:command-icon-width]
- disbale? [:get :disable-input]]
+ disable? [:get :disable-input]]
[text-input (merge
(if command?
- (command-input-options command icon-width disbale?)
- (plain-input-options disbale?))
+ (command-input-options command icon-width disable?)
+ (plain-input-options disable?))
{:autoFocus false
:blurOnSubmit false
:accessibility-label :input
- :on-focus #(dispatch [:set :focused true])
- :on-blur #(dispatch [:set :focused false])}
- input-options)
- (if command? input-command input-message)])
+ :on-focus #(dispatch [:set :focused true])
+ :on-blur #(dispatch [:set :focused false])
+ :default-value (if command? input-command input-message)}
+ input-options)])
(defview plain-message-input-view [{:keys [input-options]}]
[command? [:command?]
@@ -66,7 +66,7 @@
[view st/input-view
[plain-message/commands-button]
[message-input-container
- [message-input input-options command]]
+ [message-input input-options]]
;; TODO emoticons: not implemented
[plain-message/smile-button]
(when (or command? valid-plain-message?)
diff --git a/src/status_im/chat/views/new_message.cljs b/src/status_im/chat/views/new_message.cljs
index 25e2e2751f..96baedc04f 100644
--- a/src/status_im/chat/views/new_message.cljs
+++ b/src/status_im/chat/views/new_message.cljs
@@ -36,10 +36,12 @@
[plain-message-input-view
(when command? (get-options parameter type))])
-(defview chat-message-new []
+(defview chat-message-new [platform-specific]
[staged-commands [:get-chat-staged-commands]
margin [:input-margin]]
- [view (st/new-message-container margin)
- (when (seq staged-commands)
- [staged-commands-view staged-commands])
- [show-input]])
+ (let [style (get-in platform-specific [:styles :components :chat :new-message])]
+ [view (merge (st/new-message-container margin)
+ style)
+ (when (seq staged-commands)
+ [staged-commands-view staged-commands])
+ [show-input]]))
diff --git a/src/status_im/chat/views/plain_message.cljs b/src/status_im/chat/views/plain_message.cljs
index f1dc3a0cde..e609ebd5e1 100644
--- a/src/status_im/chat/views/plain_message.cljs
+++ b/src/status_im/chat/views/plain_message.cljs
@@ -60,13 +60,14 @@
:disabled @command?}
[animated-view {:style (st/message-input-button-touchable
container-width)}
- [animated-view {:style (st/message-input-button buttons-scale)}
- (if (seq @suggestions)
- [icon :close_gray st/close-icon]
- [icon :input_list st/list-icon])
- (when (and (seq @requests)
- (not (seq @suggestions)))
- [view st/requests-icon])]]])})))
+ (when-not @command?
+ [animated-view {:style (st/message-input-button buttons-scale)}
+ (if (seq @suggestions)
+ [icon :close_gray st/close-icon]
+ [icon :input_list st/list-icon])
+ (when (and (seq @requests)
+ (not (seq @suggestions)))
+ [view st/requests-icon])])]])})))
(defn smile-animation-logic [{:keys [command? val width]}]
(fn [_]
diff --git a/src/status_im/chat/views/request_message.cljs b/src/status_im/chat/views/request_message.cljs
index 380c154d1e..af4793e6d6 100644
--- a/src/status_im/chat/views/request_message.cljs
+++ b/src/status_im/chat/views/request_message.cljs
@@ -57,17 +57,18 @@
#(reset! loop? false)
:reagent-render
(fn [msg-id command]
- [touchable-highlight
- {:on-press (when-not @answered?
- #(set-chat-command msg-id command))
- :style st/command-request-image-touchable
- :accessibility-label (label command)}
- [animated-view {:style (st/command-request-image-view command scale-anim-val)}
- [image {:source {:uri (:icon command)}
- :style st/command-request-image}]]])})))
+ (if command
+ [touchable-highlight
+ {:on-press (when-not @answered?
+ #(set-chat-command msg-id command))
+ :style st/command-request-image-touchable
+ :accessibility-label (label command)}
+ [animated-view {:style (st/command-request-image-view command scale-anim-val)}
+ [image {:source {:uri (:icon command)}
+ :style st/command-request-image}]]]))})))
(defn message-content-command-request
- [{:keys [msg-id content from incoming-group]}]
+ [{:keys [msg-id content from incoming-group]} platform-specific]
(let [commands-atom (subscribe [:get-responses])]
(fn [{:keys [msg-id content from incoming-group]}]
(let [commands @commands-atom
@@ -75,12 +76,18 @@
[view st/comand-request-view
[view st/command-request-message-view
(when incoming-group
- [text {:style st/command-request-from-text}
+ [text {:style st/command-request-from-text
+ :platform-specific platform-specific
+ :font :default}
from])
- [text {:style st/style-message-text}
+ [text {:style st/style-message-text
+ :platform-specific platform-specific
+ :font :default}
content]]
[request-button msg-id command]
(when (:request-text command)
[view st/command-request-text-view
- [text {:style st/style-sub-text}
+ [text {:style st/style-sub-text
+ :platform-specific platform-specific
+ :font :default}
(:request-text command)]])]))))
diff --git a/src/status_im/chat/views/suggestions.cljs b/src/status_im/chat/views/suggestions.cljs
index d7de8feed6..b7f5540a3b 100644
--- a/src/status_im/chat/views/suggestions.cljs
+++ b/src/status_im/chat/views/suggestions.cljs
@@ -29,8 +29,9 @@
[view st/request-container
[view st/request-icon-container
[view (st/request-icon-background color)
- [image {:source {:uri icon}
- :style st/request-icon}]]]
+ (if icon
+ [image {:source {:uri icon}
+ :style st/request-icon}])]]
[view st/request-info-container
[text {:style st/request-info-description} description]
;; todo stub
diff --git a/src/status_im/chats_list/screen.cljs b/src/status_im/chats_list/screen.cljs
index 1b3e6e5f98..c5347f57b2 100644
--- a/src/status_im/chats_list/screen.cljs
+++ b/src/status_im/chats_list/screen.cljs
@@ -17,28 +17,32 @@
[status-im.components.styles :refer [color-blue
toolbar-background1
toolbar-background2]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.components.icons.ionicons :refer [icon]]
[status-im.i18n :refer [label]]
[status-im.chats-list.styles :as st]
+ [status-im.components.styles :as cst]
[status-im.components.tabs.bottom-gradient :refer [bottom-gradient]]
[status-im.components.tabs.styles :refer [tabs-height]]))
-(defview chats-list-toolbar []
+(defview chats-list-toolbar [platform-specific]
[chats-scrolled? [:get :chats-scrolled?]]
- [toolbar {:nav-action {:image {:source {:uri :icon_hamburger}
- :style st/hamburger-icon}
- :handler open-drawer}
- :title (label :t/chats)
- :background-color (if chats-scrolled?
- toolbar-background1
- toolbar-background2)
- ;; TODO implement search
- :action {:image {:source {:uri :icon_search}
- :style st/search-icon}
- :handler (fn [])}}])
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar {:nav-action {:image {:source {:uri :icon_hamburger}
+ :style st/hamburger-icon}
+ :handler open-drawer}
+ :title (label :t/chats)
+ :background-color (if chats-scrolled?
+ toolbar-background1
+ toolbar-background2)
+ ;; TODO implement search
+ :action {:image {:source {:uri :icon_search}
+ :style st/search-icon}
+ :handler (fn [])}}]])
-(defn chats-list []
+(defn chats-list [{platform-specific :platform-specific}]
(let [chats (subscribe [:get :chats])
chats-scrolled? (subscribe [:get :chats-scrolled?])
animation? (subscribe [:animations :tabs-bar-animation?])
@@ -48,7 +52,7 @@
(dispatch [:set :chats-scrolled? false])
(fn []
[view st/chats-container
- [chats-list-toolbar]
+ [chats-list-toolbar platform-specific]
[list-view {:dataSource (to-datasource @chats)
:renderRow (fn [row _ _]
(list-item [chat-list-item row]))
@@ -76,12 +80,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/chat_icon/styles.cljs b/src/status_im/components/chat_icon/styles.cljs
index 41fbcf75ee..977af624d6 100644
--- a/src/status_im/components/chat_icon/styles.cljs
+++ b/src/status_im/components/chat_icon/styles.cljs
@@ -16,7 +16,7 @@
:height 36
:alignItems :center
:justifyContent :center
- :borderRadius 50
+ :borderRadius 18
:backgroundColor color})
(defn default-chat-icon-chat-list [color]
@@ -43,7 +43,7 @@
(def chat-icon
{:margin 4
- :borderRadius 50
+ :borderRadius 18
:width 36
:height 36})
@@ -68,7 +68,7 @@
:right 0
:width 20
:height 20
- :borderRadius 50
+ :borderRadius 10
:backgroundColor online-color
:borderWidth 2
:borderColor color-white})
@@ -88,7 +88,7 @@
:top 6
:width 4
:height 4
- :borderRadius 50
+ :borderRadius 2
:backgroundColor color-white})
(def online-dot-left (merge online-dot {:left 3}))
(def online-dot-right (merge online-dot {:left 9}))
diff --git a/src/status_im/components/drawer/styles.cljs b/src/status_im/components/drawer/styles.cljs
index 01955625a0..15a974152b 100644
--- a/src/status_im/components/drawer/styles.cljs
+++ b/src/status_im/components/drawer/styles.cljs
@@ -13,7 +13,7 @@
text3-color]]))
(def user-photo
- {:borderRadius 50
+ {:borderRadius 32
:width 64
:height 64})
diff --git a/src/status_im/components/drawer/view.cljs b/src/status_im/components/drawer/view.cljs
index 726f9251d4..dc2cf8d46d 100644
--- a/src/status_im/components/drawer/view.cljs
+++ b/src/status_im/components/drawer/view.cljs
@@ -2,12 +2,11 @@
(: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
navigator
- toolbar-android
drawer-layout-android
touchable-opacity]]
[status-im.resources :as res]
@@ -73,7 +72,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/geth.cljs b/src/status_im/components/geth.cljs
new file mode 100644
index 0000000000..94141d278f
--- /dev/null
+++ b/src/status_im/components/geth.cljs
@@ -0,0 +1,18 @@
+(ns status-im.components.geth
+ (:require [status-im.components.react :as r]))
+
+(def geth
+ (when (exists? (.-NativeModules r/react-native))
+ (.-Geth (.-NativeModules r/react-native))))
+
+(defn start-node [on-result on-already-running]
+ (when geth
+ (.startNode geth on-result on-already-running)))
+
+(defn create-account [password on-result]
+ (when geth
+ (.createAccount geth password on-result)))
+
+(defn login [address password on-result]
+ (when geth
+ (.login geth address password on-result)))
\ No newline at end of file
diff --git a/src/status_im/components/jail.cljs b/src/status_im/components/jail.cljs
index 35d922f4a0..4e2f896d62 100644
--- a/src/status_im/components/jail.cljs
+++ b/src/status_im/components/jail.cljs
@@ -6,25 +6,31 @@
(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))
(defn parse [chat-id file callback]
- (.parse jail chat-id file callback))
+ (when jail
+ (.parse jail chat-id file callback)))
(defn cljs->json [data]
(.stringify js/JSON (clj->js data)))
(defn call [chat-id path params callback]
- (println :call chat-id (cljs->json path) (cljs->json params))
- (let [cb (fn [r]
- (let [r' (t/json->clj r)]
- (println r')
- (callback r')))]
- (.call jail chat-id (cljs->json path) (cljs->json params) cb)))
+ (when jail
+ (println :call chat-id (cljs->json path) (cljs->json params))
+ (let [cb (fn [r]
+ (let [r' (t/json->clj r)]
+ (println r')
+ (callback r')))]
+ (.call jail chat-id (cljs->json path) (cljs->json params) cb))))
+
+(defn set-soft-input-mode [mode]
+ (when jail
+ (.setSoftInputMode jail mode)))
(def adjust-resize 16)
(def adjust-pan 32)
diff --git a/src/status_im/components/react.cljs b/src/status_im/components/react.cljs
index c3096ece0f..3e0134262d 100644
--- a/src/status_im/components/react.cljs
+++ b/src/status_im/components/react.cljs
@@ -3,40 +3,77 @@
[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))
+(def geth (.-Geth native-modules))
-(defn get-react-property [name]
- (aget react name))
+(def linear-gradient-module (u/require "react-native-linear-gradient"))
+(def dismiss-keyboard! (u/require "dismissKeyboard"))
+(def orientation (u/require "react-native-orientation"))
-(defn adapt-class [class]
- (when class (r/adapt-react-class class)))
+;; Getters
-(defn get-class [name]
+(defn- get-react-property [name]
+ (aget react-native name))
+
+(defn- adapt-class [class]
+ (when class
+ (r/adapt-react-class class)))
+
+(defn- get-class [name]
(adapt-class (get-react-property name)))
+
+;; React Components
+
(def app-registry (get-react-property "AppRegistry"))
(def navigator (get-class "Navigator"))
-(def text-class (get-class "Text"))
-(defn text
- ([s] [text-class s])
- ([{:keys [style] :as opts} s]
- [text-class (if style opts {:style opts}) s]))
(def view (get-class "View"))
-(def image (get-class "Image"))
-(def touchable-highlight-class (get-class "TouchableHighlight"))
-(defn touchable-highlight [props content]
- [touchable-highlight-class
- (merge {:underlay-color :transparent} props)
- content])
-(def toolbar-android (get-class "ToolbarAndroid"))
+(def linear-gradient-class (adapt-class linear-gradient-module))
+
+(def status-bar (get-class "StatusBar"))
+(def drawer-layout-android (get-class "DrawerLayoutAndroid"))
+
(def list-view-class (get-class "ListView"))
-(defn list-view [props]
- [list-view-class (merge {:enableEmptySections true} props)])
(def scroll-view (get-class "ScrollView"))
(def web-view (get-class "WebView"))
-(def touchable-without-feedback (get-class "TouchableWithoutFeedback"))
+
+(def text-class (get-class "Text"))
(def text-input-class (get-class "TextInput"))
+(def image (get-class "Image"))
+
+(def touchable-without-feedback (get-class "TouchableWithoutFeedback"))
+(def touchable-highlight-class (get-class "TouchableHighlight"))
+(def touchable-opacity (get-class "TouchableOpacity"))
+
+(def modal (get-class "Modal"))
+(def picker (get-class "Picker"))
+
+(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/ReactNative))
+(def keyboard (.-Keyboard react-native))
+
+
+;; Accessor methods for React Components
+
+(defn text
+ ([t]
+ (r/as-element [text-class t]))
+ ([{:keys [style platform-specific font] :as opts
+ :or {font :default}} t]
+ (r/as-element
+ [text-class
+ (if (and platform-specific font)
+ (-> opts
+ (dissoc :platform-specific :font)
+ (assoc :style (st/with-font style platform-specific font)))
+ opts)
+ t])))
+
(defn text-input [props text]
[text-input-class (merge
{:underlineColorAndroid :transparent
@@ -44,22 +81,6 @@
:placeholder "Type"}
props)
text])
-(def drawer-layout-android (get-class "DrawerLayoutAndroid"))
-(def touchable-opacity (get-class "TouchableOpacity"))
-(def modal (get-class "Modal"))
-(def picker (get-class "Picker"))
-(def picker-item
- (when-let [picker (get-react-property "Picker")]
- (adapt-class (.-Item picker))))
-
-(def pan-responder (.-PanResponder js/React))
-(def animated (.-Animated js/React))
-(def animated-view (r/adapt-react-class (.-View animated)))
-(def animated-text (r/adapt-react-class (.-Text animated)))
-
-(def dimensions (.-Dimensions js/React))
-(defn get-dimensions [name]
- (js->clj (.get dimensions name) :keywordize-keys true))
(defn icon
([n] (icon n {}))
@@ -67,23 +88,35 @@
[image {:source {:uri (keyword (str "icon_" (name n)))}
:style style}]))
-(def linear-gradient-class
- (r/adapt-react-class (u/require "react-native-linear-gradient")))
+(defn list-view [props]
+ [list-view-class (merge {:enableEmptySections true} props)])
+
+(defn touchable-highlight [props content]
+ [touchable-highlight-class
+ (merge {:underlay-color :transparent} props)
+ content])
+
+(def picker-item
+ (when-let [picker (get-react-property "Picker")]
+ (adapt-class (.-Item picker))))
+
+(defn get-dimensions [name]
+ (js->clj (.get dimensions name) :keywordize-keys true))
+
(defn linear-gradient
[props & children]
(vec (concat [linear-gradient-class (merge {:inverted true} props)] children)))
+;; Platform
+
(def platform
- (when-let [pl (.-Platform react)] (.-OS pl)))
+ (when-let [pl (.-Platform react-native)] (.-OS pl)))
(def android? (= platform "android"))
+(def ios? (= platform "ios"))
+
(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 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/status_bar.cljs b/src/status_im/components/status_bar.cljs
new file mode 100644
index 0000000000..83d0d9e3cb
--- /dev/null
+++ b/src/status_im/components/status_bar.cljs
@@ -0,0 +1,17 @@
+(ns status-im.components.status-bar
+ (:require [status-im.components.react :as ui]
+ [status-im.components.styles :as cst]))
+
+(defn status-bar [{{styles :styles} :platform-specific
+ type :type
+ :or {type :default}}]
+ (let [{:keys [height
+ bar-style
+ translucent?
+ color]} (get-in styles [:components :status-bar type])]
+ [ui/view
+ [ui/status-bar {:background-color color
+ :translucent translucent?
+ :bar-style bar-style}]
+ [ui/view {:style {:height height
+ :background-color color}}]]))
\ No newline at end of file
diff --git a/src/status_im/components/styles.cljs b/src/status_im/components/styles.cljs
index 22f6705300..b534ad840b 100644
--- a/src/status_im/components/styles.cljs
+++ b/src/status_im/components/styles.cljs
@@ -1,16 +1,18 @@
(ns status-im.components.styles)
-(def font "sans-serif")
+(def font "HelveticaNeue")
;; (def font "Avenir-Roman")
(def font-medium "sans-serif-medium")
(def title-font font-medium)
+(def color-transparent "transparent")
(def color-blue "#7099e6")
(def color-blue-transparent "#7099e632")
(def color-black "#000000de")
(def color-purple "#a187d5")
(def color-gray "#838c93de")
(def color-gray2 "#8f838c93")
+(def color-gray3 "#00000040")
(def color-white :white)
(def color-light-blue "#bbc4cb")
(def color-light-blue-transparent "#bbc4cb32")
@@ -33,6 +35,10 @@
(def toolbar-height 56)
+(defn with-font [style platform-specific font]
+ (let [font (get-in platform-specific [:styles :fonts font])]
+ (merge style font)))
+
(def flex
{:flex 1})
@@ -70,7 +76,7 @@
:height 18})
(def icon-plus
- {:width 18
+ {:width 18
:height 18})
(def form-text-input
@@ -91,10 +97,9 @@
:justifyContent :center})
(def toolbar-title-text
- {:marginTop -2.5
+ {:margin-top -2.5
:color text1-color
- :fontSize 16
- :fontFamily font})
+ :font-size 16})
(def button-input-container
{:flex 1
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/components/toolbar.cljs b/src/status_im/components/toolbar.cljs
index d9e3c4bcb6..4204f8c3af 100644
--- a/src/status_im/components/toolbar.cljs
+++ b/src/status_im/components/toolbar.cljs
@@ -6,9 +6,7 @@
text
image
touchable-highlight]]
- [status-im.components.styles :refer [font
- title-font
- color-white
+ [status-im.components.styles :refer [color-white
color-purple
text1-color
text2-color
@@ -18,8 +16,15 @@
icon-back
toolbar-height]]))
-(defn toolbar [{:keys [title nav-action hide-nav? action custom-action
- background-color custom-content style]}]
+(defn toolbar [{title :title
+ nav-action :nav-action
+ hide-nav? :hide-nav?
+ action :action
+ custom-action :custom-action
+ background-color :background-color
+ custom-content :custom-content
+ style :style
+ platform-specific :platform-specific}]
(let [style (merge {:flexDirection :row
:backgroundColor (or background-color toolbar-background1)
:height toolbar-height
@@ -35,22 +40,23 @@
[image (:image nav-action)]]]
[touchable-highlight {:on-press #(dispatch [:navigate-back])
:accessibility-label :navigate-back}
- [view {:width 56
- :height 56
+ [view {:width 56
+ :height 56
:alignItems :center
:justifyContent :center}
[image {:source {:uri :icon_back}
:style icon-back}]]]))
(or custom-content
[view {:style toolbar-title-container}
- [text {:style toolbar-title-text}
+ [text {:style toolbar-title-text
+ :platform-specific platform-specific
+ :font :medium}
title]])
custom-action
(when action
[touchable-highlight {:on-press (:handler action)}
[view {:width 56
:height 56
-
:alignItems :center
:justifyContent :center}
[image (:image action)]]])]))
diff --git a/src/status_im/contacts/screen.cljs b/src/status_im/contacts/screen.cljs
index 21aaf4910d..1d5c54c260 100644
--- a/src/status_im/contacts/screen.cljs
+++ b/src/status_im/contacts/screen.cljs
@@ -12,6 +12,7 @@
[status-im.components.action-button :refer [action-button
action-button-item]]
[status-im.contacts.views.contact :refer [contact-extended-view]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.components.drawer.view :refer [open-drawer]]
[status-im.components.icons.ionicons :refer [icon]]
@@ -22,18 +23,21 @@
toolbar-background2]]
[status-im.components.tabs.bottom-gradient :refer [bottom-gradient]]
[status-im.contacts.styles :as st]
- [status-im.i18n :refer [label]]))
+ [status-im.i18n :refer [label]]
+ [status-im.components.styles :as cst]))
-(defn contact-list-toolbar []
- [toolbar {:nav-action {:image {:source {:uri :icon_hamburger}
- :style hamburger-icon}
- :handler open-drawer}
- :title (label :t/contacts)
- :background-color toolbar-background2
- :style {:elevation 0}
- :action {:image {:source {:uri :icon_search}
- :style icon-search}
- :handler (fn [])}}])
+(defn contact-list-toolbar [platform-specific]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar {:nav-action {:image {:source {:uri :icon_hamburger}
+ :style hamburger-icon}
+ :handler open-drawer}
+ :title (label :t/contacts)
+ :background-color toolbar-background2
+ :style {:elevation 0}
+ :action {:image {:source {:uri :icon_search}
+ :style icon-search}
+ :handler (fn [])}}]])
(def contacts-limit 10)
@@ -59,13 +63,13 @@
[touchable-highlight {:on-press #(dispatch [:show-group-contacts group])}
[text {:style st/show-all-text} (label :show-all)]]])])
-(defn contact-list []
+(defn contact-list [{platform-specific :platform-specific}]
(let [contacts (subscribe [:get-contacts-with-limit contacts-limit])
contcats-count (subscribe [:contacts-count])
show-toolbar-shadow? (r/atom false)]
(fn []
[view st/contacts-list-container
- [contact-list-toolbar]
+ [contact-list-toolbar platform-specific]
[view {:style st/toolbar-shadow}
(when @show-toolbar-shadow?
[linear-gradient {:style st/contact-group-header-gradient-bottom
@@ -97,6 +101,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/contacts/views/contact_list.cljs b/src/status_im/contacts/views/contact_list.cljs
index 9a346e3829..5453ddede6 100644
--- a/src/status_im/contacts/views/contact_list.cljs
+++ b/src/status_im/contacts/views/contact_list.cljs
@@ -7,6 +7,7 @@
list-view
list-item]]
[status-im.contacts.views.contact :refer [contact-with-letter-view]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.components.drawer.view :refer [drawer-view open-drawer]]
[status-im.components.icons.ionicons :refer [icon]]
@@ -17,26 +18,30 @@
toolbar-background1]]
[status-im.contacts.styles :as st]
[status-im.utils.listview :as lw]
- [status-im.i18n :refer [label]]))
+ [status-im.i18n :refer [label]]
+ [status-im.components.styles :as cst]))
(defn render-row [row _ _]
(list-item [contact-with-letter-view row]))
-(defview contact-list-toolbar []
- [group [:get :contacts-group]]
- [toolbar {:title (label (if (= group :dapps)
- :t/contacs-group-dapps
- :t/contacs-group-people))
- :background-color toolbar-background1
- :action {:image {:source {:uri :icon_search}
- :style icon-search}
- :handler (fn [])}}])
-(defview contact-list []
+(defview contact-list-toolbar [platform-specific]
+ [group [:get :contacts-group]]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar {:title (label (if (= group :dapps)
+ :t/contacs-group-dapps
+ :t/contacs-group-people))
+ :background-color toolbar-background1
+ :action {:image {:source {:uri :icon_search}
+ :style icon-search}
+ :handler (fn [])}}]])
+
+(defview contact-list [{platform-specific :platform-specific}]
[contacts [:contacts-with-letters]]
[drawer-view
[view st/contacts-list-container
- [contact-list-toolbar]
+ [contact-list-toolbar platform-specific]
;; todo what if there is no contacts, should we show some information
;; about this?
(when contacts
diff --git a/src/status_im/contacts/views/new_contact.cljs b/src/status_im/contacts/views/new_contact.cljs
index d0673a22ea..850d9c3995 100644
--- a/src/status_im/contacts/views/new_contact.cljs
+++ b/src/status_im/contacts/views/new_contact.cljs
@@ -10,6 +10,7 @@
touchable-highlight]]
[status-im.components.text-field.view :refer [text-field]]
[status-im.utils.identicon :refer [identicon]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.utils.utils :refer [log on-error http-post toast]]
[status-im.components.styles :refer [color-purple
@@ -27,7 +28,8 @@
[status-im.i18n :refer [label]]
[cljs.spec :as s]
[status-im.contacts.validations :as v]
- [status-im.contacts.styles :as st]))
+ [status-im.contacts.styles :as st]
+ [status-im.components.styles :as cst]))
(def toolbar-title
@@ -91,16 +93,18 @@
new-contact)]
(on-add-contact whisper-identity contact)))}))
-(defview new-contact []
+(defview new-contact [{platform-specific :platform-specific}]
[{:keys [name whisper-identity phone-number] :as new-contact} [:get :new-contact]
error [:get :new-contact-address-error]]
[view st/contact-form-container
- [toolbar {:background-color :white
- :nav-action {:image {:source {:uri :icon_back}
- :style icon-back}
- :handler #(dispatch [:navigate-back])}
- :custom-content toolbar-title
- :action (toolbar-action whisper-identity new-contact error)}]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar {:background-color :white
+ :nav-action {:image {:source {:uri :icon_back}
+ :style icon-back}
+ :handler #(dispatch [:navigate-back])}
+ :custom-content toolbar-title
+ :action (toolbar-action whisper-identity new-contact error)}]]
[view st/form-container
[contact-name-input name]
[contact-whisper-id-input whisper-identity error]]
diff --git a/src/status_im/db.cljs b/src/status_im/db.cljs
index 2fd469e69a..730415ac69 100644
--- a/src/status_im/db.cljs
+++ b/src/status_im/db.cljs
@@ -39,6 +39,7 @@
:address ""
:whisper-identity ""
:phone-number ""}
+ :keyboard-height 0
:disable-group-creation false
:animations {;; todo clear this
:tabs-bar-value (anim/create-value 0)}})
diff --git a/src/status_im/discovery/screen.cljs b/src/status_im/discovery/screen.cljs
index 1e04f418a7..78f995dd50 100644
--- a/src/status_im/discovery/screen.cljs
+++ b/src/status_im/discovery/screen.cljs
@@ -6,10 +6,12 @@
scroll-view
text
text-input]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.discovery.views.popular :refer [popular]]
[status-im.discovery.views.recent :refer [discovery-recent]]
[status-im.discovery.styles :as st]
+ [status-im.components.styles :as cst]
[status-im.components.tabs.bottom-gradient :refer [bottom-gradient]]
[status-im.i18n :refer [label]]))
@@ -33,9 +35,9 @@
(defn toogle-search [current-value]
(dispatch [:set ::show-search (not current-value)]))
-(defview discovery []
- [show-search [:get ::show-search]]
- [view st/discovery-container
+(defn discovery-toolbar [show-search platform-specific]
+ [view
+ [status-bar {:platform-specific platform-specific}]
[toolbar
{:style st/discovery-toolbar
:nav-action {:image {:source {:uri :icon_hamburger}
@@ -44,7 +46,12 @@
:custom-content [title-content show-search]
:action {:image {:source {:uri :icon_search}
:style st/search-icon}
- :handler #(toogle-search show-search)}}]
+ :handler #(toogle-search show-search)}}]])
+
+(defview discovery [{platform-specific :platform-specific}]
+ [show-search [:get ::show-search]]
+ [view st/discovery-container
+ [discovery-toolbar show-search platform-specific]
[scroll-view st/scroll-view-container
[view st/section-spacing
[text {:style st/discovery-subtitle} (label :t/popular-tags)]]
diff --git a/src/status_im/discovery/styles.cljs b/src/status_im/discovery/styles.cljs
index 540dc04a03..ee9782f800 100644
--- a/src/status_im/discovery/styles.cljs
+++ b/src/status_im/discovery/styles.cljs
@@ -146,7 +146,7 @@
(def popular-list-item-avatar
{:resizeMode "contain"
- :borderRadius 150
+ :borderRadius 20
:width 40
:height 40})
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/discovery/views/popular_list.cljs b/src/status_im/discovery/views/popular_list.cljs
index a1d539aa14..8aae75b569 100644
--- a/src/status_im/discovery/views/popular_list.cljs
+++ b/src/status_im/discovery/views/popular_list.cljs
@@ -24,7 +24,8 @@
[view st/row
[view st/tag-name-container
[touchable-highlight {:onPress #(dispatch [:show-discovery-tag tag])}
- [text {:style st/tag-name} (str " #" (name tag))]]]
+ [view
+ [text {:style st/tag-name} (str " #" (name tag))]]]]
[view st/tag-count-container
[text {:style st/tag-count} count]]]
[list-view {:dataSource (to-datasource discoveries)
diff --git a/src/status_im/group_settings/screen.cljs b/src/status_im/group_settings/screen.cljs
index a35bdbcf53..ce71578906 100644
--- a/src/status_im/group_settings/screen.cljs
+++ b/src/status_im/group_settings/screen.cljs
@@ -11,11 +11,13 @@
picker-item
scroll-view
touchable-highlight]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.components.chat-icon.screen :refer [chat-icon-view-action]]
[status-im.group-settings.styles.group-settings :as st]
[status-im.group-settings.views.member :refer [member-view]]
- [status-im.i18n :refer [label]]))
+ [status-im.i18n :refer [label]]
+ [status-im.components.styles :as cst]))
(defn remove-member []
(dispatch [:remove-participants]))
@@ -130,9 +132,11 @@
[view st/action
[chat-icon-view-action chat-id group-chat name color false]])
-(defn new-group-toolbar []
- [toolbar {:title (label :t/chat-settings)
- :custom-action [chat-icon]}])
+(defn new-group-toolbar [platform-specific]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar {:title (label :t/chat-settings)
+ :custom-action [chat-icon]}]])
(defn focus []
(dispatch [:set ::name-input-focused true]))
@@ -168,10 +172,10 @@
(when (pos? (count validation-messages))
[text {:style st/chat-name-validation-message} (first validation-messages)])])
-(defview group-settings []
+(defview group-settings [{platform-specific :platform-specific}]
[show-color-picker [:group-settings :show-color-picker]]
[view st/group-settings
- [new-group-toolbar]
+ [new-group-toolbar platform-specific]
[scroll-view st/body
[chat-name]
[text {:style st/members-text} (label :t/members-title)]
diff --git a/src/status_im/group_settings/styles/group_settings.cljs b/src/status_im/group_settings/styles/group_settings.cljs
index 9950bb2f9c..81b0386c3d 100644
--- a/src/status_im/group_settings/styles/group_settings.cljs
+++ b/src/status_im/group_settings/styles/group_settings.cljs
@@ -176,7 +176,7 @@
:fontFamily font})
(defn chat-color-icon [color]
- {:borderRadius 50
+ {:borderRadius 12
:width 24
:height 24
:backgroundColor color})
diff --git a/src/status_im/handlers.cljs b/src/status_im/handlers.cljs
index cc3cc2fb1e..58d6a406a8 100644
--- a/src/status_im/handlers.cljs
+++ b/src/status_im/handlers.cljs
@@ -8,7 +8,7 @@
[status-im.protocol.state.storage :as storage]
[status-im.utils.logging :as log]
[status-im.utils.crypt :refer [gen-random-bytes]]
- [status-im.components.react :refer [geth]]
+ [status-im.components.geth :as geth]
[status-im.utils.handlers :refer [register-handler] :as u]
status-im.chat.handlers
status-im.group-settings.handlers
@@ -104,9 +104,8 @@
(u/side-effect!
(fn [db _]
(log/debug "Starting node")
- (.startNode geth
- (fn [result] (node-started db result))
- #(log/debug "Geth already initialized")))))
+ (geth/start-node (fn [result] (node-started db result))
+ #(log/debug "Geth already initialized")))))
(register-handler :crypt-initialized
(u/side-effect!
diff --git a/src/status_im/ios/core.cljs b/src/status_im/ios/core.cljs
index ebe6286dbe..1e3bcd8ad0 100644
--- a/src/status_im/ios/core.cljs
+++ b/src/status_im/ios/core.cljs
@@ -2,32 +2,92 @@
(:require [reagent.core :as r :refer [atom]]
[re-frame.core :refer [subscribe dispatch dispatch-sync]]
[status-im.handlers]
- [status-im.subs]))
+ [status-im.subs]
+ [status-im.ios.styles :refer [styles]]
+ [status-im.components.react :refer [app-registry
+ keyboard
+ orientation]]
+ [status-im.components.main-tabs :refer [main-tabs]]
+ [status-im.contacts.views.contact-list :refer [contact-list]]
+ [status-im.contacts.views.new-contact :refer [new-contact]]
+ [status-im.qr-scanner.screen :refer [qr-scanner]]
+ [status-im.discovery.screen :refer [discovery]]
+ [status-im.discovery.tag :refer [discovery-tag]]
+ [status-im.chat.screen :refer [chat]]
+ [status-im.accounts.login.screen :refer [login]]
+ [status-im.accounts.screen :refer [accounts]]
+ [status-im.chats-list.screen :refer [chats-list]]
+ [status-im.new-group.screen :refer [new-group]]
+ [status-im.participants.views.add :refer [new-participants]]
+ [status-im.participants.views.remove :refer [remove-participants]]
+ [status-im.group-settings.screen :refer [group-settings]]
+ [status-im.profile.screen :refer [profile my-profile]]
+ [status-im.utils.utils :refer [toast]]
+ [status-im.utils.encryption]
+ status-im.persistence.realm.core
+ [status-im.utils.logging :as log]))
-(set! js/window.React (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 logo-img (js/require "./images/cljs.png"))
-
-(defn alert [title]
- (.alert (.-Alert js/React) title))
+(defn orientation->keyword [o]
+ (keyword (.toLowerCase o)))
(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"]]])))
+ (let [signed-up (subscribe [:get :signed-up])
+ _ (log/debug "signed up: " @signed-up)
+ view-id (subscribe [:get :view-id])
+ account (subscribe [:get :user-identity])
+ keyboard-height (subscribe [:get :keyboard-height])]
+ (log/debug "Current account: " @account)
+ (r/create-class
+ {:component-will-mount
+ (fn []
+ (let [o (orientation->keyword (.getInitialOrientation orientation))]
+ (dispatch [:set :orientation o]))
+ (.addOrientationListener
+ orientation
+ #(dispatch [:set :orientation (orientation->keyword %)]))
+ (.lockToPortrait orientation)
+ (.addListener keyboard
+ "keyboardDidShow"
+ (fn [e]
+ (let [h (.. e -endCoordinates -height)]
+ (when-not (= h @keyboard-height)
+ (dispatch [:set :keyboard-height h])))))
+ (.addListener keyboard
+ "keyboardDidHide"
+ (when-not (= 0 @keyboard-height)
+ #(dispatch [:set :keyboard-height 0]))))
+ :render
+ (fn []
+ (let [startup-view (if @account
+ (if @signed-up
+ @view-id
+ :chat)
+ (if (contains? #{:login :chat} @view-id)
+ @view-id
+ :accounts))]
+ (log/debug startup-view)
+ (let [component (case (if true startup-view :chat)
+ :discovery main-tabs
+ :discovery-tag discovery-tag
+ :add-participants new-participants
+ :remove-participants remove-participants
+ :chat-list main-tabs
+ :new-group new-group
+ :group-settings group-settings
+ :contact-list main-tabs
+ :group-contacts contact-list
+ :new-contact new-contact
+ :qr-scanner qr-scanner
+ :chat chat
+ :profile profile
+ :accounts accounts
+ :login login
+ :my-profile my-profile)]
+ [component {:platform-specific {:styles styles}}])))})))
(defn init []
- (dispatch-sync [:initialize-db])
- (.registerComponent app-registry "StatusIm" #(r/reactify-component app-root)))
+ (dispatch-sync [:reset-app])
+ (dispatch [:initialize-crypt])
+ (dispatch [:initialize-geth])
+ (dispatch [:load-user-phone-number])
+ (.registerComponent app-registry "StatusIm" #(r/reactify-component app-root)))
diff --git a/src/status_im/ios/styles.cljs b/src/status_im/ios/styles.cljs
new file mode 100644
index 0000000000..563cefbab8
--- /dev/null
+++ b/src/status_im/ios/styles.cljs
@@ -0,0 +1,24 @@
+(ns status-im.ios.styles
+ (:require [status-im.components.styles :as styles]))
+
+(def components
+ {:status-bar {:default {:height 20
+ :bar-style "default"
+ :color styles/color-white}
+ :transparent {:height 20
+ :bar-style "light-content"
+ :color styles/color-transparent}}
+ :toolbar {:border-bottom-color styles/color-gray3
+ :border-bottom-width 0.5}
+ :actions-list-view {:border-bottom-color styles/color-gray3
+ :border-bottom-width 0.5}
+ :chat {:new-message {:border-top-color styles/color-gray3
+ :border-top-width 0.5}}})
+
+(def fonts
+ {:default {:font-family "SFUIDisplay-Regular"}
+ :medium {:font-family "SFUIDisplay-Medium"}})
+
+(def styles
+ {:components components
+ :fonts fonts})
\ No newline at end of file
diff --git a/src/status_im/new_group/screen.cljs b/src/status_im/new_group/screen.cljs
index 9e81f77b89..e728761f23 100644
--- a/src/status_im/new_group/screen.cljs
+++ b/src/status_im/new_group/screen.cljs
@@ -11,24 +11,28 @@
list-view
list-item]]
[status-im.components.styles :refer [color-purple]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.utils.listview :refer [to-datasource]]
[status-im.new-group.views.contact :refer [new-group-contact]]
[status-im.new-group.styles :as st]
- [status-im.i18n :refer [label]]))
+ [status-im.i18n :refer [label]]
+ [status-im.components.styles :as cst]))
-(defview new-group-toolbar []
+(defview new-group-toolbar [platform-specific]
[group-name [:get :new-chat-name]
creation-disabled? [:get :disable-group-creation]
valid? [:new-chat-name-valid?]]
(let [create-btn-enabled? (and valid? (not creation-disabled?))]
- [toolbar
- {:title (label :t/new-group-chat)
- :action {:image {:source res/v ;; {:uri "icon_search"}
- :style (st/toolbar-icon create-btn-enabled?)}
- :handler (when create-btn-enabled?
- #(dispatch [:init-group-creation group-name]))}}]))
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar
+ {:title (label :t/new-group-chat)
+ :action {:image {:source res/v ;; {:uri "icon_search"}
+ :style (st/toolbar-icon create-btn-enabled?)}
+ :handler (when create-btn-enabled?
+ #(dispatch [:init-group-creation group-name]))}}]]))
(defview group-name-input []
[group-name [:get :new-chat-name]
@@ -44,10 +48,10 @@
(when (pos? (count validation-messages))
[text {:style st/group-name-validation-message} (first validation-messages)])])
-(defview new-group []
+(defview new-group [{platform-specific :platform-specific}]
[contacts [:all-contacts]]
[view st/new-group-container
- [new-group-toolbar]
+ [new-group-toolbar platform-specific]
[view st/chat-name-container
[text {:style st/chat-name-text} (label :t/chat-name)]
[group-name-input]
diff --git a/src/status_im/participants/views/add.cljs b/src/status_im/participants/views/add.cljs
index e708b9a7c2..4ee928e732 100644
--- a/src/status_im/participants/views/add.cljs
+++ b/src/status_im/participants/views/add.cljs
@@ -3,29 +3,33 @@
(:require [re-frame.core :refer [subscribe dispatch]]
[status-im.resources :as res]
[status-im.components.react :refer [view list-view list-item]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.utils.listview :refer [to-datasource]]
[status-im.participants.views.contact :refer [participant-contact]]
[reagent.core :as r]
[status-im.participants.styles :as st]
- [status-im.i18n :refer [label]]))
+ [status-im.i18n :refer [label]]
+ [status-im.components.styles :as cst]))
-(defn new-participants-toolbar []
- [toolbar
- {:title (label :t/add-participants)
- :action {:image {:source res/v ;; {:uri "icon_search"}
- :style st/new-participant-image}
- :handler #(do (dispatch [:add-new-participants])
- (dispatch [:navigate-back]))}}])
+(defn new-participants-toolbar [platform-specific]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar
+ {:title (label :t/add-participants)
+ :action {:image {:source res/v ;; {:uri "icon_search"}
+ :style st/new-participant-image}
+ :handler #(do (dispatch [:add-new-participants])
+ (dispatch [:navigate-back]))}}]])
(defn new-participants-row
[row _ _]
(list-item [participant-contact row]))
-(defview new-participants []
+(defview new-participants [{platform-specific :platform-specific}]
[contacts [:all-new-contacts]]
[view st/participants-container
- [new-participants-toolbar]
+ [new-participants-toolbar platform-specific]
[list-view {:dataSource (to-datasource contacts)
:renderRow new-participants-row
:style st/participants-list}]])
diff --git a/src/status_im/participants/views/remove.cljs b/src/status_im/participants/views/remove.cljs
index 6469371a3f..a6760a4bff 100644
--- a/src/status_im/participants/views/remove.cljs
+++ b/src/status_im/participants/views/remove.cljs
@@ -2,33 +2,41 @@
(:require-macros [status-im.utils.views :refer [defview]])
(:require [re-frame.core :refer [subscribe dispatch]]
[status-im.resources :as res]
- [status-im.components.react :refer [view text-input text image
- touchable-highlight list-view
- list-item]]
+ [status-im.components.react :refer [view
+ text-input
+ text
+ image
+ touchable-highlight
+ list-view
+ list-item]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.utils.listview :refer [to-datasource]]
[status-im.participants.views.contact
:refer [participant-contact]]
[reagent.core :as r]
[status-im.participants.styles :as st]
- [status-im.i18n :refer [label]]))
+ [status-im.i18n :refer [label]]
+ [status-im.components.styles :as cst]))
-(defn remove-participants-toolbar []
- [toolbar
- {:title (label :t/remove-participants)
- :action {:handler #(do (dispatch [:remove-participants])
- (dispatch [:navigate-back]))
- :image {:source res/trash-icon ;; {:uri "icon_search"}
- :style st/remove-participants-image}}}])
+(defn remove-participants-toolbar [platform-specific]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar
+ {:title (label :t/remove-participants)
+ :action {:handler #(do (dispatch [:remove-participants])
+ (dispatch [:navigate-back]))
+ :image {:source res/trash-icon ;; {:uri "icon_search"}
+ :style st/remove-participants-image}}}]])
(defn remove-participants-row
[row _ _]
(r/as-element [participant-contact row]))
-(defview remove-participants []
+(defview remove-participants [{platform-specific :platform-specific}]
[contacts [:current-chat-contacts]]
[view st/participants-container
- [remove-participants-toolbar]
+ [remove-participants-toolbar platform-specific]
[list-view {:dataSource (to-datasource contacts)
:renderRow remove-participants-row
:style st/participants-list}]])
diff --git a/src/status_im/profile/screen.cljs b/src/status_im/profile/screen.cljs
index 87dd677dbc..e4ee787838 100644
--- a/src/status_im/profile/screen.cljs
+++ b/src/status_im/profile/screen.cljs
@@ -61,7 +61,7 @@
)}
[view [text {:style st/report-user-text} (label :t/report-user)]]]]]])
-(defview my-profile []
+(defview my-profile [_]
[username [:get :username]
photo-path [:get :photo-path]
phone-number [:get :phone-number]
diff --git a/src/status_im/profile/styles.cljs b/src/status_im/profile/styles.cljs
index fcaaad9b54..1650bb20a2 100644
--- a/src/status_im/profile/styles.cljs
+++ b/src/status_im/profile/styles.cljs
@@ -96,7 +96,7 @@
:backgroundColor color-blue
:paddingLeft 25
:paddingRight 25
- :borderRadius 50})
+ :borderRadius 20})
(def message-btn-text
{:marginTop -2.5
@@ -112,7 +112,7 @@
:justifyContent :center
:backgroundColor color-blue-transparent
:padding 8
- :borderRadius 50})
+ :borderRadius 20})
(def more-btn-image
{:width 4
diff --git a/src/status_im/qr_scanner/screen.cljs b/src/status_im/qr_scanner/screen.cljs
index 2f27d30b9f..173b3ac6cb 100644
--- a/src/status_im/qr_scanner/screen.cljs
+++ b/src/status_im/qr_scanner/screen.cljs
@@ -6,21 +6,25 @@
[status-im.components.camera :refer [camera]]
[status-im.components.styles :refer [toolbar-background1
icon-search]]
+ [status-im.components.status-bar :refer [status-bar]]
[status-im.components.toolbar :refer [toolbar]]
[status-im.qr-scanner.styles :as st]
- [status-im.utils.types :refer [json->clj]]))
+ [status-im.utils.types :refer [json->clj]]
+ [status-im.components.styles :as cst]))
-(defn qr-scanner-toolbar [title]
- [toolbar {:title title
- :background-color toolbar-background1
- :action {:image {:source {:uri :icon_lock_white}
- :style icon-search}
- :handler #()}}])
+(defn qr-scanner-toolbar [title platform-specific]
+ [view
+ [status-bar {:platform-specific platform-specific}]
+ [toolbar {:title title
+ :background-color toolbar-background1
+ :action {:image {:source {:uri :icon_lock_white}
+ :style icon-search}
+ :handler #()}}]])
-(defview qr-scanner []
+(defview qr-scanner [{platform-specific :platform-specific}]
[identifier [:get :current-qr-context]]
[view st/barcode-scanner-container
- [qr-scanner-toolbar (:toolbar-title identifier)]
+ [qr-scanner-toolbar (:toolbar-title identifier) platform-specific]
[camera {;:on-bar-code-read #(js/alert "ok")
:onBarCodeRead #(let [data (json->clj (.-data %))]
(dispatch [:set-qr-code identifier data]))
diff --git a/src/status_im/resources.cljs b/src/status_im/resources.cljs
index e8c41190d6..4b49c06d0e 100644
--- a/src/status_im/resources.cljs
+++ b/src/status_im/resources.cljs
@@ -1,19 +1,19 @@
(ns status-im.resources)
+(def add-icon (js/require "./images/add.png"))
+(def att (js/require "./images/att.png"))
+(def chat-icon (js/require "./images/chat.png"))
+(def delivered-icon (js/require "./images/delivered.png"))
+(def delivery-failed-icon (js/require "./images/deliveryfailed.png"))
+(def icon-close-gray (js/require "./images/icon_close_gray.png"))
+(def leave-icon (js/require "./images/leave.png"))
(def logo-icon (js/require "./images/logo.png"))
+(def mic (js/require "./images/mic.png"))
(def nav-back-icon (js/require "./images/nav-back.png"))
(def user-no-photo (js/require "./images/no-photo.png"))
(def online-icon (js/require "./images/online.png"))
-(def seen-icon (js/require "./images/seen.png"))
-(def delivered-icon (js/require "./images/delivered.png"))
-(def delivery-failed-icon (js/require "./images/deliveryfailed.png"))
-(def chat-icon (js/require "./images/chat.png"))
(def play (js/require "./images/play.png"))
-(def mic (js/require "./images/mic.png"))
+(def seen-icon (js/require "./images/seen.png"))
(def smile (js/require "./images/smile.png"))
-(def att (js/require "./images/att.png"))
-(def v (js/require "./images/v.png"))
-(def add-icon (js/require "./images/add.png"))
(def trash-icon (js/require "./images/trash.png"))
-(def leave-icon (js/require "./images/leave.png"))
-(def icon-close-gray (js/require "./images/icon_close_gray.png"))
+(def v (js/require "./images/v.png"))