Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bb671ef364 | ||
|
|
ac186e27de | ||
|
|
917f10955a | ||
|
|
8638a2266d | ||
|
|
baab56946e | ||
|
|
d10a026908 | ||
|
|
2cb50fcbf6 | ||
|
|
449b2808e6 | ||
|
|
6bf1aecb6d | ||
|
|
4d26934949 | ||
|
|
0f6aa8d401 | ||
|
|
32ddf81a5e | ||
|
|
7b34a4fb1b | ||
|
|
215e516b2b | ||
|
|
eecd1d50e4 | ||
|
|
5a9279b232 | ||
|
|
6a5e718cd3 | ||
|
|
70009f80ab | ||
|
|
8e3031f106 | ||
|
|
3e0c31af9a | ||
|
|
e1bbefa60b | ||
|
|
4575f83f49 | ||
|
|
37232eee7e | ||
|
|
373ca6ec2d | ||
|
|
fe28f44d4b | ||
|
|
cd81519e9a | ||
|
|
d4a58ac2fb | ||
|
|
75280c4db6 | ||
|
|
9a52339ea7 | ||
|
|
d53bef385a | ||
|
|
35e71289dc | ||
|
|
0dfc8384e6 | ||
|
|
605e3a727d | ||
|
|
41e18993be | ||
|
|
ce3f2b5895 | ||
|
|
3b4cbfa4bc | ||
|
|
9a3cdc4f8b | ||
|
|
1d84c30de3 | ||
|
|
8133c4c5f0 | ||
|
|
e21ece0f8d | ||
|
|
89828ba7fd | ||
|
|
8215498ddb | ||
|
|
ae6205c874 | ||
|
|
328f9686c9 | ||
|
|
9f412577d7 | ||
|
|
11bd340a94 | ||
|
|
3c102b9797 | ||
|
|
bd4b7fc49d | ||
|
|
29252336cc | ||
|
|
4b5b4f9099 | ||
|
|
28da6f8bfc | ||
|
|
e0fe0d2dbd | ||
|
|
07cf34ad60 | ||
|
|
7c4c9a9fc0 | ||
|
|
59ceddbaad | ||
|
|
99ccbc3383 | ||
|
|
8c2d5398b0 | ||
|
|
67c83b13e3 | ||
|
|
11a84ba145 | ||
|
|
1f5bb579c9 | ||
|
|
4586f8007c | ||
|
|
55c620e59d | ||
|
|
525609f0af | ||
|
|
90653955a6 | ||
|
|
d27ab756d0 | ||
|
|
c6a1db6334 | ||
|
|
73777e052e | ||
|
|
a6d3fc3742 | ||
|
|
a671c70838 | ||
|
|
a45991b6dc | ||
|
|
2e9fa22e4f | ||
|
|
737d8c4d53 | ||
|
|
3aa7e103f7 | ||
|
|
c1d2d44da4 | ||
|
|
0fed8113d1 | ||
|
|
53c35cb554 | ||
|
|
be82365542 | ||
|
|
eae8a65597 | ||
|
|
fe54a25a3a | ||
|
|
15a4219ef4 | ||
|
|
2ffbdac89e | ||
|
|
402eb8397d | ||
|
|
ff88049a08 | ||
|
|
cee21241d4 | ||
|
|
60ad7c8a29 | ||
|
|
4989c92780 |
@@ -436,10 +436,11 @@ android-clean: ##@prepare Clean Gradle state
|
||||
rm -rf ~/.gradle
|
||||
|
||||
|
||||
android-ports: export FLOWSTORM_PORT := 7722
|
||||
android-ports: export FLOWSTORM_PORT ?= 7722
|
||||
android-ports: export TARGET := android-sdk
|
||||
android-ports: export RCT_METRO_PORT ?= 8081
|
||||
android-ports: ##@other Add proxies to Android Device/Simulator
|
||||
adb reverse tcp:8081 tcp:8081 && \
|
||||
adb reverse tcp:$(RCT_METRO_PORT) tcp:$(RCT_METRO_PORT) && \
|
||||
adb reverse tcp:3449 tcp:3449 && \
|
||||
adb reverse tcp:4567 tcp:4567 && \
|
||||
adb reverse tcp:$(FLOWSTORM_PORT) tcp:$(FLOWSTORM_PORT) && \
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
android:allowBackup="false"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:theme="@style/Theme.AppSplash"
|
||||
android:name=".MainApplication"
|
||||
android:largeHeap="true"
|
||||
|
||||
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 92 B After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 498 B After Width: | Height: | Size: 940 B |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 266 B |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 100 B After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 972 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 495 B After Width: | Height: | Size: 452 B |
|
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 108 B After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 824 B |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 118 B After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 826 B After Width: | Height: | Size: 825 B |
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 123 KiB |
@@ -2,4 +2,5 @@
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@mipmap/ic_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_foreground"/>
|
||||
</adaptive-icon>
|
||||
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
|
||||
</adaptive-icon>
|
||||
|
||||
@@ -2,4 +2,5 @@
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@mipmap/ic_background"/>
|
||||
<foreground android:drawable="@mipmap/ic_foreground"/>
|
||||
</adaptive-icon>
|
||||
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
|
||||
</adaptive-icon>
|
||||
|
||||
|
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 239 B After Width: | Height: | Size: 9.8 KiB |
|
Before Width: | Height: | Size: 678 B After Width: | Height: | Size: 737 B |
|
Before Width: | Height: | Size: 970 B After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 517 B After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 905 B After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 429 B After Width: | Height: | Size: 848 B |
|
Before Width: | Height: | Size: 825 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 825 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 9.3 KiB |
|
Before Width: | Height: | Size: 1013 B After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 629 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 6.0 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 413 KiB |
@@ -36,11 +36,6 @@ class NetworkManager(private val reactContext: ReactApplicationContext) : ReactC
|
||||
@ReactMethod
|
||||
fun inputConnectionStringForBootstrapping(connectionString: String, configJSON: String, callback: Callback) {
|
||||
val jsonConfig = JSONObject(configJSON)
|
||||
val receiverConfig = jsonConfig.getJSONObject("receiverConfig")
|
||||
val keyStorePath = utils.pathCombine(utils.getNoBackupDirectory(), "/keystore")
|
||||
receiverConfig.put("keystorePath", keyStorePath)
|
||||
receiverConfig.getJSONObject("nodeConfig").put("rootDataDir", utils.getNoBackupDirectory())
|
||||
|
||||
utils.executeRunnableStatusGoMethod(
|
||||
{ Statusgo.inputConnectionStringForBootstrapping(connectionString, jsonConfig.toString()) },
|
||||
callback
|
||||
|
||||
@@ -35,21 +35,7 @@ RCT_EXPORT_METHOD(inputConnectionStringForBootstrapping:(NSString *)cs
|
||||
configJSON:(NSString *)configJSON
|
||||
callback:(RCTResponseSenderBlock)callback) {
|
||||
|
||||
NSData *configData = [configJSON dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSError *error;
|
||||
NSMutableDictionary *configDict = [NSJSONSerialization JSONObjectWithData:configData options:NSJSONReadingMutableContainers error:&error];
|
||||
NSMutableDictionary *receiverConfig = configDict[@"receiverConfig"];
|
||||
NSMutableDictionary *nodeConfig = receiverConfig[@"nodeConfig"];
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
NSURL *rootUrl =[[fileManager URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
|
||||
NSURL *multiaccountKeystoreDir = [rootUrl URLByAppendingPathComponent:@"keystore"];
|
||||
NSString *keystoreDir = multiaccountKeystoreDir.path;
|
||||
NSString *rootDataDir = rootUrl.path;
|
||||
|
||||
[receiverConfig setValue:keystoreDir forKey:@"keystorePath"];
|
||||
[nodeConfig setValue:rootDataDir forKey:@"rootDataDir"];
|
||||
NSString *modifiedConfigJSON = [Utils jsonStringWithPrettyPrint:NO fromDictionary:configDict];
|
||||
NSString *result = StatusgoInputConnectionStringForBootstrapping(cs, modifiedConfigJSON);
|
||||
NSString *result = StatusgoInputConnectionStringForBootstrapping(cs, configJSON);
|
||||
callback(@[result]);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
hermesEnabled ? lib.getEnvWithDefault "ORG_GRADLE_PROJECT_hermesEnabled" "true",
|
||||
buildUrl ? lib.getEnvWithDefault "ORG_GRADLE_PROJECT_buildUrl" null,
|
||||
statusGoSrcOverride ? lib.getEnvWithDefault "STATUS_GO_SRC_OVERRIDE" null,
|
||||
reactMetroPort ? lib.getEnvWithDefault "RCT_METRO_PORT" 8081,
|
||||
# If APKs should be split based on architectures
|
||||
androidAbiSplit ? lib.getEnvWithDefault "ANDROID_ABI_SPLIT" "true",
|
||||
# Android architectures to build for
|
||||
@@ -158,6 +159,7 @@ in stdenv.mkDerivation rec {
|
||||
--no-build-cache \
|
||||
--parallel \
|
||||
-Dmaven.repo.local='${deps.gradle}' \
|
||||
-PreactNativeDevServerPort=${toString reactMetroPort} \
|
||||
assemble${gradleBuildType}
|
||||
'';
|
||||
in
|
||||
|
||||
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 64 KiB |
@@ -6,7 +6,7 @@ if pgrep -f 'shadow-cljs watch mobile' > /dev/null; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if pgrep -f 'react-native start' > /dev/null; then
|
||||
if pgrep -f "react-native start --port=${RCT_METRO_PORT:-8081}" > /dev/null; then
|
||||
echo "Error: make run-metro is already running in another terminal" >&2
|
||||
echo "Please close that terminal before running this command." >&2
|
||||
exit 1
|
||||
|
||||
@@ -13,7 +13,7 @@ export BUILD_TYPE=debug
|
||||
|
||||
# Install the APK on running emulator or android device.
|
||||
installAndLaunchApp() {
|
||||
adb install -r ./result/app-arm64-v8a-debug.apk > "${ADB_INSTALL_LOG_FILE}" 2>&1
|
||||
adb install -r "./result/app-${ANDROID_ABI_INCLUDE}-debug.apk" > "${ADB_INSTALL_LOG_FILE}" 2>&1
|
||||
"${GIT_ROOT}/scripts/wait-for-metro-port.sh" 2>&1
|
||||
# connected android devices need this port to be exposed for metro
|
||||
adb reverse "tcp:${RCT_METRO_PORT}" "tcp:${RCT_METRO_PORT}"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if pgrep -f 'react-native start' > /dev/null; then
|
||||
if pgrep -f "react-native start --port=${RCT_METRO_PORT:-8081}" > /dev/null; then
|
||||
echo "Info: metro is already running in another terminal"
|
||||
else
|
||||
echo "Info: starting a new metro terminal"
|
||||
react-native start --reset-cache
|
||||
react-native start --port=${RCT_METRO_PORT:-8081} --reset-cache
|
||||
fi
|
||||
|
||||
@@ -4,7 +4,7 @@ set -euo pipefail
|
||||
TIMEOUT=10 # Metro should not take this long to start.
|
||||
|
||||
while [ "${TIMEOUT}" -gt 0 ]; do
|
||||
if ! lsof -i:8081 &> /dev/null; then
|
||||
if ! lsof -i:"${RCT_METRO_PORT:-8081}" &> /dev/null; then
|
||||
echo "."
|
||||
sleep 1
|
||||
((TIMEOUT--))
|
||||
|
||||
@@ -99,9 +99,9 @@
|
||||
(rf/defn system-theme-mode-changed
|
||||
{:events [:system-theme-mode-changed]}
|
||||
[{:keys [db] :as cofx} _]
|
||||
(let [current-theme-type (get-in cofx [:db :profile/profile :appearance])]
|
||||
(let [appearance-type (get-in cofx [:db :profile/profile :appearance])]
|
||||
(when (and (multiaccounts.model/logged-in? db)
|
||||
(= current-theme-type status-im.constants/theme-type-system))
|
||||
(= appearance-type status-im.constants/appearance-type-system))
|
||||
{:dispatch [:theme/switch]})))
|
||||
|
||||
(defn- on-biometric-auth-fail
|
||||
|
||||
@@ -107,11 +107,12 @@
|
||||
(assoc network-tag-props
|
||||
:status
|
||||
(if error? :error :default))]])
|
||||
[text/text
|
||||
{:size :paragraph-2
|
||||
:style style/fiat-amount
|
||||
:weight :medium}
|
||||
(str currency-symbol fiat-value)]])
|
||||
(when fiat-value
|
||||
[text/text
|
||||
{:size :paragraph-2
|
||||
:style style/fiat-amount
|
||||
:weight :medium}
|
||||
(str currency-symbol fiat-value)])])
|
||||
(when loading?
|
||||
[rn/view {:style (style/row-2-loader theme)}])]]
|
||||
(when (and (not= status :loading) (= type :pay) show-approval-label?)
|
||||
|
||||
@@ -19,8 +19,10 @@
|
||||
:text-color (colors/resolve-color :danger theme)}})
|
||||
|
||||
(defn- banner
|
||||
[{:keys [text type second-banner? colors-map]}]
|
||||
[rn/view (when second-banner? {:style style/second-banner-wrapper})
|
||||
[{:keys [text type second-banner? colors-map on-press]}]
|
||||
[rn/pressable
|
||||
{:on-press #(when on-press (on-press))
|
||||
:style (when second-banner? style/second-banner-wrapper)}
|
||||
[hole-view/hole-view
|
||||
{:style (style/hole-view (get-in colors-map [type :background-color]))
|
||||
:holes (if second-banner?
|
||||
|
||||
@@ -126,7 +126,8 @@
|
||||
[reanimated/view
|
||||
{:style (reanimated/apply-animations-to-style
|
||||
{:opacity bg-opacity}
|
||||
{:flex 1 :background-color colors/neutral-100-opa-70})}]]
|
||||
{:flex 1
|
||||
:background-color (if shell? colors/neutral-100-opa-60 colors/neutral-100-opa-70)})}]]
|
||||
;; sheet
|
||||
[gesture/gesture-detector {:gesture sheet-gesture}
|
||||
[reanimated/view
|
||||
@@ -138,7 +139,7 @@
|
||||
[quo/blur
|
||||
{:style style/shell-bg
|
||||
:blur-radius (or blur-radius 20)
|
||||
:blur-amount 32
|
||||
:blur-amount 15
|
||||
:blur-type :transparent
|
||||
:overlay-color :transparent}]])
|
||||
(when selected-item
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
[quo.core :as quo]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.data-confirmation-sheet.style :as style]
|
||||
[status-im.common.events-helper :as events-helper]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.navigation :as navigation]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn on-choice-callback
|
||||
[syncing-on-mobile-network?]
|
||||
(rf/dispatch [:network/set-syncing-on-mobile-network syncing-on-mobile-network?])
|
||||
(navigation/hide-bottom-sheet))
|
||||
(events-helper/hide-bottom-sheet))
|
||||
|
||||
(def on-wifi-only (partial on-choice-callback false))
|
||||
(def on-mobile-and-wifi (partial on-choice-callback true))
|
||||
@@ -19,7 +19,7 @@
|
||||
[]
|
||||
(let [settings-drawer? (= (rf/sub [:view-id]) :screen/settings.syncing)
|
||||
syncing-on-mobile-network? (rf/sub [:profile/syncing-on-mobile-network?])]
|
||||
(rn/use-mount navigation/dismiss-keyboard)
|
||||
(rn/use-mount events-helper/dismiss-keyboard)
|
||||
[:<>
|
||||
[quo/text
|
||||
{:weight :semi-bold
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
(ns utils.navigation
|
||||
"Prefer to declare in this namespace only reusable navigation functions that
|
||||
aren't better suited in a particular bounded context."
|
||||
(ns status-im.common.events-helper
|
||||
"Provides highly reusable dispatch functions to ensure consistency and avoid duplication in managing various events,
|
||||
including navigation and other actions that affect application behavior."
|
||||
(:require [utils.re-frame :as rf]))
|
||||
|
||||
(defn navigate-back
|
||||
@@ -21,7 +21,7 @@
|
||||
:padding-bottom 2}}
|
||||
[quo/tag
|
||||
{:accessibility-label :communities-chat-beta-tag
|
||||
:size 32
|
||||
:size 24
|
||||
:type :label
|
||||
:label (i18n/label :t/beta)
|
||||
:labelled? true
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{:margin-top 11
|
||||
:margin-horizontal 20
|
||||
:gap 21
|
||||
:margin-bottom 15})
|
||||
:margin-bottom 8})
|
||||
|
||||
(def item-text
|
||||
{:margin-top 10
|
||||
@@ -12,3 +12,9 @@
|
||||
|
||||
(def info-text
|
||||
{:margin-top -5})
|
||||
|
||||
(def privacy-policy
|
||||
{:margin-top 4
|
||||
:margin-horizontal 20
|
||||
:margin-bottom 20
|
||||
:align-items :center})
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
(ns status-im.common.metrics-confirmation-modal.view
|
||||
(:require
|
||||
[quo.core :as quo]
|
||||
[quo.foundations.colors :as colors]
|
||||
[quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.metrics-confirmation-modal.style :as style]
|
||||
@@ -52,14 +53,36 @@
|
||||
(toggle-metrics false)
|
||||
(hide-bottom-sheet))
|
||||
|
||||
(declare view)
|
||||
|
||||
(defn- on-privacy-policy-press
|
||||
[]
|
||||
[settings?]
|
||||
(rf/dispatch
|
||||
[:show-bottom-sheet
|
||||
{:content (fn []
|
||||
[quo.theme/provider :dark
|
||||
[privacy/privacy-statement]])
|
||||
:shell? true}]))
|
||||
{:content (fn []
|
||||
[quo.theme/provider :dark
|
||||
[privacy/privacy-statement]])
|
||||
:on-close (fn []
|
||||
(rf/dispatch [:show-bottom-sheet
|
||||
{:content (fn []
|
||||
[quo.theme/provider :dark
|
||||
[view {:settings? settings?}]])
|
||||
:shell? true}]))
|
||||
:shell? true}]))
|
||||
|
||||
(defn- privacy-policy-text
|
||||
[settings?]
|
||||
[rn/view {:style style/privacy-policy}
|
||||
[quo/text
|
||||
[quo/text
|
||||
{:style {:color colors/white-opa-50}
|
||||
:size :paragraph-2}
|
||||
(i18n/label :t/more-details-in-privacy-policy-1)]
|
||||
[quo/text
|
||||
{:size :paragraph-2
|
||||
:weight :bold
|
||||
:on-press #(on-privacy-policy-press settings?)}
|
||||
(i18n/label :t/more-details-in-privacy-policy-2)]]])
|
||||
|
||||
(defn view
|
||||
[{:keys [settings?]}]
|
||||
@@ -79,22 +102,18 @@
|
||||
[quo/text
|
||||
{:size :paragraph-2
|
||||
:style style/info-text}
|
||||
(i18n/label :t/usage-data-shared-from-all-profiles)
|
||||
(i18n/label :t/more-details-in-privacy-policy-1)
|
||||
[quo/text
|
||||
{:size :paragraph-2
|
||||
:weight :bold
|
||||
:on-press on-privacy-policy-press}
|
||||
(i18n/label :t/more-details-in-privacy-policy-2)]]
|
||||
(i18n/label :t/usage-data-shared-from-all-profiles)]
|
||||
[quo/text
|
||||
{:size :paragraph-2
|
||||
:style style/info-text}
|
||||
(i18n/label :t/usage-data-shared-from-all-profiles)
|
||||
(i18n/label :t/sharing-usage-data-can-be-turned-off)])]
|
||||
[quo/bottom-actions
|
||||
{:actions :two-actions
|
||||
:blur? true
|
||||
:button-one-label (i18n/label :t/share-usage-data)
|
||||
:button-one-props {:on-press on-share-usage}
|
||||
:button-two-label (i18n/label (if settings? :t/do-not-share :t/not-now))
|
||||
:button-two-label (i18n/label :t/not-now)
|
||||
:button-two-props {:type :grey
|
||||
:on-press on-do-not-share}}]])
|
||||
:on-press on-do-not-share}}]
|
||||
[privacy-policy-text settings?]])
|
||||
|
||||
@@ -2,23 +2,42 @@
|
||||
(:require
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.common.theme.core :as theme]
|
||||
[status-im.common.theme.utils :as utils]))
|
||||
[status-im.constants :as constants]))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:theme/init-theme
|
||||
(fn []
|
||||
(theme/add-device-theme-change-listener)))
|
||||
|
||||
(defn- appearance-type->theme
|
||||
"Converts appearance type identifier to a theme keyword.
|
||||
Returns `:light` or `:dark` based on `appearance-type`:
|
||||
- `appearance-type-light` (1): Light theme.
|
||||
- `appearance-type-dark` (2): Dark theme.
|
||||
- `appearance-type-system` (0): Uses system preference."
|
||||
[appearance-type]
|
||||
(condp = appearance-type
|
||||
constants/appearance-type-dark :dark
|
||||
constants/appearance-type-light :light
|
||||
constants/appearance-type-system (if (theme/device-theme-dark?) :dark :light)
|
||||
:dark))
|
||||
|
||||
;; Switches the theme and triggers related effects.
|
||||
;;
|
||||
;; Parameters:
|
||||
;; - `theme`: Optional theme keyword to apply. If not provided, defaults to the theme determined by
|
||||
;; `appearance-type`.
|
||||
;; - `appearance-type`: Optional appearance type to determine the theme. If not provided, defaults to
|
||||
;; the appearance type from the user's profile.
|
||||
;; - `view-id`: Optional view ID for updating status and navigation color. If not provided, uses the
|
||||
;; current view ID from the database. `view-id` is required because status and navigation bar colors
|
||||
;; depends on the screen. For example, on the home screen, the navigation color should always be dark,
|
||||
;; regardless of the theme, due to the bottom tabs.
|
||||
(re-frame/reg-event-fx
|
||||
:theme/switch
|
||||
(fn [{db :db} [{:keys [theme view-id theme-type]}]]
|
||||
"Switches the theme and triggers related effects.
|
||||
Parameters:
|
||||
- theme: Optional theme keyword to apply. If not provided, defaults to the theme determined by theme-type.
|
||||
- theme-type: Optional theme type to determine the theme. If not provided, defaults to the theme type from the user's profile.
|
||||
- view-id: Optional view ID for updating status color. If not provided, uses the current view ID from the database."
|
||||
(let [theme-type (or theme-type (get-in db [:profile/profile :appearance]))
|
||||
theme (or theme (utils/theme-type->theme-value theme-type))]
|
||||
(fn [{db :db} [{:keys [theme view-id appearance-type]}]]
|
||||
(let [appearance-type (or appearance-type (get-in db [:profile/profile :appearance]))
|
||||
theme (or theme (appearance-type->theme appearance-type))]
|
||||
{:db (assoc db :theme theme)
|
||||
:fx [[:theme/legacy-theme-fx theme]
|
||||
[:dispatch
|
||||
|
||||