Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bc3e3d30bd | ||
|
|
9f9124aa0b | ||
|
|
33674861d0 | ||
|
|
32d8a52acf | ||
|
|
d3635b7c91 |
@@ -30,7 +30,6 @@
|
|||||||
"list-comp" :binding
|
"list-comp" :binding
|
||||||
"defview" :arg1-body
|
"defview" :arg1-body
|
||||||
"letsubs" :binding
|
"letsubs" :binding
|
||||||
"with-let" "let"
|
|
||||||
"testing" :arg1-body
|
"testing" :arg1-body
|
||||||
"deftest-sub" :arg1-body
|
"deftest-sub" :arg1-body
|
||||||
"wait-for" :arg1-body
|
"wait-for" :arg1-body
|
||||||
|
|||||||
@@ -310,7 +310,6 @@ dependencies {
|
|||||||
implementation "com.facebook.react:react-native:+" // From node_modules
|
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||||
|
|
||||||
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
||||||
implementation "androidx.core:core-splashscreen:1.0.0"
|
|
||||||
|
|
||||||
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
||||||
exclude group:'com.facebook.fbjni'
|
exclude group:'com.facebook.fbjni'
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
android:allowBackup="false"
|
android:allowBackup="false"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:theme="@style/Theme.AppSplash"
|
android:theme="@style/AppTheme"
|
||||||
android:name=".MainApplication"
|
android:name=".MainApplication"
|
||||||
android:largeHeap="true"
|
android:largeHeap="true"
|
||||||
android:usesCleartextTraffic="true">
|
android:usesCleartextTraffic="true">
|
||||||
@@ -38,7 +38,6 @@
|
|||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:theme="@style/Theme.AppSplash"
|
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import android.content.SharedPreferences;
|
|||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
|
||||||
import com.facebook.react.ReactActivityDelegate;
|
import com.facebook.react.ReactActivityDelegate;
|
||||||
import com.facebook.react.ReactRootView;
|
import com.facebook.react.ReactRootView;
|
||||||
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
||||||
@@ -32,7 +31,7 @@ import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView;
|
|||||||
import com.facebook.react.ReactFragmentActivity;
|
import com.facebook.react.ReactFragmentActivity;
|
||||||
import com.reactnativenavigation.NavigationActivity;
|
import com.reactnativenavigation.NavigationActivity;
|
||||||
import com.facebook.react.modules.core.PermissionListener;
|
import com.facebook.react.modules.core.PermissionListener;
|
||||||
import androidx.core.splashscreen.SplashScreen;
|
import org.devio.rn.splashscreen.SplashScreen;
|
||||||
|
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import im.status.ethereum.module.StatusThreadPoolExecutor;
|
import im.status.ethereum.module.StatusThreadPoolExecutor;
|
||||||
@@ -43,8 +42,6 @@ public class MainActivity extends NavigationActivity
|
|||||||
|
|
||||||
|
|
||||||
@Nullable private PermissionListener mPermissionListener;
|
@Nullable private PermissionListener mPermissionListener;
|
||||||
private boolean keepSplash = true;
|
|
||||||
private final int SPLASH_DELAY = 3200;
|
|
||||||
|
|
||||||
private static void registerUncaughtExceptionHandler(final Context context) {
|
private static void registerUncaughtExceptionHandler(final Context context) {
|
||||||
final Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
|
final Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
|
||||||
@@ -124,8 +121,21 @@ public class MainActivity extends NavigationActivity
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
SplashScreen splashScreen = SplashScreen.installSplashScreen(this);
|
|
||||||
setTheme(R.style.DarkTheme);
|
switch (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
|
||||||
|
case Configuration.UI_MODE_NIGHT_YES:
|
||||||
|
setTheme(R.style.DarkTheme);
|
||||||
|
SplashScreen.show(this, R.style.DarkTheme, R.id.lottie);
|
||||||
|
break;
|
||||||
|
case Configuration.UI_MODE_NIGHT_NO:
|
||||||
|
setTheme(R.style.LightTheme);
|
||||||
|
SplashScreen.show(this, R.style.LightTheme, R.id.lottie);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setTheme(R.style.LightTheme);
|
||||||
|
SplashScreen.show(this, R.style.LightTheme, R.id.lottie);
|
||||||
|
}
|
||||||
|
SplashScreen.setAnimationFinished(true);
|
||||||
// Make sure we get an Alert for every uncaught exceptions
|
// Make sure we get an Alert for every uncaught exceptions
|
||||||
registerUncaughtExceptionHandler(MainActivity.this);
|
registerUncaughtExceptionHandler(MainActivity.this);
|
||||||
|
|
||||||
@@ -187,11 +197,6 @@ public class MainActivity extends NavigationActivity
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
splashScreen.setKeepOnScreenCondition(() -> keepSplash);
|
|
||||||
|
|
||||||
Handler handler = new Handler();
|
|
||||||
handler.postDelayed(() -> keepSplash = false, SPLASH_DELAY);
|
|
||||||
|
|
||||||
StatusThreadPoolExecutor.getInstance().execute(r);
|
StatusThreadPoolExecutor.getInstance().execute(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 4.2 KiB |
@@ -2,6 +2,4 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<color name="alert_background">#ffffff</color>
|
<color name="alert_background">#ffffff</color>
|
||||||
<color name="alert_text">#000000</color>
|
<color name="alert_text">#000000</color>
|
||||||
<color name="splash_background">#09101C</color>
|
|
||||||
<color name="splash_status_bar_color">#ffffff</color>
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
|
||||||
<style name="Theme.AppSplash" parent="Theme.SplashScreen">
|
|
||||||
<item name="windowSplashScreenBackground">@color/splash_background</item>
|
|
||||||
<item name="windowSplashScreenAnimatedIcon">@drawable/splash_logo</item>
|
|
||||||
<item name="windowSplashScreenAnimationDuration">1000</item>
|
|
||||||
|
|
||||||
<!-- Status bar and Nav bar configs -->
|
|
||||||
<item name="android:statusBarColor" tools:targetApi="l">@color/splash_background</item>
|
|
||||||
<item name="android:windowLightStatusBar">false</item>
|
|
||||||
|
|
||||||
<item name="postSplashScreenTheme">@style/DarkTheme</item>
|
|
||||||
</style>
|
|
||||||
</resources>
|
|
||||||
@@ -1,24 +1,24 @@
|
|||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
CFPropertyList (3.0.6)
|
CFPropertyList (3.0.5)
|
||||||
rexml
|
rexml
|
||||||
addressable (2.8.1)
|
addressable (2.8.1)
|
||||||
public_suffix (>= 2.0.2, < 6.0)
|
public_suffix (>= 2.0.2, < 6.0)
|
||||||
artifactory (3.0.15)
|
artifactory (3.0.15)
|
||||||
atomos (0.1.3)
|
atomos (0.1.3)
|
||||||
aws-eventstream (1.2.0)
|
aws-eventstream (1.2.0)
|
||||||
aws-partitions (1.728.0)
|
aws-partitions (1.644.0)
|
||||||
aws-sdk-core (3.170.0)
|
aws-sdk-core (3.159.0)
|
||||||
aws-eventstream (~> 1, >= 1.0.2)
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
aws-partitions (~> 1, >= 1.651.0)
|
aws-partitions (~> 1, >= 1.525.0)
|
||||||
aws-sigv4 (~> 1.5)
|
|
||||||
jmespath (~> 1, >= 1.6.1)
|
|
||||||
aws-sdk-kms (1.63.0)
|
|
||||||
aws-sdk-core (~> 3, >= 3.165.0)
|
|
||||||
aws-sigv4 (~> 1.1)
|
aws-sigv4 (~> 1.1)
|
||||||
aws-sdk-s3 (1.119.1)
|
jmespath (~> 1, >= 1.6.1)
|
||||||
aws-sdk-core (~> 3, >= 3.165.0)
|
aws-sdk-kms (1.58.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.127.0)
|
||||||
|
aws-sigv4 (~> 1.1)
|
||||||
|
aws-sdk-s3 (1.114.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.127.0)
|
||||||
aws-sdk-kms (~> 1)
|
aws-sdk-kms (~> 1)
|
||||||
aws-sigv4 (~> 1.4)
|
aws-sigv4 (~> 1.4)
|
||||||
aws-sigv4 (1.5.2)
|
aws-sigv4 (1.5.2)
|
||||||
@@ -36,8 +36,8 @@ GEM
|
|||||||
unf (>= 0.0.5, < 1.0.0)
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
dotenv (2.8.1)
|
dotenv (2.8.1)
|
||||||
emoji_regex (3.2.3)
|
emoji_regex (3.2.3)
|
||||||
excon (0.99.0)
|
excon (0.93.0)
|
||||||
faraday (1.10.3)
|
faraday (1.10.2)
|
||||||
faraday-em_http (~> 1.0)
|
faraday-em_http (~> 1.0)
|
||||||
faraday-em_synchrony (~> 1.0)
|
faraday-em_synchrony (~> 1.0)
|
||||||
faraday-excon (~> 1.1)
|
faraday-excon (~> 1.1)
|
||||||
@@ -66,7 +66,7 @@ GEM
|
|||||||
faraday_middleware (1.2.0)
|
faraday_middleware (1.2.0)
|
||||||
faraday (~> 1.0)
|
faraday (~> 1.0)
|
||||||
fastimage (2.2.6)
|
fastimage (2.2.6)
|
||||||
fastlane (2.212.1)
|
fastlane (2.210.1)
|
||||||
CFPropertyList (>= 2.3, < 4.0.0)
|
CFPropertyList (>= 2.3, < 4.0.0)
|
||||||
addressable (>= 2.8, < 3.0.0)
|
addressable (>= 2.8, < 3.0.0)
|
||||||
artifactory (~> 3.0)
|
artifactory (~> 3.0)
|
||||||
@@ -109,9 +109,9 @@ GEM
|
|||||||
fastlane-plugin-diawi (2.1.0)
|
fastlane-plugin-diawi (2.1.0)
|
||||||
rest-client (>= 2.0.0)
|
rest-client (>= 2.0.0)
|
||||||
gh_inspector (1.1.3)
|
gh_inspector (1.1.3)
|
||||||
google-apis-androidpublisher_v3 (0.36.0)
|
google-apis-androidpublisher_v3 (0.29.0)
|
||||||
google-apis-core (>= 0.11.0, < 2.a)
|
google-apis-core (>= 0.9.0, < 2.a)
|
||||||
google-apis-core (0.11.0)
|
google-apis-core (0.9.0)
|
||||||
addressable (~> 2.5, >= 2.5.1)
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
googleauth (>= 0.16.2, < 2.a)
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
httpclient (>= 2.8.1, < 3.a)
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
@@ -120,10 +120,10 @@ GEM
|
|||||||
retriable (>= 2.0, < 4.a)
|
retriable (>= 2.0, < 4.a)
|
||||||
rexml
|
rexml
|
||||||
webrick
|
webrick
|
||||||
google-apis-iamcredentials_v1 (0.17.0)
|
google-apis-iamcredentials_v1 (0.15.0)
|
||||||
google-apis-core (>= 0.11.0, < 2.a)
|
google-apis-core (>= 0.9.0, < 2.a)
|
||||||
google-apis-playcustomapp_v1 (0.13.0)
|
google-apis-playcustomapp_v1 (0.11.0)
|
||||||
google-apis-core (>= 0.11.0, < 2.a)
|
google-apis-core (>= 0.9.0, < 2.a)
|
||||||
google-apis-storage_v1 (0.19.0)
|
google-apis-storage_v1 (0.19.0)
|
||||||
google-apis-core (>= 0.9.0, < 2.a)
|
google-apis-core (>= 0.9.0, < 2.a)
|
||||||
google-cloud-core (1.6.0)
|
google-cloud-core (1.6.0)
|
||||||
@@ -131,8 +131,8 @@ GEM
|
|||||||
google-cloud-errors (~> 1.0)
|
google-cloud-errors (~> 1.0)
|
||||||
google-cloud-env (1.6.0)
|
google-cloud-env (1.6.0)
|
||||||
faraday (>= 0.17.3, < 3.0)
|
faraday (>= 0.17.3, < 3.0)
|
||||||
google-cloud-errors (1.3.1)
|
google-cloud-errors (1.3.0)
|
||||||
google-cloud-storage (1.44.0)
|
google-cloud-storage (1.43.0)
|
||||||
addressable (~> 2.8)
|
addressable (~> 2.8)
|
||||||
digest-crc (~> 0.4)
|
digest-crc (~> 0.4)
|
||||||
google-apis-iamcredentials_v1 (~> 0.1)
|
google-apis-iamcredentials_v1 (~> 0.1)
|
||||||
@@ -140,7 +140,7 @@ GEM
|
|||||||
google-cloud-core (~> 1.6)
|
google-cloud-core (~> 1.6)
|
||||||
googleauth (>= 0.16.2, < 2.a)
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
mini_mime (~> 1.0)
|
mini_mime (~> 1.0)
|
||||||
googleauth (1.3.0)
|
googleauth (1.2.0)
|
||||||
faraday (>= 0.17.3, < 3.a)
|
faraday (>= 0.17.3, < 3.a)
|
||||||
jwt (>= 1.4, < 3.0)
|
jwt (>= 1.4, < 3.0)
|
||||||
memoist (~> 0.16)
|
memoist (~> 0.16)
|
||||||
@@ -152,14 +152,14 @@ GEM
|
|||||||
http-cookie (1.0.5)
|
http-cookie (1.0.5)
|
||||||
domain_name (~> 0.5)
|
domain_name (~> 0.5)
|
||||||
httpclient (2.8.3)
|
httpclient (2.8.3)
|
||||||
jmespath (1.6.2)
|
jmespath (1.6.1)
|
||||||
json (2.6.3)
|
json (2.6.2)
|
||||||
jwt (2.7.0)
|
jwt (2.5.0)
|
||||||
memoist (0.16.2)
|
memoist (0.16.2)
|
||||||
mime-types (3.4.1)
|
mime-types (3.4.1)
|
||||||
mime-types-data (~> 3.2015)
|
mime-types-data (~> 3.2015)
|
||||||
mime-types-data (3.2023.0218.1)
|
mime-types-data (3.2022.0105)
|
||||||
mini_magick (4.12.0)
|
mini_magick (4.11.0)
|
||||||
mini_mime (1.1.2)
|
mini_mime (1.1.2)
|
||||||
multi_json (1.15.0)
|
multi_json (1.15.0)
|
||||||
multipart-post (2.0.0)
|
multipart-post (2.0.0)
|
||||||
@@ -168,8 +168,8 @@ GEM
|
|||||||
netrc (0.11.0)
|
netrc (0.11.0)
|
||||||
optparse (0.1.1)
|
optparse (0.1.1)
|
||||||
os (1.1.4)
|
os (1.1.4)
|
||||||
plist (3.7.0)
|
plist (3.6.0)
|
||||||
public_suffix (5.0.1)
|
public_suffix (5.0.0)
|
||||||
rake (13.0.6)
|
rake (13.0.6)
|
||||||
representable (3.2.0)
|
representable (3.2.0)
|
||||||
declarative (< 0.1.0)
|
declarative (< 0.1.0)
|
||||||
@@ -191,7 +191,7 @@ GEM
|
|||||||
faraday (>= 0.17.5, < 3.a)
|
faraday (>= 0.17.5, < 3.a)
|
||||||
jwt (>= 1.5, < 3.0)
|
jwt (>= 1.5, < 3.0)
|
||||||
multi_json (~> 1.10)
|
multi_json (~> 1.10)
|
||||||
simctl (1.6.10)
|
simctl (1.6.8)
|
||||||
CFPropertyList
|
CFPropertyList
|
||||||
naturally
|
naturally
|
||||||
terminal-notifier (2.0.0)
|
terminal-notifier (2.0.0)
|
||||||
@@ -207,7 +207,7 @@ GEM
|
|||||||
unf_ext
|
unf_ext
|
||||||
unf_ext (0.0.8.2)
|
unf_ext (0.0.8.2)
|
||||||
unicode-display_width (1.8.0)
|
unicode-display_width (1.8.0)
|
||||||
webrick (1.8.1)
|
webrick (1.7.0)
|
||||||
word_wrap (1.0.0)
|
word_wrap (1.0.0)
|
||||||
xcodeproj (1.22.0)
|
xcodeproj (1.22.0)
|
||||||
CFPropertyList (>= 2.3.3, < 4.0)
|
CFPropertyList (>= 2.3.3, < 4.0)
|
||||||
@@ -230,4 +230,4 @@ DEPENDENCIES
|
|||||||
fastlane-plugin-diawi
|
fastlane-plugin-diawi
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.4.6
|
2.3.20
|
||||||
|
|||||||
@@ -45,10 +45,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0q3q19insq5ablmr6ypq033qg1gsar5mdphhp7xg80rd615cnq97";
|
sha256 = "0x58gl654kcx65wyrix5swh5f9y431881a5mql8g3zwshd81fyb3";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.728.0";
|
version = "1.644.0";
|
||||||
};
|
};
|
||||||
aws-sdk-core = {
|
aws-sdk-core = {
|
||||||
dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
|
dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
|
||||||
@@ -56,10 +56,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0zc4zhv2wq7s5p8c9iaplama1lpg2kwldg81j83c8w4xydf1wd2r";
|
sha256 = "0cdjmpblskjmhag7wx6scwkd3cw1gfh85syr599s05k8zp6y4qw8";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.170.0";
|
version = "3.159.0";
|
||||||
};
|
};
|
||||||
aws-sdk-kms = {
|
aws-sdk-kms = {
|
||||||
dependencies = ["aws-sdk-core" "aws-sigv4"];
|
dependencies = ["aws-sdk-core" "aws-sigv4"];
|
||||||
@@ -67,10 +67,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0v87zi28dfmrv7bv91yfldccnpd63n295siirbz7wqv1rajn8n02";
|
sha256 = "1p2dbmb1vl8vk2xchrrsp2sxa95ya5w7ll1jlw89yyhls3l2l1ag";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.63.0";
|
version = "1.58.0";
|
||||||
};
|
};
|
||||||
aws-sdk-s3 = {
|
aws-sdk-s3 = {
|
||||||
dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"];
|
dependencies = ["aws-sdk-core" "aws-sdk-kms" "aws-sigv4"];
|
||||||
@@ -78,10 +78,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1rpnlzsl52znhcki13jkwdshgwf51pn26267481f4fa842gr7xgp";
|
sha256 = "1r6dxz3llgxbbm66jq5mkzk0i6qsxwv0d9s0ipwb23vv3bgp23yf";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.119.1";
|
version = "1.114.0";
|
||||||
};
|
};
|
||||||
aws-sigv4 = {
|
aws-sigv4 = {
|
||||||
dependencies = ["aws-eventstream"];
|
dependencies = ["aws-eventstream"];
|
||||||
@@ -110,10 +110,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1a36zn77yyibqsfpka0i8vgf3yv98ic2b9wwlbc29566y8wpa2bq";
|
sha256 = "193l8r1ycd3dcxa7lsb4pqcghbk56dzc5244m6y8xmv88z6m31d7";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.0.6";
|
version = "3.0.5";
|
||||||
};
|
};
|
||||||
claide = {
|
claide = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@@ -213,10 +213,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0j826kfvzn7nc5pv950n270r0sx1702k988ad11cdlav3dcxxw09";
|
sha256 = "0b3rfqy87yiv9xmh260nyddxxjqj0vy32xvajvyn5jnjx96jwa24";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.99.0";
|
version = "0.93.0";
|
||||||
};
|
};
|
||||||
faraday = {
|
faraday = {
|
||||||
dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"];
|
dependencies = ["faraday-em_http" "faraday-em_synchrony" "faraday-excon" "faraday-httpclient" "faraday-multipart" "faraday-net_http" "faraday-net_http_persistent" "faraday-patron" "faraday-rack" "faraday-retry" "ruby2_keywords"];
|
||||||
@@ -224,10 +224,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1c760q0ks4vj4wmaa7nh1dgvgqiwaw0mjr7v8cymy7i3ffgjxx90";
|
sha256 = "1d5ipsv069dhgv9zhxgj8pz4j52yhgvfm01aq881yz7qgjd7ilxp";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.10.3";
|
version = "1.10.2";
|
||||||
};
|
};
|
||||||
faraday-cookie_jar = {
|
faraday-cookie_jar = {
|
||||||
dependencies = ["faraday" "http-cookie"];
|
dependencies = ["faraday" "http-cookie"];
|
||||||
@@ -368,10 +368,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0b22m2dkydyv2si55b1jzznzgxf2ycx2aarv1j5p25k861h2gsml";
|
sha256 = "1wxzcs81c5ji30hrz64884rg0w56v2nwjyiyc8daka578bg7s8d6";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.212.1";
|
version = "2.210.1";
|
||||||
};
|
};
|
||||||
fastlane-plugin-clean_testflight_testers = {
|
fastlane-plugin-clean_testflight_testers = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@@ -410,10 +410,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1mbnmn36z1cnsd6ar76p9wvqi0ac6wlpm1p1lqczivain16qma76";
|
sha256 = "0z2i5wpkawkf4f42i55b1240iw8819wx828579s4vavhd9s17yik";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.36.0";
|
version = "0.29.0";
|
||||||
};
|
};
|
||||||
google-apis-core = {
|
google-apis-core = {
|
||||||
dependencies = ["addressable" "googleauth" "httpclient" "mini_mime" "representable" "retriable" "rexml" "webrick"];
|
dependencies = ["addressable" "googleauth" "httpclient" "mini_mime" "representable" "retriable" "rexml" "webrick"];
|
||||||
@@ -421,10 +421,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "184zkm5agi7r5fl79hgahjpydsc4d23nd2ynh2sr9z8gs2w4h82f";
|
sha256 = "1w9m4zc5xswz2h7gj4jvnb1ivzb6lcsl75fnw8ip7qz6hzwfgrlc";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.11.0";
|
version = "0.9.0";
|
||||||
};
|
};
|
||||||
google-apis-iamcredentials_v1 = {
|
google-apis-iamcredentials_v1 = {
|
||||||
dependencies = ["google-apis-core"];
|
dependencies = ["google-apis-core"];
|
||||||
@@ -432,10 +432,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0ysil0bkh755kmf9xvw5szhk1yyh3gqzwfsrbwsrl77gsv7jarcs";
|
sha256 = "06smnmn2s460xl9x9rh07a3fkqdrjjy6azmx8iywggqgv2k5d8p9";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.17.0";
|
version = "0.15.0";
|
||||||
};
|
};
|
||||||
google-apis-playcustomapp_v1 = {
|
google-apis-playcustomapp_v1 = {
|
||||||
dependencies = ["google-apis-core"];
|
dependencies = ["google-apis-core"];
|
||||||
@@ -443,10 +443,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1mlgwiid5lgg41y7qk8ca9lzhwx5njs25hz5fbf1mdal0kwm37lm";
|
sha256 = "00nfh3xh51mbh02f8nqlsijdh59k9vjs5sglvpv09pl3wnhirf7w";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "0.13.0";
|
version = "0.11.0";
|
||||||
};
|
};
|
||||||
google-apis-storage_v1 = {
|
google-apis-storage_v1 = {
|
||||||
dependencies = ["google-apis-core"];
|
dependencies = ["google-apis-core"];
|
||||||
@@ -486,10 +486,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0flpj7v196c3xsqx4yjb7rjcj8p0by4rhj6qf5zanw4p1i41ssf0";
|
sha256 = "0jynh1s93nl8njm5l5wcy86pnjmv112cq6m0443s52f04hg6h2s5";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.3.1";
|
version = "1.3.0";
|
||||||
};
|
};
|
||||||
google-cloud-storage = {
|
google-cloud-storage = {
|
||||||
dependencies = ["addressable" "digest-crc" "google-apis-iamcredentials_v1" "google-apis-storage_v1" "google-cloud-core" "googleauth" "mini_mime"];
|
dependencies = ["addressable" "digest-crc" "google-apis-iamcredentials_v1" "google-apis-storage_v1" "google-cloud-core" "googleauth" "mini_mime"];
|
||||||
@@ -497,10 +497,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1skhlpcykxxzw3050cwngdyc3n746wfx443w1w9chxwjbh2ix6i9";
|
sha256 = "0j3hqyb4zgj6az6p0bz0kgskl6fddrwb095kxfbdx8r11m07mfr8";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.44.0";
|
version = "1.43.0";
|
||||||
};
|
};
|
||||||
googleauth = {
|
googleauth = {
|
||||||
dependencies = ["faraday" "jwt" "memoist" "multi_json" "os" "signet"];
|
dependencies = ["faraday" "jwt" "memoist" "multi_json" "os" "signet"];
|
||||||
@@ -508,10 +508,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1hpwgwhk0lmnknkw8kbdfxn95qqs6aagpq815l5fkw9w6mi77pai";
|
sha256 = "030bcdnffwndk8h270cmbndixb5h3ss860yifv6bkfys95s5fjpp";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.3.0";
|
version = "1.2.0";
|
||||||
};
|
};
|
||||||
highline = {
|
highline = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@@ -559,30 +559,30 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1cdw9vw2qly7q7r41s7phnac264rbsdqgj4l0h4nqgbjb157g393";
|
sha256 = "1mnvb80cdg7fzdcs3xscv21p28w4igk5sj5m7m81xp8v2ks87jj0";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.6.2";
|
version = "1.6.1";
|
||||||
};
|
};
|
||||||
json = {
|
json = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0nalhin1gda4v8ybk6lq8f407cgfrj6qzn234yra4ipkmlbfmal6";
|
sha256 = "0yk5d10yvspkc5jyvx9gc1a9pn1z8v4k2hvjk1l88zixwf3wf3cl";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.6.3";
|
version = "2.6.2";
|
||||||
};
|
};
|
||||||
jwt = {
|
jwt = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "09yj3z5snhaawh2z1w45yyihzmh57m6m7dp8ra8gxavhj5kbiq5p";
|
sha256 = "0kcmnx6rgjyd7sznai9ccns2nh7p7wnw3mi8a7vf2wkm51azwddq";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "2.7.0";
|
version = "2.5.0";
|
||||||
};
|
};
|
||||||
memoist = {
|
memoist = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@@ -610,20 +610,20 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "1pky3vzaxlgm9gw5wlqwwi7wsw3jrglrfflrppvvnsrlaiz043z9";
|
sha256 = "003gd7mcay800k2q4pb2zn8lwwgci4bhi42v2jvlidm8ksx03i6q";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.2023.0218.1";
|
version = "3.2022.0105";
|
||||||
};
|
};
|
||||||
mini_magick = {
|
mini_magick = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0slh78f9z6n0l1i2km7m48yz7l4fjrk88sj1f4mh1wb39sl2yc37";
|
sha256 = "1aj604x11d9pksbljh0l38f70b558rhdgji1s9i763hiagvvx2hs";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "4.12.0";
|
version = "4.11.0";
|
||||||
};
|
};
|
||||||
mini_mime = {
|
mini_mime = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@@ -710,20 +710,20 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0wzhnbzraz60paxhm48c50fp9xi7cqka4gfhxmiq43mhgh5ajg3h";
|
sha256 = "1whhr897z6z6av85x2cipyjk46bwh6s4wx6nbrcd3iifnzvbqs7l";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "3.7.0";
|
version = "3.6.0";
|
||||||
};
|
};
|
||||||
public_suffix = {
|
public_suffix = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0hz0bx2qs2pwb0bwazzsah03ilpf3aai8b7lk7s35jsfzwbkjq35";
|
sha256 = "0sqw1zls6227bgq38sxb2hs8nkdz4hn1zivs27mjbniswfy4zvi6";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "5.0.1";
|
version = "5.0.0";
|
||||||
};
|
};
|
||||||
rake = {
|
rake = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@@ -834,10 +834,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "0sr3z4kmp6ym7synicyilj9vic7i9nxgaszqx6n1xn1ss7s7g45r";
|
sha256 = "1v9rsdmg5c5kkf8ps47xnrfbvjnq11sbaifr186jwkh4npawz00x";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.6.10";
|
version = "1.6.8";
|
||||||
};
|
};
|
||||||
terminal-notifier = {
|
terminal-notifier = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
@@ -947,10 +947,10 @@
|
|||||||
platforms = [];
|
platforms = [];
|
||||||
source = {
|
source = {
|
||||||
remotes = ["https://rubygems.org"];
|
remotes = ["https://rubygems.org"];
|
||||||
sha256 = "13qm7s0gr2pmfcl7dxrmq38asaza4w0i2n9my4yzs499j731wh8r";
|
sha256 = "1d4cvgmxhfczxiq5fr534lmizkhigd15bsx5719r5ds7k7ivisc7";
|
||||||
type = "gem";
|
type = "gem";
|
||||||
};
|
};
|
||||||
version = "1.8.1";
|
version = "1.7.0";
|
||||||
};
|
};
|
||||||
word_wrap = {
|
word_wrap = {
|
||||||
groups = ["default"];
|
groups = ["default"];
|
||||||
|
|||||||
@@ -35,6 +35,26 @@ abstract_target 'Status' do
|
|||||||
target 'StatusImPR' do
|
target 'StatusImPR' do
|
||||||
end
|
end
|
||||||
|
|
||||||
|
post_install do |installer|
|
||||||
|
# some of libs wouldn't be build for x86_64 otherwise and that is
|
||||||
|
# necessary for ios simulators
|
||||||
|
installer.pods_project.targets.each do |target|
|
||||||
|
target.build_configurations.each do |config|
|
||||||
|
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# FIXME: Fix dependency signing broken on Xcode 14 due to lack of Team ID.
|
||||||
|
# https://github.com/CocoaPods/CocoaPods/issues/11402
|
||||||
|
installer.pods_project.targets.each do |target|
|
||||||
|
if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
|
||||||
|
target.build_configurations.each do |config|
|
||||||
|
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
use_native_modules!
|
use_native_modules!
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -27,15 +27,15 @@ PODS:
|
|||||||
- CryptoSwift
|
- CryptoSwift
|
||||||
- secp256k1
|
- secp256k1
|
||||||
- SSZipArchive
|
- SSZipArchive
|
||||||
- libwebp (1.2.4):
|
- libwebp (1.2.3):
|
||||||
- libwebp/demux (= 1.2.4)
|
- libwebp/demux (= 1.2.3)
|
||||||
- libwebp/mux (= 1.2.4)
|
- libwebp/mux (= 1.2.3)
|
||||||
- libwebp/webp (= 1.2.4)
|
- libwebp/webp (= 1.2.3)
|
||||||
- libwebp/demux (1.2.4):
|
- libwebp/demux (1.2.3):
|
||||||
- libwebp/webp
|
- libwebp/webp
|
||||||
- libwebp/mux (1.2.4):
|
- libwebp/mux (1.2.3):
|
||||||
- libwebp/demux
|
- libwebp/demux
|
||||||
- libwebp/webp (1.2.4)
|
- libwebp/webp (1.2.3)
|
||||||
- Permission-Camera (2.1.5):
|
- Permission-Camera (2.1.5):
|
||||||
- RNPermissions
|
- RNPermissions
|
||||||
- Permission-Microphone (2.1.5):
|
- Permission-Microphone (2.1.5):
|
||||||
@@ -645,10 +645,10 @@ SPEC CHECKSUMS:
|
|||||||
FBLazyVector: 352a8ca9bbc8e2f097d680747a8c97ecef12d469
|
FBLazyVector: 352a8ca9bbc8e2f097d680747a8c97ecef12d469
|
||||||
FBReactNativeSpec: 7dfb84f624136a45727c813ed21d130cd3e61beb
|
FBReactNativeSpec: 7dfb84f624136a45727c813ed21d130cd3e61beb
|
||||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
||||||
glog: 6934faae5afbec23475648c8aeb6047ce973af65
|
glog: 997518ea2aa2d8cd5df9797b641b758d52ecf2bc
|
||||||
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
|
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
|
||||||
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8
|
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8
|
||||||
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
|
libwebp: 60305b2e989864154bd9be3d772730f08fc6a59c
|
||||||
Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b
|
Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b
|
||||||
Permission-Microphone: 0ffabc3fe1c75cfb260525ee3f529383c9f4368c
|
Permission-Microphone: 0ffabc3fe1c75cfb260525ee3f529383c9f4368c
|
||||||
RCTRequired: 5520387431beaa5f32aa8726bf746cd5353119fe
|
RCTRequired: 5520387431beaa5f32aa8726bf746cd5353119fe
|
||||||
@@ -716,6 +716,6 @@ SPEC CHECKSUMS:
|
|||||||
TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4
|
TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4
|
||||||
Yoga: 0276e9f20976c8568e107cfc1163a8629051adc0
|
Yoga: 0276e9f20976c8568e107cfc1163a8629051adc0
|
||||||
|
|
||||||
PODFILE CHECKSUM: dd4d6510a5580d20adac6c8a8dad97a0bc7d6508
|
PODFILE CHECKSUM: ca5d07911eadc1267649ecc15379e5127a0cc839
|
||||||
|
|
||||||
COCOAPODS: 1.12.0
|
COCOAPODS: 1.11.3
|
||||||
|
|||||||
@@ -49,12 +49,6 @@
|
|||||||
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
|
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
|
||||||
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; };
|
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 4E586E1B0E544F64AA9F5BD1 /* libz.tbd */; };
|
||||||
BFF6343F5A1F0F5FFFC8D020 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A4B974811E312E44D5BBE9EC /* libPods-Status-StatusIm-StatusImTests.a */; };
|
BFF6343F5A1F0F5FFFC8D020 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A4B974811E312E44D5BBE9EC /* libPods-Status-StatusIm-StatusImTests.a */; };
|
||||||
C14C5F8D29C0A149005C58A7 /* launch-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */; };
|
|
||||||
C14C5F9129C0AD9C005C58A7 /* launch-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */; };
|
|
||||||
C14C5F9329C0ADB5005C58A7 /* launch-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9229C0ADB5005C58A7 /* launch-icon.png */; };
|
|
||||||
C1715FFA29C0BCE10088FA8B /* launch-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */; };
|
|
||||||
C1715FFB29C0BCE50088FA8B /* launch-icon@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */; };
|
|
||||||
C1715FFC29C0BCE80088FA8B /* launch-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = C14C5F9229C0ADB5005C58A7 /* launch-icon.png */; };
|
|
||||||
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE4E31B21D8695250033ED64 /* Statusgo.xcframework */; };
|
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE4E31B21D8695250033ED64 /* Statusgo.xcframework */; };
|
||||||
D1786306E0184916B11F4C37 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */; };
|
D1786306E0184916B11F4C37 /* Inter-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */; };
|
||||||
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */; };
|
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */; };
|
||||||
@@ -148,9 +142,6 @@
|
|||||||
B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../resources/fonts/Inter-Medium.otf"; sourceTree = "<group>"; };
|
B2A38FC3D3954DE7B2B171F8 /* Inter-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Medium.otf"; path = "../resources/fonts/Inter-Medium.otf"; sourceTree = "<group>"; };
|
||||||
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StatusIm/Images.xcassets; sourceTree = "<group>"; };
|
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = StatusIm/Images.xcassets; sourceTree = "<group>"; };
|
||||||
B321D25F4493470980039457 /* Inter-BoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-BoldItalic.otf"; path = "../resources/fonts/Inter-BoldItalic.otf"; sourceTree = "<group>"; };
|
B321D25F4493470980039457 /* Inter-BoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-BoldItalic.otf"; path = "../resources/fonts/Inter-BoldItalic.otf"; sourceTree = "<group>"; };
|
||||||
C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon@3x.png"; path = "StatusIm/launch-icon@3x.png"; sourceTree = "<group>"; };
|
|
||||||
C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon@2x.png"; path = "StatusIm/launch-icon@2x.png"; sourceTree = "<group>"; };
|
|
||||||
C14C5F9229C0ADB5005C58A7 /* launch-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "launch-icon.png"; path = "StatusIm/launch-icon.png"; sourceTree = "<group>"; };
|
|
||||||
C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../resources/fonts/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
|
C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-MediumItalic.otf"; path = "../resources/fonts/Inter-MediumItalic.otf"; sourceTree = "<group>"; };
|
||||||
CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../resources/fonts/Inter-Bold.otf"; sourceTree = "<group>"; };
|
CD4A2C27D6D5473184DC1F7E /* Inter-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Bold.otf"; path = "../resources/fonts/Inter-Bold.otf"; sourceTree = "<group>"; };
|
||||||
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
|
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
|
||||||
@@ -215,9 +206,6 @@
|
|||||||
13B07FAE1A68108700A75B9A /* StatusIm */ = {
|
13B07FAE1A68108700A75B9A /* StatusIm */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
C14C5F9229C0ADB5005C58A7 /* launch-icon.png */,
|
|
||||||
C14C5F9029C0AD9C005C58A7 /* launch-icon@2x.png */,
|
|
||||||
C14C5F8C29C0A149005C58A7 /* launch-icon@3x.png */,
|
|
||||||
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */,
|
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */,
|
||||||
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */,
|
B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */,
|
||||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
008F07F21AC5B25A0029DE68 /* main.jsbundle */,
|
||||||
@@ -417,7 +405,9 @@
|
|||||||
TestTargetID = 13B07F861A680F5B00A75B9A;
|
TestTargetID = 13B07F861A680F5B00A75B9A;
|
||||||
};
|
};
|
||||||
13B07F861A680F5B00A75B9A = {
|
13B07F861A680F5B00A75B9A = {
|
||||||
|
DevelopmentTeam = 8B5X2M6H2Y;
|
||||||
LastSwiftMigration = 1140;
|
LastSwiftMigration = 1140;
|
||||||
|
ProvisioningStyle = Manual;
|
||||||
SystemCapabilities = {
|
SystemCapabilities = {
|
||||||
com.apple.BackgroundModes = {
|
com.apple.BackgroundModes = {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
@@ -487,10 +477,8 @@
|
|||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
C14C5F9329C0ADB5005C58A7 /* launch-icon.png in Resources */,
|
|
||||||
74B758FC20D7C00B003343C3 /* launch-image-universal.storyboard in Resources */,
|
74B758FC20D7C00B003343C3 /* launch-image-universal.storyboard in Resources */,
|
||||||
715D8132290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */,
|
715D8132290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */,
|
||||||
C14C5F9129C0AD9C005C58A7 /* launch-icon@2x.png in Resources */,
|
|
||||||
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */,
|
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */,
|
||||||
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */,
|
D84616FB563A48EBB1678699 /* Inter-Bold.otf in Resources */,
|
||||||
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */,
|
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */,
|
||||||
@@ -501,7 +489,6 @@
|
|||||||
70ADBB5ECF934DCF8A0E4919 /* Inter-Regular.otf in Resources */,
|
70ADBB5ECF934DCF8A0E4919 /* Inter-Regular.otf in Resources */,
|
||||||
3870E1E692E24133A80B07DE /* Inter-SemiBold.otf in Resources */,
|
3870E1E692E24133A80B07DE /* Inter-SemiBold.otf in Resources */,
|
||||||
8391E8E0E93C41A98AAA6631 /* Inter-SemiBoldItalic.otf in Resources */,
|
8391E8E0E93C41A98AAA6631 /* Inter-SemiBoldItalic.otf in Resources */,
|
||||||
C14C5F8D29C0A149005C58A7 /* launch-icon@3x.png in Resources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -514,16 +501,13 @@
|
|||||||
3AAD2ACB24A3A60E0075D594 /* Images.xcassets in Resources */,
|
3AAD2ACB24A3A60E0075D594 /* Images.xcassets in Resources */,
|
||||||
3AAD2ACC24A3A60E0075D594 /* Inter-Bold.otf in Resources */,
|
3AAD2ACC24A3A60E0075D594 /* Inter-Bold.otf in Resources */,
|
||||||
3AAD2ACD24A3A60E0075D594 /* Inter-BoldItalic.otf in Resources */,
|
3AAD2ACD24A3A60E0075D594 /* Inter-BoldItalic.otf in Resources */,
|
||||||
C1715FFA29C0BCE10088FA8B /* launch-icon@2x.png in Resources */,
|
|
||||||
3AAD2ACE24A3A60E0075D594 /* InterStatus-Regular.otf in Resources */,
|
3AAD2ACE24A3A60E0075D594 /* InterStatus-Regular.otf in Resources */,
|
||||||
3AAD2ACF24A3A60E0075D594 /* Inter-Italic.otf in Resources */,
|
3AAD2ACF24A3A60E0075D594 /* Inter-Italic.otf in Resources */,
|
||||||
3AAD2AD024A3A60E0075D594 /* Inter-Medium.otf in Resources */,
|
3AAD2AD024A3A60E0075D594 /* Inter-Medium.otf in Resources */,
|
||||||
3AAD2AD124A3A60E0075D594 /* Inter-MediumItalic.otf in Resources */,
|
3AAD2AD124A3A60E0075D594 /* Inter-MediumItalic.otf in Resources */,
|
||||||
3AAD2AD224A3A60E0075D594 /* Inter-Regular.otf in Resources */,
|
3AAD2AD224A3A60E0075D594 /* Inter-Regular.otf in Resources */,
|
||||||
C1715FFC29C0BCE80088FA8B /* launch-icon.png in Resources */,
|
|
||||||
3AAD2AD324A3A60E0075D594 /* Inter-SemiBold.otf in Resources */,
|
3AAD2AD324A3A60E0075D594 /* Inter-SemiBold.otf in Resources */,
|
||||||
3AAD2AD424A3A60E0075D594 /* Inter-SemiBoldItalic.otf in Resources */,
|
3AAD2AD424A3A60E0075D594 /* Inter-SemiBoldItalic.otf in Resources */,
|
||||||
C1715FFB29C0BCE50088FA8B /* launch-icon@3x.png in Resources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@@ -841,8 +825,9 @@
|
|||||||
BUNDLE_ID_SUFFIX = .debug;
|
BUNDLE_ID_SUFFIX = .debug;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = StatusIm/StatusIm.entitlements;
|
CODE_SIGN_ENTITLEMENTS = StatusIm/StatusIm.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "iPhone Distribution";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
|
CODE_SIGN_STYLE = Manual;
|
||||||
CUSTOM_PRODUCT_NAME = "Status Debug";
|
CUSTOM_PRODUCT_NAME = "Status Debug";
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEVELOPMENT_TEAM = 8B5X2M6H2Y;
|
DEVELOPMENT_TEAM = 8B5X2M6H2Y;
|
||||||
@@ -895,7 +880,8 @@
|
|||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = im.status.ethereum;
|
PRODUCT_BUNDLE_IDENTIFIER = im.status.ethereum;
|
||||||
PRODUCT_NAME = StatusIm;
|
PRODUCT_NAME = StatusIm;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE = "9da75626-9594-43d9-a827-0f6d43c28f54";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "match Development im.status.ethereum";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "StatusIm-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "StatusIm-Bridging-Header.h";
|
||||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
@@ -913,8 +899,9 @@
|
|||||||
BUNDLE_ID_SUFFIX = "";
|
BUNDLE_ID_SUFFIX = "";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CODE_SIGN_ENTITLEMENTS = StatusIm/StatusIm.entitlements;
|
CODE_SIGN_ENTITLEMENTS = StatusIm/StatusIm.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||||
|
CODE_SIGN_STYLE = Manual;
|
||||||
CUSTOM_PRODUCT_NAME = Status;
|
CUSTOM_PRODUCT_NAME = Status;
|
||||||
DEAD_CODE_STRIPPING = YES;
|
DEAD_CODE_STRIPPING = YES;
|
||||||
DEVELOPMENT_TEAM = 8B5X2M6H2Y;
|
DEVELOPMENT_TEAM = 8B5X2M6H2Y;
|
||||||
@@ -959,7 +946,8 @@
|
|||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = im.status.ethereum;
|
PRODUCT_BUNDLE_IDENTIFIER = im.status.ethereum;
|
||||||
PRODUCT_NAME = StatusIm;
|
PRODUCT_NAME = StatusIm;
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
PROVISIONING_PROFILE = "e2202b12-7a66-4ff7-af3c-a52e35f32dc1";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "match AdHoc im.status.ethereum";
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "StatusIm-Bridging-Header.h";
|
SWIFT_OBJC_BRIDGING_HEADER = "StatusIm-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 7.3 KiB |
@@ -119,8 +119,6 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>armv7</string>
|
<string>armv7</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UIStatusBarStyle</key>
|
|
||||||
<string>UIStatusBarStyleLightContent</string>
|
|
||||||
<key>UISupportedInterfaceOrientations</key>
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
@@ -123,8 +123,6 @@
|
|||||||
<string>armv7</string>
|
<string>armv7</string>
|
||||||
<string>gamekit</string>
|
<string>gamekit</string>
|
||||||
</array>
|
</array>
|
||||||
<key>UIStatusBarStyle</key>
|
|
||||||
<string>UIStatusBarStyleLightContent</string>
|
|
||||||
<key>UISupportedInterfaceOrientations</key>
|
<key>UISupportedInterfaceOrientations</key>
|
||||||
<array>
|
<array>
|
||||||
<string>UIInterfaceOrientationPortrait</string>
|
<string>UIInterfaceOrientationPortrait</string>
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Lsa-QA-3zn">
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Lsa-QA-3zn">
|
||||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<deployment identifier="iOS"/>
|
<deployment identifier="iOS"/>
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
|
||||||
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
@@ -16,20 +17,14 @@
|
|||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
<subviews>
|
<subviews>
|
||||||
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launch-icon.png" translatesAutoresizingMaskIntoConstraints="NO" id="cqW-9w-FC0">
|
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="launch_image" translatesAutoresizingMaskIntoConstraints="NO" id="cqW-9w-FC0">
|
||||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
<color key="backgroundColor" red="0.035294117647058823" green="0.062745098039215685" blue="0.10980392156862745" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||||
</imageView>
|
</imageView>
|
||||||
</subviews>
|
</subviews>
|
||||||
|
<viewLayoutGuide key="safeArea" id="2aN-f8-qiu"/>
|
||||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||||
<constraints>
|
|
||||||
<constraint firstAttribute="bottom" secondItem="cqW-9w-FC0" secondAttribute="bottom" id="2Ue-hX-Tna"/>
|
|
||||||
<constraint firstAttribute="trailing" secondItem="cqW-9w-FC0" secondAttribute="trailing" id="Sfz-tk-PSg"/>
|
|
||||||
<constraint firstItem="cqW-9w-FC0" firstAttribute="leading" secondItem="0g6-xG-Wkj" secondAttribute="leading" id="UQo-dC-xeN"/>
|
|
||||||
<constraint firstItem="cqW-9w-FC0" firstAttribute="top" secondItem="0g6-xG-Wkj" secondAttribute="top" id="YrE-J2-QHf"/>
|
|
||||||
<constraint firstItem="cqW-9w-FC0" firstAttribute="centerX" secondItem="0g6-xG-Wkj" secondAttribute="centerX" id="ZQS-4G-GAL"/>
|
|
||||||
<constraint firstItem="cqW-9w-FC0" firstAttribute="centerY" secondItem="0g6-xG-Wkj" secondAttribute="centerY" id="noT-Rj-8Uy"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
</view>
|
||||||
</viewController>
|
</viewController>
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="hOp-FG-FML" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
<placeholder placeholderIdentifier="IBFirstResponder" id="hOp-FG-FML" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
@@ -38,7 +33,7 @@
|
|||||||
</scene>
|
</scene>
|
||||||
</scenes>
|
</scenes>
|
||||||
<resources>
|
<resources>
|
||||||
<image name="launch-icon.png" width="84" height="88"/>
|
<image name="launch_image" width="90" height="101"/>
|
||||||
<systemColor name="systemBackgroundColor">
|
<systemColor name="systemBackgroundColor">
|
||||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
</systemColor>
|
</systemColor>
|
||||||
|
|||||||
@@ -479,21 +479,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
"path": "androidx/core/core-splashscreen/1.0.0",
|
|
||||||
"repo": "https://dl.google.com/dl/android/maven2",
|
|
||||||
"files": {
|
|
||||||
"core-splashscreen-1.0.0.pom": {
|
|
||||||
"sha1": "763acf4fa60a08a3c059a4c50d3d54ac34a0cfa2",
|
|
||||||
"sha256": "0arxyx9zlzwlr0h88xmgzlgbjfp3s79pd7mbk3ipfqwkfgbzzmq3"
|
|
||||||
},
|
|
||||||
"core-splashscreen-1.0.0.aar": {
|
|
||||||
"sha1": "6b1eccca966811faafb13f6c2f88351504dc9eae",
|
|
||||||
"sha256": "0wiarwyh5rk7ca54b0i47rs7ix49r2krrvhiqamw8gyaq4yv51iy"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "androidx/core/core/1.0.0",
|
"path": "androidx/core/core/1.0.0",
|
||||||
"repo": "https://dl.google.com/dl/android/maven2",
|
"repo": "https://dl.google.com/dl/android/maven2",
|
||||||
@@ -10587,21 +10572,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21",
|
|
||||||
"repo": "https://repo.maven.apache.org/maven2",
|
|
||||||
"files": {
|
|
||||||
"kotlin-stdlib-common-1.6.21.pom": {
|
|
||||||
"sha1": "747a8ea8a8a4328946cf0252c5ceb2aa0ceb054f",
|
|
||||||
"sha256": "18kbabqzyiv5rzcvxzn28wsk6cxnh7aliiayian2sg7xfgp5dhav"
|
|
||||||
},
|
|
||||||
"kotlin-stdlib-common-1.6.21.jar": {
|
|
||||||
"sha1": "5e5b55c26dbc80372a920aef60eb774b714559b8",
|
|
||||||
"sha256": "0qr34h6pkf6bw6vagc06y78ln6gikj3qq3hrgfai8flzrmcyqfqq"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.7.10",
|
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.7.10",
|
||||||
"repo": "https://repo.maven.apache.org/maven2",
|
"repo": "https://repo.maven.apache.org/maven2",
|
||||||
@@ -11052,21 +11022,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
|
||||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.6.21",
|
|
||||||
"repo": "https://repo.maven.apache.org/maven2",
|
|
||||||
"files": {
|
|
||||||
"kotlin-stdlib-1.6.21.pom": {
|
|
||||||
"sha1": "f44be76009ce4253eaa59b914f4dccc384442016",
|
|
||||||
"sha256": "0d0zmvx7znha69ir50z72n7nzgw4yr6rfzb6mb6kdn0vl1dp4hnf"
|
|
||||||
},
|
|
||||||
"kotlin-stdlib-1.6.21.jar": {
|
|
||||||
"sha1": "11ef67f1900634fd951bad28c53ec957fabbe5b8",
|
|
||||||
"sha256": "14m428q4m7y8srb7z5m0qfq8ic3f62layqwgn9rpacxvf9k5573k"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.7.10",
|
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.7.10",
|
||||||
"repo": "https://repo.maven.apache.org/maven2",
|
"repo": "https://repo.maven.apache.org/maven2",
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ androidx.constraintlayout:constraintlayout:2.0.4
|
|||||||
androidx.coordinatorlayout:coordinatorlayout:1.0.0
|
androidx.coordinatorlayout:coordinatorlayout:1.0.0
|
||||||
androidx.coordinatorlayout:coordinatorlayout:1.1.0
|
androidx.coordinatorlayout:coordinatorlayout:1.1.0
|
||||||
androidx.core:core-ktx:1.6.0
|
androidx.core:core-ktx:1.6.0
|
||||||
androidx.core:core-splashscreen:1.0.0
|
|
||||||
androidx.core:core:1.0.1
|
androidx.core:core:1.0.1
|
||||||
androidx.core:core:1.1.0
|
androidx.core:core:1.1.0
|
||||||
androidx.core:core:1.6.0
|
androidx.core:core:1.6.0
|
||||||
@@ -518,7 +517,6 @@ org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50
|
|||||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.31
|
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.31
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.10
|
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.10
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30
|
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21
|
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.20
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.20
|
||||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50
|
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50
|
||||||
@@ -538,7 +536,6 @@ org.jetbrains.kotlin:kotlin-stdlib:1.3.50
|
|||||||
org.jetbrains.kotlin:kotlin-stdlib:1.4.31
|
org.jetbrains.kotlin:kotlin-stdlib:1.4.31
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:1.5.10
|
org.jetbrains.kotlin:kotlin-stdlib:1.5.10
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:1.5.30
|
org.jetbrains.kotlin:kotlin-stdlib:1.5.30
|
||||||
org.jetbrains.kotlin:kotlin-stdlib:1.6.21
|
|
||||||
org.jetbrains.kotlin:kotlin-util-io:1.3.50
|
org.jetbrains.kotlin:kotlin-util-io:1.3.50
|
||||||
org.jetbrains.kotlin:kotlin-util-io:1.4.31
|
org.jetbrains.kotlin:kotlin-util-io:1.4.31
|
||||||
org.jetbrains.kotlin:kotlin-util-klib:1.4.31
|
org.jetbrains.kotlin:kotlin-util-klib:1.4.31
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ https://dl.google.com/dl/android/maven2/androidx/constraintlayout/constraintlayo
|
|||||||
https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.0.0/coordinatorlayout-1.0.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.0.0/coordinatorlayout-1.0.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.1.0/coordinatorlayout-1.1.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.1.0/coordinatorlayout-1.1.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.6.0/core-ktx-1.6.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.6.0/core-ktx-1.6.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/core/core-splashscreen/1.0.0/core-splashscreen-1.0.0.pom
|
|
||||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.0/core-1.0.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.0/core-1.0.0.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.1/core-1.0.1.pom
|
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.1/core-1.0.1.pom
|
||||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.1.0/core-1.1.0.pom
|
https://dl.google.com/dl/android/maven2/androidx/core/core/1.1.0/core-1.1.0.pom
|
||||||
@@ -734,7 +733,6 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1
|
|||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.10/kotlin-stdlib-common-1.5.10.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.10/kotlin-stdlib-common-1.5.10.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.30/kotlin-stdlib-common-1.5.30.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.30/kotlin-stdlib-common-1.5.30.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.20/kotlin-stdlib-common-1.6.20.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.20/kotlin-stdlib-common-1.6.20.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom
|
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.10/kotlin-stdlib-common-1.7.10.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.10/kotlin-stdlib-common-1.7.10.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.0/kotlin-stdlib-common-1.8.0.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.0/kotlin-stdlib-common-1.8.0.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71.pom
|
||||||
@@ -765,7 +763,6 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.31/k
|
|||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.10/kotlin-stdlib-1.5.10.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.10/kotlin-stdlib-1.5.10.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.30/kotlin-stdlib-1.5.30.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.30/kotlin-stdlib-1.5.30.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.20/kotlin-stdlib-1.6.20.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.20/kotlin-stdlib-1.6.20.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.6.21/kotlin-stdlib-1.6.21.pom
|
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.10/kotlin-stdlib-1.7.10.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.7.10/kotlin-stdlib-1.7.10.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.0/kotlin-stdlib-1.8.0.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.0/kotlin-stdlib-1.8.0.pom
|
||||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.3.50/kotlin-util-io-1.3.50.pom
|
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.3.50/kotlin-util-io-1.3.50.pom
|
||||||
|
|||||||
@@ -11,10 +11,10 @@ let
|
|||||||
# We follow the master branch of official nixpkgs.
|
# We follow the master branch of official nixpkgs.
|
||||||
nixpkgsSrc = fetchFromGitHub {
|
nixpkgsSrc = fetchFromGitHub {
|
||||||
name = "nixpkgs-source";
|
name = "nixpkgs-source";
|
||||||
owner = "status-im"; # FIXME: Fork used to get Cocoapods 1.12.0.
|
owner = "NixOS";
|
||||||
repo = "nixpkgs";
|
repo = "nixpkgs";
|
||||||
rev = "b9b2ed705edc00003d47625950602136be3e1ed5";
|
rev = "579238da5f431b7833a9f0681663900aaf0dd1e8";
|
||||||
sha256 = "sha256-F0qOawdKx7kgiGqwVikYIawL2taJ1XfcgHy0Wn0mho8=";
|
sha256 = "sha256-cDwASlAf/h0fsHtDm9yNBHEHK0uq6do+mIUEgh1i5yg=";
|
||||||
# To get the compressed Nix sha256, use:
|
# To get the compressed Nix sha256, use:
|
||||||
# nix-prefetch-url --unpack https://github.com/${ORG}/nixpkgs/archive/${REV}.tar.gz
|
# nix-prefetch-url --unpack https://github.com/${ORG}/nixpkgs/archive/${REV}.tar.gz
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,21 +11,10 @@
|
|||||||
(defn divider-label
|
(defn divider-label
|
||||||
"label -> string
|
"label -> string
|
||||||
chevron-position -> :left, :right
|
chevron-position -> :left, :right
|
||||||
chevron-icon -> keyword
|
|
||||||
on-press -> function
|
|
||||||
padding-bottom -> number
|
|
||||||
counter-value -> number
|
counter-value -> number
|
||||||
increase-padding-top? -> boolean
|
increase-padding-top? -> boolean
|
||||||
blur? -> boolean"
|
blur? -> boolean"
|
||||||
[{:keys [label
|
[{:keys [label chevron-position counter-value increase-padding-top? blur? container-style]}]
|
||||||
chevron-position
|
|
||||||
chevron-icon
|
|
||||||
counter-value
|
|
||||||
increase-padding-top?
|
|
||||||
padding-bottom
|
|
||||||
blur?
|
|
||||||
container-style
|
|
||||||
on-press]}]
|
|
||||||
(let [dark? (colors/dark?)
|
(let [dark? (colors/dark?)
|
||||||
border-and-counter-bg-color (if dark?
|
border-and-counter-bg-color (if dark?
|
||||||
(if blur? colors/white-opa-5 colors/neutral-70)
|
(if blur? colors/white-opa-5 colors/neutral-70)
|
||||||
@@ -33,53 +22,50 @@
|
|||||||
padding-top (if increase-padding-top? 16 8)
|
padding-top (if increase-padding-top? 16 8)
|
||||||
text-and-icon-color (if dark? colors/neutral-40 colors/neutral-50)
|
text-and-icon-color (if dark? colors/neutral-40 colors/neutral-50)
|
||||||
counter-text-color (if dark? colors/white colors/neutral-100)]
|
counter-text-color (if dark? colors/white colors/neutral-100)]
|
||||||
[rn/touchable-without-feedback
|
[rn/view
|
||||||
{:on-press on-press}
|
{:accessible true
|
||||||
[rn/view
|
:accessibility-label :divider-label
|
||||||
{:accessible true
|
:style (merge {:border-top-width 1
|
||||||
:accessibility-label :divider-label
|
:border-top-color border-and-counter-bg-color
|
||||||
:style (merge {:border-top-width 1
|
:padding-top padding-top
|
||||||
:border-top-color border-and-counter-bg-color
|
:padding-horizontal 16
|
||||||
:padding-top padding-top
|
:align-items :center
|
||||||
:padding-bottom padding-bottom
|
:flex-direction :row}
|
||||||
:padding-horizontal 16
|
container-style)}
|
||||||
:align-items :center
|
(when (= chevron-position :left)
|
||||||
:flex-direction :row}
|
[rn/view
|
||||||
container-style)}
|
{:test-ID :divider-label-icon-left
|
||||||
(when (= chevron-position :left)
|
:style {:margin-right 4}}
|
||||||
[rn/view
|
[icons/icon
|
||||||
{:test-ID :divider-label-icon-left
|
:main-icons/chevron-down
|
||||||
:style {:margin-right 4}}
|
{:color text-and-icon-color
|
||||||
[icons/icon
|
:width chevron-icon-container-width
|
||||||
(or chevron-icon :i/chevron-down)
|
:height chevron-icon-container-height}]])
|
||||||
{:color text-and-icon-color
|
[markdown.text/text
|
||||||
:width chevron-icon-container-width
|
{:size :paragraph-2
|
||||||
:height chevron-icon-container-height}]])
|
:weight :medium
|
||||||
[markdown.text/text
|
:style {:color text-and-icon-color
|
||||||
{:size :paragraph-2
|
:flex 1}}
|
||||||
:weight :medium
|
label]
|
||||||
:style {:color text-and-icon-color
|
(when (= chevron-position :right)
|
||||||
:flex 1}}
|
[rn/view {:test-ID :divider-label-icon-right}
|
||||||
label]
|
[icons/icon
|
||||||
(when (= chevron-position :right)
|
:main-icons/chevron-down
|
||||||
[rn/view {:test-ID :divider-label-icon-right}
|
{:color text-and-icon-color
|
||||||
[icons/icon
|
:size chevron-icon-container-width}]])
|
||||||
(or chevron-icon :i/chevron-down)
|
(when (pos? counter-value)
|
||||||
{:color text-and-icon-color
|
[rn/view
|
||||||
:size chevron-icon-container-width}]])
|
{:style {:border-radius 6
|
||||||
(when (pos? counter-value)
|
:height 16
|
||||||
[rn/view
|
:width (case (count counter-value)
|
||||||
{:style {:border-radius 6
|
1 16
|
||||||
:height 16
|
2 20
|
||||||
:width (case (count counter-value)
|
28)
|
||||||
1 16
|
:background-color border-and-counter-bg-color
|
||||||
2 20
|
:align-items :center
|
||||||
28)
|
:justify-content :center}}
|
||||||
:background-color border-and-counter-bg-color
|
[markdown.text/text
|
||||||
:align-items :center
|
{:size :label
|
||||||
:justify-content :center}}
|
:weight :medium
|
||||||
[markdown.text/text
|
:style {:color counter-text-color}}
|
||||||
{:size :label
|
counter-value]])]))
|
||||||
:weight :medium
|
|
||||||
:style {:color counter-text-color}}
|
|
||||||
counter-value]])]]))
|
|
||||||
|
|||||||
@@ -2,63 +2,82 @@
|
|||||||
(:require [quo2.components.markdown.text :as text]
|
(:require [quo2.components.markdown.text :as text]
|
||||||
[quo2.foundations.colors :as colors]))
|
[quo2.foundations.colors :as colors]))
|
||||||
|
|
||||||
(defn variants-colors
|
(def variants-colors
|
||||||
[blur? override-theme]
|
"Colors that keep the same across input's status change"
|
||||||
(if blur?
|
{:light {:label colors/neutral-50
|
||||||
{:label (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-40 override-theme)
|
:icon colors/neutral-50
|
||||||
:icon (colors/theme-colors colors/neutral-80-opa-70 colors/white-opa-70 override-theme)
|
:cursor (colors/custom-color :blue 50)
|
||||||
:button-border (colors/theme-colors colors/neutral-80-opa-30 colors/white-opa-10 override-theme)
|
:button-border colors/neutral-30
|
||||||
:password-icon (colors/theme-colors colors/neutral-100 colors/white override-theme)
|
:clear-icon colors/neutral-40
|
||||||
:clear-icon (colors/theme-colors colors/neutral-80-opa-30 colors/white-opa-10 override-theme)
|
:password-icon colors/neutral-50}
|
||||||
:cursor (colors/theme-colors (colors/custom-color :blue 50)
|
:light-blur {:label colors/neutral-80-opa-40
|
||||||
colors/white
|
:icon colors/neutral-80-opa-70
|
||||||
override-theme)}
|
:cursor (colors/custom-color :blue 50)
|
||||||
{:label (colors/theme-colors colors/neutral-50 colors/neutral-40 override-theme)
|
:button-border colors/neutral-80-opa-30
|
||||||
:icon (colors/theme-colors colors/neutral-50 colors/neutral-40 override-theme)
|
:password-icon colors/neutral-100
|
||||||
:button-border (colors/theme-colors colors/neutral-30 colors/neutral-70 override-theme)
|
:clear-icon colors/neutral-80-opa-30}
|
||||||
:clear-icon (colors/theme-colors colors/neutral-40 colors/neutral-60 override-theme)
|
:dark {:label colors/neutral-40
|
||||||
:password-icon (colors/theme-colors colors/neutral-50 colors/white override-theme)
|
:icon colors/neutral-40
|
||||||
:cursor (colors/theme-colors (colors/custom-color :blue 50)
|
:cursor (colors/custom-color :blue 60)
|
||||||
(colors/custom-color :blue 60)
|
:button-border colors/neutral-70
|
||||||
override-theme)}))
|
:password-icon colors/white
|
||||||
|
:clear-icon colors/neutral-60}
|
||||||
|
:dark-blur {:label colors/white-opa-40
|
||||||
|
:icon colors/white-opa-70
|
||||||
|
:cursor colors/white
|
||||||
|
:button-border colors/white-opa-10
|
||||||
|
:password-icon colors/white
|
||||||
|
:clear-icon colors/white-opa-10}})
|
||||||
|
|
||||||
(defn status-colors
|
(def status-colors
|
||||||
[status blur? override-theme]
|
{:light {:default {:border-color colors/neutral-20
|
||||||
(if blur?
|
:placeholder colors/neutral-40
|
||||||
(case status
|
:text colors/neutral-100}
|
||||||
:focus
|
:focus {:border-color colors/neutral-40
|
||||||
{:border-color (colors/theme-colors colors/neutral-80-opa-20 colors/white-opa-40 override-theme)
|
:placeholder colors/neutral-30
|
||||||
:placeholder (colors/theme-colors colors/neutral-80-opa-20 colors/white-opa-20 override-theme)
|
:text colors/neutral-100}
|
||||||
:text (colors/theme-colors colors/neutral-100 colors/white override-theme)}
|
:error {:border-color colors/danger-opa-40
|
||||||
:error
|
:placeholder colors/neutral-40
|
||||||
{:border-color (colors/theme-colors colors/danger-opa-40 colors/danger-opa-40 override-theme)
|
:text colors/neutral-100}
|
||||||
:placeholder (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-40 override-theme)
|
:disabled {:border-color colors/neutral-20
|
||||||
:text (colors/theme-colors colors/neutral-100 colors/white override-theme)}
|
:placeholder colors/neutral-40
|
||||||
:disabled
|
:text colors/neutral-40}}
|
||||||
{:border-color (colors/theme-colors colors/neutral-80-opa-10 colors/white-opa-10 override-theme)
|
:light-blur {:default {:border-color colors/neutral-80-opa-10
|
||||||
:placeholder (colors/theme-colors colors/neutral-80-opa-30 colors/white-opa-20 override-theme)
|
:placeholder colors/neutral-80-opa-40
|
||||||
:text (colors/theme-colors colors/neutral-80-opa-30 colors/white-opa-20 override-theme)}
|
:text colors/neutral-100}
|
||||||
;; :default
|
:focus {:border-color colors/neutral-80-opa-20
|
||||||
{:border-color (colors/theme-colors colors/neutral-80-opa-10 colors/white-opa-10 override-theme)
|
:placeholder colors/neutral-80-opa-20
|
||||||
:placeholder (colors/theme-colors colors/neutral-80-opa-40 colors/white-opa-40 override-theme)
|
:text colors/neutral-100}
|
||||||
:text (colors/theme-colors colors/neutral-100 colors/white override-theme)})
|
:error {:border-color colors/danger-opa-40
|
||||||
(case status
|
:placeholder colors/neutral-80-opa-40
|
||||||
:focus
|
:text colors/neutral-100}
|
||||||
{:border-color (colors/theme-colors colors/neutral-40 colors/neutral-60 override-theme)
|
:disabled {:border-color colors/neutral-80-opa-10
|
||||||
:placeholder (colors/theme-colors colors/neutral-30 colors/neutral-60 override-theme)
|
:placeholder colors/neutral-80-opa-30
|
||||||
:text (colors/theme-colors colors/neutral-100 colors/white override-theme)}
|
:text colors/neutral-80-opa-30}}
|
||||||
:error
|
:dark {:default {:border-color colors/neutral-80
|
||||||
{:border-color (colors/theme-colors colors/danger-opa-40 colors/danger-opa-40 override-theme)
|
:placeholder colors/neutral-50
|
||||||
:placeholder (colors/theme-colors colors/neutral-40 colors/white-opa-40 override-theme)
|
:text colors/white}
|
||||||
:text (colors/theme-colors colors/neutral-100 colors/white override-theme)}
|
:focus {:border-color colors/neutral-60
|
||||||
:disabled
|
:placeholder colors/neutral-60
|
||||||
{:border-color (colors/theme-colors colors/neutral-20 colors/neutral-80 override-theme)
|
:text colors/white}
|
||||||
:placeholder (colors/theme-colors colors/neutral-40 colors/neutral-40 override-theme)
|
:error {:border-color colors/danger-opa-40
|
||||||
:text (colors/theme-colors colors/neutral-40 colors/neutral-40 override-theme)}
|
:placeholder colors/white-opa-40
|
||||||
;; :default
|
:text colors/white}
|
||||||
{:border-color (colors/theme-colors colors/neutral-20 colors/neutral-80 override-theme)
|
:disabled {:border-color colors/neutral-80
|
||||||
:placeholder (colors/theme-colors colors/neutral-40 colors/neutral-50 override-theme)
|
:placeholder colors/neutral-40
|
||||||
:text (colors/theme-colors colors/neutral-100 colors/white override-theme)})))
|
:text colors/neutral-40}}
|
||||||
|
:dark-blur {:default {:border-color colors/white-opa-10
|
||||||
|
:placeholder colors/white-opa-40
|
||||||
|
:text colors/white}
|
||||||
|
:focus {:border-color colors/white-opa-40
|
||||||
|
:placeholder colors/white-opa-20
|
||||||
|
:text colors/white}
|
||||||
|
:error {:border-color colors/danger-opa-40
|
||||||
|
:placeholder colors/white-opa-40
|
||||||
|
:text colors/white}
|
||||||
|
:disabled {:border-color colors/white-opa-10
|
||||||
|
:placeholder colors/white-opa-20
|
||||||
|
:text colors/white-opa-20}}})
|
||||||
|
|
||||||
(defn input-container
|
(defn input-container
|
||||||
[colors-by-status small? disabled?]
|
[colors-by-status small? disabled?]
|
||||||
@@ -71,10 +90,11 @@
|
|||||||
|
|
||||||
(defn left-icon-container
|
(defn left-icon-container
|
||||||
[small?]
|
[small?]
|
||||||
{:margin-left (if small? 0 4)
|
{:margin-left (if small? 0 4)
|
||||||
:margin-top (if small? 5 9)
|
:margin-right (if small? 4 8)
|
||||||
:height 20
|
:margin-top (if small? 5 9)
|
||||||
:width 20})
|
:height 20
|
||||||
|
:width 20})
|
||||||
|
|
||||||
(defn icon
|
(defn icon
|
||||||
[colors-by-variant]
|
[colors-by-variant]
|
||||||
@@ -86,8 +106,7 @@
|
|||||||
(merge (text/text-style {:size :paragraph-1 :weight :regular})
|
(merge (text/text-style {:size :paragraph-1 :weight :regular})
|
||||||
{:flex 1
|
{:flex 1
|
||||||
:text-align-vertical :top
|
:text-align-vertical :top
|
||||||
:padding-right 0
|
:padding-horizontal 0
|
||||||
:padding-left (if small? 4 8)
|
|
||||||
:padding-vertical (if small? 4 8)
|
:padding-vertical (if small? 4 8)
|
||||||
:color (:text colors-by-status)}
|
:color (:text colors-by-status)}
|
||||||
(when-not multiple-lines?
|
(when-not multiple-lines?
|
||||||
|
|||||||
@@ -24,31 +24,31 @@
|
|||||||
count-text]]]))
|
count-text]]]))
|
||||||
|
|
||||||
(defn- left-accessory
|
(defn- left-accessory
|
||||||
[{:keys [variant-colors small? icon-name]}]
|
[{:keys [variant-colors small icon-name]}]
|
||||||
[rn/view {:style (style/left-icon-container small?)}
|
[rn/view {:style (style/left-icon-container small)}
|
||||||
[icon/icon icon-name (style/icon variant-colors)]])
|
[icon/icon icon-name (style/icon variant-colors)]])
|
||||||
|
|
||||||
(defn- right-accessory
|
(defn- right-accessory
|
||||||
[{:keys [variant-colors small? disabled? on-press icon-style-fn icon-name]}]
|
[{:keys [variant-colors small disabled on-press icon-style-fn icon-name]}]
|
||||||
[rn/touchable-opacity
|
[rn/touchable-opacity
|
||||||
{:style (style/right-icon-touchable-area small?)
|
{:style (style/right-icon-touchable-area small)
|
||||||
:disabled disabled?
|
:disabled disabled
|
||||||
:on-press on-press}
|
:on-press on-press}
|
||||||
[icon/icon icon-name (icon-style-fn variant-colors)]])
|
[icon/icon icon-name (icon-style-fn variant-colors)]])
|
||||||
|
|
||||||
(defn- right-button
|
(defn- right-button
|
||||||
[{:keys [variant-colors colors-by-status small? disabled? on-press text]}]
|
[{:keys [variant-colors colors-by-status small disabled on-press text]}]
|
||||||
[rn/touchable-opacity
|
[rn/touchable-opacity
|
||||||
{:style (style/button variant-colors small?)
|
{:style (style/button variant-colors small)
|
||||||
:disabled disabled?
|
:disabled disabled
|
||||||
:on-press on-press}
|
:on-press on-press}
|
||||||
[rn/text {:style (style/button-text colors-by-status)}
|
[rn/text {:style (style/button-text colors-by-status)}
|
||||||
text]])
|
text]])
|
||||||
|
|
||||||
(def ^:private custom-props
|
(def ^:private custom-props
|
||||||
"Custom properties that must be removed from properties map passed to InputText."
|
"Custom properties that must be removed from properties map passed to InputText."
|
||||||
[:type :blur? :override-theme :error? :right-icon :left-icon :disabled? :small? :button
|
[:type :variant :error :right-icon :left-icon :disabled :small :button :label
|
||||||
:label :char-limit :on-char-limit-reach :icon-name :multiline?])
|
:char-limit :on-char-limit-reach :icon-name])
|
||||||
|
|
||||||
(defn- base-input
|
(defn- base-input
|
||||||
[{:keys [on-change-text on-char-limit-reach]}]
|
[{:keys [on-change-text on-char-limit-reach]}]
|
||||||
@@ -67,15 +67,16 @@
|
|||||||
(reset! char-count amount-chars)
|
(reset! char-count amount-chars)
|
||||||
(when (>= amount-chars char-limit)
|
(when (>= amount-chars char-limit)
|
||||||
(on-char-limit-reach amount-chars))))]
|
(on-char-limit-reach amount-chars))))]
|
||||||
(fn [{:keys [blur? override-theme error? right-icon left-icon disabled? small? button
|
(fn [{:keys [variant error right-icon left-icon disabled small button label char-limit
|
||||||
label char-limit multiline? clearable?]
|
multiline clearable]
|
||||||
|
:or {variant :light}
|
||||||
:as props}]
|
:as props}]
|
||||||
(let [status-kw (cond
|
(let [status-path (cond
|
||||||
disabled? :disabled
|
disabled :disabled
|
||||||
error? :error
|
error :error
|
||||||
:else @status)
|
:else @status)
|
||||||
colors-by-status (style/status-colors status-kw blur? override-theme)
|
colors-by-status (get-in style/status-colors [variant status-path])
|
||||||
variant-colors (style/variants-colors blur? override-theme)
|
variant-colors (style/variants-colors variant)
|
||||||
clean-props (apply dissoc props custom-props)]
|
clean-props (apply dissoc props custom-props)]
|
||||||
[rn/view
|
[rn/view
|
||||||
(when (or label char-limit)
|
(when (or label char-limit)
|
||||||
@@ -84,39 +85,38 @@
|
|||||||
:label label
|
:label label
|
||||||
:current-chars @char-count
|
:current-chars @char-count
|
||||||
:char-limit char-limit}])
|
:char-limit char-limit}])
|
||||||
[rn/view {:style (style/input-container colors-by-status small? disabled?)}
|
[rn/view {:style (style/input-container colors-by-status small disabled)}
|
||||||
(when-let [{:keys [icon-name]} left-icon]
|
(when-let [{:keys [icon-name]} left-icon]
|
||||||
[left-accessory
|
[left-accessory
|
||||||
{:variant-colors variant-colors
|
{:variant-colors variant-colors
|
||||||
:small? small?
|
:small small
|
||||||
:icon-name icon-name}])
|
:icon-name icon-name}])
|
||||||
[rn/text-input
|
[rn/text-input
|
||||||
(cond-> {:style (style/input colors-by-status small? @multiple-lines?)
|
(cond-> {:style (style/input colors-by-status small @multiple-lines?)
|
||||||
:placeholder-text-color (:placeholder colors-by-status)
|
:placeholder-text-color (:placeholder colors-by-status)
|
||||||
:cursor-color (:cursor variant-colors)
|
:cursor-color (:cursor variant-colors)
|
||||||
:editable (not disabled?)
|
:editable (not disabled)
|
||||||
:on-focus on-focus
|
:on-focus on-focus
|
||||||
:on-blur on-blur}
|
:on-blur on-blur}
|
||||||
:always (merge clean-props)
|
:always (merge clean-props)
|
||||||
multiline? (assoc :multiline true
|
multiline (assoc :on-content-size-change set-multiple-lines!)
|
||||||
:on-content-size-change set-multiple-lines!)
|
char-limit (assoc :on-change-text #(update-char-limit! char-limit %)))]
|
||||||
char-limit (assoc :on-change-text #(update-char-limit! % char-limit)))]
|
|
||||||
(when-let [{:keys [on-press icon-name style-fn]} right-icon]
|
(when-let [{:keys [on-press icon-name style-fn]} right-icon]
|
||||||
[right-accessory
|
[right-accessory
|
||||||
{:variant-colors variant-colors
|
{:variant-colors variant-colors
|
||||||
:small? small?
|
:small small
|
||||||
:disabled? disabled?
|
:disabled disabled
|
||||||
:icon-style-fn style-fn
|
:icon-style-fn style-fn
|
||||||
:icon-name icon-name
|
:icon-name icon-name
|
||||||
:on-press (fn []
|
:on-press (fn []
|
||||||
(when clearable? (reset! char-count 0))
|
(when clearable (reset! char-count 0))
|
||||||
(on-press))}])
|
(on-press))}])
|
||||||
(when-let [{:keys [on-press text]} button]
|
(when-let [{:keys [on-press text]} button]
|
||||||
[right-button
|
[right-button
|
||||||
{:colors-by-status colors-by-status
|
{:colors-by-status colors-by-status
|
||||||
:variant-colors variant-colors
|
:variant-colors variant-colors
|
||||||
:small? small?
|
:small small
|
||||||
:disabled? disabled?
|
:disabled disabled
|
||||||
:on-press on-press
|
:on-press on-press
|
||||||
:text text}])]]))))
|
:text text}])]]))))
|
||||||
|
|
||||||
@@ -136,14 +136,13 @@
|
|||||||
(defn input
|
(defn input
|
||||||
"This input supports the following properties:
|
"This input supports the following properties:
|
||||||
- :type - Can be `:text`(default) or `:password`.
|
- :type - Can be `:text`(default) or `:password`.
|
||||||
- :blur? - Boolean to set the blur color variant.
|
- :variant - :light(default), :light-blur, :dark or :dark-blur.
|
||||||
- :override-theme - Can be `light` or `:dark`.
|
- :small - Boolean to specify if this input is rendered in its small version.
|
||||||
- :small? - Boolean to specify if this input is rendered in its small version.
|
- :multiline - Boolean to specify if this input support multiple lines.
|
||||||
- :multiline? - Boolean to specify if this input support multiple lines.
|
|
||||||
- :icon-name - The name of an icon to display at the left of the input.
|
- :icon-name - The name of an icon to display at the left of the input.
|
||||||
- :error? - Boolean to specify it this input marks an error.
|
- :error - Boolean to specify it this input marks an error.
|
||||||
- :disabled? - Boolean to specify if this input is disabled or not.
|
- :disabled - Boolean to specify if this input is disabled or not.
|
||||||
- :clearable? - Booolean to specify if this input has a clear button at the end.
|
- :clearable - Booolean to specify if this input has a clear button at the end.
|
||||||
- :on-clear - Function executed when the clear button is pressed.
|
- :on-clear - Function executed when the clear button is pressed.
|
||||||
- :button - Map containing `:on-press` & `:text` keys, if provided renders a button
|
- :button - Map containing `:on-press` & `:text` keys, if provided renders a button
|
||||||
- :label - A label for this input.
|
- :label - A label for this input.
|
||||||
@@ -156,12 +155,12 @@
|
|||||||
- :on-change-text
|
- :on-change-text
|
||||||
...
|
...
|
||||||
"
|
"
|
||||||
[{:keys [type clearable? on-clear on-change-text icon-name]
|
[{:keys [type clearable on-clear on-change-text icon-name]
|
||||||
:or {type :text}
|
:or {type :text}
|
||||||
:as props}]
|
:as props}]
|
||||||
(let [base-props (cond-> props
|
(let [base-props (cond-> props
|
||||||
icon-name (assoc-in [:left-icon :icon-name] icon-name)
|
icon-name (assoc-in [:left-icon :icon-name] icon-name)
|
||||||
clearable? (assoc :right-icon
|
clearable (assoc :right-icon
|
||||||
{:style-fn style/clear-icon
|
{:style-fn style/clear-icon
|
||||||
:icon-name :i/clear
|
:icon-name :i/clear
|
||||||
:on-press #(when on-clear (on-clear))})
|
:on-press #(when on-clear (on-clear))})
|
||||||
|
|||||||
@@ -49,8 +49,8 @@
|
|||||||
|
|
||||||
(defn small-option-card
|
(defn small-option-card
|
||||||
"Variants: `:main` or `:icon`"
|
"Variants: `:main` or `:icon`"
|
||||||
[{:keys [variant title subtitle image max-height on-press accessibility-label]
|
[{:keys [variant title subtitle image max-height on-press]
|
||||||
:or {variant :main accessibility-label :small-option-card}}]
|
:or {variant :main}}]
|
||||||
(let [main-variant? (= variant :main)
|
(let [main-variant? (= variant :main)
|
||||||
card-component (if main-variant? main-variant icon-variant)
|
card-component (if main-variant? main-variant icon-variant)
|
||||||
card-height (cond
|
card-height (cond
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
:else style/main-variant-height)]
|
:else style/main-variant-height)]
|
||||||
[rn/view
|
[rn/view
|
||||||
[rn/touchable-highlight
|
[rn/touchable-highlight
|
||||||
{:accessibility-label accessibility-label
|
{:accessibility-label :small-option-card
|
||||||
:style style/touchable-overlay
|
:style style/touchable-overlay
|
||||||
:active-opacity 1
|
:active-opacity 1
|
||||||
:underlay-color colors/white-opa-5
|
:underlay-color colors/white-opa-5
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
(ns status-im.chat.models.loading
|
(ns status-im.chat.models.loading
|
||||||
(:require [re-frame.core :as re-frame]
|
(:require [re-frame.core :as re-frame]
|
||||||
|
[status-im2.contexts.chat.messages.list.events :as message-list]
|
||||||
|
[status-im2.constants :as constants]
|
||||||
[status-im.data-store.chats :as data-store.chats]
|
[status-im.data-store.chats :as data-store.chats]
|
||||||
[status-im.data-store.messages :as data-store.messages]
|
[status-im.data-store.messages :as data-store.messages]
|
||||||
[status-im2.constants :as constants]
|
|
||||||
[status-im2.contexts.chat.messages.list.events :as message-list]
|
|
||||||
[taoensso.timbre :as log]
|
[taoensso.timbre :as log]
|
||||||
[utils.re-frame :as rf]))
|
[utils.re-frame :as rf]))
|
||||||
|
|
||||||
@@ -100,6 +100,17 @@
|
|||||||
:on-success #(re-frame/dispatch
|
:on-success #(re-frame/dispatch
|
||||||
[::mark-all-read-in-community-successful %])}]}))
|
[::mark-all-read-in-community-successful %])}]}))
|
||||||
|
|
||||||
|
;; For example, when a user receives a list of 4 image messages while inside the chat screen we
|
||||||
|
;; shouldn't group the images into albums. When the user exists the chat screen then enters the
|
||||||
|
;; chat screen again, we now need to group the images into albums (like WhatsApp). The albumize?
|
||||||
|
;; boolean is used to know whether we need to group these images into albums now or not. The
|
||||||
|
;; album-id can't be used for this because it will always be there.
|
||||||
|
(defn mark-album
|
||||||
|
[message]
|
||||||
|
(if (:album-id message)
|
||||||
|
(assoc message :albumize? true)
|
||||||
|
message))
|
||||||
|
|
||||||
(rf/defn messages-loaded
|
(rf/defn messages-loaded
|
||||||
"Loads more messages for current chat"
|
"Loads more messages for current chat"
|
||||||
{:events [::messages-loaded]}
|
{:events [::messages-loaded]}
|
||||||
@@ -113,25 +124,15 @@
|
|||||||
(reduce (fn [{:keys [all-messages] :as acc}
|
(reduce (fn [{:keys [all-messages] :as acc}
|
||||||
{:keys [message-id from]
|
{:keys [message-id from]
|
||||||
:as message}]
|
:as message}]
|
||||||
(let [message
|
(cond-> acc
|
||||||
;; For example, when a user receives a list of 4 image messages while inside
|
(not (get-in db [:chats chat-id :users from]))
|
||||||
;; the chat screen we shouldn't group the images into albums. When the user
|
(update :senders assoc from message)
|
||||||
;; exists the chat screen then enters the chat screen again, we now need to
|
|
||||||
;; group the images into albums (like WhatsApp). The albumize? boolean is used
|
|
||||||
;; to know whether we need to group these images into albums now or not. The
|
|
||||||
;; album-id can't be used for this because it will always be there.
|
|
||||||
(if (and (:album-id message) (nil? (get all-messages message-id)))
|
|
||||||
(assoc message :albumize? true)
|
|
||||||
message)]
|
|
||||||
(cond-> acc
|
|
||||||
(not (get-in db [:chats chat-id :users from]))
|
|
||||||
(update :senders assoc from message)
|
|
||||||
|
|
||||||
(nil? (get all-messages message-id))
|
(nil? (get all-messages message-id))
|
||||||
(update :new-messages conj message)
|
(update :new-messages conj message)
|
||||||
|
|
||||||
:always
|
:always
|
||||||
(update :all-messages assoc message-id message))))
|
(update :all-messages assoc message-id message)))
|
||||||
{:all-messages already-loaded-messages
|
{:all-messages already-loaded-messages
|
||||||
:senders {}
|
:senders {}
|
||||||
:contacts {}
|
:contacts {}
|
||||||
@@ -140,7 +141,8 @@
|
|||||||
current-clock-value (get-in db
|
current-clock-value (get-in db
|
||||||
[:pagination-info chat-id
|
[:pagination-info chat-id
|
||||||
:cursor-clock-value])
|
:cursor-clock-value])
|
||||||
clock-value (when cursor (cursor->clock-value cursor))]
|
clock-value (when cursor (cursor->clock-value cursor))
|
||||||
|
new-messages (map mark-album new-messages)]
|
||||||
{:db (-> db
|
{:db (-> db
|
||||||
(update-in [:pagination-info chat-id :cursor-clock-value]
|
(update-in [:pagination-info chat-id :cursor-clock-value]
|
||||||
#(if (and (seq cursor) (or (not %) (< clock-value %)))
|
#(if (and (seq cursor) (or (not %) (< clock-value %)))
|
||||||
|
|||||||
@@ -678,6 +678,12 @@
|
|||||||
community-id
|
community-id
|
||||||
request-id)}]})
|
request-id)}]})
|
||||||
|
|
||||||
|
(rf/defn switch-communities-enabled
|
||||||
|
{:events [:multiaccounts.ui/switch-communities-enabled]}
|
||||||
|
[{:keys [db]} enabled?]
|
||||||
|
{::async-storage/set! {:communities-enabled? enabled?}
|
||||||
|
:db (assoc db :communities/enabled? enabled?)})
|
||||||
|
|
||||||
(rf/defn create-category
|
(rf/defn create-category
|
||||||
{:events [::create-category-confirmation-pressed]}
|
{:events [::create-category-confirmation-pressed]}
|
||||||
[_ community-id category-title chat-ids]
|
[_ community-id category-title chat-ids]
|
||||||
@@ -854,47 +860,3 @@
|
|||||||
:community-id community-id
|
:community-id community-id
|
||||||
:public-key public-key
|
:public-key public-key
|
||||||
:role-id role-id})]})
|
:role-id role-id})]})
|
||||||
|
|
||||||
(rf/defn fetched-collapsed-community-categories
|
|
||||||
{:events [:communities/fetched-collapsed-categories-success]}
|
|
||||||
[{:keys [db]} categories]
|
|
||||||
{:db (assoc db
|
|
||||||
:communities/collapsed-categories
|
|
||||||
(reduce
|
|
||||||
(fn [acc {:keys [communityId categoryId]}]
|
|
||||||
(assoc-in acc [communityId categoryId] true))
|
|
||||||
{}
|
|
||||||
categories))})
|
|
||||||
|
|
||||||
(rf/defn fetch-collapsed-community-categories
|
|
||||||
[_]
|
|
||||||
{:json-rpc/call [{:method "wakuext_collapsedCommunityCategories"
|
|
||||||
:params []
|
|
||||||
:on-success #(re-frame/dispatch
|
|
||||||
[:communities/fetched-collapsed-categories-success %])
|
|
||||||
:on-error #(log/error "failed to fetch collapsed community categories"
|
|
||||||
{:error :%})}]})
|
|
||||||
|
|
||||||
(rf/defn toggled-collapsed-category
|
|
||||||
{:events [:communities/toggled-collapsed-category-success]}
|
|
||||||
[{:keys [db]} community-id category-id collapsed?]
|
|
||||||
{:db (assoc-in db [:communities/collapsed-categories community-id category-id] collapsed?)})
|
|
||||||
|
|
||||||
(rf/defn toggle-collapsed-category
|
|
||||||
{:events [:communities/toggle-collapsed-category]}
|
|
||||||
[{:keys [db]} community-id category-id collapse?]
|
|
||||||
{:json-rpc/call [{:method "wakuext_toggleCollapsedCommunityCategory"
|
|
||||||
:params [{:communityId community-id
|
|
||||||
:categoryId category-id
|
|
||||||
:collapsed collapse?}]
|
|
||||||
:on-success #(re-frame/dispatch
|
|
||||||
[:communities/toggled-collapsed-category-success
|
|
||||||
community-id
|
|
||||||
category-id
|
|
||||||
collapse?])
|
|
||||||
:on-error #(log/error "failed to toggle collapse category"
|
|
||||||
{:error %
|
|
||||||
:community-id community-id
|
|
||||||
:event :communities/toggle-collapsed-category
|
|
||||||
:category-id category-id
|
|
||||||
:collapse? collapse?})}]})
|
|
||||||
|
|||||||
@@ -46,6 +46,16 @@
|
|||||||
[taoensso.timbre :as log]
|
[taoensso.timbre :as log]
|
||||||
[utils.security.core :as security]))
|
[utils.security.core :as security]))
|
||||||
|
|
||||||
|
(re-frame/reg-fx
|
||||||
|
::initialize-communities-enabled
|
||||||
|
(fn []
|
||||||
|
(let [callback #(re-frame/dispatch [:multiaccounts.ui/switch-communities-enabled %])]
|
||||||
|
(if config/communities-enabled?
|
||||||
|
(callback true)
|
||||||
|
(async-storage/get-item
|
||||||
|
:communities-enabled?
|
||||||
|
callback)))))
|
||||||
|
|
||||||
(re-frame/reg-fx
|
(re-frame/reg-fx
|
||||||
::initialize-transactions-management-enabled
|
::initialize-transactions-management-enabled
|
||||||
(fn []
|
(fn []
|
||||||
@@ -348,6 +358,10 @@
|
|||||||
[{:method "wakuext_getGroupChatInvitations"
|
[{:method "wakuext_getGroupChatInvitations"
|
||||||
:on-success #(re-frame/dispatch [::initialize-invitations %])}]})
|
:on-success #(re-frame/dispatch [::initialize-invitations %])}]})
|
||||||
|
|
||||||
|
(rf/defn initialize-communities-enabled
|
||||||
|
[cofx]
|
||||||
|
{::initialize-communities-enabled nil})
|
||||||
|
|
||||||
(rf/defn initialize-transactions-management-enabled
|
(rf/defn initialize-transactions-management-enabled
|
||||||
[cofx]
|
[cofx]
|
||||||
{::initialize-transactions-management-enabled nil})
|
{::initialize-transactions-management-enabled nil})
|
||||||
@@ -394,10 +408,10 @@
|
|||||||
(rf/dispatch [:communities/get-user-requests-to-join])
|
(rf/dispatch [:communities/get-user-requests-to-join])
|
||||||
(re-frame/dispatch [::get-chats-callback]))})
|
(re-frame/dispatch [::get-chats-callback]))})
|
||||||
(initialize-appearance)
|
(initialize-appearance)
|
||||||
|
(initialize-communities-enabled)
|
||||||
(initialize-wallet-connect)
|
(initialize-wallet-connect)
|
||||||
(get-node-config)
|
(get-node-config)
|
||||||
(communities/fetch)
|
(communities/fetch)
|
||||||
(communities/fetch-collapsed-community-categories)
|
|
||||||
(logging/set-log-level (:log-level multiaccount))
|
(logging/set-log-level (:log-level multiaccount))
|
||||||
(activity-center/notifications-fetch-pending-contact-requests)
|
(activity-center/notifications-fetch-pending-contact-requests)
|
||||||
(activity-center/update-seen-state)
|
(activity-center/update-seen-state)
|
||||||
@@ -525,6 +539,7 @@
|
|||||||
(communities/fetch)
|
(communities/fetch)
|
||||||
(data-store.chats/fetch-chats-rpc
|
(data-store.chats/fetch-chats-rpc
|
||||||
{:on-success #(re-frame/dispatch [:chats-list/load-success %])})
|
{:on-success #(re-frame/dispatch [:chats-list/load-success %])})
|
||||||
|
(initialize-communities-enabled)
|
||||||
(multiaccounts/switch-preview-privacy-mode-flag)
|
(multiaccounts/switch-preview-privacy-mode-flag)
|
||||||
(link-preview/request-link-preview-whitelist)
|
(link-preview/request-link-preview-whitelist)
|
||||||
(logging/set-log-level (:log-level multiaccount))
|
(logging/set-log-level (:log-level multiaccount))
|
||||||
|
|||||||
@@ -2,13 +2,15 @@
|
|||||||
(:require [quo.core :as quo]
|
(:require [quo.core :as quo]
|
||||||
[re-frame.core :as re-frame]
|
[re-frame.core :as re-frame]
|
||||||
[utils.i18n :as i18n]
|
[utils.i18n :as i18n]
|
||||||
[status-im.ui.components.list.views :as list])
|
[status-im.ui.components.list.views :as list]
|
||||||
|
[status-im2.config :as config])
|
||||||
(:require-macros [status-im.utils.views :as views]))
|
(:require-macros [status-im.utils.views :as views]))
|
||||||
|
|
||||||
(defn- normal-mode-settings-data
|
(defn- normal-mode-settings-data
|
||||||
[{:keys [network-name
|
[{:keys [network-name
|
||||||
current-log-level
|
current-log-level
|
||||||
waku-bloom-filter-mode
|
waku-bloom-filter-mode
|
||||||
|
communities-enabled?
|
||||||
transactions-management-enabled?
|
transactions-management-enabled?
|
||||||
wakuv2-flag
|
wakuv2-flag
|
||||||
current-fleet
|
current-fleet
|
||||||
@@ -74,6 +76,17 @@
|
|||||||
:on-press
|
:on-press
|
||||||
#(re-frame/dispatch [:navigate-to :peers-stats])
|
#(re-frame/dispatch [:navigate-to :peers-stats])
|
||||||
:chevron true}
|
:chevron true}
|
||||||
|
;; If it's enabled in the config, we don't show the option
|
||||||
|
(when (not config/communities-enabled?)
|
||||||
|
{:size :small
|
||||||
|
:title (i18n/label :t/communities-enabled)
|
||||||
|
:accessibility-label :communities-enabled
|
||||||
|
:container-margin-bottom 8
|
||||||
|
:on-press
|
||||||
|
#(re-frame/dispatch
|
||||||
|
[:multiaccounts.ui/switch-communities-enabled (not communities-enabled?)])
|
||||||
|
:accessory :switch
|
||||||
|
:active communities-enabled?})
|
||||||
{:size :small
|
{:size :small
|
||||||
:title (i18n/label :t/transactions-management-enabled)
|
:title (i18n/label :t/transactions-management-enabled)
|
||||||
:accessibility-label :transactions-management-enabled
|
:accessibility-label :transactions-management-enabled
|
||||||
@@ -119,6 +132,7 @@
|
|||||||
network-name [:network-name]
|
network-name [:network-name]
|
||||||
waku-bloom-filter-mode [:waku/bloom-filter-mode]
|
waku-bloom-filter-mode [:waku/bloom-filter-mode]
|
||||||
wakuv2-flag [:waku/v2-flag]
|
wakuv2-flag [:waku/v2-flag]
|
||||||
|
communities-enabled? [:communities/enabled?]
|
||||||
transactions-management-enabled? [:wallet/transactions-management-enabled?]
|
transactions-management-enabled? [:wallet/transactions-management-enabled?]
|
||||||
current-log-level [:log-level/current-log-level]
|
current-log-level [:log-level/current-log-level]
|
||||||
current-fleet [:fleets/current-fleet]]
|
current-fleet [:fleets/current-fleet]]
|
||||||
@@ -126,6 +140,7 @@
|
|||||||
{:data (flat-list-data
|
{:data (flat-list-data
|
||||||
{:network-name network-name
|
{:network-name network-name
|
||||||
:current-log-level current-log-level
|
:current-log-level current-log-level
|
||||||
|
:communities-enabled? communities-enabled?
|
||||||
:transactions-management-enabled? transactions-management-enabled?
|
:transactions-management-enabled? transactions-management-enabled?
|
||||||
:current-fleet current-fleet
|
:current-fleet current-fleet
|
||||||
:dev-mode? false
|
:dev-mode? false
|
||||||
|
|||||||
@@ -142,25 +142,28 @@
|
|||||||
|
|
||||||
(defn communities
|
(defn communities
|
||||||
[]
|
[]
|
||||||
(let [communities (rf/sub [:communities/section-list])]
|
(let [communities (rf/sub [:communities/section-list])
|
||||||
|
communities-enabled? (rf/sub [:communities/enabled?])]
|
||||||
[:<>
|
[:<>
|
||||||
[topbar/topbar
|
[topbar/topbar
|
||||||
{:title (i18n/label :t/communities)
|
(cond-> {:title (i18n/label :t/communities)}
|
||||||
:right-accessories
|
communities-enabled?
|
||||||
[{:icon :main-icons/more
|
(assoc :right-accessories
|
||||||
:accessibility-label :chat-menu-button
|
[{:icon :main-icons/more
|
||||||
:on-press
|
:accessibility-label :chat-menu-button
|
||||||
#(rf/dispatch [:bottom-sheet/show-sheet
|
:on-press
|
||||||
{:content (fn []
|
#(rf/dispatch [:bottom-sheet/show-sheet
|
||||||
[communities-actions])
|
{:content (fn []
|
||||||
:height 256}])}]}]
|
[communities-actions])
|
||||||
|
:height 256}])}]))]
|
||||||
[communities-list communities]
|
[communities-list communities]
|
||||||
[toolbar/toolbar
|
(when communities-enabled?
|
||||||
{:show-border? true
|
[toolbar/toolbar
|
||||||
:center [quo/button
|
{:show-border? true
|
||||||
{:on-press #(rf/dispatch [::communities/open-create-community])
|
:center [quo/button
|
||||||
:type :secondary}
|
{:on-press #(rf/dispatch [::communities/open-create-community])
|
||||||
(i18n/label :t/create-community)]}]]))
|
:type :secondary}
|
||||||
|
(i18n/label :t/create-community)]}])]))
|
||||||
|
|
||||||
(defn export-community
|
(defn export-community
|
||||||
[]
|
[]
|
||||||
|
|||||||
@@ -51,12 +51,13 @@
|
|||||||
:accessibility-label :join-public-chat-button
|
:accessibility-label :join-public-chat-button
|
||||||
:icon :main-icons/public-chat
|
:icon :main-icons/public-chat
|
||||||
:on-press #(hide-sheet-and-dispatch [:open-modal :new-public-chat])}]
|
:on-press #(hide-sheet-and-dispatch [:open-modal :new-public-chat])}]
|
||||||
[quo/list-item
|
(when (rf/sub [:communities/enabled?])
|
||||||
{:theme :accent
|
[quo/list-item
|
||||||
:title (i18n/label :t/communities-alpha)
|
{:theme :accent
|
||||||
:accessibility-label :communities-button
|
:title (i18n/label :t/communities-alpha)
|
||||||
:icon :main-icons/communities
|
:accessibility-label :communities-button
|
||||||
:on-press #(hide-sheet-and-dispatch [:navigate-to :communities])}]
|
:icon :main-icons/communities
|
||||||
|
:on-press #(hide-sheet-and-dispatch [:navigate-to :communities])}])
|
||||||
[invite/list-item
|
[invite/list-item
|
||||||
{:accessibility-label :chats-menu-invite-friends-button}]])
|
{:accessibility-label :chats-menu-invite-friends-button}]])
|
||||||
|
|
||||||
|
|||||||
@@ -9,25 +9,12 @@
|
|||||||
(defn quoted-message
|
(defn quoted-message
|
||||||
[pin? in-chat-input?]
|
[pin? in-chat-input?]
|
||||||
(merge {:flex-direction :row
|
(merge {:flex-direction :row
|
||||||
:flex 1
|
|
||||||
:align-items :center
|
:align-items :center
|
||||||
:width (if in-chat-input? "100%" "45%")}
|
:width (if in-chat-input? "80%" "45%")}
|
||||||
(when-not pin?
|
(when-not pin?
|
||||||
{:left 22
|
{:position :absolute
|
||||||
:margin-right 22})))
|
:left 34
|
||||||
|
:top 3})))
|
||||||
(def reply-from
|
|
||||||
{:flex-direction :row
|
|
||||||
:align-items :center})
|
|
||||||
|
|
||||||
(def message-author-text
|
|
||||||
{:margin-left 4})
|
|
||||||
|
|
||||||
(def message-text
|
|
||||||
{:text-transform :none
|
|
||||||
:margin-left 4
|
|
||||||
:margin-top 2
|
|
||||||
:flex 1})
|
|
||||||
|
|
||||||
(def gradient
|
(def gradient
|
||||||
{:position :absolute
|
{:position :absolute
|
||||||
|
|||||||
@@ -64,17 +64,6 @@
|
|||||||
:margin-top 2}}
|
:margin-top 2}}
|
||||||
(i18n/label :t/message-deleted)]])
|
(i18n/label :t/message-deleted)]])
|
||||||
|
|
||||||
(defn reply-from
|
|
||||||
[{:keys [from identicon contact-name current-public-key]}]
|
|
||||||
[rn/view {:style style/reply-from}
|
|
||||||
[photos/member-photo from identicon 16]
|
|
||||||
[quo2.text/text
|
|
||||||
{:weight :semi-bold
|
|
||||||
:size :paragraph-2
|
|
||||||
:number-of-lines 1
|
|
||||||
:style style/message-author-text}
|
|
||||||
(format-reply-author from contact-name current-public-key)]])
|
|
||||||
|
|
||||||
(defn reply-message
|
(defn reply-message
|
||||||
[{:keys [from identicon content-type contentType parsed-text content deleted? deleted-for-me?]}
|
[{:keys [from identicon content-type contentType parsed-text content deleted? deleted-for-me?]}
|
||||||
in-chat-input? pin? recording-audio?]
|
in-chat-input? pin? recording-audio?]
|
||||||
@@ -95,11 +84,13 @@
|
|||||||
[rn/view {:style (style/quoted-message pin? in-chat-input?)}
|
[rn/view {:style (style/quoted-message pin? in-chat-input?)}
|
||||||
[reply-deleted-message]]
|
[reply-deleted-message]]
|
||||||
[rn/view {:style (style/quoted-message pin? in-chat-input?)}
|
[rn/view {:style (style/quoted-message pin? in-chat-input?)}
|
||||||
[reply-from
|
[photos/member-photo from identicon 16]
|
||||||
{:from from
|
[quo2.text/text
|
||||||
:identicon identicon
|
{:weight :semi-bold
|
||||||
:contact-name contact-name
|
:size :paragraph-2
|
||||||
:current-public-key current-public-key}]
|
:number-of-lines 1
|
||||||
|
:style {:margin-left 4}}
|
||||||
|
(format-reply-author from contact-name current-public-key)]
|
||||||
[quo2.text/text
|
[quo2.text/text
|
||||||
{:number-of-lines 1
|
{:number-of-lines 1
|
||||||
:size :label
|
:size :label
|
||||||
@@ -107,7 +98,9 @@
|
|||||||
:accessibility-label :quoted-message
|
:accessibility-label :quoted-message
|
||||||
:ellipsize-mode :tail
|
:ellipsize-mode :tail
|
||||||
:style (merge
|
:style (merge
|
||||||
style/message-text
|
{:text-transform :none
|
||||||
|
:margin-left 4
|
||||||
|
:margin-top 2}
|
||||||
(when (or (= constants/content-type-image content-type)
|
(when (or (= constants/content-type-image content-type)
|
||||||
(= constants/content-type-sticker content-type)
|
(= constants/content-type-sticker content-type)
|
||||||
(= constants/content-type-audio content-type))
|
(= constants/content-type-audio content-type))
|
||||||
|
|||||||
@@ -354,8 +354,9 @@
|
|||||||
|
|
||||||
(defview community-content
|
(defview community-content
|
||||||
[{:keys [community-id] :as message}]
|
[{:keys [community-id] :as message}]
|
||||||
(letsubs [{:keys [name description verified] :as community} [:communities/community community-id]]
|
(letsubs [{:keys [name description verified] :as community} [:communities/community community-id]
|
||||||
(when community
|
communities-enabled? [:communities/enabled?]]
|
||||||
|
(when (and communities-enabled? community)
|
||||||
[rn/view
|
[rn/view
|
||||||
{:style (assoc (style/message-wrapper message)
|
{:style (assoc (style/message-wrapper message)
|
||||||
:margin-vertical 10
|
:margin-vertical 10
|
||||||
|
|||||||
@@ -58,35 +58,10 @@
|
|||||||
:size :small}
|
:size :small}
|
||||||
avatar)]]])
|
avatar)]]])
|
||||||
|
|
||||||
(defn connectivity-sheet
|
|
||||||
[]
|
|
||||||
(let [peers-count (rf/sub [:peers-count])
|
|
||||||
network-type (rf/sub [:network/type])]
|
|
||||||
[rn/view
|
|
||||||
[quo/text {:accessibility-label :peers-network-type-text} (str "NETWORK TYPE: " network-type)]
|
|
||||||
[quo/text {:accessibility-label :peers-count-text} (str "PEERS COUNT: " peers-count)]]))
|
|
||||||
|
|
||||||
(defn- right-section
|
(defn- right-section
|
||||||
[{:keys [button-type search?]}]
|
[{:keys [button-type search?]}]
|
||||||
(let [button-common-props (get-button-common-props button-type)
|
(let [button-common-props (get-button-common-props button-type)]
|
||||||
network-type (rf/sub [:network/type])]
|
|
||||||
[rn/view {:style style/right-section}
|
[rn/view {:style style/right-section}
|
||||||
(when (= network-type "cellular")
|
|
||||||
[quo/button
|
|
||||||
(merge button-common-props
|
|
||||||
{:icon false
|
|
||||||
:accessibility-label :on-cellular-network
|
|
||||||
:on-press #(rf/dispatch [:bottom-sheet/show-sheet
|
|
||||||
{:content connectivity-sheet}])})
|
|
||||||
"🦄"])
|
|
||||||
(when (= network-type "none")
|
|
||||||
[quo/button
|
|
||||||
(merge button-common-props
|
|
||||||
{:icon false
|
|
||||||
:accessibility-label :no-network-connection
|
|
||||||
:on-press #(rf/dispatch [:bottom-sheet/show-sheet
|
|
||||||
{:content connectivity-sheet}])})
|
|
||||||
"💀"])
|
|
||||||
(when search?
|
(when search?
|
||||||
[quo/button
|
[quo/button
|
||||||
(assoc button-common-props :accessibility-label :open-search-button)
|
(assoc button-common-props :accessibility-label :open-search-button)
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
(def keycard-test-menu-enabled? (enabled? (get-config :KEYCARD_TEST_MENU "1")))
|
(def keycard-test-menu-enabled? (enabled? (get-config :KEYCARD_TEST_MENU "1")))
|
||||||
(def qr-test-menu-enabled? (enabled? (get-config :QR_READ_TEST_MENU "0")))
|
(def qr-test-menu-enabled? (enabled? (get-config :QR_READ_TEST_MENU "0")))
|
||||||
(def quo-preview-enabled? (enabled? (get-config :ENABLE_QUO_PREVIEW "0")))
|
(def quo-preview-enabled? (enabled? (get-config :ENABLE_QUO_PREVIEW "0")))
|
||||||
|
(def communities-enabled? (enabled? (get-config :COMMUNITIES_ENABLED "0")))
|
||||||
(def database-management-enabled? (enabled? (get-config :DATABASE_MANAGEMENT_ENABLED "0")))
|
(def database-management-enabled? (enabled? (get-config :DATABASE_MANAGEMENT_ENABLED "0")))
|
||||||
(def debug-webview? (enabled? (get-config :DEBUG_WEBVIEW "0")))
|
(def debug-webview? (enabled? (get-config :DEBUG_WEBVIEW "0")))
|
||||||
(def collectibles-enabled? (enabled? (get-config :COLLECTIBLES_ENABLED "1")))
|
(def collectibles-enabled? (enabled? (get-config :COLLECTIBLES_ENABLED "1")))
|
||||||
|
|||||||
@@ -290,5 +290,3 @@
|
|||||||
(def ^:const local-pair-action-sync-device 3)
|
(def ^:const local-pair-action-sync-device 3)
|
||||||
|
|
||||||
(def ^:const everyone-mention-id "0x00001")
|
(def ^:const everyone-mention-id "0x00001")
|
||||||
|
|
||||||
(def ^:const empty-category-id :communities/not-categorized)
|
|
||||||
|
|||||||
@@ -13,8 +13,7 @@
|
|||||||
[status-im2.contexts.contacts.events :as contacts-store]
|
[status-im2.contexts.contacts.events :as contacts-store]
|
||||||
[status-im.multiaccounts.model :as multiaccounts.model]
|
[status-im.multiaccounts.model :as multiaccounts.model]
|
||||||
[status-im.utils.clocks :as utils.clocks]
|
[status-im.utils.clocks :as utils.clocks]
|
||||||
[status-im.utils.types :as types]
|
[status-im.utils.types :as types]))
|
||||||
[reagent.core :as reagent]))
|
|
||||||
|
|
||||||
(defn- get-chat
|
(defn- get-chat
|
||||||
[cofx chat-id]
|
[cofx chat-id]
|
||||||
@@ -339,12 +338,6 @@
|
|||||||
[{:keys [db]} shared-element-id]
|
[{:keys [db]} shared-element-id]
|
||||||
{:db (assoc db :shared-element-id shared-element-id)})
|
{:db (assoc db :shared-element-id shared-element-id)})
|
||||||
|
|
||||||
(rf/defn navigate-to-lightbox
|
|
||||||
{:events [:chat.ui/navigate-to-lightbox]}
|
|
||||||
[{:keys [db]} shared-element-id screen-params]
|
|
||||||
(reagent/next-tick #(rf/dispatch [:navigate-to :lightbox screen-params]))
|
|
||||||
{:db (assoc db :shared-element-id shared-element-id)})
|
|
||||||
|
|
||||||
(rf/defn exit-lightbox-signal
|
(rf/defn exit-lightbox-signal
|
||||||
{:events [:chat.ui/exit-lightbox-signal]}
|
{:events [:chat.ui/exit-lightbox-signal]}
|
||||||
[{:keys [db]} value]
|
[{:keys [db]} value]
|
||||||
@@ -364,3 +357,4 @@
|
|||||||
{:events [:chat.ui/lightbox-scale]}
|
{:events [:chat.ui/lightbox-scale]}
|
||||||
[{:keys [db]} value]
|
[{:keys [db]} value]
|
||||||
{:db (assoc db :lightbox/scale value)})
|
{:db (assoc db :lightbox/scale value)})
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
(anim/animate background-color :transparent)
|
(anim/animate background-color :transparent)
|
||||||
(anim/animate opacity 0)
|
(anim/animate opacity 0)
|
||||||
(rf/dispatch (if platform/ios?
|
(rf/dispatch (if platform/ios?
|
||||||
[:navigate-back]
|
[:chat.ui/exit-lightbox-signal @index]
|
||||||
[:navigate-back])))
|
[:navigate-back])))
|
||||||
:style style/close-container}
|
:style style/close-container}
|
||||||
[quo/icon :close {:size 20 :color colors/white}]]
|
[quo/icon :close {:size 20 :color colors/white}]]
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
(defn toggle-opacity
|
(defn toggle-opacity
|
||||||
[index {:keys [opacity-value border-value transparent? atoms]} portrait?]
|
[index {:keys [opacity-value border-value transparent? atoms]} portrait?]
|
||||||
(let [{:keys [small-list-ref]} atoms
|
(let [{:keys [small-list-ref]} atoms
|
||||||
opacity (reanimated/get-shared-value opacity-value)]
|
opacity (reanimated/get-shared-value opacity-value)]
|
||||||
(if (= opacity 1)
|
(if (= opacity 1)
|
||||||
(do
|
(do
|
||||||
(when platform/ios?
|
(when platform/ios?
|
||||||
@@ -63,8 +63,8 @@
|
|||||||
(orientation/lock-to-portrait "lightbox"))
|
(orientation/lock-to-portrait "lightbox"))
|
||||||
(js/setTimeout #(when @flat-list-ref
|
(js/setTimeout #(when @flat-list-ref
|
||||||
(.scrollToOffset
|
(.scrollToOffset
|
||||||
^js @flat-list-ref
|
^js @flat-list-ref
|
||||||
#js {:animated false :offset (* (+ item-width seperator-width) @index)}))
|
#js {:animated false :offset (* (+ item-width seperator-width) @index)}))
|
||||||
timeout)
|
timeout)
|
||||||
(when platform/ios?
|
(when platform/ios?
|
||||||
(top-view/animate-rotation result screen-width screen-height insets animations))))
|
(top-view/animate-rotation result screen-width screen-height insets animations))))
|
||||||
@@ -124,58 +124,57 @@
|
|||||||
;; we get `insets` from `screen-params` because trying to consume it from
|
;; we get `insets` from `screen-params` because trying to consume it from
|
||||||
;; lightbox screen causes lots of problems
|
;; lightbox screen causes lots of problems
|
||||||
(let [{:keys [messages index insets]} (rf/sub [:get-screen-params])
|
(let [{:keys [messages index insets]} (rf/sub [:get-screen-params])
|
||||||
render-list (reagent/atom false)
|
atoms {:flat-list-ref (atom nil)
|
||||||
atoms {:flat-list-ref (atom nil)
|
:small-list-ref (atom nil)
|
||||||
:small-list-ref (atom nil)
|
:scroll-index-lock? (atom true)}
|
||||||
:scroll-index-lock? (atom true)}
|
|
||||||
;; The initial value of data is the image that was pressed (and not the whole album) in order
|
;; The initial value of data is the image that was pressed (and not the whole album) in order
|
||||||
;; for the transition animation to execute properly, otherwise it would animate towards
|
;; for the transition animation to execute properly, otherwise it would animate towards
|
||||||
;; outside the screen (even if we have `initialScrollIndex` set).
|
;; outside the screen (even if we have `initialScrollIndex` set).
|
||||||
data (reagent/atom [(nth messages index)])
|
data (reagent/atom [(nth messages index)])
|
||||||
scroll-index (reagent/atom index)
|
scroll-index (reagent/atom index)
|
||||||
transparent? (reagent/atom false)
|
transparent? (reagent/atom false)
|
||||||
set-full-height? (reagent/atom false)
|
set-full-height? (reagent/atom false)
|
||||||
window (rf/sub [:dimensions/window])
|
window (rf/sub [:dimensions/window])
|
||||||
window-width (:width window)
|
window-width (:width window)
|
||||||
window-height (:height window)
|
window-height (:height window)
|
||||||
window-height (if platform/android?
|
window-height (if platform/android?
|
||||||
(+ window-height (:top insets))
|
(+ window-height (:top insets))
|
||||||
window-height)
|
window-height)
|
||||||
animations {:background-color (anim/use-val "rgba(0,0,0,0)")
|
animations {:background-color (anim/use-val "rgba(0,0,0,0)")
|
||||||
:border (anim/use-val (if platform/ios? 0 12))
|
:border (anim/use-val (if platform/ios? 0 12))
|
||||||
:opacity (anim/use-val 0)
|
:opacity (anim/use-val 0)
|
||||||
:rotate (anim/use-val "0deg")
|
:rotate (anim/use-val "0deg")
|
||||||
:layout (anim/use-val -10)
|
:layout (anim/use-val -10)
|
||||||
:top-view-y (anim/use-val 0)
|
:top-view-y (anim/use-val 0)
|
||||||
:top-view-x (anim/use-val 0)
|
:top-view-x (anim/use-val 0)
|
||||||
:top-view-width (anim/use-val window-width)
|
:top-view-width (anim/use-val window-width)
|
||||||
:top-view-bg (anim/use-val colors/neutral-100-opa-0)
|
:top-view-bg (anim/use-val colors/neutral-100-opa-0)
|
||||||
:pan-y (anim/use-val 0)
|
:pan-y (anim/use-val 0)
|
||||||
:pan-x (anim/use-val 0)}
|
:pan-x (anim/use-val 0)}
|
||||||
derived {:top-layout (worklet/info-layout (:layout animations)
|
derived {:top-layout (worklet/info-layout (:layout animations)
|
||||||
true)
|
true)
|
||||||
:bottom-layout (worklet/info-layout (:layout animations)
|
:bottom-layout (worklet/info-layout (:layout animations)
|
||||||
false)}
|
false)}
|
||||||
callback (fn [e]
|
callback (fn [e]
|
||||||
(on-viewable-items-changed e scroll-index atoms))]
|
(on-viewable-items-changed e scroll-index atoms))]
|
||||||
(anim/animate (:background-color animations) "rgba(0,0,0,1)")
|
(anim/animate (:background-color animations) "rgba(0,0,0,1)")
|
||||||
(reset! data messages)
|
(reset! data messages)
|
||||||
(orientation/use-device-orientation-change
|
(orientation/use-device-orientation-change
|
||||||
(fn [result]
|
(fn [result]
|
||||||
(if platform/ios?
|
(if platform/ios?
|
||||||
(handle-orientation result scroll-index window-width window-height animations insets atoms)
|
(handle-orientation result scroll-index window-width window-height animations insets atoms)
|
||||||
;; `use-device-orientation-change` will always be called on Android, so need to check
|
;; `use-device-orientation-change` will always be called on Android, so need to check
|
||||||
(orientation/get-auto-rotate-state
|
(orientation/get-auto-rotate-state
|
||||||
(fn [enabled?]
|
(fn [enabled?]
|
||||||
;; RNN does not support landscape-right
|
;; RNN does not support landscape-right
|
||||||
(when (and enabled? (not= result orientation/landscape-right))
|
(when (and enabled? (not= result orientation/landscape-right))
|
||||||
(handle-orientation result
|
(handle-orientation result
|
||||||
scroll-index
|
scroll-index
|
||||||
window-width
|
window-width
|
||||||
window-height
|
window-height
|
||||||
animations
|
animations
|
||||||
insets
|
insets
|
||||||
atoms)))))))
|
atoms)))))))
|
||||||
(rn/use-effect (fn []
|
(rn/use-effect (fn []
|
||||||
(when @(:flat-list-ref atoms)
|
(when @(:flat-list-ref atoms)
|
||||||
(.scrollToIndex ^js @(:flat-list-ref atoms)
|
(.scrollToIndex ^js @(:flat-list-ref atoms)
|
||||||
@@ -186,7 +185,6 @@
|
|||||||
(anim/animate (:border animations) 12))
|
(anim/animate (:border animations) 12))
|
||||||
(if platform/ios? 250 100))
|
(if platform/ios? 250 100))
|
||||||
(js/setTimeout #(reset! (:scroll-index-lock? atoms) false) 300)
|
(js/setTimeout #(reset! (:scroll-index-lock? atoms) false) 300)
|
||||||
(js/setTimeout #(reset! render-list true) 500)
|
|
||||||
(fn []
|
(fn []
|
||||||
(rf/dispatch [:chat.ui/zoom-out-signal nil])
|
(rf/dispatch [:chat.ui/zoom-out-signal nil])
|
||||||
(when platform/android?
|
(when platform/android?
|
||||||
@@ -204,73 +202,44 @@
|
|||||||
window-height
|
window-height
|
||||||
window-width)
|
window-width)
|
||||||
item-width (if (and landscape? platform/ios?) screen-height screen-width)]
|
item-width (if (and landscape? platform/ios?) screen-height screen-width)]
|
||||||
;[rn/view {:style (merge (style/image (+ screen-width seperator-width) screen-height) {:background-color :black})}
|
|
||||||
;[reanimated/fast-image
|
|
||||||
; {:source {:uri (:image (:content (nth messages index)))}
|
|
||||||
; :native-ID :shared-element
|
|
||||||
; :style {:width window-width
|
|
||||||
; :height (* (:image-height (nth messages index)) (/ window-width (:image-width (nth messages index))))}
|
|
||||||
; ;:style (style/image dimensions animations (:border-value args))
|
|
||||||
; }]]
|
|
||||||
|
|
||||||
[reanimated/view
|
[reanimated/view
|
||||||
{:style (reanimated/apply-animations-to-style {:background-color (:background-color
|
{:style (reanimated/apply-animations-to-style {:background-color (:background-color
|
||||||
animations)}
|
animations)}
|
||||||
{:height screen-height})}
|
{:height screen-height})}
|
||||||
;(when-not @transparent?
|
(when-not @transparent?
|
||||||
; [top-view/top-view (first messages) insets scroll-index animations derived landscape?
|
[top-view/top-view (first messages) insets scroll-index animations derived landscape?
|
||||||
; screen-width])
|
screen-width])
|
||||||
[gesture/gesture-detector
|
[gesture/gesture-detector
|
||||||
{:gesture (drag-gesture animations (and landscape? platform/ios?) set-full-height?)}
|
{:gesture (drag-gesture animations (and landscape? platform/ios?) set-full-height?)}
|
||||||
[reanimated/view
|
[reanimated/view
|
||||||
{:style (reanimated/apply-animations-to-style
|
{:style (reanimated/apply-animations-to-style
|
||||||
{:transform [{:translateY (:pan-y animations)}
|
{:transform [{:translateY (:pan-y animations)}
|
||||||
{:translateX (:pan-x animations)}]}
|
{:translateX (:pan-x animations)}]}
|
||||||
{})}
|
{})}
|
||||||
(if @render-list
|
[gesture/flat-list
|
||||||
[gesture/flat-list
|
{:ref #(reset! (:flat-list-ref atoms) %)
|
||||||
{:ref #(reset! (:flat-list-ref atoms) %)
|
:key-fn :message-id
|
||||||
:key-fn :message-id
|
:style {:width (+ screen-width seperator-width)}
|
||||||
:style {:width (+ screen-width seperator-width)}
|
:data @data
|
||||||
:data @data
|
:render-fn image
|
||||||
:render-fn image
|
:render-data {:opacity-value (:opacity animations)
|
||||||
:render-data {:opacity-value (:opacity animations)
|
:border-value (:border animations)
|
||||||
:border-value (:border animations)
|
:transparent? transparent?
|
||||||
:transparent? transparent?
|
:set-full-height? set-full-height?
|
||||||
:set-full-height? set-full-height?
|
:screen-height screen-height
|
||||||
:screen-height screen-height
|
:screen-width screen-width
|
||||||
:screen-width screen-width
|
:window-height window-height
|
||||||
:window-height window-height
|
:window-width window-width
|
||||||
:window-width window-width
|
:atoms atoms}
|
||||||
:atoms atoms}
|
:horizontal horizontal?
|
||||||
:initial-scroll-index index
|
:inverted inverted?
|
||||||
:horizontal horizontal?
|
:paging-enabled true
|
||||||
:inverted inverted?
|
:get-item-layout (fn [_ index] (get-item-layout _ index item-width))
|
||||||
:paging-enabled true
|
:viewability-config {:view-area-coverage-percent-threshold 50
|
||||||
:get-item-layout (fn [_ index] (get-item-layout _ index item-width))
|
:wait-for-interaction true}
|
||||||
:viewability-config {:view-area-coverage-percent-threshold 50
|
:shows-vertical-scroll-indicator false
|
||||||
:wait-for-interaction true}
|
:shows-horizontal-scroll-indicator false
|
||||||
:shows-vertical-scroll-indicator false
|
:on-viewable-items-changed callback}]]]
|
||||||
:shows-horizontal-scroll-indicator false
|
(when (and (not @transparent?) (not landscape?))
|
||||||
:on-viewable-items-changed callback}]
|
[bottom-view/bottom-view messages index scroll-index insets animations derived
|
||||||
[rn/view
|
item-width atoms])]))]))])
|
||||||
{:style (style/image (+ screen-width seperator-width) screen-height)}
|
|
||||||
[rn/view {:style {:width window-width
|
|
||||||
:height (* (:image-height (nth messages index)) (/ window-width (:image-width (nth messages index))))}}
|
|
||||||
[reanimated/fast-image
|
|
||||||
{:source {:uri (:image (:content (nth messages index)))}
|
|
||||||
:native-ID :shared-element
|
|
||||||
:style {:border-radius 12
|
|
||||||
:width window-width
|
|
||||||
:height (* (:image-height (nth messages index)) (/ window-width (:image-width (nth messages index))))}
|
|
||||||
;:style (style/image dimensions animations (:border-value args))
|
|
||||||
}]
|
|
||||||
]
|
|
||||||
[rn/view {:style {:width seperator-width}}]]
|
|
||||||
)
|
|
||||||
]]
|
|
||||||
;(when (and (not @transparent?) (not landscape?))
|
|
||||||
; [bottom-view/bottom-view messages index scroll-index insets animations derived
|
|
||||||
; item-width atoms])
|
|
||||||
]
|
|
||||||
))]))])
|
|
||||||
|
|||||||
@@ -52,11 +52,13 @@
|
|||||||
{:key (:message-id item)
|
{:key (:message-id item)
|
||||||
:active-opacity 1
|
:active-opacity 1
|
||||||
:on-long-press #(on-long-press message context)
|
:on-long-press #(on-long-press message context)
|
||||||
:on-press #(rf/dispatch [:chat.ui/navigate-to-lightbox
|
:on-press (fn []
|
||||||
(:message-id item)
|
(rf/dispatch [:chat.ui/update-shared-element-id (:message-id item)])
|
||||||
{:messages (:album message)
|
(js/setTimeout #(rf/dispatch [:navigate-to :lightbox
|
||||||
:index index
|
{:messages (:album message)
|
||||||
:insets insets}])}
|
:index index
|
||||||
|
:insets insets}])
|
||||||
|
100))}
|
||||||
[fast-image/fast-image
|
[fast-image/fast-image
|
||||||
{:style (style/image dimensions index portrait? images-count)
|
{:style (style/image dimensions index portrait? images-count)
|
||||||
:source {:uri (:image (:content item))}
|
:source {:uri (:image (:content item))}
|
||||||
|
|||||||
@@ -27,11 +27,13 @@
|
|||||||
:key message-id
|
:key message-id
|
||||||
:style {:margin-top (when (pos? index) 10)}
|
:style {:margin-top (when (pos? index) 10)}
|
||||||
:on-long-press on-long-press
|
:on-long-press on-long-press
|
||||||
:on-press #(rf/dispatch [:chat.ui/navigate-to-lightbox
|
:on-press (fn []
|
||||||
message-id
|
(rf/dispatch [:chat.ui/update-shared-element-id message-id])
|
||||||
{:messages [message]
|
(js/setTimeout #(rf/dispatch [:navigate-to :lightbox
|
||||||
:index 0
|
{:messages (:album message)
|
||||||
:insets insets}])}
|
:index index
|
||||||
|
:insets insets}])
|
||||||
|
100))}
|
||||||
(when (and (not= text "placeholder") (= index 0))
|
(when (and (not= text "placeholder") (= index 0))
|
||||||
[rn/view {:style {:margin-bottom 10}} [text/text-content message context]])
|
[rn/view {:style {:margin-bottom 10}} [text/text-content message context]])
|
||||||
[fast-image/fast-image
|
[fast-image/fast-image
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
(ns status-im2.contexts.chat.messages.list.events
|
(ns status-im2.contexts.chat.messages.list.events
|
||||||
(:require [status-im2.constants :as constants]
|
(:require [utils.red-black-tree :as red-black-tree]
|
||||||
[utils.datetime :as datetime]
|
[utils.datetime :as datetime]
|
||||||
[utils.re-frame :as rf]
|
[utils.re-frame :as rf]
|
||||||
[utils.red-black-tree :as red-black-tree]))
|
[status-im2.constants :as constants]))
|
||||||
|
|
||||||
(defn- add-datemark
|
(defn- add-datemark
|
||||||
[{:keys [whisper-timestamp] :as msg}]
|
[{:keys [whisper-timestamp] :as msg}]
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
(ns status-im2.contexts.chat.photo-selector.view
|
(ns status-im2.contexts.chat.photo-selector.view
|
||||||
(:require
|
(:require
|
||||||
|
[react-native.navigation :as navigation]
|
||||||
[react-native.platform :as platform]
|
[react-native.platform :as platform]
|
||||||
|
[react-native.reanimated :as reanimated]
|
||||||
[status-im2.constants :as constants]
|
[status-im2.constants :as constants]
|
||||||
[utils.i18n :as i18n]
|
[utils.i18n :as i18n]
|
||||||
[react-native.safe-area :as safe-area]
|
[react-native.safe-area :as safe-area]
|
||||||
@@ -108,43 +110,63 @@
|
|||||||
(fn []
|
(fn []
|
||||||
(let [selected (reagent/atom []) ; currently selected
|
(let [selected (reagent/atom []) ; currently selected
|
||||||
selected-images (rf/sub [:chats/sending-image]) ; already selected and dispatched
|
selected-images (rf/sub [:chats/sending-image]) ; already selected and dispatched
|
||||||
selected-album (or (rf/sub [:camera-roll/selected-album]) (i18n/label :t/recent))]
|
selected-album (or (rf/sub [:camera-roll/selected-album]) (i18n/label :t/recent))
|
||||||
|
bg-color (reanimated/use-shared-value "rgba(0,0,0,0)")]
|
||||||
(rn/use-effect
|
(rn/use-effect
|
||||||
(fn []
|
(fn []
|
||||||
(rf/dispatch [:chat.ui/camera-roll-get-photos 20 nil selected-album])
|
(reanimated/animate-shared-value-with-delay-default-easing bg-color "rgba(9, 16, 28, 0.7)" 300 50)
|
||||||
(if (seq selected-images)
|
;(js/setTimeout #(reanimated/set-shared-value bg-color (reanimated/with-timing "rgba(9, 16, 28, 0.7)")) 300)
|
||||||
(reset! selected (vec (vals selected-images)))
|
(rf/dispatch [:chat.ui/camera-roll-get-photos 20 nil selected-album])
|
||||||
(reset! selected @temporary-selected)))
|
(if (seq selected-images)
|
||||||
[selected-album])
|
(reset! selected (vec (vals selected-images)))
|
||||||
[safe-area/consumer
|
(reset! selected @temporary-selected)))
|
||||||
(fn [insets]
|
[selected-album])
|
||||||
(let [window-width (:width (rn/get-window))
|
;[safe-area/consumer
|
||||||
|
; (fn [insets]
|
||||||
|
(let [insets {:top 20 :bottom 20}
|
||||||
|
window-width (:width (rn/get-window))
|
||||||
camera-roll-photos (rf/sub [:camera-roll/photos])
|
camera-roll-photos (rf/sub [:camera-roll/photos])
|
||||||
end-cursor (rf/sub [:camera-roll/end-cursor])
|
end-cursor (rf/sub [:camera-roll/end-cursor])
|
||||||
loading? (rf/sub [:camera-roll/loading-more])
|
loading? (rf/sub [:camera-roll/loading-more])
|
||||||
has-next-page? (rf/sub [:camera-roll/has-next-page])]
|
has-next-page? (rf/sub [:camera-roll/has-next-page])]
|
||||||
[rn/view {:style {:flex 1}}
|
[rn/view {:style {:flex 1
|
||||||
[rn/view
|
:padding-top (if platform/ios? (navigation/status-bar-height) (+ (navigation/status-bar-height) 30))}}
|
||||||
{:style style/buttons-container}
|
[reanimated/view {:style (reanimated/apply-animations-to-style {:background-color bg-color}
|
||||||
(when platform/android?
|
{:position :absolute
|
||||||
[rn/touchable-opacity
|
:top 0
|
||||||
{:active-opacity 1
|
:bottom 0
|
||||||
:on-press #(rf/dispatch [:navigate-back])
|
:left 0
|
||||||
:style (style/close-button-container)}
|
:right 0})}]
|
||||||
[quo/icon :i/close
|
[rn/view {:style {:margin-top 0 :background-color :white
|
||||||
{:size 20 :color (colors/theme-colors colors/black colors/white)}]])
|
:border-top-left-radius 20
|
||||||
[album-title true selected-album selected temporary-selected]
|
:border-top-right-radius 20
|
||||||
[clear-button selected]]
|
:overflow :hidden}}
|
||||||
[rn/flat-list
|
[rn/view
|
||||||
{:key-fn identity
|
{:style style/buttons-container}
|
||||||
:render-fn image
|
(when true
|
||||||
:render-data {:window-width window-width :selected selected}
|
[rn/touchable-opacity
|
||||||
:data camera-roll-photos
|
{:active-opacity 1
|
||||||
:num-columns 3
|
:on-press (fn []
|
||||||
:content-container-style {:width "100%"
|
(reanimated/set-shared-value bg-color (reanimated/with-timing "transparent" (clj->js {:duration 100})))
|
||||||
:padding-bottom (+ (:bottom insets) 100)
|
(rf/dispatch [:navigate-back]))
|
||||||
:padding-top 80}
|
:style (style/close-button-container)}
|
||||||
:on-end-reached #(rf/dispatch [:camera-roll/on-end-reached end-cursor
|
[quo/icon :i/close
|
||||||
selected-album loading?
|
{:size 20 :color (colors/theme-colors colors/black colors/white)}]])
|
||||||
has-next-page?])}]
|
[album-title true selected-album selected temporary-selected]
|
||||||
[bottom-gradient selected-images insets selected]]))])))])
|
[clear-button selected]]
|
||||||
|
[rn/flat-list
|
||||||
|
{:key-fn identity
|
||||||
|
:render-fn image
|
||||||
|
:render-data {:window-width window-width :selected selected}
|
||||||
|
:data camera-roll-photos
|
||||||
|
:num-columns 3
|
||||||
|
:content-container-style {:width "100%"
|
||||||
|
:padding-bottom (+ (:bottom insets) 100)
|
||||||
|
:padding-top 80}
|
||||||
|
:on-end-reached #(rf/dispatch [:camera-roll/on-end-reached end-cursor
|
||||||
|
selected-album loading?
|
||||||
|
has-next-page?])}]
|
||||||
|
[bottom-gradient selected-images insets selected]
|
||||||
|
]])
|
||||||
|
;)]
|
||||||
|
)))])
|
||||||
|
|||||||
@@ -60,45 +60,35 @@
|
|||||||
(defn add-category-height
|
(defn add-category-height
|
||||||
[categories-heights category height]
|
[categories-heights category height]
|
||||||
(swap! categories-heights
|
(swap! categories-heights
|
||||||
(fn [heights]
|
(fn []
|
||||||
(assoc heights category height))))
|
(sort-by :height
|
||||||
|
(conj @categories-heights
|
||||||
(defn collapse-category
|
{:height height
|
||||||
[community-id category-id collapsed?]
|
:label category})))))
|
||||||
(rf/dispatch [:communities/toggle-collapsed-category community-id category-id (not collapsed?)]))
|
|
||||||
|
|
||||||
(defn channel-list-component
|
(defn channel-list-component
|
||||||
[{:keys [on-category-layout
|
[{:keys [on-categories-heights-changed
|
||||||
community-id
|
|
||||||
on-first-channel-height-changed]}
|
on-first-channel-height-changed]}
|
||||||
channels-list]
|
channels-list]
|
||||||
[rn/view
|
(let [categories-heights (reagent/atom [])]
|
||||||
{:on-layout #(on-first-channel-height-changed (+ (if platform/ios?
|
[rn/view
|
||||||
0
|
{:on-layout #(on-first-channel-height-changed (+ (if platform/ios?
|
||||||
38)
|
0
|
||||||
(int (Math/ceil (layout-y %))))
|
38)
|
||||||
(into #{} (map (comp :name second) channels-list)))
|
(int (Math/ceil (layout-y %)))))
|
||||||
:style {:margin-top 20 :flex 1}}
|
:style {:margin-top 20 :flex 1}}
|
||||||
(map
|
(map-indexed
|
||||||
(fn [[category-id {:keys [chats name collapsed?]}]]
|
(fn [index [category channels-for-category]]
|
||||||
[rn/view
|
[rn/view
|
||||||
{:flex 1
|
{:flex 1
|
||||||
:key category-id
|
:key (str index category)
|
||||||
;; on-layout fires only when the component re-renders, so
|
:on-layout #(do
|
||||||
;; in case the category hasn't changed, it will not be fired
|
(add-category-height categories-heights category (int (layout-y %)))
|
||||||
:on-layout #(on-category-layout name (int (layout-y %)))}
|
(on-categories-heights-changed @categories-heights))}
|
||||||
|
|
||||||
(when-not (= constants/empty-category-id category-id)
|
|
||||||
[quo/divider-label
|
[quo/divider-label
|
||||||
{:label name
|
{:label category
|
||||||
:on-press #(collapse-category
|
:chevron-position :left}]
|
||||||
community-id
|
|
||||||
category-id
|
|
||||||
collapsed?)
|
|
||||||
:chevron-icon (if collapsed? :main-icons/chevron-right :main-icons/chevron-down)
|
|
||||||
:padding-bottom (if collapsed? 7 0)
|
|
||||||
:chevron-position :left}])
|
|
||||||
(when-not collapsed?
|
|
||||||
[rn/view
|
[rn/view
|
||||||
{:margin-left 8
|
{:margin-left 8
|
||||||
:margin-top 10
|
:margin-top 10
|
||||||
@@ -108,8 +98,8 @@
|
|||||||
{:key (:id channel)
|
{:key (:id channel)
|
||||||
:margin-top 4}
|
:margin-top 4}
|
||||||
[quo/channel-list-item channel]])
|
[quo/channel-list-item channel]])
|
||||||
chats)])])
|
channels-for-category)]])
|
||||||
channels-list)])
|
channels-list)]))
|
||||||
|
|
||||||
(defn request-to-join-text
|
(defn request-to-join-text
|
||||||
[is-open?]
|
[is-open?]
|
||||||
@@ -202,10 +192,10 @@
|
|||||||
|
|
||||||
(defn add-on-press-handler-to-categorized-chats
|
(defn add-on-press-handler-to-categorized-chats
|
||||||
[community-id categorized-chats]
|
[community-id categorized-chats]
|
||||||
(let [add-on-press (partial add-on-press-handler-to-chats community-id)]
|
(reduce-kv (fn [acc category chats]
|
||||||
(map (fn [[category v]]
|
(assoc acc category (add-on-press-handler-to-chats community-id chats)))
|
||||||
[category (update v :chats add-on-press)])
|
{}
|
||||||
categorized-chats)))
|
categorized-chats))
|
||||||
|
|
||||||
(defn community-header
|
(defn community-header
|
||||||
[name]
|
[name]
|
||||||
@@ -231,9 +221,8 @@
|
|||||||
(defn community-content
|
(defn community-content
|
||||||
[{:keys [name description locked joined images
|
[{:keys [name description locked joined images
|
||||||
status tokens tags id]
|
status tokens tags id]
|
||||||
:as community}
|
:as community} pending?
|
||||||
pending?
|
{:keys [on-categories-heights-changed
|
||||||
{:keys [on-category-layout
|
|
||||||
on-first-channel-height-changed]}]
|
on-first-channel-height-changed]}]
|
||||||
(let [thumbnail-image (:thumbnail images)
|
(let [thumbnail-image (:thumbnail images)
|
||||||
chats-by-category (rf/sub [:communities/categorized-channels id])
|
chats-by-category (rf/sub [:communities/categorized-channels id])
|
||||||
@@ -275,14 +264,13 @@
|
|||||||
[preview-user-list users]
|
[preview-user-list users]
|
||||||
[join-community community pending?]]
|
[join-community community pending?]]
|
||||||
[channel-list-component
|
[channel-list-component
|
||||||
{:on-category-layout on-category-layout
|
{:on-categories-heights-changed #(on-categories-heights-changed %)
|
||||||
:community-id id
|
:on-first-channel-height-changed #(on-first-channel-height-changed %)}
|
||||||
:on-first-channel-height-changed on-first-channel-height-changed}
|
|
||||||
(add-on-press-handler-to-categorized-chats id chats-by-category)]]))
|
(add-on-press-handler-to-categorized-chats id chats-by-category)]]))
|
||||||
|
|
||||||
(defn sticky-category-header
|
(defn sticky-category-header
|
||||||
[_]
|
[_]
|
||||||
(fn [{:keys [enabled label]}]
|
(fn [{:keys [:enabled :label]}]
|
||||||
(when enabled
|
(when enabled
|
||||||
[blur/view
|
[blur/view
|
||||||
{:style style/blur-channel-header
|
{:style style/blur-channel-header
|
||||||
@@ -290,7 +278,7 @@
|
|||||||
:blur-type :transparent
|
:blur-type :transparent
|
||||||
:overlay-color :transparent}
|
:overlay-color :transparent}
|
||||||
[quo/divider-label
|
[quo/divider-label
|
||||||
{:label label
|
{:label (:label label)
|
||||||
:chevron-position :left}]])))
|
:chevron-position :left}]])))
|
||||||
|
|
||||||
(defn page-nav-right-section-buttons
|
(defn page-nav-right-section-buttons
|
||||||
@@ -304,18 +292,9 @@
|
|||||||
[options/community-options-bottom-sheet
|
[options/community-options-bottom-sheet
|
||||||
id])}])}])
|
id])}])}])
|
||||||
|
|
||||||
(defn pick-first-category-by-height
|
|
||||||
[scroll-height first-channel-height categories-heights]
|
|
||||||
(->> categories-heights
|
|
||||||
(sort-by (comp - second))
|
|
||||||
(some (fn [[category height]]
|
|
||||||
(and
|
|
||||||
(>= scroll-height (+ height first-channel-height))
|
|
||||||
category)))))
|
|
||||||
|
|
||||||
(defn community-card-page-view
|
(defn community-card-page-view
|
||||||
[{:keys [name images id]}]
|
[{:keys [name images id]}]
|
||||||
(let [categories-heights (reagent/atom {})
|
(let [categories-heights (reagent/atom [])
|
||||||
first-channel-height (reagent/atom 0)
|
first-channel-height (reagent/atom 0)
|
||||||
scroll-height (reagent/atom 0)
|
scroll-height (reagent/atom 0)
|
||||||
cover {:uri (get-in images [:banner :uri])}
|
cover {:uri (get-in images [:banner :uri])}
|
||||||
@@ -337,21 +316,14 @@
|
|||||||
|
|
||||||
[sticky-category-header
|
[sticky-category-header
|
||||||
{:enabled (> @scroll-height @first-channel-height)
|
{:enabled (> @scroll-height @first-channel-height)
|
||||||
:label (pick-first-category-by-height
|
:label (last (filter (fn [{:keys [height]}]
|
||||||
@scroll-height
|
(>= @scroll-height (+ height @first-channel-height)))
|
||||||
@first-channel-height
|
@categories-heights))}]
|
||||||
@categories-heights)}]
|
|
||||||
|
|
||||||
[community-content
|
[community-content
|
||||||
community
|
community
|
||||||
pending?
|
pending?
|
||||||
{:on-category-layout (partial add-category-height categories-heights)
|
{:on-categories-heights-changed #(reset! categories-heights %)
|
||||||
:on-first-channel-height-changed
|
:on-first-channel-height-changed #(reset! first-channel-height %)}]])))
|
||||||
;; Here we set the height of the component
|
|
||||||
;; and we filter out the categories, as some might have been removed
|
|
||||||
(fn [height categories]
|
|
||||||
(swap! categories-heights select-keys categories)
|
|
||||||
(reset! first-channel-height height))}]])))
|
|
||||||
|
|
||||||
(defn overview
|
(defn overview
|
||||||
[]
|
[]
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
(ns status-im2.contexts.onboarding.common.background.view
|
(ns status-im2.contexts.onboarding.common.background
|
||||||
(:require [react-native.core :as rn]
|
(:require [react-native.core :as rn]
|
||||||
[quo2.foundations.colors :as colors]
|
[quo2.foundations.colors :as colors]
|
||||||
[status-im2.common.resources :as resources]
|
[status-im2.common.resources :as resources]
|
||||||
[react-native.linear-gradient :as linear-gradient]
|
[react-native.linear-gradient :as linear-gradient]
|
||||||
[status-im2.contexts.onboarding.common.background.style :as style]))
|
[status-im2.contexts.onboarding.common.style :as style]))
|
||||||
|
|
||||||
(defn view
|
(defn view
|
||||||
[dark-overlay?]
|
[dark-overlay?]
|
||||||
[rn/view
|
[rn/view
|
||||||
{:style style/background-container}
|
{:style style/background-container}
|
||||||
|
;; Todo - add carousel component as background once ready
|
||||||
|
;; https://github.com/status-im/status-mobile/issues/15012
|
||||||
[rn/image
|
[rn/image
|
||||||
{:blur-radius (if dark-overlay? 13 0)
|
{:blur-radius (if dark-overlay? 13 0)
|
||||||
:style {:flex 1}
|
:style {:flex 1}
|
||||||
;; Todo - get background image from sub using carousel index on landing page
|
|
||||||
:source (resources/get-image :onboarding-bg-1)}]
|
:source (resources/get-image :onboarding-bg-1)}]
|
||||||
[linear-gradient/linear-gradient
|
[linear-gradient/linear-gradient
|
||||||
{:colors [(if dark-overlay? (colors/custom-color :yin 50) "#000716")
|
{:colors [(if dark-overlay? (colors/custom-color :yin 50) "#000716")
|
||||||
@@ -51,38 +51,41 @@
|
|||||||
|
|
||||||
(defn view
|
(defn view
|
||||||
[]
|
[]
|
||||||
(reagent/with-let [carousel-index (reagent/atom 0)
|
(reagent/with-let
|
||||||
interval-id (js/setInterval #(swap! carousel-index set-index)
|
[carousel-index (reagent/atom 0)
|
||||||
1500)]
|
interval-id
|
||||||
[rn/view {:style style/page-container}
|
(js/setInterval
|
||||||
[carousel @carousel-index]
|
#(swap! carousel-index set-index)
|
||||||
[rn/image
|
1500)]
|
||||||
{:style style/page-image
|
[rn/view {:style style/page-container}
|
||||||
:source (get-in carousels [@carousel-index :image])}]
|
[carousel @carousel-index]
|
||||||
[quo/drawer-buttons
|
[rn/image
|
||||||
{:top-card {:on-press (fn []
|
{:style style/page-image
|
||||||
(rf/dispatch [:navigate-to :sign-in])
|
:source (get-in carousels [@carousel-index :image])}]
|
||||||
(rf/dispatch [:hide-terms-of-services-opt-in-screen]))
|
[quo/drawer-buttons
|
||||||
:heading (i18n/label :t/sign-in)
|
{:top-card {:on-press (fn []
|
||||||
:accessibility-label :already-use-status-button}
|
(rf/dispatch [:navigate-to :new-to-status])
|
||||||
:bottom-card {:on-press (fn []
|
(rf/dispatch [:hide-terms-of-services-opt-in-screen]))
|
||||||
(rf/dispatch [:navigate-to :new-to-status])
|
:heading (i18n/label :t/sign-in)
|
||||||
(rf/dispatch [:hide-terms-of-services-opt-in-screen]))
|
:accessibility-label :already-use-status-button}
|
||||||
:heading (i18n/label :t/new-to-status)
|
:bottom-card {:on-press (fn []
|
||||||
:accessibility-label :new-to-status-button}}
|
(rf/dispatch [:navigate-to :new-to-status])
|
||||||
(i18n/label :t/you-already-use-status)
|
(rf/dispatch [:hide-terms-of-services-opt-in-screen]))
|
||||||
|
:heading (i18n/label :t/new-to-status)
|
||||||
|
:accessibility-label :new-to-status-button}}
|
||||||
|
(i18n/label :t/you-already-use-status)
|
||||||
|
[quo/text
|
||||||
|
{:style style/text-container}
|
||||||
[quo/text
|
[quo/text
|
||||||
{:style style/text-container}
|
{:size :paragraph-2
|
||||||
[quo/text
|
:style style/plain-text
|
||||||
{:size :paragraph-2
|
:weight :semi-bold}
|
||||||
:style style/plain-text
|
(i18n/label :t/by-continuing-you-accept)]
|
||||||
:weight :semi-bold}
|
[quo/text
|
||||||
(i18n/label :t/by-continuing-you-accept)]
|
{:on-press #(rf/dispatch [:open-modal :privacy-policy])
|
||||||
[quo/text
|
:size :paragraph-2
|
||||||
{:on-press #(rf/dispatch [:open-modal :privacy-policy])
|
:style style/highlighted-text
|
||||||
:size :paragraph-2
|
:weight :semi-bold}
|
||||||
:style style/highlighted-text
|
(i18n/label :t/terms-of-service)]]]]
|
||||||
:weight :semi-bold}
|
(finally
|
||||||
(i18n/label :t/terms-of-service)]]]]
|
(js/clearInterval interval-id))))
|
||||||
(finally
|
|
||||||
(js/clearInterval interval-id))))
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
(ns status-im2.contexts.onboarding.common.background.style
|
(ns status-im2.contexts.onboarding.common.style
|
||||||
(:require [quo2.foundations.colors :as colors]))
|
(:require [quo2.foundations.colors :as colors]))
|
||||||
|
|
||||||
(def background-container
|
(def background-container
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.create-password.style
|
|
||||||
(:require [quo2.foundations.colors :as colors]
|
|
||||||
[react-native.platform :as platform]))
|
|
||||||
|
|
||||||
(def navigation-bar {:height 56})
|
|
||||||
|
|
||||||
(def page-container
|
|
||||||
{:padding-top (if platform/ios? 44 0)
|
|
||||||
:position :absolute
|
|
||||||
:top 0
|
|
||||||
:bottom 0
|
|
||||||
:left 0
|
|
||||||
:right 0
|
|
||||||
:background-color colors/neutral-80-opa-80-blur})
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.create-password.view
|
|
||||||
(:require [quo2.core :as quo]
|
|
||||||
[quo2.foundations.colors :as colors]
|
|
||||||
[react-native.core :as rn]
|
|
||||||
[status-im2.contexts.onboarding.create-password.style :as style]
|
|
||||||
[utils.i18n :as i18n]
|
|
||||||
[status-im2.contexts.onboarding.common.background.view :as background]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
(defn navigation-bar
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/navigation-bar}
|
|
||||||
[quo/page-nav
|
|
||||||
{:align-mid? true
|
|
||||||
:mid-section {:type :text-only :main-text ""}
|
|
||||||
:left-section {:type :blur-bg
|
|
||||||
:icon :i/arrow-left
|
|
||||||
:icon-override-theme :dark
|
|
||||||
:on-press #(rf/dispatch [:navigate-back])}
|
|
||||||
:right-section-buttons [{:type :blur-bg
|
|
||||||
:icon :i/info
|
|
||||||
:icon-override-theme :dark
|
|
||||||
:on-press #(js/alert "Pending")}]}]])
|
|
||||||
|
|
||||||
(defn page
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/page-container}
|
|
||||||
[navigation-bar]
|
|
||||||
[rn/view {:style {:padding-horizontal 20}}
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-1
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "Create profile password"]
|
|
||||||
[quo/button
|
|
||||||
{:on-press #(rf/dispatch [:navigate-to :enable-biometrics])
|
|
||||||
:style {}} (i18n/label :t/continue)]]])
|
|
||||||
|
|
||||||
(defn create-password
|
|
||||||
[]
|
|
||||||
[rn/view {:style {:flex 1}}
|
|
||||||
[background/view true]
|
|
||||||
[page]])
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.create-profile.style
|
|
||||||
(:require [quo2.foundations.colors :as colors]
|
|
||||||
[react-native.platform :as platform]))
|
|
||||||
|
|
||||||
(def page-container
|
|
||||||
{:padding-top (if platform/ios? 44 0)
|
|
||||||
:position :absolute
|
|
||||||
:top 0
|
|
||||||
:bottom 0
|
|
||||||
:left 0
|
|
||||||
:right 0
|
|
||||||
:background-color colors/neutral-80-opa-80-blur})
|
|
||||||
|
|
||||||
(def navigation-bar {:height 56})
|
|
||||||
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.create-profile.view
|
|
||||||
(:require [quo2.core :as quo]
|
|
||||||
[quo2.foundations.colors :as colors]
|
|
||||||
[react-native.core :as rn]
|
|
||||||
[status-im2.contexts.onboarding.create-profile.style :as style]
|
|
||||||
[utils.i18n :as i18n]
|
|
||||||
[status-im2.contexts.onboarding.common.background.view :as background]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
(defn navigation-bar
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/navigation-bar}
|
|
||||||
[quo/page-nav
|
|
||||||
{:align-mid? true
|
|
||||||
:mid-section {:type :text-only :main-text ""}
|
|
||||||
:left-section {:type :blur-bg
|
|
||||||
:icon :i/arrow-left
|
|
||||||
:icon-override-theme :dark
|
|
||||||
:on-press #(rf/dispatch [:navigate-back])}}]])
|
|
||||||
|
|
||||||
(defn page
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/page-container}
|
|
||||||
[navigation-bar]
|
|
||||||
[rn/view {:style {:padding-horizontal 20}}
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-1
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "Create Profile"]
|
|
||||||
[quo/button
|
|
||||||
{:on-press #(rf/dispatch [:navigate-to :create-profile-password])
|
|
||||||
:style {}} (i18n/label :t/continue)]]])
|
|
||||||
|
|
||||||
(defn create-profile
|
|
||||||
[]
|
|
||||||
[rn/view {:style {:flex 1}}
|
|
||||||
[background/view true]
|
|
||||||
[page]])
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.enable-biometrics.style
|
|
||||||
(:require [quo2.foundations.colors :as colors]
|
|
||||||
[react-native.platform :as platform]))
|
|
||||||
|
|
||||||
(def page-container
|
|
||||||
{:padding-top (if platform/ios? 44 0)
|
|
||||||
:position :absolute
|
|
||||||
:top 0
|
|
||||||
:bottom 0
|
|
||||||
:left 0
|
|
||||||
:right 0
|
|
||||||
:background-color colors/neutral-80-opa-80-blur})
|
|
||||||
|
|
||||||
(def navigation-bar {:height 56})
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.enable-biometrics.view
|
|
||||||
(:require [quo2.core :as quo]
|
|
||||||
[quo2.foundations.colors :as colors]
|
|
||||||
[react-native.core :as rn]
|
|
||||||
[status-im2.contexts.onboarding.enable-biometrics.style :as style]
|
|
||||||
[utils.i18n :as i18n]
|
|
||||||
[status-im2.contexts.onboarding.common.background.view :as background]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
(defn navigation-bar
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/navigation-bar}
|
|
||||||
[quo/page-nav
|
|
||||||
{:align-mid? true
|
|
||||||
:mid-section {:type :text-only :main-text ""}
|
|
||||||
}]])
|
|
||||||
|
|
||||||
(defn page
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/page-container}
|
|
||||||
[navigation-bar]
|
|
||||||
[rn/view {:style {:padding-horizontal 20}}
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-1
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "Enable-biometrics"]
|
|
||||||
[quo/button
|
|
||||||
{:on-press #(rf/dispatch [:navigate-to :enable-notifications])
|
|
||||||
:type :grey
|
|
||||||
:override-theme :dark
|
|
||||||
:style {}} (i18n/label :t/continue)]]])
|
|
||||||
|
|
||||||
(defn enable-biometrics
|
|
||||||
[]
|
|
||||||
[rn/view {:style {:flex 1}}
|
|
||||||
[background/view true]
|
|
||||||
[page]])
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.enable-notifications.style
|
|
||||||
(:require [quo2.foundations.colors :as colors]
|
|
||||||
[react-native.platform :as platform]))
|
|
||||||
|
|
||||||
(def page-container
|
|
||||||
{:padding-top (if platform/ios? 44 0)
|
|
||||||
:position :absolute
|
|
||||||
:top 0
|
|
||||||
:bottom 0
|
|
||||||
:left 0
|
|
||||||
:right 0
|
|
||||||
:background-color colors/neutral-80-opa-80-blur})
|
|
||||||
|
|
||||||
(def navigation-bar {:height 56})
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.enable-notifications.view
|
|
||||||
(:require [quo2.core :as quo]
|
|
||||||
[quo2.foundations.colors :as colors]
|
|
||||||
[react-native.core :as rn]
|
|
||||||
[status-im2.contexts.onboarding.enable-notifications.style :as style]
|
|
||||||
[utils.i18n :as i18n]
|
|
||||||
[status-im2.contexts.onboarding.common.background.view :as background]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
(defn navigation-bar
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/navigation-bar}
|
|
||||||
[quo/page-nav
|
|
||||||
{:align-mid? true
|
|
||||||
:mid-section {:type :text-only :main-text ""}
|
|
||||||
}]])
|
|
||||||
|
|
||||||
(defn page
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/page-container}
|
|
||||||
[navigation-bar]
|
|
||||||
[rn/view {:style {:padding-horizontal 20}}
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-1
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "Enable-notifications"]
|
|
||||||
[quo/button
|
|
||||||
{:on-press #(rf/dispatch [:navigate-to :shell-stack])
|
|
||||||
:type :grey
|
|
||||||
:override-theme :dark
|
|
||||||
:style {}} (i18n/label :t/continue)]]])
|
|
||||||
|
|
||||||
(defn enable-notifications
|
|
||||||
[]
|
|
||||||
[rn/view {:style {:flex 1}}
|
|
||||||
[background/view true]
|
|
||||||
[page]])
|
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
(* 2 56) ;; two other list items
|
(* 2 56) ;; two other list items
|
||||||
(* 2 16) ;; spacing between items
|
(* 2 16) ;; spacing between items
|
||||||
220) ;; extra spacing (top bar)
|
220) ;; extra spacing (top bar)
|
||||||
:on-press #(rf/dispatch [:navigate-to :create-profile])}]
|
:on-press #(rf/dispatch [:generate-and-derive-addresses])}]
|
||||||
|
|
||||||
[rn/view {:style style/subtitle-container}
|
[rn/view {:style style/subtitle-container}
|
||||||
[quo/text
|
[quo/text
|
||||||
@@ -59,14 +59,6 @@
|
|||||||
(i18n/label :t/experienced-web3)]]
|
(i18n/label :t/experienced-web3)]]
|
||||||
|
|
||||||
[rn/view {:style style/suboptions}
|
[rn/view {:style style/suboptions}
|
||||||
[quo/small-option-card
|
|
||||||
{:variant :icon
|
|
||||||
:title "Temporary (old) generate keys flow"
|
|
||||||
:subtitle "generate keys"
|
|
||||||
:image (resources/get-image :use-keycard)
|
|
||||||
:accessibility-label :generate-old-key
|
|
||||||
:on-press #(rf/dispatch [:generate-and-derive-addresses])}]
|
|
||||||
[rn/view {:style style/space-between-suboptions}]
|
|
||||||
[quo/small-option-card
|
[quo/small-option-card
|
||||||
{:variant :icon
|
{:variant :icon
|
||||||
:title (i18n/label :t/use-recovery-phrase)
|
:title (i18n/label :t/use-recovery-phrase)
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
(ns status-im2.contexts.onboarding.profiles.view
|
(ns status-im2.contexts.onboarding.profiles.view
|
||||||
(:require [status-im2.contexts.onboarding.common.background.view :as background]))
|
(:require [status-im2.contexts.onboarding.common.background :as background]))
|
||||||
|
|
||||||
(defn views
|
(defn views
|
||||||
[]
|
[]
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.sign-in.style
|
|
||||||
(:require [quo2.foundations.colors :as colors]
|
|
||||||
[react-native.platform :as platform]))
|
|
||||||
|
|
||||||
(def navigation-bar {:height 56})
|
|
||||||
|
|
||||||
(def page-container
|
|
||||||
{:padding-top (if platform/ios? 44 0)
|
|
||||||
:position :absolute
|
|
||||||
:top 0
|
|
||||||
:bottom 0
|
|
||||||
:left 0
|
|
||||||
:right 0
|
|
||||||
:background-color colors/neutral-80-opa-80-blur})
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.sign-in.view
|
|
||||||
(:require [quo2.core :as quo]
|
|
||||||
[quo2.foundations.colors :as colors]
|
|
||||||
[react-native.core :as rn]
|
|
||||||
[status-im2.contexts.onboarding.sign-in.style :as style]
|
|
||||||
[utils.i18n :as i18n]
|
|
||||||
[status-im2.contexts.onboarding.common.background.view :as background]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
(defn navigation-bar
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/navigation-bar}
|
|
||||||
[quo/page-nav
|
|
||||||
{:align-mid? true
|
|
||||||
:mid-section {:type :text-only :main-text ""}
|
|
||||||
:left-section {:type :blur-bg
|
|
||||||
:icon :i/arrow-left
|
|
||||||
:icon-override-theme :dark
|
|
||||||
:on-press #(rf/dispatch [:navigate-back])}
|
|
||||||
:right-section-buttons [{:type :blur-bg
|
|
||||||
:icon :i/info
|
|
||||||
:icon-override-theme :dark
|
|
||||||
:on-press #(js/alert "Pending")}]}]])
|
|
||||||
|
|
||||||
(defn page
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/page-container}
|
|
||||||
[navigation-bar]
|
|
||||||
[rn/view {:style {:padding-horizontal 20}}
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-1
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "Sign in by syncing"]
|
|
||||||
[quo/button
|
|
||||||
{:on-press #(rf/dispatch [:navigate-to :syncing-devices])
|
|
||||||
:style {}} (i18n/label :t/continue)]]])
|
|
||||||
|
|
||||||
(defn sign-in
|
|
||||||
[]
|
|
||||||
[rn/view {:style {:flex 1}}
|
|
||||||
[background/view true]
|
|
||||||
[page]])
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.syncing.syncing-devices.style
|
|
||||||
(:require [quo2.foundations.colors :as colors]
|
|
||||||
[react-native.platform :as platform]))
|
|
||||||
|
|
||||||
(def navigation-bar {:height 56})
|
|
||||||
|
|
||||||
(def page-container
|
|
||||||
{:padding-top (if platform/ios? 44 0)
|
|
||||||
:position :absolute
|
|
||||||
:top 0
|
|
||||||
:bottom 0
|
|
||||||
:left 0
|
|
||||||
:right 0
|
|
||||||
:background-color colors/neutral-80-opa-80-blur})
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
(ns status-im2.contexts.onboarding.syncing.syncing-devices.view
|
|
||||||
(:require [quo2.core :as quo]
|
|
||||||
[quo2.foundations.colors :as colors]
|
|
||||||
[react-native.core :as rn]
|
|
||||||
[status-im2.contexts.onboarding.syncing.syncing-devices.style :as style]
|
|
||||||
[utils.i18n :as i18n]
|
|
||||||
[status-im2.contexts.onboarding.common.background.view :as background]
|
|
||||||
[utils.re-frame :as rf]))
|
|
||||||
|
|
||||||
|
|
||||||
(defn navigation-bar
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/navigation-bar}
|
|
||||||
[quo/page-nav
|
|
||||||
{:align-mid? true
|
|
||||||
:mid-section {:type :text-only :main-text ""}
|
|
||||||
:left-section {:type :blur-bg
|
|
||||||
:icon :i/arrow-left
|
|
||||||
:icon-override-theme :dark
|
|
||||||
:on-press #(rf/dispatch [:navigate-back])}
|
|
||||||
:right-section-buttons [{:type :blur-bg
|
|
||||||
:icon :i/info
|
|
||||||
:icon-override-theme :dark
|
|
||||||
:on-press #(js/alert "Pending")}]}]])
|
|
||||||
|
|
||||||
(defn page
|
|
||||||
[]
|
|
||||||
[rn/view {:style style/page-container}
|
|
||||||
[navigation-bar]
|
|
||||||
[rn/view {:style {:padding-horizontal 20}}
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-1
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "Syncing devices..."]
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-2
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "will show sync complete if successful"]
|
|
||||||
[quo/text
|
|
||||||
{:size :heading-2
|
|
||||||
:weight :semi-bold
|
|
||||||
:style {:color colors/white}} "will show sync failed if unsuccessful"]
|
|
||||||
[quo/button
|
|
||||||
{:on-press #(rf/dispatch [:navigate-to :enable-notifications])
|
|
||||||
:style {}} (i18n/label :t/continue)]]])
|
|
||||||
|
|
||||||
(defn syncing-devices
|
|
||||||
[]
|
|
||||||
[rn/view {:style {:flex 1}}
|
|
||||||
[background/view true]
|
|
||||||
[page]])
|
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
(ns status-im2.contexts.quo-preview.inputs.input
|
(ns status-im2.contexts.quo-preview.inputs.input
|
||||||
(:require [clojure.string :as string]
|
(:require
|
||||||
[quo2.core :as quo]
|
[clojure.string :as string]
|
||||||
[quo2.foundations.colors :as colors]
|
[quo2.core :as quo]
|
||||||
[react-native.core :as rn]
|
[quo2.foundations.colors :as colors]
|
||||||
[reagent.core :as reagent]
|
[react-native.core :as rn]
|
||||||
[status-im2.contexts.quo-preview.preview :as preview]))
|
[reagent.core :as reagent]
|
||||||
|
[status-im2.contexts.quo-preview.preview :as preview]))
|
||||||
|
|
||||||
(def descriptor
|
(def descriptor
|
||||||
[{:label "Type:"
|
[{:label "Type:"
|
||||||
@@ -14,30 +15,31 @@
|
|||||||
:value "Text"}
|
:value "Text"}
|
||||||
{:key :password
|
{:key :password
|
||||||
:value "Password"}]}
|
:value "Password"}]}
|
||||||
{:label "Blur:"
|
{:label "Variant:"
|
||||||
:key :blur?
|
:key :variant
|
||||||
:type :boolean}
|
|
||||||
{:label "Override Theme:"
|
|
||||||
:key :override-theme
|
|
||||||
:type :select
|
:type :select
|
||||||
:options [{:key :dark
|
:options [{:key :light
|
||||||
|
:value "Light"}
|
||||||
|
{:key :dark
|
||||||
:value "Dark"}
|
:value "Dark"}
|
||||||
{:key :light
|
{:key :light-blur
|
||||||
:value "Light"}]}
|
:value "Light blur"}
|
||||||
|
{:key :dark-blur
|
||||||
|
:value "Dark blur"}]}
|
||||||
{:label "Error:"
|
{:label "Error:"
|
||||||
:key :error?
|
:key :error
|
||||||
:type :boolean}
|
:type :boolean}
|
||||||
{:label "Icon:"
|
{:label "Icon:"
|
||||||
:key :icon-name
|
:key :icon-name
|
||||||
:type :boolean}
|
:type :boolean}
|
||||||
{:label "Disabled:"
|
{:label "Disabled:"
|
||||||
:key :disabled?
|
:key :disabled
|
||||||
:type :boolean}
|
:type :boolean}
|
||||||
{:label "Clearable:"
|
{:label "Clearable:"
|
||||||
:key :clearable?
|
:key :clearable
|
||||||
:type :boolean}
|
:type :boolean}
|
||||||
{:label "Small:"
|
{:label "Small:"
|
||||||
:key :small?
|
:key :small
|
||||||
:type :boolean}
|
:type :boolean}
|
||||||
{:label "Multiline:"
|
{:label "Multiline:"
|
||||||
:key :multiline
|
:key :multiline
|
||||||
@@ -64,8 +66,7 @@
|
|||||||
(defn cool-preview
|
(defn cool-preview
|
||||||
[]
|
[]
|
||||||
(let [state (reagent/atom {:type :text
|
(let [state (reagent/atom {:type :text
|
||||||
:blur false
|
:variant :light-blur
|
||||||
:override-theme nil
|
|
||||||
:placeholder "Type something"
|
:placeholder "Type something"
|
||||||
:error false
|
:error false
|
||||||
:icon-name false
|
:icon-name false
|
||||||
@@ -74,24 +75,29 @@
|
|||||||
:on-char-limit-reach #(js/alert
|
:on-char-limit-reach #(js/alert
|
||||||
(str "Char limit reached: " %))})]
|
(str "Char limit reached: " %))})]
|
||||||
(fn []
|
(fn []
|
||||||
(let [blank-label? (string/blank? (:label @state))
|
(let [background-color (case (:variant @state)
|
||||||
icon? (boolean (:icon-name @state))
|
:dark-blur "rgb(39, 61, 81)"
|
||||||
button-props {:on-press #(js/alert "Button pressed!")
|
:dark colors/neutral-95
|
||||||
:text "My button"}]
|
:light-blur "rgb(233,247,247)"
|
||||||
|
:white)
|
||||||
|
blank-label? (string/blank? (:label @state))
|
||||||
|
icon? (boolean (:icon-name @state))
|
||||||
|
button-props {:on-press #(js/alert "Button pressed!")
|
||||||
|
:text "My button"}]
|
||||||
[rn/touchable-without-feedback {:on-press rn/dismiss-keyboard!}
|
[rn/touchable-without-feedback {:on-press rn/dismiss-keyboard!}
|
||||||
[rn/view {:style {:padding-bottom 150}}
|
[rn/view {:style {:padding-bottom 150}}
|
||||||
[rn/view {:style {:flex 1}}
|
[rn/view {:style {:flex 1}}
|
||||||
[preview/customizer state descriptor]]
|
[preview/customizer state descriptor]]
|
||||||
[preview/blur-view
|
[rn/view
|
||||||
{:style {:flex 1
|
{:style {:flex 1
|
||||||
:align-items :center
|
:align-items :center
|
||||||
:margin-vertical 20}
|
:padding-vertical 60
|
||||||
:show-blur-background? (:blur? @state)}
|
:background-color background-color}}
|
||||||
[rn/view {:style {:width 300}}
|
[rn/view {:style {:width 300}}
|
||||||
[quo/input
|
[quo/input
|
||||||
(cond-> @state
|
(cond-> @state
|
||||||
:always (assoc
|
:always (assoc
|
||||||
:on-clear? #(swap! state assoc :value "")
|
:on-clear #(swap! state assoc :value "")
|
||||||
:on-change-text #(swap! state assoc :value %))
|
:on-change-text #(swap! state assoc :value %))
|
||||||
(:button @state) (assoc :button button-props)
|
(:button @state) (assoc :button button-props)
|
||||||
blank-label? (dissoc :label)
|
blank-label? (dissoc :label)
|
||||||
|
|||||||
@@ -1,174 +1,129 @@
|
|||||||
(ns status-im2.navigation.screens
|
(ns status-im2.navigation.screens
|
||||||
(:require
|
(:require [utils.i18n :as i18n] ;; TODO remove when not used anymore
|
||||||
[utils.i18n :as i18n] ;; TODO remove when not used anymore
|
[quo2.foundations.colors :as colors]
|
||||||
[quo2.foundations.colors :as colors]
|
[react-native.platform :as platform]
|
||||||
[react-native.platform :as platform]
|
[status-im.ui.screens.screens :as old-screens]
|
||||||
[status-im.ui.screens.screens :as old-screens]
|
[status-im2.config :as config]
|
||||||
[status-im2.config :as config]
|
[status-im2.contexts.activity-center.view :as activity-center]
|
||||||
[status-im2.contexts.activity-center.view :as activity-center]
|
[status-im2.contexts.add-new-contact.views :as add-new-contact]
|
||||||
[status-im2.contexts.add-new-contact.views :as add-new-contact]
|
[status-im2.contexts.chat.lightbox.view :as lightbox]
|
||||||
[status-im2.contexts.chat.lightbox.view :as lightbox]
|
[status-im2.contexts.chat.messages.view :as chat]
|
||||||
[status-im2.contexts.chat.messages.view :as chat]
|
[status-im2.contexts.chat.photo-selector.album-selector.view :as album-selector]
|
||||||
[status-im2.contexts.chat.photo-selector.album-selector.view :as album-selector]
|
[status-im2.contexts.chat.photo-selector.view :as photo-selector]
|
||||||
[status-im2.contexts.chat.photo-selector.view :as photo-selector]
|
[status-im2.contexts.communities.discover.view :as communities.discover]
|
||||||
[status-im2.contexts.communities.discover.view :as communities.discover]
|
[status-im2.contexts.communities.overview.view :as communities.overview]
|
||||||
[status-im2.contexts.communities.overview.view :as communities.overview]
|
[status-im2.contexts.onboarding.common.intro.view :as intro]
|
||||||
[status-im2.contexts.onboarding.common.intro.view :as intro]
|
[status-im2.contexts.onboarding.new-to-status.view :as new-to-status]
|
||||||
[status-im2.contexts.onboarding.create-password.view :as create-password]
|
[status-im2.contexts.onboarding.profiles.view :as profiles]
|
||||||
[status-im2.contexts.onboarding.create-profile.view :as create-profile]
|
[status-im2.contexts.quo-preview.main :as quo.preview]
|
||||||
[status-im2.contexts.onboarding.enable-biometrics.view :as enable-biometrics]
|
[status-im2.contexts.shell.view :as shell]
|
||||||
[status-im2.contexts.onboarding.enable-notifications.view :as enable-notifications]
|
[status-im2.contexts.syncing.view :as settings-syncing]))
|
||||||
[status-im2.contexts.onboarding.new-to-status.view :as new-to-status]
|
|
||||||
[status-im2.contexts.onboarding.sign-in.view :as sign-in]
|
|
||||||
[status-im2.contexts.onboarding.syncing.syncing-devices.view :as syncing-devices]
|
|
||||||
[status-im2.contexts.onboarding.profiles.view :as profiles]
|
|
||||||
[status-im2.contexts.quo-preview.main :as quo.preview]
|
|
||||||
[status-im2.contexts.shell.view :as shell]
|
|
||||||
[status-im2.contexts.syncing.view :as settings-syncing]))
|
|
||||||
|
|
||||||
(def components
|
(def components
|
||||||
[])
|
[])
|
||||||
|
|
||||||
(def transparent-screen-options
|
(def transparent-screen-options
|
||||||
(merge
|
(merge
|
||||||
{:topBar {:visible false}
|
{:topBar {:visible false}
|
||||||
:modalPresentationStyle :overCurrentContext
|
:modalPresentationStyle :overCurrentContext
|
||||||
:layout {:componentBackgroundColor :transparent
|
:layout {:componentBackgroundColor :transparent
|
||||||
:orientation :portrait
|
:orientation :portrait
|
||||||
:backgroundColor :transparent}}
|
:backgroundColor :transparent}}
|
||||||
(if platform/android?
|
(if platform/android?
|
||||||
{:navigationBar {:backgroundColor colors/neutral-100}
|
{:navigationBar {:backgroundColor colors/neutral-100}
|
||||||
:statusBar {:backgroundColor :transparent
|
:statusBar {:backgroundColor :transparent
|
||||||
:style :light
|
:style :light
|
||||||
:drawBehind true}}
|
:drawBehind true}}
|
||||||
{:statusBar {:style :light}})))
|
{:statusBar {:style :light}})))
|
||||||
|
|
||||||
(defn screens
|
(defn screens
|
||||||
[]
|
[]
|
||||||
(concat
|
(concat
|
||||||
(old-screens/screens)
|
(old-screens/screens)
|
||||||
[{:name :intro
|
[{:name :intro
|
||||||
:options {:topBar {:visible false}}
|
:options {:topBar {:visible false}}
|
||||||
:insets {:top false}
|
:insets {:top false}
|
||||||
:component intro/view}
|
:component intro/view}
|
||||||
|
|
||||||
{:name :activity-center
|
{:name :activity-center
|
||||||
:insets {:top false}
|
:insets {:top false}
|
||||||
:options transparent-screen-options
|
:options transparent-screen-options
|
||||||
:component activity-center/view}
|
:component activity-center/view}
|
||||||
|
|
||||||
{:name :shell-stack
|
{:name :shell-stack
|
||||||
:insets {:top false}
|
:insets {:top false}
|
||||||
:component shell/shell-stack}
|
:component shell/shell-stack}
|
||||||
|
|
||||||
{:name :chat
|
{:name :chat
|
||||||
:options {:topBar {:visible false}}
|
:options {:topBar {:visible false}}
|
||||||
:component chat/chat}
|
:component chat/chat}
|
||||||
|
|
||||||
{:name :lightbox
|
{:name :lightbox
|
||||||
:insets {:top false :bottom false}
|
:insets {:top false :bottom false}
|
||||||
:options {:topBar {:visible false}
|
:options {:topBar {:visible false}
|
||||||
:statusBar {:backgroundColor :transparent
|
:statusBar {:backgroundColor :transparent
|
||||||
:style :light
|
:style :light
|
||||||
:animate true
|
:animate true
|
||||||
:drawBehind true
|
:drawBehind true
|
||||||
:translucent true}
|
:translucent true}
|
||||||
:navigationBar {:backgroundColor colors/black}
|
:navigationBar {:backgroundColor colors/black}
|
||||||
:layout {:componentBackgroundColor :transparent
|
:layout {:componentBackgroundColor :transparent
|
||||||
:backgroundColor :transparent}
|
:backgroundColor :transparent}
|
||||||
:animations {:push {:sharedElementTransitions [{:fromId :shared-element
|
:animations {:push {:sharedElementTransitions [{:fromId :shared-element
|
||||||
:toId :shared-element
|
:toId :shared-element
|
||||||
:interpolation {:type :decelerate
|
:interpolation {:type :decelerate
|
||||||
:factor 1.5}}]}
|
:factor 1.5}}]}
|
||||||
:pop {:sharedElementTransitions [{:fromId :shared-element
|
:pop {:sharedElementTransitions [{:fromId :shared-element
|
||||||
:toId :shared-element
|
:toId :shared-element
|
||||||
:interpolation {:type
|
:interpolation {:type
|
||||||
:decelerate
|
:decelerate
|
||||||
:factor 1.5}}]}}}
|
:factor 1.5}}]}}}
|
||||||
:component lightbox/lightbox}
|
:component lightbox/lightbox}
|
||||||
{:name :photo-selector
|
{:name :photo-selector
|
||||||
:options {:topBar {:visible false}}
|
:insets {:top false}
|
||||||
:component photo-selector/photo-selector}
|
:options {:topBar {:visible false}
|
||||||
|
:layout {:componentBackgroundColor :transparent
|
||||||
|
:backgroundColor :transparent}
|
||||||
|
:modalPresentationStyle :overCurrentContext}
|
||||||
|
:component photo-selector/photo-selector}
|
||||||
|
|
||||||
{:name :album-selector
|
{:name :album-selector
|
||||||
:options {:topBar {:visible false}
|
:options {:topBar {:visible false}
|
||||||
:modalPresentationStyle (if platform/ios? :overCurrentContext :none)}
|
:modalPresentationStyle (if platform/ios? :overCurrentContext :none)}
|
||||||
:component album-selector/album-selector}
|
:component album-selector/album-selector}
|
||||||
|
|
||||||
{:name :new-contact
|
{:name :new-contact
|
||||||
:options {:topBar {:visible false}}
|
:options {:topBar {:visible false}}
|
||||||
:component add-new-contact/new-contact}
|
:component add-new-contact/new-contact}
|
||||||
|
|
||||||
{:name :discover-communities
|
{:name :discover-communities
|
||||||
:options {:topBar {:visible false}}
|
:options {:topBar {:visible false}}
|
||||||
:component communities.discover/discover}
|
:component communities.discover/discover}
|
||||||
|
|
||||||
{:name :community-overview
|
{:name :community-overview
|
||||||
:options {:topBar {:visible false}}
|
:options {:topBar {:visible false}}
|
||||||
:component communities.overview/overview}
|
:component communities.overview/overview}
|
||||||
|
|
||||||
{:name :settings-syncing
|
{:name :settings-syncing
|
||||||
:insets {:bottom true}
|
:insets {:bottom true}
|
||||||
:options {:topBar {:title {:text (i18n/label :t/syncing)}}}
|
:options {:topBar {:title {:text (i18n/label :t/syncing)}}}
|
||||||
:component settings-syncing/views}
|
:component settings-syncing/views}
|
||||||
|
|
||||||
;; Onboarding
|
;; Onboarding
|
||||||
{:name :profiles
|
{:name :profiles
|
||||||
:insets {:top false}
|
:insets {:top false}
|
||||||
:component profiles/views}
|
:component profiles/views}
|
||||||
|
|
||||||
;; Onboarding - new to Status
|
;; Onboarding - new to Status
|
||||||
{:name :new-to-status
|
{:name :new-to-status
|
||||||
:options {:statusBar {:style :light}
|
:options {:statusBar {:style :light}
|
||||||
:topBar {:visible false}
|
:topBar {:visible false}
|
||||||
:navigationBar {:backgroundColor colors/black}}
|
:navigationBar {:backgroundColor colors/black}}
|
||||||
:insets {:top false}
|
:insets {:top false}
|
||||||
:component new-to-status/new-to-status}
|
:component new-to-status/new-to-status}]
|
||||||
|
|
||||||
{:name :create-profile
|
(when config/quo-preview-enabled?
|
||||||
:options {:statusBar {:style :light}
|
quo.preview/screens)
|
||||||
:topBar {:visible false}
|
|
||||||
:navigationBar {:backgroundColor colors/black}}
|
|
||||||
:insets {:top false}
|
|
||||||
:component create-profile/create-profile}
|
|
||||||
|
|
||||||
{:name :create-profile-password
|
(when config/quo-preview-enabled?
|
||||||
:options {:statusBar {:style :light}
|
quo.preview/main-screens)))
|
||||||
:topBar {:visible false}
|
|
||||||
:navigationBar {:backgroundColor colors/black}}
|
|
||||||
:insets {:top false}
|
|
||||||
:component create-password/create-password}
|
|
||||||
|
|
||||||
{:name :enable-biometrics
|
|
||||||
:options {:statusBar {:style :light}
|
|
||||||
:topBar {:visible false}
|
|
||||||
:navigationBar {:backgroundColor colors/black}}
|
|
||||||
:insets {:top false}
|
|
||||||
:component enable-biometrics/enable-biometrics}
|
|
||||||
|
|
||||||
{:name :enable-notifications
|
|
||||||
:options {:statusBar {:style :light}
|
|
||||||
:topBar {:visible false}
|
|
||||||
:navigationBar {:backgroundColor colors/black}}
|
|
||||||
:insets {:top false}
|
|
||||||
:component enable-notifications/enable-notifications}
|
|
||||||
|
|
||||||
{:name :sign-in
|
|
||||||
:options {:statusBar {:style :light}
|
|
||||||
:topBar {:visible false}
|
|
||||||
:navigationBar {:backgroundColor colors/black}}
|
|
||||||
:insets {:top false}
|
|
||||||
:component sign-in/sign-in}
|
|
||||||
|
|
||||||
{:name :syncing-devices
|
|
||||||
:options {:statusBar {:style :light}
|
|
||||||
:topBar {:visible false}
|
|
||||||
:navigationBar {:backgroundColor colors/black}}
|
|
||||||
:insets {:top false}
|
|
||||||
:component syncing-devices/syncing-devices}]
|
|
||||||
|
|
||||||
(when config/quo-preview-enabled?
|
|
||||||
quo.preview/screens)
|
|
||||||
|
|
||||||
(when config/quo-preview-enabled?
|
|
||||||
quo.preview/main-screens)))
|
|
||||||
|
|||||||
@@ -6,6 +6,15 @@
|
|||||||
[status-im2.constants :as constants]
|
[status-im2.constants :as constants]
|
||||||
[utils.i18n :as i18n]))
|
[utils.i18n :as i18n]))
|
||||||
|
|
||||||
|
(re-frame/reg-sub
|
||||||
|
:communities
|
||||||
|
:<- [:raw-communities]
|
||||||
|
:<- [:communities/enabled?]
|
||||||
|
(fn [[raw-communities communities-enabled?]]
|
||||||
|
(if communities-enabled?
|
||||||
|
raw-communities
|
||||||
|
[])))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:communities/fetching-community
|
:communities/fetching-community
|
||||||
:<- [:communities/resolve-community-info]
|
:<- [:communities/resolve-community-info]
|
||||||
@@ -72,13 +81,16 @@
|
|||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:communities/featured-communities
|
:communities/featured-communities
|
||||||
|
:<- [:communities/enabled?]
|
||||||
:<- [:search/home-filter]
|
:<- [:search/home-filter]
|
||||||
:<- [:communities]
|
:<- [:communities]
|
||||||
(fn [[search-filter communities]]
|
(fn [[communities-enabled? search-filter communities]]
|
||||||
(filterv
|
(filterv
|
||||||
(fn [{:keys [name]}]
|
(fn [{:keys [name id]}]
|
||||||
(or (empty? search-filter)
|
(and (or communities-enabled?
|
||||||
(string/includes? (string/lower-case (str name)) search-filter)))
|
(= id constants/status-community-id))
|
||||||
|
(or (empty? search-filter)
|
||||||
|
(string/includes? (string/lower-case (str name)) search-filter))))
|
||||||
(vals communities))))
|
(vals communities))))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
@@ -89,13 +101,17 @@
|
|||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:communities/communities
|
:communities/communities
|
||||||
|
:<- [:communities/enabled?]
|
||||||
:<- [:search/home-filter]
|
:<- [:search/home-filter]
|
||||||
:<- [:communities]
|
:<- [:communities]
|
||||||
(fn [[search-filter communities]]
|
(fn [[communities-enabled? search-filter communities]]
|
||||||
(filterv
|
(filterv
|
||||||
(fn [{:keys [name]}]
|
(fn [{:keys [name id]}]
|
||||||
(or (empty? search-filter)
|
(and
|
||||||
(string/includes? (string/lower-case (str name)) search-filter)))
|
(or communities-enabled?
|
||||||
|
(= id constants/status-community-id))
|
||||||
|
(or (empty? search-filter)
|
||||||
|
(string/includes? (string/lower-case (str name)) search-filter))))
|
||||||
(vals communities))))
|
(vals communities))))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
@@ -135,7 +151,7 @@
|
|||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:communities/home-item
|
:communities/home-item
|
||||||
(fn [[_ community-id]]
|
(fn [[_ community-id]]
|
||||||
[(re-frame/subscribe [:communities])
|
[(re-frame/subscribe [:raw-communities])
|
||||||
(re-frame/subscribe [:communities/unviewed-counts community-id])])
|
(re-frame/subscribe [:communities/unviewed-counts community-id])])
|
||||||
(fn [[communities counts] [_ identity]]
|
(fn [[communities counts] [_ identity]]
|
||||||
(community->home-item
|
(community->home-item
|
||||||
@@ -214,62 +230,31 @@
|
|||||||
(sort-by :position)
|
(sort-by :position)
|
||||||
(into []))))
|
(into []))))
|
||||||
|
|
||||||
(defn reduce-over-categories
|
|
||||||
[community-id
|
|
||||||
joined
|
|
||||||
categories
|
|
||||||
collapsed-categories
|
|
||||||
full-chats-data]
|
|
||||||
(fn [acc
|
|
||||||
[_ {:keys [name categoryID position id emoji can-post?]}]]
|
|
||||||
(let [category-id (if (seq categoryID) categoryID constants/empty-category-id)
|
|
||||||
{:keys [unviewed-messages-count
|
|
||||||
unviewed-mentions-count]} (get full-chats-data
|
|
||||||
(str community-id id))
|
|
||||||
acc-with-category (if (get acc category-id)
|
|
||||||
acc
|
|
||||||
(assoc acc
|
|
||||||
category-id
|
|
||||||
(assoc
|
|
||||||
(or (get categories category-id)
|
|
||||||
{:name (i18n/label :t/none)})
|
|
||||||
:collapsed? (get collapsed-categories
|
|
||||||
category-id)
|
|
||||||
:chats [])))
|
|
||||||
chat {:name name
|
|
||||||
:emoji emoji
|
|
||||||
:unread-messages? (pos? unviewed-messages-count)
|
|
||||||
:position position
|
|
||||||
:mentions-count (or unviewed-mentions-count 0)
|
|
||||||
:locked? (or (not joined)
|
|
||||||
(not can-post?))
|
|
||||||
:id id}]
|
|
||||||
(update-in acc-with-category [category-id :chats] conj chat))))
|
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:communities/categorized-channels
|
:communities/categorized-channels
|
||||||
(fn [[_ community-id]]
|
(fn [[_ community-id]]
|
||||||
[(re-frame/subscribe [:communities/community community-id])
|
[(re-frame/subscribe [:communities/community community-id])
|
||||||
(re-frame/subscribe [:chats/chats])
|
(re-frame/subscribe [:chats/chats])])
|
||||||
(re-frame/subscribe [:communities/collapsed-categories-for-community community-id])])
|
(fn [[{:keys [joined categories chats]} full-chats-data] [_ community-id]]
|
||||||
(fn [[{:keys [joined categories chats]} full-chats-data collapsed-categories] [_ community-id]]
|
(reduce
|
||||||
(let [reduce-fn (reduce-over-categories
|
(fn [acc [_ {:keys [name categoryID id emoji can-post?]}]]
|
||||||
community-id
|
(let [category (keyword
|
||||||
joined
|
(get-in categories
|
||||||
categories
|
[categoryID :name]
|
||||||
collapsed-categories
|
(i18n/label :t/none)))
|
||||||
full-chats-data)
|
{:keys [unviewed-messages-count unviewed-mentions-count]} (get full-chats-data
|
||||||
categories-and-chats
|
(str community-id id))]
|
||||||
(->>
|
(update acc
|
||||||
chats
|
category
|
||||||
(reduce
|
#(vec (conj %1 %2))
|
||||||
reduce-fn
|
{:name name
|
||||||
{})
|
:emoji emoji
|
||||||
(sort-by (comp :position second))
|
:unread-messages? (pos? unviewed-messages-count)
|
||||||
(map (fn [[k v]]
|
:mentions-count (or unviewed-mentions-count 0)
|
||||||
[k (update v :chats #(sort-by :position %))])))]
|
:locked? (or (not joined) (not can-post?))
|
||||||
|
:id id})))
|
||||||
categories-and-chats)))
|
{}
|
||||||
|
chats)))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:communities/users
|
:communities/users
|
||||||
@@ -279,9 +264,3 @@
|
|||||||
{:full-name "Marcus C"}
|
{:full-name "Marcus C"}
|
||||||
{:full-name "MNO PQR"}
|
{:full-name "MNO PQR"}
|
||||||
{:full-name "STU VWX"}]))
|
{:full-name "STU VWX"}]))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
|
||||||
:communities/collapsed-categories-for-community
|
|
||||||
:<- [:communities/collapsed-categories]
|
|
||||||
(fn [collapsed-categories [_ community-id]]
|
|
||||||
(get collapsed-categories community-id)))
|
|
||||||
|
|||||||
@@ -3,22 +3,25 @@
|
|||||||
[re-frame.db :as rf-db]
|
[re-frame.db :as rf-db]
|
||||||
[test-helpers.unit :as h]
|
[test-helpers.unit :as h]
|
||||||
status-im2.subs.communities
|
status-im2.subs.communities
|
||||||
[status-im2.constants :as constants]
|
|
||||||
[utils.re-frame :as rf]
|
[utils.re-frame :as rf]
|
||||||
[utils.i18n :as i18n]))
|
[utils.i18n :as i18n]))
|
||||||
|
|
||||||
(use-fixtures :each
|
(use-fixtures :each
|
||||||
{:before #(reset! rf-db/app-db {})})
|
{:before #(reset! rf-db/app-db {:communities/enabled? true})})
|
||||||
|
|
||||||
(def community-id "0x1")
|
(def community-id "0x1")
|
||||||
|
|
||||||
(h/deftest-sub :communities
|
(h/deftest-sub :communities
|
||||||
[sub-name]
|
[sub-name]
|
||||||
(testing "returns raw communities"
|
(testing "returns empty vector if flag is disabled"
|
||||||
|
(swap! rf-db/app-db assoc :communities/enabled? false)
|
||||||
|
(is (= [] (rf/sub [sub-name]))))
|
||||||
|
|
||||||
|
(testing "returns raw communities if flag is enabled"
|
||||||
(let [raw-communities {"0x1" {:id "0x1"}}]
|
(let [raw-communities {"0x1" {:id "0x1"}}]
|
||||||
(swap! rf-db/app-db assoc
|
(swap! rf-db/app-db assoc
|
||||||
:communities
|
:communities/enabled? true
|
||||||
raw-communities)
|
:communities raw-communities)
|
||||||
(is (= raw-communities (rf/sub [sub-name]))))))
|
(is (= raw-communities (rf/sub [sub-name]))))))
|
||||||
|
|
||||||
(h/deftest-sub :communities/section-list
|
(h/deftest-sub :communities/section-list
|
||||||
@@ -82,12 +85,13 @@
|
|||||||
[sub-name]
|
[sub-name]
|
||||||
(testing "Empty communities list"
|
(testing "Empty communities list"
|
||||||
(swap! rf-db/app-db assoc
|
(swap! rf-db/app-db assoc
|
||||||
:communities
|
:communities/enabled? true
|
||||||
{})
|
:communities {})
|
||||||
(is (= []
|
(is (= []
|
||||||
(rf/sub [sub-name]))))
|
(rf/sub [sub-name]))))
|
||||||
(testing "communities sorted by name"
|
(testing "communities sorted by name"
|
||||||
(swap! rf-db/app-db assoc
|
(swap! rf-db/app-db assoc
|
||||||
|
:communities/enabled? true
|
||||||
:communities
|
:communities
|
||||||
{"0x1" {:id "0x1" :name "Civilized monkeys"}
|
{"0x1" {:id "0x1" :name "Civilized monkeys"}
|
||||||
"0x2" {:id "0x2" :name "Civilized rats"}
|
"0x2" {:id "0x2" :name "Civilized rats"}
|
||||||
@@ -101,127 +105,56 @@
|
|||||||
[sub-name]
|
[sub-name]
|
||||||
(testing "Channels with categories"
|
(testing "Channels with categories"
|
||||||
(swap! rf-db/app-db assoc
|
(swap! rf-db/app-db assoc
|
||||||
|
:communities/enabled? true
|
||||||
:communities
|
:communities
|
||||||
{"0x1" {:id "0x1"
|
{"0x1" {:id "0x1"
|
||||||
:chats {"0x1" {:id "0x1" :position 1 :name "chat1" :categoryID "1" :can-post? true}
|
:chats {"0x1" {:id "0x1" :name "chat1" :categoryID 1 :can-post? true}
|
||||||
"0x2" {:id "0x2" :position 2 :name "chat2" :categoryID "1" :can-post? false}
|
"0x2" {:id "0x2" :name "chat2" :categoryID 1 :can-post? false}
|
||||||
"0x3" {:id "0x3" :position 3 :name "chat3" :categoryID "2" :can-post? true}}
|
"0x3" {:id "0x3" :name "chat3" :categoryID 2 :can-post? true}}
|
||||||
:categories {"1" {:id "1"
|
:categories {1 {:id 1 :name "category1"}
|
||||||
:position 2
|
2 {:id 2 :name "category2"}}
|
||||||
:name "category1"}
|
|
||||||
"2" {:id "2"
|
|
||||||
:position 1
|
|
||||||
:name "category2"}}
|
|
||||||
:joined true}})
|
:joined true}})
|
||||||
(is
|
(is
|
||||||
(= [["2"
|
(= {:category1
|
||||||
{:id "2"
|
[{:name "chat1" :emoji nil :locked? false :id "0x1" :unread-messages? false :mentions-count 0}
|
||||||
:name "category2"
|
{:name "chat2" :emoji nil :locked? true :id "0x2" :unread-messages? false :mentions-count 0}]
|
||||||
:collapsed? nil
|
:category2
|
||||||
:position 1
|
[{:name "chat3" :emoji nil :locked? false :id "0x3" :unread-messages? false :mentions-count 0}]}
|
||||||
:chats [{:name "chat3"
|
|
||||||
:position 3
|
|
||||||
:emoji nil
|
|
||||||
:locked? false
|
|
||||||
:id "0x3"
|
|
||||||
:unread-messages? false
|
|
||||||
:mentions-count 0}]}]
|
|
||||||
["1"
|
|
||||||
{:id "1"
|
|
||||||
:name "category1"
|
|
||||||
:collapsed? nil
|
|
||||||
:position 2
|
|
||||||
:chats [{:name "chat1"
|
|
||||||
:emoji nil
|
|
||||||
:position 1
|
|
||||||
:locked? false
|
|
||||||
:id "0x1"
|
|
||||||
:unread-messages? false
|
|
||||||
:mentions-count 0}
|
|
||||||
{:name "chat2"
|
|
||||||
:emoji nil
|
|
||||||
:position 2
|
|
||||||
:locked? true
|
|
||||||
:id "0x2"
|
|
||||||
:unread-messages? false
|
|
||||||
:mentions-count 0}]}]]
|
|
||||||
(rf/sub [sub-name "0x1"]))))
|
(rf/sub [sub-name "0x1"]))))
|
||||||
(testing "Channels without categories"
|
(testing "Channels without categories"
|
||||||
(swap! rf-db/app-db assoc
|
(swap! rf-db/app-db assoc
|
||||||
|
:communities/enabled? true
|
||||||
:communities
|
:communities
|
||||||
{"0x1" {:id "0x1"
|
{"0x1" {:id "0x1"
|
||||||
:chats {"0x1" {:id "0x1" :position 1 :name "chat1" :categoryID "1" :can-post? true}
|
:chats {"0x1" {:id "0x1" :name "chat1" :categoryID 1 :can-post? true}
|
||||||
"0x2" {:id "0x2" :position 2 :name "chat2" :categoryID "1" :can-post? false}
|
"0x2" {:id "0x2" :name "chat2" :categoryID 1 :can-post? false}
|
||||||
"0x3" {:id "0x3" :position 3 :name "chat3" :can-post? true}}
|
"0x3" {:id "0x3" :name "chat3" :can-post? true}}
|
||||||
:categories {"1" {:id "1"
|
:categories {1 {:id 1 :name "category1"}
|
||||||
:position 1
|
2 {:id 2 :name "category2"}}
|
||||||
:name "category1"}
|
|
||||||
"2" {:id "2"
|
|
||||||
:position 2
|
|
||||||
:name "category2"}}
|
|
||||||
:joined true}})
|
:joined true}})
|
||||||
(is
|
(is
|
||||||
(=
|
(= {:category1
|
||||||
[[constants/empty-category-id
|
[{:name "chat1" :emoji nil :locked? false :id "0x1" :unread-messages? false :mentions-count 0}
|
||||||
{:name (i18n/label :t/none)
|
{:name "chat2" :emoji nil :locked? true :id "0x2" :unread-messages? false :mentions-count 0}]
|
||||||
:collapsed? nil
|
(keyword (i18n/label :t/none))
|
||||||
:chats [{:name "chat3"
|
[{:name "chat3" :emoji nil :locked? false :id "0x3" :unread-messages? false :mentions-count 0}]}
|
||||||
:emoji nil
|
(rf/sub [sub-name "0x1"]))))
|
||||||
:position 3
|
|
||||||
:locked? false
|
|
||||||
:id "0x3"
|
|
||||||
:unread-messages? false
|
|
||||||
:mentions-count 0}]}]
|
|
||||||
["1"
|
|
||||||
{:name "category1"
|
|
||||||
:id "1"
|
|
||||||
:position 1
|
|
||||||
:collapsed? nil
|
|
||||||
:chats [{:name "chat1"
|
|
||||||
:emoji nil
|
|
||||||
:position 1
|
|
||||||
:locked? false
|
|
||||||
:id "0x1"
|
|
||||||
:unread-messages? false
|
|
||||||
:mentions-count 0}
|
|
||||||
{:name "chat2"
|
|
||||||
:emoji nil
|
|
||||||
:position 2
|
|
||||||
:locked? true
|
|
||||||
:id "0x2"
|
|
||||||
:unread-messages? false
|
|
||||||
:mentions-count 0}]}]]
|
|
||||||
(rf/sub [sub-name "0x1"]))))
|
|
||||||
(testing "Unread messages"
|
(testing "Unread messages"
|
||||||
(swap! rf-db/app-db assoc
|
(swap! rf-db/app-db assoc
|
||||||
|
:communities/enabled? true
|
||||||
:communities
|
:communities
|
||||||
{"0x1" {:id "0x1"
|
{"0x1" {:id "0x1"
|
||||||
:chats {"0x1" {:id "0x1" :position 1 :name "chat1" :categoryID "1" :can-post? true}
|
:chats {"0x1" {:id "0x1" :name "chat1" :categoryID 1 :can-post? true}
|
||||||
"0x2" {:id "0x2" :position 2 :name "chat2" :categoryID "1" :can-post? false}}
|
"0x2" {:id "0x2" :name "chat2" :categoryID 1 :can-post? false}}
|
||||||
:categories {"1" {:id "1" :name "category1"}}
|
:categories {1 {:id 1 :name "category1"}}
|
||||||
:joined true}}
|
:joined true}}
|
||||||
:chats
|
:chats
|
||||||
{"0x10x1" {:unviewed-messages-count 1 :unviewed-mentions-count 2}
|
{"0x10x1" {:unviewed-messages-count 1 :unviewed-mentions-count 2}
|
||||||
"0x10x2" {:unviewed-messages-count 0 :unviewed-mentions-count 0}})
|
"0x10x2" {:unviewed-messages-count 0 :unviewed-mentions-count 0}})
|
||||||
(is
|
(is
|
||||||
(= [["1"
|
(= {:category1
|
||||||
{:name "category1"
|
[{:name "chat1" :emoji nil :locked? false :id "0x1" :unread-messages? true :mentions-count 2}
|
||||||
:id "1"
|
{:name "chat2" :emoji nil :locked? true :id "0x2" :unread-messages? false :mentions-count 0}]}
|
||||||
:collapsed? nil
|
|
||||||
:chats [{:name "chat1"
|
|
||||||
:emoji nil
|
|
||||||
:position 1
|
|
||||||
:locked? false
|
|
||||||
:id "0x1"
|
|
||||||
:unread-messages? true
|
|
||||||
:mentions-count 2}
|
|
||||||
{:name "chat2"
|
|
||||||
:emoji nil
|
|
||||||
:position 2
|
|
||||||
:locked? true
|
|
||||||
:id "0x2"
|
|
||||||
:unread-messages? false
|
|
||||||
:mentions-count 0}]}]]
|
|
||||||
(rf/sub [sub-name "0x1"])))))
|
(rf/sub [sub-name "0x1"])))))
|
||||||
|
|
||||||
(h/deftest-sub :communities/my-pending-requests-to-join
|
(h/deftest-sub :communities/my-pending-requests-to-join
|
||||||
|
|||||||
@@ -238,14 +238,14 @@
|
|||||||
|
|
||||||
;; communities
|
;; communities
|
||||||
|
|
||||||
(reg-root-key-sub :communities :communities)
|
(reg-root-key-sub :raw-communities :communities)
|
||||||
(reg-root-key-sub :communities/create :communities/create)
|
(reg-root-key-sub :communities/create :communities/create)
|
||||||
(reg-root-key-sub :communities/create-channel :communities/create-channel)
|
(reg-root-key-sub :communities/create-channel :communities/create-channel)
|
||||||
(reg-root-key-sub :communities/requests-to-join :communities/requests-to-join)
|
(reg-root-key-sub :communities/requests-to-join :communities/requests-to-join)
|
||||||
(reg-root-key-sub :communities/community-id-input :communities/community-id-input)
|
(reg-root-key-sub :communities/community-id-input :communities/community-id-input)
|
||||||
|
(reg-root-key-sub :communities/enabled? :communities/enabled?)
|
||||||
(reg-root-key-sub :communities/resolve-community-info :communities/resolve-community-info)
|
(reg-root-key-sub :communities/resolve-community-info :communities/resolve-community-info)
|
||||||
(reg-root-key-sub :communities/my-pending-requests-to-join :communities/my-pending-requests-to-join)
|
(reg-root-key-sub :communities/my-pending-requests-to-join :communities/my-pending-requests-to-join)
|
||||||
(reg-root-key-sub :communities/collapsed-categories :communities/collapsed-categories)
|
|
||||||
|
|
||||||
(reg-root-key-sub :activity-center :activity-center)
|
(reg-root-key-sub :activity-center :activity-center)
|
||||||
|
|
||||||
@@ -254,7 +254,6 @@
|
|||||||
|
|
||||||
(reg-root-key-sub :backup/performing-backup :backup/performing-backup)
|
(reg-root-key-sub :backup/performing-backup :backup/performing-backup)
|
||||||
|
|
||||||
|
|
||||||
;; wallet connect
|
;; wallet connect
|
||||||
(reg-root-key-sub :wallet-connect/proposal-metadata :wallet-connect/proposal-metadata)
|
(reg-root-key-sub :wallet-connect/proposal-metadata :wallet-connect/proposal-metadata)
|
||||||
(reg-root-key-sub :wallet-connect/enabled? :wallet-connect/enabled?)
|
(reg-root-key-sub :wallet-connect/enabled? :wallet-connect/enabled?)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"_comment": "Instead use: scripts/update-status-go.sh <rev>",
|
"_comment": "Instead use: scripts/update-status-go.sh <rev>",
|
||||||
"owner": "status-im",
|
"owner": "status-im",
|
||||||
"repo": "status-go",
|
"repo": "status-go",
|
||||||
"version": "94cd1ec",
|
"version": "v0.138.3",
|
||||||
"commit-sha1": "94cd1ec",
|
"commit-sha1": "290579f74f10a374ffb8c37abc47dbe2c1e90f5d",
|
||||||
"src-sha256": "1inm5x6wwfm2v45aq0jyaq52lw6hpgkyy82h3v1bh2bs7bl1yd26"
|
"src-sha256": "0vgs3m1fbyri9r1wqxfanzxlx24yzx9zaabflk26qc9d4pclmi7i"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,27 +153,13 @@ class TestActivityCenterContactRequestMultipleDevicePR(MultipleSharedDeviceTestC
|
|||||||
self.errors.verify_no_errors()
|
self.errors.verify_no_errors()
|
||||||
|
|
||||||
@marks.testrail_id(702851)
|
@marks.testrail_id(702851)
|
||||||
def test_activity_center_contact_request_accept_swipe_mark_all_as_read(self):
|
def test_activity_center_contact_request_accept(self):
|
||||||
self.device_2.just_fyi('Device2 re-sends a contact request to Device1')
|
self.device_2.just_fyi('Device2 re-sends a contact request to Device1')
|
||||||
self.home_2.add_contact(self.public_key_1, remove_from_contacts=True)
|
self.home_2.add_contact(self.public_key_1, remove_from_contacts=True)
|
||||||
|
|
||||||
self.device_1.just_fyi('Device1 accepts pending contact request by swiping')
|
self.device_1.just_fyi('Device1 accepts pending contact request and check contact list')
|
||||||
self.home_1.chats_tab.click()
|
self.home_1.chats_tab.click()
|
||||||
self.home_1.notifications_unread_badge.wait_for_visibility_of_element(30)
|
self.home_1.handle_contact_request(username=self.default_username_2)
|
||||||
self.home_1.open_activity_center_button.click()
|
|
||||||
|
|
||||||
self.home_1.just_fyi("Mark all as read")
|
|
||||||
cr_element = self.home_1.get_element_from_activity_center_view(self.default_username_2)
|
|
||||||
self.home_1.more_options_activity_button.click()
|
|
||||||
self.home_1.mark_all_read_activity_button.click()
|
|
||||||
if cr_element.is_element_displayed():
|
|
||||||
self.errors.append("Contact request is still shown in activity centre after marking all messages as read!")
|
|
||||||
|
|
||||||
self.home_1.just_fyi("Check that can accept contact request from read notifications")
|
|
||||||
self.home_1.activity_unread_filter_button.click()
|
|
||||||
cr_element.swipe_right_on_element()
|
|
||||||
self.home_1.activity_notification_swipe_button.click()
|
|
||||||
self.home_1.close_activity_centre.click()
|
|
||||||
self.home_1.contacts_tab.click()
|
self.home_1.contacts_tab.click()
|
||||||
if not self.home_1.contact_details(username=self.default_username_2).is_element_displayed(20):
|
if not self.home_1.contact_details(username=self.default_username_2).is_element_displayed(20):
|
||||||
self.errors.append("Contact was not added to contact list after accepting contact request (as receiver)")
|
self.errors.append("Contact was not added to contact list after accepting contact request (as receiver)")
|
||||||
@@ -260,7 +246,7 @@ class TestActivityMultipleDevicePR(MultipleSharedDeviceTestCase):
|
|||||||
self.errors.verify_no_errors()
|
self.errors.verify_no_errors()
|
||||||
|
|
||||||
@marks.testrail_id(702947)
|
@marks.testrail_id(702947)
|
||||||
def test_activity_center_reply_read_unread_delete_filter_swipe(self):
|
def test_activity_center_reply_read_unread_delete_filter(self):
|
||||||
message_to_reply, reply_to_message_from_sender = 'something to reply to', 'this is a reply'
|
message_to_reply, reply_to_message_from_sender = 'something to reply to', 'this is a reply'
|
||||||
self.home_1.jump_to_communities_home()
|
self.home_1.jump_to_communities_home()
|
||||||
self.home_1.get_chat(self.community_name, community=True).click()
|
self.home_1.get_chat(self.community_name, community=True).click()
|
||||||
@@ -329,89 +315,5 @@ class TestActivityMultipleDevicePR(MultipleSharedDeviceTestCase):
|
|||||||
if reply_element.is_element_displayed():
|
if reply_element.is_element_displayed():
|
||||||
self.errors.append("Reply is still shown after removing from activity centre!")
|
self.errors.append("Reply is still shown after removing from activity centre!")
|
||||||
|
|
||||||
self.home_1.just_fyi("Reset filter to show all AC notifications again")
|
|
||||||
self.home_1.reply_activity_tab_button.click()
|
|
||||||
self.home_1.mention_activity_tab_button.click()
|
|
||||||
self.home_1.all_activity_tab_button.click()
|
|
||||||
self.home_1.close_activity_centre.click()
|
|
||||||
|
|
||||||
self.errors.verify_no_errors()
|
self.errors.verify_no_errors()
|
||||||
|
|
||||||
@marks.testrail_id(702957)
|
|
||||||
def test_activity_center_mentions(self):
|
|
||||||
self.home_1.jump_to_communities_home()
|
|
||||||
self.home_2.jump_to_card_by_text('# %s' % self.channel_name)
|
|
||||||
|
|
||||||
self.device_2.just_fyi("Invited member sends a message with a mention")
|
|
||||||
self.channel_2.mention_user(self.default_username_1)
|
|
||||||
self.channel_2.send_message_button.click()
|
|
||||||
|
|
||||||
self.home_1.just_fyi("Checking unread indicators")
|
|
||||||
self.home_1.notifications_unread_badge.wait_for_visibility_of_element(120)
|
|
||||||
community_element_1 = self.home_1.get_chat(self.community_name, community=True)
|
|
||||||
for unread_counter in community_element_1.new_messages_counter, self.home_1.communities_tab.counter:
|
|
||||||
if not unread_counter.is_element_displayed(60):
|
|
||||||
self.errors.append('New message counter badge is not shown while mentioned!')
|
|
||||||
if int(unread_counter.text) != 1:
|
|
||||||
self.errors.append('New message counter badge is not 1, it is %s!' % unread_counter.text)
|
|
||||||
|
|
||||||
self.home_1.just_fyi("Checking mention attributes in activity center")
|
|
||||||
self.home_1.open_activity_center_button.click()
|
|
||||||
mention_element = self.home_1.get_element_from_activity_center_view('@%s' % self.default_username_1)
|
|
||||||
if mention_element.title.text != 'Mention':
|
|
||||||
self.errors.append("Expected title is not shown, '%s' is instead!" % mention_element.title)
|
|
||||||
if not mention_element.unread_indicator.is_element_displayed():
|
|
||||||
self.errors.append("No unread dot is shown on activity center element (mention)!")
|
|
||||||
if mention_element.message_body.text != '@%s' % self.default_username_1:
|
|
||||||
self.errors.append("Mention body in activity center does not match expected, it is %s!" % mention_element.message_body.text)
|
|
||||||
|
|
||||||
self.home_1.just_fyi("Tap on it and check redirect to channel")
|
|
||||||
mention_element.click()
|
|
||||||
if not self.channel_1.chat_element_by_text(self.default_username_1).is_element_displayed():
|
|
||||||
self.errors.append("Was not redirected to chat after tapping on mention!")
|
|
||||||
self.errors.verify_no_errors()
|
|
||||||
|
|
||||||
@marks.testrail_id(702958)
|
|
||||||
def test_activity_center_admin_notification_accept_swipe(self):
|
|
||||||
self.home_2.just_fyi("Clearing history")
|
|
||||||
self.home_2.jump_to_messages_home()
|
|
||||||
self.home_2.clear_chat_long_press(self.default_username_1)
|
|
||||||
|
|
||||||
[home.jump_to_communities_home() for home in (self.home_1, self.home_2)]
|
|
||||||
self.home_1.just_fyi("Open community to message")
|
|
||||||
self.home_1.communities_tab.click()
|
|
||||||
community_name = 'commun_to_check_notif'
|
|
||||||
self.channel_name = self.home_1.get_random_chat_name()
|
|
||||||
self.home_1.create_community(name=community_name, description='community to test', require_approval=True)
|
|
||||||
self.home_1.click_system_back_button_until_element_is_shown()
|
|
||||||
community_element = self.home_1.get_chat(community_name, community=True)
|
|
||||||
self.community_1.share_community(community_element, self.default_username_2)
|
|
||||||
|
|
||||||
self.home_1.just_fyi("Request access to community")
|
|
||||||
self.home_2.jump_to_messages_home()
|
|
||||||
self.chat_2 = self.home_2.get_chat(self.default_username_1).click()
|
|
||||||
self.chat_2.element_by_text_part('View').click()
|
|
||||||
self.community_2.request_access_button.click()
|
|
||||||
self.community_2.jump_to_communities_home()
|
|
||||||
|
|
||||||
self.home_1.just_fyi("Checking unread indicators")
|
|
||||||
self.home_1.notifications_unread_badge.wait_for_visibility_of_element(120)
|
|
||||||
self.home_1.open_activity_center_button.click()
|
|
||||||
reply_element = self.home_1.get_element_from_activity_center_view(self.default_username_2)
|
|
||||||
if reply_element.title.text != 'Join request':
|
|
||||||
self.errors.append("Expected title is not shown, '%s' is instead!" % reply_element.title)
|
|
||||||
if not reply_element.unread_indicator.is_element_displayed():
|
|
||||||
self.errors.append("No unread dot is shown on activity center element!")
|
|
||||||
reply_element.swipe_right_on_element()
|
|
||||||
self.home_1.activity_notification_swipe_button.click()
|
|
||||||
self.home_1.close_activity_centre.click()
|
|
||||||
|
|
||||||
self.home_2.just_fyi("Checking that community appeared on thr list")
|
|
||||||
if not self.home_2.element_by_text_part(community_name).is_element_displayed(30):
|
|
||||||
self.errors.append("Community is not appeared in the list after accepting admin request from activity centre")
|
|
||||||
self.errors.verify_no_errors()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -347,8 +347,6 @@ class CommunityView(HomeView):
|
|||||||
self.community_info_picture = Button(self.driver, accessibility_id="chat-icon")
|
self.community_info_picture = Button(self.driver, accessibility_id="chat-icon")
|
||||||
self.leave_community_button = Button(self.driver, translation_id="leave-community")
|
self.leave_community_button = Button(self.driver, translation_id="leave-community")
|
||||||
self.edit_community_button = Button(self.driver, translation_id="edit-community")
|
self.edit_community_button = Button(self.driver, translation_id="edit-community")
|
||||||
self.share_community_button = Button(self.driver, accessibility_id="share-community")
|
|
||||||
self.share_community_link_button = Button(self.driver, accessibility_id="share-community-link")
|
|
||||||
|
|
||||||
# Members
|
# Members
|
||||||
self.invite_people_button = Button(self.driver, accessibility_id="community-invite-people")
|
self.invite_people_button = Button(self.driver, accessibility_id="community-invite-people")
|
||||||
@@ -420,21 +418,11 @@ class CommunityView(HomeView):
|
|||||||
self.share_invite_button.click_until_presence_of_element(self.invite_button)
|
self.share_invite_button.click_until_presence_of_element(self.invite_button)
|
||||||
self.back_button.click_until_presence_of_element(self.plus_button)
|
self.back_button.click_until_presence_of_element(self.plus_button)
|
||||||
|
|
||||||
def share_community(self, coummunity_element, user_names_to_share):
|
|
||||||
if isinstance(user_names_to_share, str):
|
|
||||||
user_names_to_share = [user_names_to_share]
|
|
||||||
self.driver.info("Share to %s community" % ', '.join(map(str, user_names_to_share)))
|
|
||||||
coummunity_element.long_press_until_element_is_shown(self.share_community_button)
|
|
||||||
self.share_community_button.click()
|
|
||||||
for user_name in user_names_to_share:
|
|
||||||
user_contact = self.element_by_text_part(user_name)
|
|
||||||
user_contact.scroll_and_click()
|
|
||||||
self.share_community_link_button.click()
|
|
||||||
|
|
||||||
|
|
||||||
class PreviewMessage(ChatElementByText):
|
class PreviewMessage(ChatElementByText):
|
||||||
def __init__(self, driver, text: str):
|
def __init__(self, driver, text: str):
|
||||||
super().__init__(driver, text=text)
|
super().__init__(driver, text=text)
|
||||||
|
# self.locator += "/android.view.ViewGroup/android.view.ViewGroup"
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def return_element_or_empty(obj):
|
def return_element_or_empty(obj):
|
||||||
@@ -682,7 +670,7 @@ class ChatView(BaseView):
|
|||||||
self.clear_history_button = Button(self.driver, translation_id="clear-history")
|
self.clear_history_button = Button(self.driver, translation_id="clear-history")
|
||||||
self.reply_message_button = Button(self.driver, translation_id="message-reply")
|
self.reply_message_button = Button(self.driver, translation_id="message-reply")
|
||||||
self.share_chat_button = Button(self.driver, accessibility_id="share-chat-button")
|
self.share_chat_button = Button(self.driver, accessibility_id="share-chat-button")
|
||||||
self.clear_button = Button(self.driver, translation_id="clear-history")
|
self.clear_button = Button(self.driver, translation_id="clear", uppercase=True)
|
||||||
self.view_profile_button = ViewProfileButton(self.driver)
|
self.view_profile_button = ViewProfileButton(self.driver)
|
||||||
self.view_profile_by_avatar_button = Button(self.driver, accessibility_id="member-photo")
|
self.view_profile_by_avatar_button = Button(self.driver, accessibility_id="member-photo")
|
||||||
self.user_options = Button(self.driver, accessibility_id="options")
|
self.user_options = Button(self.driver, accessibility_id="options")
|
||||||
|
|||||||
@@ -126,10 +126,6 @@ class ActivityCenterElement(SilentButton):
|
|||||||
def unread_indicator(self):
|
def unread_indicator(self):
|
||||||
return Button(self.driver, xpath=self.locator + '//*[@content-desc="activity-unread-indicator"]')
|
return Button(self.driver, xpath=self.locator + '//*[@content-desc="activity-unread-indicator"]')
|
||||||
|
|
||||||
@property
|
|
||||||
def message_body(self):
|
|
||||||
return Button(self.driver, xpath=self.locator + '//*[@content-desc="activity-message-body"]')
|
|
||||||
|
|
||||||
def handle_cr(self, element_accessibility: str):
|
def handle_cr(self, element_accessibility: str):
|
||||||
try:
|
try:
|
||||||
accept_element = Button(self.driver,
|
accept_element = Button(self.driver,
|
||||||
@@ -224,7 +220,7 @@ class HomeView(BaseView):
|
|||||||
# Options on long tap
|
# Options on long tap
|
||||||
self.chats_menu_invite_friends_button = Button(self.driver, accessibility_id="chats-menu-invite-friends-button")
|
self.chats_menu_invite_friends_button = Button(self.driver, accessibility_id="chats-menu-invite-friends-button")
|
||||||
self.delete_chat_button = Button(self.driver, translation_id="delete-chat")
|
self.delete_chat_button = Button(self.driver, translation_id="delete-chat")
|
||||||
self.clear_history_button = Button(self.driver, accessibility_id="clear-history")
|
self.clear_history_button = Button(self.driver, accessibility_id="clear-history-button")
|
||||||
self.mark_all_messages_as_read_button = Button(self.driver, accessibility_id="mark-all-read-button")
|
self.mark_all_messages_as_read_button = Button(self.driver, accessibility_id="mark-all-read-button")
|
||||||
|
|
||||||
# Connection icons
|
# Connection icons
|
||||||
@@ -256,13 +252,11 @@ class HomeView(BaseView):
|
|||||||
self.setup_chat_button = Button(self.driver, accessibility_id="next-button")
|
self.setup_chat_button = Button(self.driver, accessibility_id="next-button")
|
||||||
|
|
||||||
# Activity centre
|
# Activity centre
|
||||||
self.all_activity_tab_button = ActivityTabButton(self.driver, translation_id="all")
|
|
||||||
self.mention_activity_tab_button = ActivityTabButton(self.driver, accessibility_id="tab-mention")
|
self.mention_activity_tab_button = ActivityTabButton(self.driver, accessibility_id="tab-mention")
|
||||||
self.reply_activity_tab_button = ActivityTabButton(self.driver, accessibility_id="tab-reply")
|
self.reply_activity_tab_button = ActivityTabButton(self.driver, accessibility_id="tab-reply")
|
||||||
self.activity_notification_swipe_button = Button(self.driver, accessibility_id="notification-swipe")
|
self.activity_notification_swipe_button = Button(self.driver, accessibility_id="notification-swipe")
|
||||||
self.activity_unread_filter_button = Button(self.driver, accessibility_id="selector-filter")
|
self.activity_unread_filter_button = Button(self.driver, accessibility_id="selector-filter")
|
||||||
self.more_options_activity_button = Button(self.driver, accessibility_id="activity-center-open-more")
|
|
||||||
self.mark_all_read_activity_button = Button(self.driver, translation_id="mark-all-notifications-as-read")
|
|
||||||
|
|
||||||
def wait_for_syncing_complete(self):
|
def wait_for_syncing_complete(self):
|
||||||
self.driver.info('Waiting for syncing to complete')
|
self.driver.info('Waiting for syncing to complete')
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ class SignInView(BaseView):
|
|||||||
self.migration_password_input = EditBox(self.driver, accessibility_id="enter-password-input")
|
self.migration_password_input = EditBox(self.driver, accessibility_id="enter-password-input")
|
||||||
self.sign_in_button = SignInButton(self.driver)
|
self.sign_in_button = SignInButton(self.driver)
|
||||||
self.access_key_button = AccessKeyButton(self.driver)
|
self.access_key_button = AccessKeyButton(self.driver)
|
||||||
self.generate_key_button = Button(self.driver, accessibility_id="generate-old-key")
|
self.generate_key_button = Button(self.driver, translation_id="generate-new-key")
|
||||||
self.your_keys_more_icon = Button(self.driver, xpath="//androidx.appcompat.widget.LinearLayoutCompat")
|
self.your_keys_more_icon = Button(self.driver, xpath="//androidx.appcompat.widget.LinearLayoutCompat")
|
||||||
self.generate_new_key_button = Button(self.driver, accessibility_id="generate-a-new-key")
|
self.generate_new_key_button = Button(self.driver, accessibility_id="generate-a-new-key")
|
||||||
self.create_password_input = EditBox(self.driver,
|
self.create_password_input = EditBox(self.driver,
|
||||||
|
|||||||