Compare commits

..
731 changed files with 12073 additions and 14646 deletions
+1 -2
View File
@@ -35,5 +35,4 @@ LOCAL_PAIRING_ENABLED=1
TEST_STATEOFUS=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=0
ENABLE_ALERT_BANNER=0
SHOW_NOT_IMPLEMENTED_FEATURES=1
-3
View File
@@ -35,6 +35,3 @@ LOCAL_PAIRING_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=1
DELETE_MESSAGE_FOR_ME_UNDO_TIME_LIMIT=10000
DELETE_MESSAGE_UNDO_TIME_LIMIT=10000
ENABLE_ALERT_BANNER=0
-1
View File
@@ -37,4 +37,3 @@ LOCAL_PAIRING_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=1
TEST_NETWORKS_ENABLED=1
SHOW_NOT_IMPLEMENTED_FEATURES=1
ENABLE_ALERT_BANNER=1
-1
View File
@@ -23,4 +23,3 @@ DATABASE_MANAGEMENT_ENABLED=1
DELETE_MESSAGE_ENABLED=1
FAST_CREATE_COMMUNITY_ENABLED=0
TEST_NETWORKS_ENABLED=0
ENABLE_ALERT_BANNER=1
-8
View File
@@ -145,14 +145,6 @@ android {
jvmTarget = JavaVersion.VERSION_17
}
// https://developer.android.com/studio/projects/install-ndk#vanilla_cmake
externalNativeBuild {
cmake {
// This version must match cmakeVersions inside nix/pkgs/android-sdk/compose.nix
version "3.22.1"
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
-7
View File
@@ -2,13 +2,6 @@
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="auto">
<queries>
<intent>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<data android:mimeType="*/*" />
</intent>
</queries>
<!-- non-dangerous permissions -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
+1 -8
View File
@@ -36,12 +36,6 @@ pipeline {
))
}
environment {
/* Avoid race conditions with other builds using virtualenv. */
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
}
stages {
stage('Fetch') {
steps { script {
@@ -58,8 +52,7 @@ pipeline {
stage('Setup') {
steps { script {
dir('test/appium') {
sh "python3 -m venv ${VIRTUAL_ENV}"
sh 'pip3 install -r requirements.txt'
sh 'pip3 install --user -r requirements.txt'
}
} }
}
+1 -8
View File
@@ -54,12 +54,6 @@ pipeline {
))
}
environment {
/* Avoid race conditions with other builds using virtualenv. */
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
}
stages {
stage('Prep') {
steps { script {
@@ -85,8 +79,7 @@ pipeline {
stage('Setup') {
steps { script {
dir('test/appium') {
sh "python3 -m venv ${VIRTUAL_ENV}"
sh 'pip3 install -r requirements.txt'
sh 'pip3 install --user -r requirements.txt'
}
} }
}
+1 -7
View File
@@ -35,11 +35,6 @@ pipeline {
))
}
environment {
/* Avoid race conditions with other builds using virtualenv. */
VIRTUAL_ENV = "${WORKSPACE_TMP}/venv"
PATH = "${VIRTUAL_ENV}/bin:${PATH}"
}
stages {
stage('Prep') {
@@ -56,8 +51,7 @@ pipeline {
stage('Setup') {
steps { script {
dir('test/appium') {
sh "python3 -m venv ${VIRTUAL_ENV}"
sh 'pip3 install -r requirements.txt'
sh 'pip3 install --user -r requirements.txt'
}
} }
}
+19 -18
View File
@@ -8,7 +8,7 @@ The generally accepted requirements for its use are described below:
- Once a PR is created, it moves to the ```REVIEW``` column where a review will be requested automatically.
- You can also request a review inside the PR from a particular person if needed.
- When creating a PR, do not forget to assign it to yourself.
- Also in case the PR adds new functionality, a description **MUST** be added.
- Also in case the PR adds new functionality, a short description would be appreciated.
### What if the work is still in progress?
@@ -28,11 +28,26 @@ Ready for testing, a PR should meet the following criteria:
4. Has the label: `request-manual-qa` or `skip-manual-qa`.
5. PRs **MUST** identify what area is affected and should have a description.
**NOTE:** Make sure that QAs are OK with that
### Adding `skip-manual-qa`
- Please ask another team member before adding the `skip-manual-qa` label (PR/Status community/DMs) so that there's a second opinion.
- The PR MUST have a proper reasoning why manual QA is skipped.
- The PR MUST include the steps of testing that has been done by the developer prior to moving it forward.
**From the perspective of a developer it means that once work on PR is finished:**
1. It should be rebased to the latest `develop`. If there are conflicts - they should be resolved if possible.
2. If the PR was in the `Contributor` column - it should be moved to `Review` column.
3. Wait for the review.
4. Make sure that after review and before requesting manual QA your PR is rebased to current develop.
5. The PR **MUST** be moved to the E2E column when it is ready for testing (**mandatory for all PRs**).
That will also trigger e2e tests run. QAs are monitoring PRs from E2E column and take it into test.
6. After that - PR will be taken into manual testing by the QA team.
### E2E tests and analyzing the results
The PR **MUST** be moved to the E2E column when it is ready for testing (**mandatory for all PRs**).
That will also trigger e2e tests run. QAs are monitoring PRs from E2E column and take it into test.
This step cannot be skipped. So, at least one comment from the `status-im-auto` bot with results is a prerequisite for moving forward.
Information on how to analyze tests can be found [here](https://github.com/status-im/status-mobile/blob/develop/doc/how-to-launch-e2e.md).
Tests might be flaky, as they depend on infrastructure - SauceLabs and Waku.
@@ -44,20 +59,6 @@ Please, respect this rule.**
## Testing PR
### Adding `skip-manual-qa`
**Do not hesitate to use a `skip-manual-qa`** if you're sure that it is a simple flow and you checked it.
- Please ask another team member before adding the `skip-manual-qa` label (PR/Status community/DMs) so that there's a second opinion.
- The PR MUST have a proper reasoning why manual QA is skipped.
- The PR MUST include the steps of testing that has been done by the developer prior to moving it forward.
**NOTE:** Make sure that QAs are OK with that;
Before merging PRs, please make sure that information is added about how you tested the PRs, that e2s have been passed and their results have been reviewed.
The QA team appreciates your help!
### Manual testing
#### Prerequisites for manual testing
@@ -98,7 +99,7 @@ There are three possible scenarios when the design review is completed:
---
**Notes:**
- If your PR has a long story and started from `develop` branch several days ago, please rebase it to current develop before adding label
- if PR can be tested by developer (in case of small changes) and/or developer is sure that the changes made cannot introduce a regression, then PR can be merged without manual testing. Also, currently, PRs are not manually tested if the changes relate only the design (creation of components, etc.) and do not affect the functionality (see `skip-manual-qa` label)
- if PR can be tested by developer (in case of small changes) and/or developer is sure that the changes made cannot introduce a regression, then PR can be merged without manual testing. Also, currently, PRs are not manually tested if the changes relate only the design (creation of components, etc.) and do not affect the functionality.
---
#### Why my PR is in `Contributor` column?
-16
View File
@@ -128,19 +128,3 @@ Status-mobile uses `shadow-cljs` for hot reloading changes and uses its own [rel
### Solution
Open react native's [In-App Developer Menu](https://reactnative.dev/docs/debugging#accessing-the-in-app-developer-menu) and press "Disable Fast Refresh" or "Disable Hot Reloading"
# App crashing after running `make run-ios`
### Cause
It's possible that installing XCode from a `.xip` file might cause XCode to act funny
Since it's not installed from the App Store, Or you might be missing a Rosetta installation.
[Reference/Similar issue](https://github.com/expo/expo-cli/issues/3197)
You might see something like this after running `make run-ios`:
```
Underlying error (domain=FBSOpenApplicationServiceErrorDomain, code=1):
```
### Solution
Run `softwareupdate --install-rosetta --agree-to-license`
to accept XCode's license and install Rosetta.
+2 -2
View File
@@ -164,7 +164,7 @@ def build_ios_e2e
# 3. directory where to up StatusIm.app
derived_data_path: 'status-ios',
output_name: 'StatusIm.app',
buildlog_path: 'logs',
buildlog_path: 'ios/logs',
# -------------------------------------
# Normal stuff
scheme: 'StatusIm',
@@ -231,7 +231,7 @@ platform :ios do
clean: true,
export_method: 'app-store',
output_directory: 'status-ios',
buildlog_path: 'logs',
buildlog_path: 'ios/logs',
include_symbols: false,
export_options: {
"combileBitcode": true,
+10 -22
View File
@@ -1,28 +1,13 @@
def node_require(script)
# Resolve script with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
"require.resolve(
'#{script}',
{paths: [process.argv[1]]},
)", __dir__]).strip
end
node_require('react-native/scripts/react_native_pods.rb')
node_require('react-native-permissions/scripts/setup.rb')
# Resolve react_native_pods.rb with node to allow for hoisting
require Pod::Executable.execute_command('node', ['-p',
'require.resolve(
"react-native/scripts/react_native_pods.rb",
{paths: [process.argv[1]]},
)', __dir__]).strip
platform :ios, min_ios_version_supported
prepare_react_native_project!
setup_permissions([
'Camera',
'FaceID',
'MediaLibrary',
'Microphone',
'Notifications',
'PhotoLibrary',
'PhotoLibraryAddOnly',
])
linkage = ENV['USE_FRAMEWORKS']
if linkage != nil
Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
@@ -48,7 +33,7 @@ abstract_target 'Status' do
use_react_native!(
:path => config[:reactNativePath],
:fabric_enabled => flags[:fabric_enabled],
:hermes_enabled => true,
:hermes_enabled => false,
# An absolute path to your application root.
:app_path => "#{Pod::Config.instance.installation_root}/.."
)
@@ -58,6 +43,9 @@ abstract_target 'Status' do
pod 'SSZipArchive', '2.4.3'
permissions_path = '../node_modules/react-native-permissions/ios'
pod 'Permission-Microphone', :path => "#{permissions_path}/Microphone/Permission-Microphone.podspec"
pod 'Permission-Camera', :path => "#{permissions_path}/Camera/Permission-Camera.podspec"
pod "react-native-status-keycard", path: "../node_modules/react-native-status-keycard"
pod "react-native-status", path: "../modules/react-native-status"
pod "Keycard", git: "https://github.com/status-im/Keycard.swift.git"
+93 -139
View File
@@ -14,15 +14,11 @@ PODS:
- ReactCommon/turbomodule/core (= 0.73.5)
- fmt (6.2.1)
- glog (0.3.5)
- hermes-engine (0.73.5):
- hermes-engine/Pre-built (= 0.73.5)
- hermes-engine/Pre-built (0.73.5)
- HMSegmentedControl (1.5.6)
- Keycard (3.0.6):
- CryptoSwift
- secp256k1
- SSZipArchive
- libevent (2.1.12)
- libwebp (1.2.4):
- libwebp/demux (= 1.2.4)
- libwebp/mux (= 1.2.4)
@@ -32,6 +28,10 @@ PODS:
- libwebp/mux (1.2.4):
- libwebp/demux
- libwebp/webp (1.2.4)
- Permission-Camera (3.8.0):
- RNPermissions
- Permission-Microphone (3.8.0):
- RNPermissions
- RCT-Folly (2022.05.16.00):
- boost
- DoubleConversion
@@ -48,12 +48,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCT-Folly/Futures (2022.05.16.00):
- boost
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- libevent
- RCTRequired (0.73.5)
- RCTTypeSafety (0.73.5):
- FBLazyVector (= 0.73.5)
@@ -77,11 +71,11 @@ PODS:
- DoubleConversion
- FBReactNativeSpec
- glog
- hermes-engine
- RCT-Folly
- RCTRequired
- RCTTypeSafety
- React-Core
- React-jsc
- React-jsi
- React-jsiexecutor
- React-NativeModulesApple
@@ -90,11 +84,10 @@ PODS:
- ReactCommon/turbomodule/core
- React-Core (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -104,11 +97,10 @@ PODS:
- Yoga
- React-Core/CoreModulesHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -118,10 +110,9 @@ PODS:
- Yoga
- React-Core/Default (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -131,12 +122,11 @@ PODS:
- Yoga
- React-Core/DevSupport (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-Core/RCTWebSocket (= 0.73.5)
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-jsinspector (= 0.73.5)
@@ -147,11 +137,10 @@ PODS:
- Yoga
- React-Core/RCTActionSheetHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -161,11 +150,10 @@ PODS:
- Yoga
- React-Core/RCTAnimationHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -175,11 +163,10 @@ PODS:
- Yoga
- React-Core/RCTBlobHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -189,11 +176,10 @@ PODS:
- Yoga
- React-Core/RCTImageHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -203,11 +189,10 @@ PODS:
- Yoga
- React-Core/RCTLinkingHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -217,11 +202,10 @@ PODS:
- Yoga
- React-Core/RCTNetworkHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -231,11 +215,10 @@ PODS:
- Yoga
- React-Core/RCTSettingsHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -245,11 +228,10 @@ PODS:
- Yoga
- React-Core/RCTTextHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -259,11 +241,10 @@ PODS:
- Yoga
- React-Core/RCTVibrationHeaders (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -273,11 +254,10 @@ PODS:
- Yoga
- React-Core/RCTWebSocket (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-cxxreact
- React-hermes
- React-jsc
- React-jsi
- React-jsiexecutor
- React-perflogger
@@ -301,7 +281,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-debug (= 0.73.5)
@@ -315,7 +294,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -337,6 +315,7 @@ PODS:
- React-Fabric/textlayoutmanager (= 0.73.5)
- React-Fabric/uimanager (= 0.73.5)
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -348,7 +327,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -356,6 +334,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -367,7 +346,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -375,6 +353,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -386,7 +365,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -394,6 +372,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -405,7 +384,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -413,6 +391,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -424,7 +403,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -443,6 +421,7 @@ PODS:
- React-Fabric/components/unimplementedview (= 0.73.5)
- React-Fabric/components/view (= 0.73.5)
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -454,7 +433,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -462,6 +440,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -473,7 +452,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -481,6 +459,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -492,7 +471,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -500,6 +478,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -511,7 +490,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -519,6 +497,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -530,7 +509,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -538,6 +516,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -549,7 +528,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -557,6 +535,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -568,7 +547,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -576,6 +554,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -587,7 +566,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -595,6 +573,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -606,7 +585,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -614,6 +592,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -625,7 +604,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -633,6 +611,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -644,7 +623,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -652,6 +630,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -664,7 +643,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -672,6 +650,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -683,7 +662,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -691,6 +669,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -702,7 +681,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -710,6 +688,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -721,7 +700,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -729,6 +707,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -740,7 +719,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -748,6 +726,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -759,7 +738,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -767,6 +745,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -778,7 +757,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -786,6 +764,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -797,7 +776,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -806,6 +784,7 @@ PODS:
- React-debug
- React-Fabric/uimanager
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -817,7 +796,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired
- RCTTypeSafety
@@ -825,6 +803,7 @@ PODS:
- React-cxxreact
- React-debug
- React-graphics
- React-jsc
- React-jsi
- React-jsiexecutor
- React-logger
@@ -836,13 +815,13 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- RCTRequired (= 0.73.5)
- RCTTypeSafety (= 0.73.5)
- React-Fabric
- React-graphics
- React-ImageManager
- React-jsc
- React-jsi
- React-jsiexecutor (= 0.73.5)
- React-logger
@@ -855,18 +834,6 @@ PODS:
- RCT-Folly/Fabric (= 2022.05.16.00)
- React-Core/Default (= 0.73.5)
- React-utils
- React-hermes (0.73.5):
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- RCT-Folly/Futures (= 2022.05.16.00)
- React-cxxreact (= 0.73.5)
- React-jsi
- React-jsiexecutor (= 0.73.5)
- React-jsinspector (= 0.73.5)
- React-perflogger (= 0.73.5)
- React-ImageManager (0.73.5):
- glog
- RCT-Folly/Fabric
@@ -876,6 +843,11 @@ PODS:
- React-graphics
- React-rendererdebug
- React-utils
- React-jsc (0.73.5):
- React-jsc/Fabric (= 0.73.5)
- React-jsi (= 0.73.5)
- React-jsc/Fabric (0.73.5):
- React-jsi (= 0.73.5)
- React-jserrorhandler (0.73.5):
- RCT-Folly/Fabric (= 2022.05.16.00)
- React-debug
@@ -886,13 +858,11 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-jsiexecutor (0.73.5):
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-cxxreact (= 0.73.5)
- React-jsi (= 0.73.5)
@@ -909,30 +879,22 @@ PODS:
- React-Core
- react-native-blob-util (0.13.18):
- React-Core
- react-native-blur (4.4.0):
- glog
- RCT-Folly (= 2022.05.16.00)
- react-native-blur (4.3.3):
- React-Core
- react-native-cameraroll (7.5.2):
- glog
- RCT-Folly (= 2022.05.16.00)
- React-Core
- react-native-compat (2.12.2):
- glog
- RCT-Folly (= 2022.05.16.00)
- react-native-cameraroll (5.10.0):
- React-Core
- react-native-config (1.5.0):
- react-native-config/App (= 1.5.0)
- react-native-config/App (1.5.0):
- React-Core
- react-native-get-random-values (1.11.0):
- React-Core
- react-native-hole-view (3.0.0-alpha4):
- React-Core
- react-native-image-resizer (1.2.3):
- React
- react-native-lottie-splash-screen (1.1.2):
- React
- react-native-mail (6.1.1):
- React-Core
- react-native-netinfo (4.7.0):
- React
- react-native-orientation-locker (1.5.0):
@@ -953,10 +915,10 @@ PODS:
- React-nativeconfig (0.73.5)
- React-NativeModulesApple (0.73.5):
- glog
- hermes-engine
- React-callinvoker
- React-Core
- React-cxxreact
- React-jsc
- React-jsi
- React-runtimeexecutor
- ReactCommon/turbomodule/bridging
@@ -978,7 +940,7 @@ PODS:
- RCTTypeSafety
- React-Core
- React-CoreModules
- React-hermes
- React-jsc
- React-nativeconfig
- React-NativeModulesApple
- React-RCTFabric
@@ -987,7 +949,6 @@ PODS:
- React-runtimescheduler
- ReactCommon
- React-RCTBlob (0.73.5):
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-Codegen
- React-Core/RCTBlobHeaders
@@ -998,7 +959,6 @@ PODS:
- ReactCommon
- React-RCTFabric (0.73.5):
- glog
- hermes-engine
- RCT-Folly/Fabric (= 2022.05.16.00)
- React-Core
- React-debug
@@ -1006,6 +966,7 @@ PODS:
- React-FabricImage
- React-graphics
- React-ImageManager
- React-jsc
- React-jsi
- React-nativeconfig
- React-RCTImage
@@ -1066,11 +1027,11 @@ PODS:
- React-jsi (= 0.73.5)
- React-runtimescheduler (0.73.5):
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker
- React-cxxreact
- React-debug
- React-jsc
- React-jsi
- React-rendererdebug
- React-runtimeexecutor
@@ -1086,7 +1047,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-cxxreact (= 0.73.5)
@@ -1099,7 +1059,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-cxxreact (= 0.73.5)
@@ -1110,7 +1069,6 @@ PODS:
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- hermes-engine
- RCT-Folly (= 2022.05.16.00)
- React-callinvoker (= 0.73.5)
- React-cxxreact (= 0.73.5)
@@ -1163,7 +1121,7 @@ PODS:
- TOCropViewController
- RNKeychain (8.1.2):
- React-Core
- RNPermissions (4.1.5):
- RNPermissions (3.8.0):
- React-Core
- RNReanimated (3.6.1):
- glog
@@ -1195,9 +1153,9 @@ DEPENDENCIES:
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
- Keycard (from `https://github.com/status-im/Keycard.swift.git`)
- libevent (~> 2.1.12)
- Permission-Camera (from `../node_modules/react-native-permissions/ios/Camera/Permission-Camera.podspec`)
- Permission-Microphone (from `../node_modules/react-native-permissions/ios/Microphone/Permission-Microphone.podspec`)
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCT-Folly/Fabric (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
@@ -1213,8 +1171,8 @@ DEPENDENCIES:
- React-Fabric (from `../node_modules/react-native/ReactCommon`)
- React-FabricImage (from `../node_modules/react-native/ReactCommon`)
- React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`)
- React-hermes (from `../node_modules/react-native/ReactCommon/hermes`)
- React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`)
- React-jsc (from `../node_modules/react-native/ReactCommon/jsc`)
- React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`)
- React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
@@ -1226,12 +1184,11 @@ DEPENDENCIES:
- react-native-blob-util (from `../node_modules/react-native-blob-util`)
- "react-native-blur (from `../node_modules/@react-native-community/blur`)"
- "react-native-cameraroll (from `../node_modules/@react-native-camera-roll/camera-roll`)"
- "react-native-compat (from `../node_modules/@walletconnect/react-native-compat`)"
- react-native-config (from `../node_modules/react-native-config`)
- react-native-get-random-values (from `../node_modules/react-native-get-random-values`)
- react-native-hole-view (from `../node_modules/react-native-hole-view`)
- react-native-image-resizer (from `../node_modules/react-native-image-resizer`)
- react-native-lottie-splash-screen (from `../node_modules/react-native-lottie-splash-screen`)
- react-native-mail (from `../node_modules/react-native-mail`)
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
- react-native-orientation-locker (from `../node_modules/react-native-orientation-locker`)
- react-native-shake (from `../node_modules/react-native-shake`)
@@ -1286,7 +1243,6 @@ SPEC REPOS:
- CryptoSwift
- fmt
- HMSegmentedControl
- libevent
- libwebp
- SDWebImage
- SDWebImageWebPCoder
@@ -1307,11 +1263,12 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/React/FBReactNativeSpec"
glog:
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
hermes-engine:
:podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec"
:tag: hermes-2024-02-20-RNv0.73.5-18f99ace4213052c5e7cdbcd39ee9766cd5df7e4
Keycard:
:git: https://github.com/status-im/Keycard.swift.git
Permission-Camera:
:path: "../node_modules/react-native-permissions/ios/Camera/Permission-Camera.podspec"
Permission-Microphone:
:path: "../node_modules/react-native-permissions/ios/Microphone/Permission-Microphone.podspec"
RCT-Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
RCTRequired:
@@ -1338,10 +1295,10 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon"
React-graphics:
:path: "../node_modules/react-native/ReactCommon/react/renderer/graphics"
React-hermes:
:path: "../node_modules/react-native/ReactCommon/hermes"
React-ImageManager:
:path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios"
React-jsc:
:path: "../node_modules/react-native/ReactCommon/jsc"
React-jserrorhandler:
:path: "../node_modules/react-native/ReactCommon/jserrorhandler"
React-jsi:
@@ -1364,18 +1321,16 @@ EXTERNAL SOURCES:
:path: "../node_modules/@react-native-community/blur"
react-native-cameraroll:
:path: "../node_modules/@react-native-camera-roll/camera-roll"
react-native-compat:
:path: "../node_modules/@walletconnect/react-native-compat"
react-native-config:
:path: "../node_modules/react-native-config"
react-native-get-random-values:
:path: "../node_modules/react-native-get-random-values"
react-native-hole-view:
:path: "../node_modules/react-native-hole-view"
react-native-image-resizer:
:path: "../node_modules/react-native-image-resizer"
react-native-lottie-splash-screen:
:path: "../node_modules/react-native-lottie-splash-screen"
react-native-mail:
:path: "../node_modules/react-native-mail"
react-native-netinfo:
:path: "../node_modules/@react-native-community/netinfo"
react-native-orientation-locker:
@@ -1490,43 +1445,42 @@ SPEC CHECKSUMS:
FBReactNativeSpec: 146c741a3f40361f6bc13a4ba284678cbedb5881
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 530710e7949eb12c82670bd09e946becf50a3c2a
hermes-engine: 1d1835b2cc54c381909d94d1b3c8e0a2f1a94a0e
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
Permission-Camera: e6d142d7d8b714afe0a83e5e6ae17eb949f1e3e9
Permission-Microphone: 644b1de8bcc2afcaf934e09a22bee507a95796a7
RCT-Folly: 7169b2b1c44399c76a47b5deaaba715eeeb476c0
RCTRequired: 2544c0f1081a5fa12e108bb8cb40e5f4581ccd87
RCTTypeSafety: 50efabe2b115c11ed03fbf3fd79e2f163ddb5d7c
React: 84221d5e0ce297bc57c4b6af539a62d812d89f10
React-callinvoker: 5d17577ecc7f784535ebedf3aad4bcbf8f4b5117
React-Codegen: 857e7984fc277aadde2a7a427288b6918ece7b2b
React-Core: 8e782e7e24c7843871a0d9c3c8d7c5b3ebb73832
React-Codegen: 86ddd366e10277244cb665e680c9631c459876d1
React-Core: 89feaf0468bcfdfc09aace4a3dda48ffc20628f4
React-CoreModules: 7875ee247e3e6e0e683b52cd1cdda1b71618bd55
React-cxxreact: 788cd771c6e94d44f8d472fdfae89b67226067ea
React-cxxreact: 0f83bc025517476a7e009afd240e62b7cb99f110
React-debug: 55c7f2b8463bfe85567c9f4ede904085601130c9
React-Fabric: 8cb43853496bb8032420edf62e7281c53109e682
React-FabricImage: fbdc0ef7ed58a87c77600017c19a751932de3e47
React-Fabric: ca74011a194b1783dc3270a504c240835d3cb983
React-FabricImage: 384372a69647c6e30ce64b56ebe33cc30341dfce
React-graphics: dc8307b615f14e13f1081ac23ea66697808bcd29
React-hermes: d9acaa4ebf2118d9bd8a541af8c620c467b356b6
React-ImageManager: 2a97ddc9b1f459121697d629cfbe69712997d76f
React-jsc: 899086c7f0ab7b6ab85873d55882c2aea8473cbf
React-jserrorhandler: b97b16674258ccaeff5a70047a097a140e76d12d
React-jsi: 1d59d0a148c76641ac577729e0268bafa494152c
React-jsiexecutor: 262b66928ad948491d03fd328bb5b822cce94647
React-jsi: 60bc1fdca5f69162ab9d0c4623ea77538308a4c3
React-jsiexecutor: 5ae96903178c1fdb9f18b0367b3bb73e8f6641e1
React-jsinspector: 32db5e364bcae8fca8cdf8891830636275add0c5
React-logger: 0331362115f0f5b392bd7ed14636d1a3ea612479
React-Mapbuffer: 7c35cd53a22d0be04d3f26f7881c7fb7dd230216
react-native-background-timer: 1f7d560647b40e6a60b01c452ba29c54bf581fc4
react-native-biometrics: 352e5a794bfffc46a0c86725ea7dc62deb085bdc
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
react-native-blur: 799045500f56146afc46245148080e7b7623cb75
react-native-cameraroll: af8eec1e585d053ff485d98ec837f9a8a11b5745
react-native-compat: 84e00e8dcff9251278c0d48f2bce81f4502e3925
react-native-blur: c6d0a1dc2b4b519f7afe3b14d8151998632b6d18
react-native-cameraroll: 4701ae7c3dbcd3f5e9e150ca17f250a276154b35
react-native-config: 5330c8258265c1e5fdb8c009d2cabd6badd96727
react-native-get-random-values: 21325b2244dfa6b58878f51f9aa42821e7ba3d06
react-native-hole-view: 6935448993bac79f2b5a4ad7e9741094cf810679
react-native-image-resizer: 2f1577efa3bc762597681f530c8e8d05ce0ceeb3
react-native-lottie-splash-screen: 4e1b1fd9d6633f9cd2106d6877eb5ba0147f3e2b
react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a
react-native-netinfo: ddaca8bbb9e6e914b1a23787ccb879bc642931c9
react-native-orientation-locker: 851f6510d8046ea2f14aa169b1e01fcd309a94ba
react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c
@@ -1536,13 +1490,13 @@ SPEC CHECKSUMS:
react-native-transparent-video: e484ad11ace8e5f62516e2c5e15efd3cb4df24b0
react-native-webview: 88293a0f23eca8465c0433c023ec632930e644d0
React-nativeconfig: 1166714a4f7ea57a0df5c2cb44fbc70f98d580f9
React-NativeModulesApple: 726664e9829eb5eed8170241000e46ead269a05f
React-NativeModulesApple: 461b7a216dffdcfcae46afeba2e0859a78eef71e
React-perflogger: 0dd9f1725d55f8264b81efadd373fe1d9cca7dc2
React-RCTActionSheet: 05656d2102b0d0a2676d58bad4d80106af5367b2
React-RCTAnimation: 6c66beae98730fb7615df28caf651e295f2401e5
React-RCTAppDelegate: 891b80c596fffcb3f90431739495d606a9a0d610
React-RCTBlob: 8ecee445ec5fa9ed8a8621a136183c1045165100
React-RCTFabric: f291e06bc63fef26cdd105537bae5c6a8d3bdca8
React-RCTAppDelegate: 0a5359f86586fc8fa2604dd86fab5899dbea57a9
React-RCTBlob: b377b7580098c6332d14cb09985dcff3eea29c26
React-RCTFabric: b45c27ec85755dbc95e8a7abccb9142a375ee22d
React-RCTImage: 585b16465146cb839da02f3179ce7cb19d332642
React-RCTLinking: 09ba11f7df62946e7ddca1b51aa3bf47b230e008
React-RCTNetwork: e070f8d2fca60f1e9571936ce54d165e77129e76
@@ -1552,9 +1506,9 @@ SPEC CHECKSUMS:
React-rendererdebug: ee05480666415f7a76e6cf0a7a50363423f44809
React-rncore: 010565651e9cf2e4fac9517a348446789dd55e01
React-runtimeexecutor: 56f562a608056fb0c1711d900a992e26f375d817
React-runtimescheduler: 814b644a5f456c7df1fba7bcd9914707152527c6
React-runtimescheduler: 7b558337d22a47a270b5c99d8016b5ab743b3035
React-utils: 987a4526a2fc0acdfaf87888adfe0bf9d0452066
ReactCommon: 2947b0bffd82ea0e58ca7928881152d4c6dae9af
ReactCommon: dcc87812d79ce368cc41b7cf49fb624cf3c22b6b
ReactNativeAudioToolkit: de9610f323e855ac6574be8c99621f3d57c5df06
ReactNativeCameraKit: d95d3e19c514526a234d9f93c6db7e7f10eef9ea
ReactNativeNavigation: 46305e1026fa4cdcf0cfb3822932fc58d090668d
@@ -1567,7 +1521,7 @@ SPEC CHECKSUMS:
RNGestureHandler: 15c6ef51acba34c49ff03003806cf5dd6098f383
RNImageCropPicker: 486e2f7e2b0461ce24321f751410dce1b3b49e6d
RNKeychain: a65256b6ca6ba6976132cc4124b238a5b13b3d9c
RNPermissions: 08e619529cced22695f4b6d0efcc0a233e278903
RNPermissions: 215c54462104b3925b412b0fb3c9c497b21c358b
RNReanimated: dee37576492f1a375017515f5c77e66e5eec696b
RNShare: 859ff710211285676b0bcedd156c12437ea1d564
RNStaticSafeAreaInsets: 055ddbf5e476321720457cdaeec0ff2ba40ec1b8
@@ -1580,6 +1534,6 @@ SPEC CHECKSUMS:
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
Yoga: a716eea57d0d3430219c0a5a233e1e93ee931eb7
PODFILE CHECKSUM: 5dd4a5279260d370bcdf016158c825ceb404ee06
PODFILE CHECKSUM: c9c6dfac28e31314e1a2ee2dc47364ad151f13f2
COCOAPODS: 1.13.0
+99 -170
View File
@@ -8,11 +8,10 @@
/* Begin PBXBuildFile section */
00E356F31AD99517003FC87E /* StatusImTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* StatusImTests.m */; };
0BF51D8C7FBD6A668E6E1FC0 /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 45C29909A975E0654116557F /* libPods-Status-StatusIm.a */; };
131972279C6DBF736235F9F9 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */; };
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */; };
2B6F8F28B81E862D44C8723D /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 87038678EE47E8EF6E93EB54 /* libPods-Status-StatusImPR.a */; };
3870E1E692E24133A80B07DE /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */; };
393D26E3080B443A998F4A2F /* Inter-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */; };
3A2626CF245C3F2200D5F94B /* Dummy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A2626CE245C3F2200D5F94B /* Dummy.swift */; };
@@ -37,6 +36,7 @@
3AAD2AD324A3A60E0075D594 /* Inter-SemiBold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */; };
3AAD2AD424A3A60E0075D594 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */; };
3ABC7AF8245FF85900612C45 /* InterStatus-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */; };
42AC64E4D3CA4E676400C598 /* libPods-Status-StatusIm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2D2D9E4943562065BF98E304 /* libPods-Status-StatusIm.a */; };
57C854A7993C47A3B1AECD32 /* Inter-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = C6B1215047604CD59A4C74D6 /* Inter-MediumItalic.otf */; };
65F6941925780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
65F6941A25780A4F00A45E76 /* Bridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F6941825780A4F00A45E76 /* Bridge.swift */; };
@@ -46,6 +46,7 @@
715D8133290BE850006F5C88 /* UbuntuMono-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */; };
74B758FC20D7C00B003343C3 /* launch-image-universal.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */; };
8391E8E0E93C41A98AAA6631 /* Inter-SemiBoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */; };
8CF1CA9463A4048F97BABB82 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 466C47BA171B53CAE0AD6A19 /* libPods-Status-StatusIm-StatusImTests.a */; };
B24FC7FD1DE7195700D694FF /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FC1DE7195700D694FF /* Social.framework */; };
B24FC7FF1DE7195F00D694FF /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B24FC7FE1DE7195F00D694FF /* MessageUI.framework */; };
B2F2D1BC1D9D531B00B7B453 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B2F2D1BB1D9D531B00B7B453 /* Images.xcassets */; };
@@ -60,7 +61,6 @@
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 */; };
D99C50E5E18942A39C8DDF61 /* Inter-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = B321D25F4493470980039457 /* Inter-BoldItalic.otf */; };
DE2F1721F9D5702C7CEC5594 /* libPods-Status-StatusImPR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -108,40 +108,40 @@
00E356EE1AD99517003FC87E /* StatusImTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = StatusImTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
00E356F21AD99517003FC87E /* StatusImTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = StatusImTests.m; sourceTree = "<group>"; };
0C331FD392B615DDAD0997F5 /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
13B07F961A680F5B00A75B9A /* StatusIm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = StatusIm.app; sourceTree = BUILT_PRODUCTS_DIR; };
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = StatusIm/AppDelegate.h; sourceTree = "<group>"; };
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = StatusIm/AppDelegate.mm; sourceTree = "<group>"; };
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = StatusIm/Info.plist; sourceTree = "<group>"; };
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = StatusIm/main.m; sourceTree = "<group>"; };
1426DF592BA248FC81D955CB /* Inter-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Regular.otf"; path = "../resources/fonts/Inter-Regular.otf"; sourceTree = "<group>"; };
1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
2756A97EBFF084FA94990AA5 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.release.xcconfig"; sourceTree = "<group>"; };
2D2D9E4943562065BF98E304 /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
3A2626CE245C3F2200D5F94B /* Dummy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Dummy.swift; sourceTree = "<group>"; };
3A6406FB24A3ADF90046ED37 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3A8F8EA924A4D31600BF206D /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
3AAD2ADC24A3A60E0075D594 /* Status PR.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Status PR.app"; sourceTree = BUILT_PRODUCTS_DIR; };
3AB1C3AD245C043900098F67 /* StatusIm-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusIm-Bridging-Header.h"; sourceTree = "<group>"; };
45C29909A975E0654116557F /* libPods-Status-StatusIm.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm.a"; sourceTree = BUILT_PRODUCTS_DIR; };
466C47BA171B53CAE0AD6A19 /* libPods-Status-StatusIm-StatusImTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusIm-StatusImTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
4C16DE0B1F89508700AA10DB /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
5AAC8D9B1AF8BB7C8AB89845 /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
65F693BD2578002500A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = System/Library/Frameworks/CoreNFC.framework; sourceTree = SDKROOT; };
65F693BF2578003600A45E76 /* CoreNFC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreNFC.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.0.sdk/System/iOSSupport/System/Library/Frameworks/CoreNFC.framework; sourceTree = DEVELOPER_DIR; };
65F6941725780A4E00A45E76 /* StatusImTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "StatusImTests-Bridging-Header.h"; sourceTree = "<group>"; };
65F6941825780A4F00A45E76 /* Bridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bridge.swift; sourceTree = "<group>"; };
680C14B0F642A5F544C397B7 /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
693A62DB37BC4CD5A30E5C96 /* Inter-SemiBold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBold.otf"; path = "../resources/fonts/Inter-SemiBold.otf"; sourceTree = "<group>"; };
715D8131290BE850006F5C88 /* UbuntuMono-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "UbuntuMono-Regular.ttf"; path = "../resources/fonts/UbuntuMono-Regular.ttf"; sourceTree = "<group>"; };
74B758FB20D7C00B003343C3 /* launch-image-universal.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "launch-image-universal.storyboard"; sourceTree = "<group>"; };
7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.release.xcconfig"; sourceTree = "<group>"; };
7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusImPR.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR.debug.xcconfig"; sourceTree = "<group>"; };
7FA4F04CE45319370F87C4FD /* Pods-Status-StatusIm.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.release.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.release.xcconfig"; sourceTree = "<group>"; };
87038678EE47E8EF6E93EB54 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
922C4CA61F4D5F8B0033C753 /* StatusIm.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = StatusIm.entitlements; path = StatusIm/StatusIm.entitlements; sourceTree = "<group>"; };
9C76AF5A418D4D65A4CAD1D9 /* InterStatus-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "InterStatus-Regular.otf"; path = "../resources/fonts/InterStatus-Regular.otf"; sourceTree = "<group>"; };
9EC0135C1E06FB1900155B5C /* RCTWKWebView.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWKWebView.xcodeproj; path = "../node_modules/react-native-wkwebview-reborn/ios/RCTWKWebView.xcodeproj"; sourceTree = "<group>"; };
A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm.debug.xcconfig"; sourceTree = "<group>"; };
A4F2BBE8D4DD4140A6CCAC39 /* Inter-SemiBoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-SemiBoldItalic.otf"; path = "../resources/fonts/Inter-SemiBoldItalic.otf"; sourceTree = "<group>"; };
B07176ACDAA1422E8F0A3D6B /* Inter-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "Inter-Italic.otf"; path = "../resources/fonts/Inter-Italic.otf"; sourceTree = "<group>"; };
B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Status-StatusImPR.a"; sourceTree = BUILT_PRODUCTS_DIR; };
B24FC7FC1DE7195700D694FF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; };
B24FC7FE1DE7195F00D694FF /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
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>"; };
@@ -153,7 +153,7 @@
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>"; };
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Statusgo.xcframework; path = "../modules/react-native-status/ios/RCTStatus/Statusgo.xcframework"; sourceTree = "<group>"; };
D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
D42A8AC52E48DA4C89F20C13 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; path = "Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests.debug.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -161,7 +161,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
131972279C6DBF736235F9F9 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
8CF1CA9463A4048F97BABB82 /* libPods-Status-StatusIm-StatusImTests.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -174,7 +174,7 @@
CE4E31B31D8695250033ED64 /* Statusgo.xcframework in Frameworks */,
25DC9C9DC25846BD8D084888 /* libc++.tbd in Frameworks */,
BA68A2377A20496EA737000D /* libz.tbd in Frameworks */,
0BF51D8C7FBD6A668E6E1FC0 /* libPods-Status-StatusIm.a in Frameworks */,
42AC64E4D3CA4E676400C598 /* libPods-Status-StatusIm.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -188,7 +188,7 @@
3AAD2AC224A3A60E0075D594 /* Statusgo.xcframework in Frameworks */,
3AAD2AC524A3A60E0075D594 /* libc++.tbd in Frameworks */,
3AAD2AC624A3A60E0075D594 /* libz.tbd in Frameworks */,
DE2F1721F9D5702C7CEC5594 /* libPods-Status-StatusImPR.a in Frameworks */,
2B6F8F28B81E862D44C8723D /* libPods-Status-StatusImPR.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -314,9 +314,9 @@
CE4E31B21D8695250033ED64 /* Statusgo.xcframework */,
8B9A886A2CB448B1ABA0EB62 /* libc++.tbd */,
4E586E1B0E544F64AA9F5BD1 /* libz.tbd */,
45C29909A975E0654116557F /* libPods-Status-StatusIm.a */,
2D9DF8AC0F6547107DE1A25D /* libPods-Status-StatusIm-StatusImTests.a */,
B17DF204648B8189F8ABD0A7 /* libPods-Status-StatusImPR.a */,
2D2D9E4943562065BF98E304 /* libPods-Status-StatusIm.a */,
466C47BA171B53CAE0AD6A19 /* libPods-Status-StatusIm-StatusImTests.a */,
87038678EE47E8EF6E93EB54 /* libPods-Status-StatusImPR.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -324,12 +324,12 @@
D0D5C8D06825D33BA2D2121E /* Pods */ = {
isa = PBXGroup;
children = (
A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */,
232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */,
D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */,
7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */,
680C14B0F642A5F544C397B7 /* Pods-Status-StatusIm.debug.xcconfig */,
7FA4F04CE45319370F87C4FD /* Pods-Status-StatusIm.release.xcconfig */,
D42A8AC52E48DA4C89F20C13 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */,
2756A97EBFF084FA94990AA5 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */,
5AAC8D9B1AF8BB7C8AB89845 /* Pods-Status-StatusImPR.debug.xcconfig */,
0C331FD392B615DDAD0997F5 /* Pods-Status-StatusImPR.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
@@ -341,12 +341,11 @@
isa = PBXNativeTarget;
buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "StatusImTests" */;
buildPhases = (
5937040F3338CDF93E777A93 /* [CP] Check Pods Manifest.lock */,
99EA576680D5849CA4274106 /* [CP] Check Pods Manifest.lock */,
00E356EA1AD99517003FC87E /* Sources */,
00E356EB1AD99517003FC87E /* Frameworks */,
00E356EC1AD99517003FC87E /* Resources */,
7AD665439C08CFEF5EF84F6A /* [CP] Embed Pods Frameworks */,
02C1A8CA208E38DA07BAC311 /* [CP] Copy Pods Resources */,
835B3E5945D5F723935FD4E1 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -362,15 +361,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "StatusIm" */;
buildPhases = (
1DFD6BF757E89B72F40FCEE9 /* [CP] Check Pods Manifest.lock */,
140572B0EA34D6F884AB6CC4 /* [CP] Check Pods Manifest.lock */,
13B07F871A680F5B00A75B9A /* Sources */,
13B07F8C1A680F5B00A75B9A /* Frameworks */,
13B07F8E1A680F5B00A75B9A /* Resources */,
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
20B6B6891D92C42700CC5C6A /* Embed Frameworks */,
E3914A731DF919ED00EBB515 /* Run Script */,
50F2A2E15670F86233743A5C /* [CP] Embed Pods Frameworks */,
1B623A051F855FC5B09A0480 /* [CP] Copy Pods Resources */,
5BEC29A10D63DFF8AFF5B788 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -385,15 +383,14 @@
isa = PBXNativeTarget;
buildConfigurationList = 3AAD2AD924A3A60E0075D594 /* Build configuration list for PBXNativeTarget "StatusImPR" */;
buildPhases = (
EB421F3ED78A38D285D771D2 /* [CP] Check Pods Manifest.lock */,
78F85303177A5D4820A08DC1 /* [CP] Check Pods Manifest.lock */,
3AAD2ABB24A3A60E0075D594 /* Sources */,
3AAD2ABF24A3A60E0075D594 /* Frameworks */,
3AAD2AC924A3A60E0075D594 /* Resources */,
3AAD2AD524A3A60E0075D594 /* Bundle React Native code and images */,
3AAD2AD624A3A60E0075D594 /* Embed Frameworks */,
3AAD2AD724A3A60E0075D594 /* Run Script */,
F4561A2D3C9E6C4B66F4C4F5 /* [CP] Embed Pods Frameworks */,
6FA1467F7B916ED92FA688E0 /* [CP] Copy Pods Resources */,
776D3E96946780BFE216ACF2 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -547,55 +544,7 @@
shellPath = "/usr/bin/env sh";
shellScript = "set -o errexit\nexport NODE_BINARY=\"${NODE_BINARY:-node}\"\nexport NODE_ARGS=\"${NODE_ARGS:- --max-old-space-size=16384 }\"\n\n\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n";
};
02C1A8CA208E38DA07BAC311 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
1B623A051F855FC5B09A0480 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
showEnvVarsInLog = 0;
};
1DFD6BF757E89B72F40FCEE9 /* [CP] Check Pods Manifest.lock */ = {
140572B0EA34D6F884AB6CC4 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -645,47 +594,29 @@
shellPath = "/usr/bin/env sh";
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
};
50F2A2E15670F86233743A5C /* [CP] Embed Pods Frameworks */ = {
5BEC29A10D63DFF8AFF5B788 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Embed Pods Frameworks";
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-frameworks.sh\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm/Pods-Status-StatusIm-resources.sh\"\n";
showEnvVarsInLog = 0;
};
5937040F3338CDF93E777A93 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-StatusImTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
6FA1467F7B916ED92FA688E0 /* [CP] Copy Pods Resources */ = {
776D3E96946780BFE216ACF2 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -693,14 +624,12 @@
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/RNPermissions/RNPermissionsPrivacyInfo.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNPermissionsPrivacyInfo.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
@@ -709,39 +638,7 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-resources.sh\"\n";
showEnvVarsInLog = 0;
};
7AD665439C08CFEF5EF84F6A /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
E3914A731DF919ED00EBB515 /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 1;
shellPath = "/usr/bin/env sh";
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
};
EB421F3ED78A38D285D771D2 /* [CP] Check Pods Manifest.lock */ = {
78F85303177A5D4820A08DC1 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -763,24 +660,64 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
F4561A2D3C9E6C4B66F4C4F5 /* [CP] Embed Pods Frameworks */ = {
835B3E5945D5F723935FD4E1 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes",
"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh",
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle",
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
);
name = "[CP] Embed Pods Frameworks";
name = "[CP] Copy Pods Resources";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle",
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusImPR/Pods-Status-StatusImPR-frameworks.sh\"\n";
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Status-StatusIm-StatusImTests/Pods-Status-StatusIm-StatusImTests-resources.sh\"\n";
showEnvVarsInLog = 0;
};
99EA576680D5849CA4274106 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Status-StatusIm-StatusImTests-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
E3914A731DF919ED00EBB515 /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 8;
files = (
);
inputPaths = (
);
name = "Run Script";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 1;
shellPath = "/usr/bin/env sh";
shellScript = "\"${PROJECT_DIR}/scripts/set_xcode_version.sh\" > ../logs/set_xcode_version.log 2>&1\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -828,7 +765,7 @@
/* Begin XCBuildConfiguration section */
00E356F61AD99517003FC87E /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = D40C4023C7D5B793AEF98426 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
baseConfigurationReference = D42A8AC52E48DA4C89F20C13 /* Pods-Status-StatusIm-StatusImTests.debug.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_ID_SUFFIX = .debug;
@@ -865,7 +802,7 @@
};
00E356F71AD99517003FC87E /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 1B74FBFCB9B8E34B63250A52 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
baseConfigurationReference = 2756A97EBFF084FA94990AA5 /* Pods-Status-StatusIm-StatusImTests.release.xcconfig */;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_ID_SUFFIX = "";
@@ -898,7 +835,7 @@
};
13B07F941A680F5B00A75B9A /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = A0B5AD061DF0F6CC98603A99 /* Pods-Status-StatusIm.debug.xcconfig */;
baseConfigurationReference = 680C14B0F642A5F544C397B7 /* Pods-Status-StatusIm.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = .debug;
@@ -980,7 +917,7 @@
};
13B07F951A680F5B00A75B9A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 232FE8EAB57384181B0DB836 /* Pods-Status-StatusIm.release.xcconfig */;
baseConfigurationReference = 7FA4F04CE45319370F87C4FD /* Pods-Status-StatusIm.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = "";
@@ -1055,7 +992,7 @@
};
3AAD2ADA24A3A60E0075D594 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7BF7B2DB23EE09E5229629DA /* Pods-Status-StatusImPR.debug.xcconfig */;
baseConfigurationReference = 5AAC8D9B1AF8BB7C8AB89845 /* Pods-Status-StatusImPR.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = .debug;
@@ -1135,7 +1072,7 @@
};
3AAD2ADB24A3A60E0075D594 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7A393286DD0E844D050D0B89 /* Pods-Status-StatusImPR.release.xcconfig */;
baseConfigurationReference = 0C331FD392B615DDAD0997F5 /* Pods-Status-StatusImPR.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "AppIconPR$(BUNDLE_ID_SUFFIX)";
BUNDLE_ID_SUFFIX = "";
@@ -1285,22 +1222,18 @@
);
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_CFLAGS = (
"$(inherited)",
" ",
);
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-DFOLLY_NO_CONFIG",
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
" ",
);
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
USE_HERMES = true;
USE_HERMES = false;
VALID_ARCHS = arm64;
"VALID_ARCHS[sdk=iphonesimulator*]" = x86_64;
};
@@ -1376,22 +1309,18 @@
);
MTL_ENABLE_DEBUG_INFO = NO;
ONLY_ACTIVE_ARCH = NO;
OTHER_CFLAGS = (
"$(inherited)",
" ",
);
OTHER_CFLAGS = "$(inherited)";
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-DFOLLY_NO_CONFIG",
"-DFOLLY_MOBILE=1",
"-DFOLLY_USE_LIBCPP=1",
"-DFOLLY_CFG_NO_COROUTINES=1",
" ",
);
OTHER_LDFLAGS = "$(inherited)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
SDKROOT = iphoneos;
USE_HERMES = true;
USE_HERMES = false;
VALIDATE_PRODUCT = YES;
VALID_ARCHS = arm64;
};
@@ -47,8 +47,7 @@ class AccountManager(private val reactContext: ReactApplicationContext) : ReactC
private fun updateConfig(jsonConfigString: String, absRootDirPath: String, keystoreDirPath: String): String {
val jsonConfig = JSONObject(jsonConfigString)
// when doing local pair syncing, backend will provide default data dir
val dataDirPath = jsonConfig.optString("DataDir","")
val dataDirPath = jsonConfig.getString("DataDir")
val logEnabled = jsonConfig.getBoolean("LogEnabled")
val gethLogFile = if (logEnabled) logManager.prepareLogsFile(reactContext) else null
val gethLogDirPath = gethLogFile?.parent
@@ -141,6 +140,7 @@ class AccountManager(private val reactContext: ReactApplicationContext) : ReactC
updatedJsonConfigString
} catch (e: JSONException) {
Log.e(TAG, "updateConfig failed: ${e.message}")
System.exit(1)
""
}
}
@@ -1,133 +0,0 @@
package im.status.ethereum.module
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
import com.facebook.react.bridge.ReadableMap
import com.facebook.react.bridge.Callback
import android.util.Log
import android.content.Intent
import android.net.Uri
import android.content.pm.PackageManager
import java.io.File
import androidx.core.content.FileProvider
import android.text.Html
class MailManager(private val reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
private val utils = Utils(reactContext)
override fun getName() = "MailManager"
@ReactMethod
fun mail(options: ReadableMap, callback: Callback) {
Log.d(TAG, "attempting to send email")
val i = Intent(Intent.ACTION_SEND_MULTIPLE)
val selectorIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
i.selector = selectorIntent
if (options.hasKey("subject") && !options.isNull("subject")) {
i.putExtra(Intent.EXTRA_SUBJECT, options.getString("subject"))
}
if (options.hasKey("body") && !options.isNull("body")) {
val body = options.getString("body")
if (options.hasKey("isHTML") && options.getBoolean("isHTML")) {
i.putExtra(Intent.EXTRA_TEXT, Html.fromHtml(body))
} else {
i.putExtra(Intent.EXTRA_TEXT, body)
}
}
if (options.hasKey("recipients") && !options.isNull("recipients")) {
val recipients = options.getArray("recipients")
i.putExtra(Intent.EXTRA_EMAIL, this.utils.readableArrayToStringArray(recipients!!))
}
if (options.hasKey("ccRecipients") && !options.isNull("ccRecipients")) {
val ccRecipients = options.getArray("ccRecipients")
i.putExtra(Intent.EXTRA_CC, this.utils.readableArrayToStringArray(ccRecipients!!))
}
if (options.hasKey("bccRecipients") && !options.isNull("bccRecipients")) {
val bccRecipients = options.getArray("bccRecipients")
i.putExtra(Intent.EXTRA_BCC, this.utils.readableArrayToStringArray(bccRecipients!!))
}
if (options.hasKey("attachments") && !options.isNull("attachments")) {
val r = options.getArray("attachments")
val length = r?.size() ?: 0
val provider = reactContext.applicationContext.packageName + ".rnmail.provider"
val resolvedIntentActivities = reactContext.packageManager.queryIntentActivities(i,
PackageManager.MATCH_DEFAULT_ONLY)
val uris = ArrayList<Uri>()
for (keyIndex in 0 until length) {
val clip = r?.getMap(keyIndex)
val uri: Uri
if (clip?.hasKey("path") == true && !clip.isNull("path")) {
val path = clip.getString("path")
val file = File(path)
uri = FileProvider.getUriForFile(reactContext, provider, file)
} else if (clip?.hasKey("uri") == true && !clip.isNull("uri")) {
val uriPath = clip.getString("uri")
uri = Uri.parse(uriPath)
} else {
callback.invoke("not_found")
return
}
uris.add(uri)
for (resolvedIntentInfo in resolvedIntentActivities) {
val packageName = resolvedIntentInfo.activityInfo.packageName
reactContext.grantUriPermission(packageName, uri,
Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
}
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
i.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris)
}
val manager = reactContext.packageManager
val list = manager.queryIntentActivities(i, 0)
if (list == null || list.isEmpty()) {
Log.d(TAG, "not_available")
callback.invoke("not_available")
return
}
if (list.size == 1) {
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
reactContext.startActivity(i)
} catch (ex: Exception) {
Log.e(TAG, ex.message!!)
callback.invoke("error")
}
} else {
var chooserTitle = "Send Mail"
if (options.hasKey("customChooserTitle") && !options.isNull("customChooserTitle")) {
chooserTitle = options.getString("customChooserTitle") ?: ""
}
val chooser = Intent.createChooser(i, chooserTitle)
chooser.flags = Intent.FLAG_ACTIVITY_NEW_TASK
try {
reactContext.startActivity(chooser)
} catch (ex: Exception) {
Log.e(TAG, ex.message!!)
callback.invoke("error")
}
}
}
companion object {
private const val TAG = "MailManager"
}
}
@@ -74,5 +74,4 @@ class NetworkManager(private val reactContext: ReactApplicationContext) : ReactC
fun recover(rpcParams: String, callback: Callback) {
utils.executeRunnableStatusGoMethod({ Statusgo.recover(rpcParams) }, callback)
}
}
@@ -43,6 +43,7 @@ class StatusModule(private val reactContext: ReactApplicationContext, private va
}
override fun handleSignal(jsonEventString: String) {
Log.d(TAG, "Signal event")
val params = Arguments.createMap()
params.putString("jsonEvent", jsonEventString)
reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java).emit("gethEvent", params)
@@ -24,7 +24,6 @@ class StatusPackage(private val rootedDevice: Boolean) : ReactPackage {
add(LogManager(reactContext))
add(Utils(reactContext))
add(NetworkManager(reactContext))
add(MailManager(reactContext))
add(RNSelectableTextInputModule(reactContext))
}
@@ -6,7 +6,6 @@ import com.facebook.react.bridge.Callback
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule
import com.facebook.react.bridge.ReactMethod
import com.facebook.react.bridge.ReadableArray;
import android.util.Log
import org.json.JSONException
import org.json.JSONObject
@@ -142,15 +141,4 @@ class Utils(private val reactContext: ReactApplicationContext) : ReactContextBas
fun toChecksumAddress(address: String): String {
return Statusgo.toChecksumAddress(address)
}
fun readableArrayToStringArray(r: ReadableArray): Array<String> {
val length = r.size()
val strArray = Array(length) { "" }
for (keyIndex in 0 until length) {
strArray[keyIndex] = r.getString(keyIndex) ?: ""
}
return strArray
}
}
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="rnmail_dl" path="Download/" />
<cache-path name="rnmail_cache" path="/" />
<root-path name="rnmail_sdcard" path="." />
</paths>
@@ -66,9 +66,6 @@ RCT_EXPORT_METHOD(restoreAccountAndLogin:(NSString *)request) {
NSData *configData = [config dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *configJSON = [NSJSONSerialization JSONObjectWithData:configData options:NSJSONReadingMutableContainers error:nil];
NSString *relativeDataDir = [configJSON objectForKey:@"DataDir"];
if (relativeDataDir == nil) {
relativeDataDir = @"";
}
NSString *absDataDir = [rootUrl.path stringByAppendingString:relativeDataDir];
NSURL *absDataDirUrl = [NSURL fileURLWithPath:absDataDir];
NSString *keystoreDir = [@"/keystore/" stringByAppendingString:keyUID];
@@ -1,9 +0,0 @@
#import <sys/utsname.h>
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <React/RCTBridgeModule.h>
#import "RCTLog.h"
@interface MailManager : NSObject <RCTBridgeModule, MFMailComposeViewControllerDelegate>
@end
@@ -1,207 +0,0 @@
#import <MessageUI/MessageUI.h>
#import "MailManager.h"
#import <React/RCTConvert.h>
#import <React/RCTLog.h>
#import "React/RCTBridge.h"
#import "React/RCTEventDispatcher.h"
@implementation MailManager
{
NSMutableDictionary *_callbacks;
}
- (instancetype)init
{
if ((self = [super init])) {
_callbacks = [[NSMutableDictionary alloc] init];
}
return self;
}
- (dispatch_queue_t)methodQueue
{
return dispatch_get_main_queue();
}
+ (BOOL)requiresMainQueueSetup
{
return YES;
}
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(mail:(NSDictionary *)options
callback: (RCTResponseSenderBlock)callback)
{
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
mail.mailComposeDelegate = self;
_callbacks[RCTKeyForInstance(mail)] = callback;
if (options[@"subject"]){
NSString *subject = [RCTConvert NSString:options[@"subject"]];
[mail setSubject:subject];
}
BOOL isHTML = NO;
if (options[@"isHTML"]){
isHTML = [options[@"isHTML"] boolValue];
}
if (options[@"body"]){
NSString *body = [RCTConvert NSString:options[@"body"]];
[mail setMessageBody:body isHTML:isHTML];
}
if (options[@"recipients"]){
NSArray *recipients = [RCTConvert NSArray:options[@"recipients"]];
[mail setToRecipients:recipients];
}
if (options[@"ccRecipients"]){
NSArray *ccRecipients = [RCTConvert NSArray:options[@"ccRecipients"]];
[mail setCcRecipients:ccRecipients];
}
if (options[@"bccRecipients"]){
NSArray *bccRecipients = [RCTConvert NSArray:options[@"bccRecipients"]];
[mail setBccRecipients:bccRecipients];
}
if (options[@"attachments"]) {
NSArray *attachments = [RCTConvert NSArray:options[@"attachments"]];
for (NSDictionary *attachment in attachments) {
if ((attachment[@"path"] || attachment[@"uri"]) && (attachment[@"type"] || attachment[@"mimeType"])) {
NSString *attachmentPath = [RCTConvert NSString:attachment[@"path"]];
NSString *attachmentUri = [RCTConvert NSString:attachment[@"uri"]];
NSString *attachmentType = [RCTConvert NSString:attachment[@"type"]];
NSString *attachmentName = [RCTConvert NSString:attachment[@"name"]];
NSString *attachmentMimeType = [RCTConvert NSString:attachment[@"mimeType"]];
// Set default filename if not specificed
if (!attachmentName) {
attachmentName = [[attachmentPath lastPathComponent] stringByDeletingPathExtension];
}
NSData *fileData;
if (attachmentPath) {
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:attachmentPath]){
callback(@[[NSString stringWithFormat: @"attachment file with path '%@' does not exist", attachmentPath]]);
return;
}
// Get the resource path and read the file using NSData
fileData = [NSData dataWithContentsOfFile:attachmentPath];
} else if (attachmentUri) {
// Get the URI and read it using NSData
NSURL *attachmentURL = [[NSURLComponents componentsWithString:attachmentUri] URL];
NSError *error = nil;
fileData = [NSData dataWithContentsOfURL:attachmentURL options:0 error:&error];
if (!fileData) {
callback(@[[NSString stringWithFormat: @"attachment file with uri '%@' does not exist", attachmentUri]]);
return;
}
}
// Determine the MIME type
NSString *mimeType;
if (attachmentType) {
/*
* Add additional mime types and PR if necessary. Find the list
* of supported formats at http://www.iana.org/assignments/media-types/media-types.xhtml
*/
NSDictionary *supportedMimeTypes = @{
@"jpeg" : @"image/jpeg",
@"jpg" : @"image/jpeg",
@"png" : @"image/png",
@"doc" : @"application/msword",
@"docx" : @"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
@"ppt" : @"application/vnd.ms-powerpoint",
@"pptx" : @"application/vnd.openxmlformats-officedocument.presentationml.presentation",
@"html" : @"text/html",
@"csv" : @"text/csv",
@"pdf" : @"application/pdf",
@"vcard" : @"text/vcard",
@"json" : @"application/json",
@"zip" : @"application/zip",
@"text" : @"text/*",
@"mp3" : @"audio/mpeg",
@"wav" : @"audio/wav",
@"aiff" : @"audio/aiff",
@"flac" : @"audio/flac",
@"ogg" : @"audio/ogg",
@"xls" : @"application/vnd.ms-excel",
@"ics" : @"text/calendar",
@"xlsx" : @"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
};
if([supportedMimeTypes objectForKey:attachmentType]) {
mimeType = [supportedMimeTypes objectForKey:attachmentType];
} else {
callback(@[[NSString stringWithFormat: @"Mime type '%@' for attachment is not handled", attachmentType]]);
return;
}
} else if (attachmentMimeType) {
mimeType = attachmentMimeType;
}
// Add attachment
[mail addAttachmentData:fileData mimeType:mimeType fileName:attachmentName];
}
}
}
UIViewController *root = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
while (root.presentedViewController) {
root = root.presentedViewController;
}
[root presentViewController:mail animated:YES completion:nil];
} else {
callback(@[@"not_available"]);
}
}
#pragma mark MFMailComposeViewControllerDelegate Methods
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
NSString *key = RCTKeyForInstance(controller);
RCTResponseSenderBlock callback = _callbacks[key];
if (callback) {
switch (result) {
case MFMailComposeResultSent:
callback(@[[NSNull null] , @"sent"]);
break;
case MFMailComposeResultSaved:
callback(@[[NSNull null] , @"saved"]);
break;
case MFMailComposeResultCancelled:
callback(@[[NSNull null] , @"cancelled"]);
break;
case MFMailComposeResultFailed:
callback(@[@"failed"]);
break;
default:
callback(@[@"error"]);
break;
}
[_callbacks removeObjectForKey:key];
} else {
RCTLogWarn(@"No callback registered for mail: %@", controller.title);
}
UIViewController *ctrl = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
while (ctrl.presentedViewController && ctrl != controller) {
ctrl = ctrl.presentedViewController;
}
[ctrl dismissViewControllerAnimated:YES completion:nil];
}
#pragma mark Private
static NSString *RCTKeyForInstance(id instance)
{
return [NSString stringWithFormat:@"%p", instance];
}
@end
@@ -38,6 +38,9 @@ static RCTBridge *bridge;
return;
}
#if DEBUG
NSLog(@"[handleSignal] Received an event from Status-Go: %@", signal);
#endif
[bridge.eventDispatcher sendAppEventWithName:@"gethEvent"
body:@{@"jsonEvent": signal}];
@@ -12,7 +12,6 @@
CE4E31B11D86951A0033ED64 /* Statusgo.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE4E31B01D86951A0033ED64 /* Statusgo.xcframework */; };
E92244EB2B485F2400915F4C /* UIHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = E92244E92B485F2400915F4C /* UIHelper.m */; };
E967A3AC2B47BD5A00FB19B2 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = E967A3AB2B47BD5A00FB19B2 /* Utils.m */; };
E9AEB5FE2BD8EEB100FB2926 /* MailManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E9AEB5FD2BD8EEB100FB2926 /* MailManager.m */; };
E9BEF3602B470BF1001F6755 /* NetworkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E9BEF35E2B470BF1001F6755 /* NetworkManager.m */; };
E9C33AA62B4828A60074B1C5 /* DatabaseManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E9C33AA52B4828A60074B1C5 /* DatabaseManager.m */; };
E9DB08932B4858B400F51053 /* LogManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E9DB08912B4858B400F51053 /* LogManager.m */; };
@@ -43,8 +42,6 @@
E92244EA2B485F2400915F4C /* UIHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHelper.h; sourceTree = "<group>"; };
E967A3AA2B47BD5A00FB19B2 /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Utils.h; sourceTree = "<group>"; };
E967A3AB2B47BD5A00FB19B2 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Utils.m; sourceTree = "<group>"; };
E9AEB5FC2BD8EEB100FB2926 /* MailManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MailManager.h; sourceTree = "<group>"; };
E9AEB5FD2BD8EEB100FB2926 /* MailManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MailManager.m; sourceTree = "<group>"; };
E9BEF35E2B470BF1001F6755 /* NetworkManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NetworkManager.m; sourceTree = "<group>"; };
E9BEF35F2B470BF1001F6755 /* NetworkManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkManager.h; sourceTree = "<group>"; };
E9C33AA42B4828A60074B1C5 /* DatabaseManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseManager.h; sourceTree = "<group>"; };
@@ -89,8 +86,6 @@
206C9F3C1D474E910063E3E6 /* Status */ = {
isa = PBXGroup;
children = (
E9AEB5FC2BD8EEB100FB2926 /* MailManager.h */,
E9AEB5FD2BD8EEB100FB2926 /* MailManager.m */,
E92244EA2B485F2400915F4C /* UIHelper.h */,
E92244E92B485F2400915F4C /* UIHelper.m */,
E9DB08922B4858B400F51053 /* LogManager.h */,
@@ -168,7 +163,6 @@
buildActionMask = 2147483647;
files = (
E9DB08932B4858B400F51053 /* LogManager.m in Sources */,
E9AEB5FE2BD8EEB100FB2926 /* MailManager.m in Sources */,
E9F5C3322B483B6C001A7F40 /* EncryptionUtils.m in Sources */,
E967A3AC2B47BD5A00FB19B2 /* Utils.m in Sources */,
E92244EB2B485F2400915F4C /* UIHelper.m in Sources */,
@@ -1128,6 +1128,8 @@ Persistent<Function> r_call;
std::queue<std::string> q;
void run(char *json) {
printf("signal received %s\n", json);
std::string str(json);
q.push(str);
}
+100 -460
View File
@@ -1165,21 +1165,6 @@
}
},
{
"path": "androidx/databinding/databinding-common/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"databinding-common-3.5.3.pom": {
"sha1": "0f85f7500d68d4eaed465ec194e18779374a7a68",
"sha256": "sha256-paY7t0Iz/AxIVcvQLT4sAPgqTvvMChxgS3SmWRod2tw="
},
"databinding-common-3.5.3.jar": {
"sha1": "72bb6cb779ae61710a01ff76d9d3cab355c44a4f",
"sha256": "sha256-WRoV+qBtmUWoqA8m8n2vBosrLirqakvhN7/SixHZVgA="
}
}
},
{
"path": "androidx/databinding/databinding-common/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -1289,21 +1274,6 @@
}
},
{
"path": "androidx/databinding/databinding-compiler-common/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"databinding-compiler-common-3.5.3.pom": {
"sha1": "345b6f4cea120faa14f118c08150de5d8afccce1",
"sha256": "sha256-LRdv8FuX6tdlmxdHuhK/a/bhc8zIONVFAniG0toDu+A="
},
"databinding-compiler-common-3.5.3.jar": {
"sha1": "32bfc30c00fdc550723ffd9bff3ef2471fbd4a3a",
"sha256": "sha256-yDZslWiT00cwjhF5Be1v2xq+gFW54gEhOrjyMO3GNRg="
}
}
},
{
"path": "androidx/databinding/databinding-compiler-common/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -3002,21 +2972,6 @@
}
},
{
"path": "com/android/databinding/baseLibrary/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"baseLibrary-3.5.3.pom": {
"sha1": "81372394c257edc4595cf19c33f7460892eeaa3e",
"sha256": "sha256-knlU7d5unzROdh7YkGliIzSrDWc3i9B2rDIkfhX/Bmk="
},
"baseLibrary-3.5.3.jar": {
"sha1": "5da8b7daa2f10ec359a13ee778eeabf15c1758b1",
"sha256": "sha256-zebU7vY+5eBbiqtY/4Xq85zD5u2E/RhL9lWNgvjZwGc="
}
}
},
{
"path": "com/android/databinding/baseLibrary/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -3520,21 +3475,6 @@
}
},
{
"path": "com/android/tools/analytics-library/crash/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"crash-26.5.3.pom": {
"sha1": "2b6f117c8542a9132bbd1982960ff93be002eb77",
"sha256": "sha256-ZrYgjqqWCNZ7K84UQIlBptcRC4ePlCVTmsIeuEWnqBU="
},
"crash-26.5.3.jar": {
"sha1": "d199e964be1fa3e7162344b91336afae6c7ea789",
"sha256": "sha256-86x29qjj+M7mPiqew2n87T3przHhRQzZOdiHXWcT758="
}
}
},
{
"path": "com/android/tools/analytics-library/crash/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -3659,21 +3599,6 @@
}
},
{
"path": "com/android/tools/analytics-library/protos/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"protos-26.5.3.pom": {
"sha1": "a2452eb3233ef51f1dda9b5508cfe340134b4978",
"sha256": "sha256-FYV7IPvj+TmJoQA2xD32xOTygrtjh07jAghoOH7gRuY="
},
"protos-26.5.3.jar": {
"sha1": "16d70f0d597eac5d39180b1ce2d9b274f8802cf9",
"sha256": "sha256-8uut8euJZzFc/sTTw3UkQFSh8W15+N4l0eiYPVq0D70="
}
}
},
{
"path": "com/android/tools/analytics-library/protos/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -3798,21 +3723,6 @@
}
},
{
"path": "com/android/tools/analytics-library/shared/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"shared-26.5.3.pom": {
"sha1": "14c908921dd73687f66f496dfc73fa807d57e40d",
"sha256": "sha256-FkUuC4D4/OiS5yBlJvWnupvlSungNjArA0ktU240P54="
},
"shared-26.5.3.jar": {
"sha1": "594abc68f0518057cdb150e4c8cc73bc5c94183e",
"sha256": "sha256-dpzYinI6GR6dmPsEGULf5Irzo+8kqP6wCI2NTNfhurA="
}
}
},
{
"path": "com/android/tools/analytics-library/shared/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -3937,21 +3847,6 @@
}
},
{
"path": "com/android/tools/analytics-library/tracker/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"tracker-26.5.3.pom": {
"sha1": "8551b232bde0e0cd7a9983f4acc716ed2fa8d59b",
"sha256": "sha256-fAbjPrxxjgXSaoM5kD9ZoVTedhcXTPha/bxi0Nsgnkc="
},
"tracker-26.5.3.jar": {
"sha1": "6a84a345f5155eca774cd238c233a2f6fad551b9",
"sha256": "sha256-dqhsU6BlaXcW4tXGEAyd4LrpHVacu5vRn6U+Pw5n63M="
}
}
},
{
"path": "com/android/tools/analytics-library/tracker/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -4076,21 +3971,6 @@
}
},
{
"path": "com/android/tools/annotations/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"annotations-26.5.3.pom": {
"sha1": "03c6890f54f0b7c91aaeb7d66e87c52e53b10d79",
"sha256": "sha256-4vEHB5aOWAXrLslhHTRa1GVrKLeEpApil0rlXPIQzh4="
},
"annotations-26.5.3.jar": {
"sha1": "87a36f2086b41d1ec162a6e74c4f999d58eb1310",
"sha256": "sha256-/js3c6HdNGlY2KFUess2UN/74HfTmtdMX3b7f6k/NYw="
}
}
},
{
"path": "com/android/tools/annotations/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -4503,21 +4383,6 @@
}
},
{
"path": "com/android/tools/build/apksig/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"apksig-3.5.3.pom": {
"sha1": "fe080d599c11357971f21a2b7475d9915515d363",
"sha256": "sha256-5sSQBWPiQJf82rf++W6oPPf6sfSTn6teEVRL8Ng0LZ0="
},
"apksig-3.5.3.jar": {
"sha1": "d5ffda89f909743ad8e77b3c28ed351695037543",
"sha256": "sha256-SMfd+nhnEtdmpzyt1+3JGGhsGv1s6FcRyvUQYx+0CQ8="
}
}
},
{
"path": "com/android/tools/build/apksig/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -4627,21 +4492,6 @@
}
},
{
"path": "com/android/tools/build/apkzlib/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"apkzlib-3.5.3.pom": {
"sha1": "d41d21481aa9ea302638d5008d1c54e391981843",
"sha256": "sha256-unLu4SDrvKUNUxJUZlaH2INOewFTQfQfdi2GKoiPDrI="
},
"apkzlib-3.5.3.jar": {
"sha1": "8e17d7b8bb5f756c139619d86facca1675bc6164",
"sha256": "sha256-aNpGeSdH6yIHK7PygeptifcYAB6Mmaa75oYJM/73qdw="
}
}
},
{
"path": "com/android/tools/build/apkzlib/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -4766,21 +4616,6 @@
}
},
{
"path": "com/android/tools/build/builder-model/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"builder-model-3.5.3.pom": {
"sha1": "64d0223622a2c59fb67f8fb5c22b6535efef29b5",
"sha256": "sha256-8kaKB3hYve1NA/D8BkGjtpr5zskjdqqjht3XoSTIQQM="
},
"builder-model-3.5.3.jar": {
"sha1": "775377503072e1b6a701c3ea923c468cedd4e2eb",
"sha256": "sha256-U1xpawkp6LOZLwiCPpTFtci+UzCVThX8TuFhCW+gT6I="
}
}
},
{
"path": "com/android/tools/build/builder-model/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -4917,21 +4752,6 @@
}
},
{
"path": "com/android/tools/build/builder-test-api/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"builder-test-api-3.5.3.pom": {
"sha1": "f910b8864ae8e3e3c39823ca7ca6ba99a09d7564",
"sha256": "sha256-9IV0lJ6wAgzUWwuGES1aMXxpH+0OPxPYzY7VNbmksUI="
},
"builder-test-api-3.5.3.jar": {
"sha1": "cf9ce50cd19a816c5bc7d4c6362699aa98c8ac0f",
"sha256": "sha256-euZFcKEsjav85tiA+KSNsVqoMRHbcC2iTAWvv3H8FUc="
}
}
},
{
"path": "com/android/tools/build/builder-test-api/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -5068,21 +4888,6 @@
}
},
{
"path": "com/android/tools/build/builder/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"builder-3.5.3.pom": {
"sha1": "b327e842abd63da2281e74c59de69ab2b5998443",
"sha256": "sha256-dNWTs6MgZG6PVaytZxU/2aWQk8a3lqkGYmbXPzO99ZA="
},
"builder-3.5.3.jar": {
"sha1": "39bba1af533b25f6c1140e3c795ff815a6ad86ba",
"sha256": "sha256-BcvZGDubmg4SisvDkSVAwXLg11pcNY2kZcb3F5JMV0E="
}
}
},
{
"path": "com/android/tools/build/builder/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -5324,21 +5129,6 @@
}
},
{
"path": "com/android/tools/build/gradle-api/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"gradle-api-3.5.3.pom": {
"sha1": "ef22e3a71efd8cb517d4b039076f4b69013c0208",
"sha256": "sha256-1T+FRJWgpHkt+LVOWXFAdtk3HW9ah5AABwdUoYDS7kU="
},
"gradle-api-3.5.3.jar": {
"sha1": "c1d6a6b3e5b744caaf6eea2452d8db62c8e2882f",
"sha256": "sha256-yOi/eI7S+LRswAqWJOAKivQLwx/x2CmL10DxhAC9PS4="
}
}
},
{
"path": "com/android/tools/build/gradle-api/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -5509,21 +5299,6 @@
}
},
{
"path": "com/android/tools/build/gradle/3.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"gradle-3.5.3.pom": {
"sha1": "6bfb2b4c34c37c4f2addcb6d99db19fa7a1a5810",
"sha256": "sha256-k8NC3tdmWdVBdyaKn9lBLf4HLozxd26vtHxZCBmOZdI="
},
"gradle-3.5.3.jar": {
"sha1": "12e36e5f81cc2face28e0c14cb98941d773cae6a",
"sha256": "sha256-Zyk97dM5uJypz2xEAJvNj4Bb9CnCVYYuq/LeuBDYuRA="
}
}
},
{
"path": "com/android/tools/build/gradle/3.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -5788,21 +5563,6 @@
}
},
{
"path": "com/android/tools/build/manifest-merger/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"manifest-merger-26.5.3.pom": {
"sha1": "4cc40406dfe779b3b575e66c970ae0e9986b0c94",
"sha256": "sha256-ZjxoTo8jLgEYXLnqBwjqCRwxAhYiDHlQthqQZlX0Vj4="
},
"manifest-merger-26.5.3.jar": {
"sha1": "36674041b9d2644a30b75b6d8b7106bc16eac78a",
"sha256": "sha256-tGBtBgLyH5GhdM+4UWtabpj/rJWNPzzYmTuVDvSbgEk="
}
}
},
{
"path": "com/android/tools/build/manifest-merger/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -5939,21 +5699,6 @@
}
},
{
"path": "com/android/tools/common/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"common-26.5.3.pom": {
"sha1": "ace0f2945bba30c12223d7634a69da21a4242fd7",
"sha256": "sha256-9ikVDGRk14qviKUSEpiyeycF0HdW2W5hH6/yuJgdgeQ="
},
"common-26.5.3.jar": {
"sha1": "47409edcd2331596b42c33160101a86046e1c6f5",
"sha256": "sha256-YAVo9B+xn8eWSHtvxTnlKr0Jj60cZ4vONcAqMVGeJPY="
}
}
},
{
"path": "com/android/tools/common/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -6078,21 +5823,6 @@
}
},
{
"path": "com/android/tools/ddms/ddmlib/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"ddmlib-26.5.3.pom": {
"sha1": "f69c10111005d9ed625cc0b75fed9c5c2fcd1bcb",
"sha256": "sha256-y79URq2NFK1PQ/kl063FlIr3hP7NdEvk04bf50sXe1s="
},
"ddmlib-26.5.3.jar": {
"sha1": "804a61e67286eeec17d195c78a135f0ed2fbdb8a",
"sha256": "sha256-IlrK31Fopg4wIKM81mm6TYatse+ePnEhcREd4t+RrCs="
}
}
},
{
"path": "com/android/tools/ddms/ddmlib/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -6217,21 +5947,6 @@
}
},
{
"path": "com/android/tools/dvlib/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"dvlib-26.5.3.pom": {
"sha1": "1983f43ea2ef12519c4ac4579930af7494b4fb1c",
"sha256": "sha256-HNYT321rRp1fKslux7VIkAzONv7xDrPJAZVIITehh5c="
},
"dvlib-26.5.3.jar": {
"sha1": "9caa13fe83508ba5687199c02b7ddb885abd8f14",
"sha256": "sha256-+f3/TUDUJ1vhgAWJ2GlS33ErcQa7MD2o5f5zaqIogGU="
}
}
},
{
"path": "com/android/tools/dvlib/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -6431,21 +6146,6 @@
}
},
{
"path": "com/android/tools/layoutlib/layoutlib-api/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"layoutlib-api-26.5.3.pom": {
"sha1": "75263963e8b5baa185153cbdf1a5347628a71927",
"sha256": "sha256-Qs1kefYxk/LNrFGbBIi08IbYhToLabRA84yCWHE09eE="
},
"layoutlib-api-26.5.3.jar": {
"sha1": "6549e729f3f27c7d05049494f25cfd01890c00e0",
"sha256": "sha256-/7VaULd7u4vTgnr7gpGhRVzZU7EmBYzP3db/rvkwM9A="
}
}
},
{
"path": "com/android/tools/layoutlib/layoutlib-api/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -6615,21 +6315,6 @@
}
},
{
"path": "com/android/tools/lint/lint-gradle-api/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"lint-gradle-api-26.5.3.pom": {
"sha1": "ce7c04f4c18db0fe372667092500726dc1436b2b",
"sha256": "sha256-tD6Ht965r/ZdBmPvIpAUoOyV9OsgUpxwTbEXrkq7I00="
},
"lint-gradle-api-26.5.3.jar": {
"sha1": "34f6edb87863c7e9f89f24c36485374ad350166a",
"sha256": "sha256-+xQk+cpYS2WRw5znSR5tiXYAVx4XPPkogrqTQWPGDMQ="
}
}
},
{
"path": "com/android/tools/lint/lint-gradle-api/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -6874,21 +6559,6 @@
}
},
{
"path": "com/android/tools/repository/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"repository-26.5.3.pom": {
"sha1": "f8f4198066a0abb5dd28ddf7e7bbb9ce9c6df714",
"sha256": "sha256-1VAgYQtJuNTY+UgjN7nkcyAEjcxoEYb4tLuJAxaMxUE="
},
"repository-26.5.3.jar": {
"sha1": "91466e99a63da0267b17bdfb617f54582e311618",
"sha256": "sha256-X8tsUpwFkmiZtGzyUA46ChpjOV59RY6na8sHXKoF1Lg="
}
}
},
{
"path": "com/android/tools/repository/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -7013,21 +6683,6 @@
}
},
{
"path": "com/android/tools/sdklib/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"sdklib-26.5.3.pom": {
"sha1": "08fa943d8253d6301e2dd02bb953fe73bd1406f7",
"sha256": "sha256-UQ3bott3wc/Uw37/g/L25qPv4gXqt8Zkgu7QAUgtsTs="
},
"sdklib-26.5.3.jar": {
"sha1": "8c305bc044ad81115859eb964c2829cbea70b036",
"sha256": "sha256-H8X6i5qnJUBBwF5s8fPrqfR7BJH3p4ZDwhy+eylFHkI="
}
}
},
{
"path": "com/android/tools/sdklib/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -7152,21 +6807,6 @@
}
},
{
"path": "com/android/tools/sdk-common/26.5.3",
"repo": "https://dl.google.com/dl/android/maven2",
"files": {
"sdk-common-26.5.3.pom": {
"sha1": "3fda12d2fca4442d791813f7a73399ff5f6e1973",
"sha256": "sha256-RenED9V2i7mYpkVhbqjSVGv15o9fBkL34FpKhwZElZk="
},
"sdk-common-26.5.3.jar": {
"sha1": "cce8ff081940bb7c9b1368a4052f987091996887",
"sha256": "sha256-kDfQjhoo5b8rEzc6Dyo/hxRsRG/gkYeNNOtvHxyIBgk="
}
}
},
{
"path": "com/android/tools/sdk-common/26.5.4",
"repo": "https://dl.google.com/dl/android/maven2",
@@ -8371,16 +8011,16 @@
},
{
"path": "commons-codec/commons-codec/1.17.0",
"path": "commons-codec/commons-codec/1.16.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-codec-1.17.0.pom": {
"sha1": "00df1652d86779f44021a4c52a928d0792217eec",
"sha256": "sha256-wBxM2l5Aj0HtHYPkoKFwz1OAG2M4q6SfD5BHhrwSFPw="
"commons-codec-1.16.1.pom": {
"sha1": "fdca64157d8fd070e24bd7d4ae9b8851d9ed9c0e",
"sha256": "sha256-uCbd2S+dfMZDcaAvoIMMFU1nyYNw6lSi0ZbnLrWQrSg="
},
"commons-codec-1.17.0.jar": {
"sha1": "0dbe8eef6e14460e73da07f7b11bf994d6626355",
"sha256": "sha256-9wDegKwnDQNE/ep0aCAdi5yAXlxkgzHDYZ8u4GfM/Fk="
"commons-codec-1.16.1.jar": {
"sha1": "47bd4d333fba53406f6c6c51884ddbca435c8862",
"sha256": "sha256-7Ie/tV8iy9GyHiGQ7toosrMS7SpDHuSfvcwBgS0EpeQ="
}
}
},
@@ -8401,16 +8041,16 @@
},
{
"path": "commons-io/commons-io/2.16.1",
"path": "commons-io/commons-io/2.16.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-io-2.16.1.pom": {
"sha1": "553d6f69e338060a231755afe0ebf99d14b45da6",
"sha256": "sha256-V3fSkiUceJXASkxXAVaD7Ds1OhJIbJs+cXjpsLPDj/8="
"commons-io-2.16.0.pom": {
"sha1": "22e76fdc24c77e80b362d1f060a3cc073de3f0a9",
"sha256": "sha256-9EvmklZbB2a+vlkKSwQdm12rJP7QtGqs7niXBCiISlY="
},
"commons-io-2.16.1.jar": {
"sha1": "377d592e740dc77124e0901291dbfaa6810a200e",
"sha256": "sha256-9B97qs1xaJZEes6XWGIfYsHGsKkdiazuSI2ib8R3yE8="
"commons-io-2.16.0.jar": {
"sha1": "27875a7935f1ddcc13267eb6fae1f719e0409572",
"sha256": "sha256-0eQXkBI1+uOqDLlza66vW3Tec0mBfRxyOQ2C49g9Opc="
}
}
},
@@ -11511,16 +11151,16 @@
},
{
"path": "com/google/errorprone/error_prone_annotations/2.27.1",
"path": "com/google/errorprone/error_prone_annotations/2.26.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"error_prone_annotations-2.27.1.pom": {
"sha1": "432107569fdae073842841c566ea1eea3b2f0a96",
"sha256": "sha256-TCN6vSm6OvOcp0TLSkHyRbX/oEXQNskkSvKrPKvKhTc="
"error_prone_annotations-2.26.1.pom": {
"sha1": "2e23702f7c5f6c85252ed22bf7e96b474fe48086",
"sha256": "sha256-rqfpkeLf3LR/X71QhYdTX3gCvLni/C1Ou1C+QbaE2p8="
},
"error_prone_annotations-2.27.1.jar": {
"sha1": "a87dac4f79a6e5b1e55c629f16c754c53cbd50ec",
"sha256": "sha256-pIlbXbAkNhTZDOKixvgwYkkJwB4xWH2Ow+z1Hl5+dQY="
"error_prone_annotations-2.26.1.jar": {
"sha1": "c1fde57694bdc14e8618899aaa6e857d9465d7de",
"sha256": "sha256-3iXy2aIVZSm9dl9R2O/fwN+nMB4E77nMdbfxDPXQ4Ps="
}
}
},
@@ -11647,12 +11287,12 @@
},
{
"path": "com/google/errorprone/error_prone_parent/2.27.1",
"path": "com/google/errorprone/error_prone_parent/2.26.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"error_prone_parent-2.27.1.pom": {
"sha1": "b00504c9994e0c16dc77d661b19421f1ffd179b4",
"sha256": "sha256-APlKPmg8fOr5lQFP/EB/INNycrFQ0mEbNVdLjOcYIjY="
"error_prone_parent-2.26.1.pom": {
"sha1": "b881c4c0f53eef367689790e18dc033d8a75bd52",
"sha256": "sha256-SmrQDTGwpa3Nmk9gUGXVtEX65KBMv4J+XRrBB34vgU0="
}
}
},
@@ -12238,12 +11878,12 @@
},
{
"path": "com/google/protobuf/protobuf-bom/4.27.0-RC1",
"path": "com/google/protobuf/protobuf-bom/4.26.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"protobuf-bom-4.27.0-RC1.pom": {
"sha1": "27a037f37e7e95b5e28ec5cd410ed99d34eb0a29",
"sha256": "sha256-ilnU8jEpEPRz7kIC0n8QQBt1nSyGY6xr/dQP299Bfy4="
"protobuf-bom-4.26.1.pom": {
"sha1": "7c6506f4a6d11e3aa7c3591c494433926eb4fefa",
"sha256": "sha256-hmAoc/EHNFQ9kMB/D/e/3+OXSeHCViGEwMiQmpJqbaw="
}
}
},
@@ -12489,16 +12129,16 @@
},
{
"path": "com/google/protobuf/protobuf-java/4.27.0-RC1",
"path": "com/google/protobuf/protobuf-java/4.26.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"protobuf-java-4.27.0-RC1.pom": {
"sha1": "8c2f747548d2fafc3e9b057cee34c343dc47e78e",
"sha256": "sha256-n9A6OYpEYg/F4Um5bKFXFb/1zQkxiNk7nGaSmmj087w="
"protobuf-java-4.26.1.pom": {
"sha1": "5d394cabfc69ca65c22694fabcc074f324a7af43",
"sha256": "sha256-Gqr40NPAcUMZpemmtrMDxw4PYHa3t0vTvz/bh133mXE="
},
"protobuf-java-4.27.0-RC1.jar": {
"sha1": "f37d7fb8ab06eee5ae3dd11c121f63a8b209e74f",
"sha256": "sha256-MW6bDi8Ee6d42j4PgT+0lqqzysiu/qRTRiIAi2bAcyk="
"protobuf-java-4.26.1.jar": {
"sha1": "594fabdcbceb7edfb883fe621d3e97d9cc05fa73",
"sha256": "sha256-CRkz5YcK+BB0gyb3rOSmc6ynISUxd1QoQvBEtUbxQoI="
}
}
},
@@ -12618,12 +12258,12 @@
},
{
"path": "com/google/protobuf/protobuf-parent/4.27.0-RC1",
"path": "com/google/protobuf/protobuf-parent/4.26.1",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"protobuf-parent-4.27.0-RC1.pom": {
"sha1": "59b00c8642d1166a189ebdcc529d3de170c8c56c",
"sha256": "sha256-mdkAVgkc3DOMTzc5ghqX3ICl1+ajWVFVWdw//1f73+E="
"protobuf-parent-4.26.1.pom": {
"sha1": "cc071c128d5a376a30a2ecf145127532e7a17bae",
"sha256": "sha256-rMorllL7bwEHXmdbfDShbtGZIVlUb651lvKZ2HYnbY0="
}
}
},
@@ -15923,6 +15563,17 @@
}
},
{
"path": "org/apache/commons/commons-parent/66",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-parent-66.pom": {
"sha1": "24cf85c9d30c5ca5a2f48d806e93d8328b622a8c",
"sha256": "sha256-SP1tyEblax9AhmDRY+dTAPnjhLtjvkgqgIKiHXKo25w="
}
}
},
{
"path": "org/apache/commons/commons-parent/67",
"repo": "https://repo.maven.apache.org/maven2",
@@ -15934,17 +15585,6 @@
}
},
{
"path": "org/apache/commons/commons-parent/69",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"commons-parent-69.pom": {
"sha1": "6ebeacd37818d945d96c06b44af10e050d2ef7c4",
"sha256": "sha256-1Q2pw5vcqCPWGNG0oDtz8ZZJf8uGFv0NpyfIYjWSqbs="
}
}
},
{
"path": "org/apache/httpcomponents/httpclient/4.1.1",
"repo": "https://repo.maven.apache.org/maven2",
@@ -16680,20 +16320,20 @@
},
{
"path": "org/checkerframework/checker-qual/3.43.0",
"path": "org/checkerframework/checker-qual/3.42.0",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"checker-qual-3.43.0.pom": {
"sha1": "48ad8955d64547b84ef581361c29c030e56430cb",
"sha256": "sha256-kxO/U7Pv2KrKJm7qi5bjB5drZcCxZRDMbwIxn7rr7UM="
"checker-qual-3.42.0.pom": {
"sha1": "49d71d964f0ac5505caa5f996c8497c9462e9eeb",
"sha256": "sha256-v1/KqycvVMvPG753w72WPIIcmrrSBYcIvwvtPIdUlMo="
},
"checker-qual-3.43.0.jar": {
"sha1": "9425eee39e56b116d2b998b7c2cebcbd11a3c98b",
"sha256": "sha256-P7wumPBYVMPfFt+auqlVuRsVs+ysM2IyCO1kJGQO8PY="
"checker-qual-3.42.0.jar": {
"sha1": "638ec33f363a94d41a4f03c3e7d3dcfba64e402d",
"sha256": "sha256-zK7dM68LeJTZ8vO2RPTRnkOSjjKQLmGsTRB3eDD1qsc="
},
"checker-qual-3.43.0.module": {
"sha1": "3020cf05cf20a5f6e2137e59291be76cd1252b83",
"sha256": "sha256-+BYzJyRauGJVMpSMcqkwVIzZfzTWw/6GD6auxaNNebQ="
"checker-qual-3.42.0.module": {
"sha1": "022eca66f8300ceaa525ef4b3c81f8e88f1d1495",
"sha256": "sha256-4PpiK33mPq4RBH726RtMKtDx8OE8uQP/UggKR/V6V0Y="
}
}
},
@@ -17501,12 +17141,12 @@
},
{
"path": "org/jacoco/org.jacoco.build/0.8.12",
"path": "org/jacoco/org.jacoco.build/0.8.11",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"org.jacoco.build-0.8.12.pom": {
"sha1": "ae9ec17957c52ffa34ec82bb59bc0a2b9b3554c0",
"sha256": "sha256-JQ3MmhAD6CCVkz9khpI3dS825wy4pj8s35mwyWE8Cbk="
"org.jacoco.build-0.8.11.pom": {
"sha1": "e5a356ca72993fc163a454402a55c2043071d350",
"sha256": "sha256-W4SxXPLu8+WeuRvCJ4SDMQCwnfmRHjMZAww7xki9iws="
}
}
},
@@ -17527,16 +17167,16 @@
},
{
"path": "org/jacoco/org.jacoco.core/0.8.12",
"path": "org/jacoco/org.jacoco.core/0.8.11",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"org.jacoco.core-0.8.12.pom": {
"sha1": "bc76db6af48fc259f0c66ac8b6d9ce2dd73ea77b",
"sha256": "sha256-qgsnc3hohtUdGI1+0aQ/Z276ISeFIERb/vDMtdjL5xc="
"org.jacoco.core-0.8.11.pom": {
"sha1": "e1aa8f9270a5fcc432cf0c185c871b3e4820f5e9",
"sha256": "sha256-u2E18Qo2NJy4SlYA/Yz3P8EpahNbLxStzYPejPJMq7E="
},
"org.jacoco.core-0.8.12.jar": {
"sha1": "c2a45bd054bbacfe9998cbbf1a49010c62e48cbc",
"sha256": "sha256-/KJts3wMX71dxJhSN+uChm35eZ1Qgq+JlHWnP5H1sDU="
"org.jacoco.core-0.8.11.jar": {
"sha1": "2ea73c899b5d6cde2a0a5e0ca29268b37622845d",
"sha256": "sha256-/NGIxohHP8jcwMbKrzVeeziVAiQ1J8M7lZej7Ch5H0c="
}
}
},
@@ -19227,16 +18867,16 @@
},
{
"path": "org/jetbrains/kotlin/kotlin-reflect/2.0.0-RC2",
"path": "org/jetbrains/kotlin/kotlin-reflect/2.0.0-Beta5",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"kotlin-reflect-2.0.0-RC2.pom": {
"sha1": "f59f0775b6c4874de09c44d692037fd8f3132bfd",
"sha256": "sha256-1aOhZnjByMuCwt0x6SO2i+pd0ka/rEv8T+nO3nUo6gM="
"kotlin-reflect-2.0.0-Beta5.pom": {
"sha1": "dd7f7eb5dfa88db62699bcd48d1b6e1ef4ff48fc",
"sha256": "sha256-vZDJOB++CfFO6xpEb8Z+gk4Geh4UEr6WVoNRB4hcpxQ="
},
"kotlin-reflect-2.0.0-RC2.jar": {
"sha1": "a416a6e9f3c00ba5f0c58091bbe20128117720ff",
"sha256": "sha256-VSmq3nuZWEmDRvXHvnD+3VIrYmg0FlJmaIJ9j3mNbaE="
"kotlin-reflect-2.0.0-Beta5.jar": {
"sha1": "ecb1578f5e5a1fa0cec6f4e926ced14989724274",
"sha256": "sha256-4xzU/UOloKuez/MUVapHwTl9ZzvkJ8FjkqxNQBf+BOo="
}
}
},
@@ -20769,28 +20409,28 @@
},
{
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.0.0-RC2",
"path": "org/jetbrains/kotlin/kotlin-stdlib/2.0.0-Beta5",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"kotlin-stdlib-2.0.0-RC2.pom": {
"sha1": "a0173de9669d2b669a0a9331abc10eed854c7578",
"sha256": "sha256-P5+BoFtN2UXxa5nt5GUj/36Ts2zN2qRIKsbvj519M2g="
"kotlin-stdlib-2.0.0-Beta5.pom": {
"sha1": "cfb0a9c66ddf657aac640d1a38169eb12de0f557",
"sha256": "sha256-NAO5vBthXEMJKGzn8eQ6teYhT5Brf53uG5G90li4pNk="
},
"kotlin-stdlib-2.0.0-RC2-all.jar": {
"sha1": "e6142a28b5fa6722cd811dd86278ad056784fa40",
"sha256": "sha256-MOBSIrwGf/+4lqMna18ePylFC/HZRh0noZzg78eTtc0="
"kotlin-stdlib-2.0.0-Beta5-all.jar": {
"sha1": "e18c835dd9fe6430f006ef2060595f3e5c0473bf",
"sha256": "sha256-o+o5Diku/+bWDD4IQjottN68NiB4sQvtHmE7qy7ru3U="
},
"kotlin-stdlib-2.0.0-RC2-common.jar": {
"kotlin-stdlib-2.0.0-Beta5-common.jar": {
"sha1": "281e03983850e590dcc0d2474758f2fa8dd0e96a",
"sha256": "sha256-EsHDu0lApPmVlUD/tc8uLl6brNtoywDEvSidFjm9HSc="
},
"kotlin-stdlib-2.0.0-RC2.jar": {
"sha1": "504eb64ad16be7612c962dd198a511a809800d80",
"sha256": "sha256-nFMX9JplxBB9EJM5WG+LfW95ehOyI0zMR5CGQZDpQVo="
"kotlin-stdlib-2.0.0-Beta5.jar": {
"sha1": "763714203113a7f4a5477122be0c6c588df0116e",
"sha256": "sha256-vJdkbUp8fwtJ6An+ZapdbGVNWfM3rQziphgPVxdpfWk="
},
"kotlin-stdlib-2.0.0-RC2.module": {
"sha1": "ec60b751c2b289581aed1cf553d477048a890cc4",
"sha256": "sha256-18U/l65G+3O8wy1oZbKJ+MSv8fv3yvfaXIllxukU+wg="
"kotlin-stdlib-2.0.0-Beta5.module": {
"sha1": "e4e16c1cf436d27d4d80cd504e636feaffbc376a",
"sha256": "sha256-ZBntY3Vrx0lM5sR2jdkZhsSPB1ZTdTOSi5uggHroWjk="
}
}
},
@@ -21070,16 +20710,16 @@
},
{
"path": "org/junit/junit-bom/5.11.0-M1",
"path": "org/junit/junit-bom/5.10.2",
"repo": "https://repo.maven.apache.org/maven2",
"files": {
"junit-bom-5.11.0-M1.pom": {
"sha1": "afec72e7b7df3cd97c3fe53164c3f5dfc6a0ff94",
"sha256": "sha256-tQl19cuoYgSr2j3Nbwl6+Rn+IuIe9pR43WuRn2x0DYU="
"junit-bom-5.10.2.pom": {
"sha1": "b25ed98a5bd08cdda60e569cf22822a760e76019",
"sha256": "sha256-Fp3ZBKSw9lIM/+ZYzGIpK/6fPBSpifqSEgckzeQ6mWg="
},
"junit-bom-5.11.0-M1.module": {
"sha1": "8824de265f75444b83779557736d03b4c8fac3f7",
"sha256": "sha256-j2MviWXptvQGnj1YueomuaW8dqmOibQyM3d6zm2tsjc="
"junit-bom-5.10.2.module": {
"sha1": "ce536748a853ae6ac09e7815fce0678a96cff778",
"sha256": "sha256-3iOxFLPkEZqP5usXvtWjhSgWaYus5nBxV51tkn67CAo="
}
}
},
+25 -26
View File
@@ -53,14 +53,14 @@ androidx.core:core:1.9.0
androidx.cursoradapter:cursoradapter:1.0.0
androidx.customview:customview:1.0.0
androidx.databinding:databinding-common:3.2.1
androidx.databinding:databinding-common:3.5.3
androidx.databinding:databinding-common:3.5.4
androidx.databinding:databinding-common:4.1.0
androidx.databinding:databinding-common:7.0.4
androidx.databinding:databinding-common:7.2.1
androidx.databinding:databinding-common:7.3.1
androidx.databinding:databinding-common:8.1.1
androidx.databinding:databinding-compiler-common:3.2.1
androidx.databinding:databinding-compiler-common:3.5.3
androidx.databinding:databinding-compiler-common:3.5.4
androidx.databinding:databinding-compiler-common:4.1.0
androidx.databinding:databinding-compiler-common:7.0.4
androidx.databinding:databinding-compiler-common:7.2.1
@@ -164,7 +164,7 @@ com.almworks.sqlite4java:sqlite4java:1.0.392
com.android.databinding:baseLibrary:1.0-rc5
com.android.databinding:baseLibrary:3.0.1
com.android.databinding:baseLibrary:3.2.1
com.android.databinding:baseLibrary:3.5.3
com.android.databinding:baseLibrary:3.5.4
com.android.databinding:baseLibrary:4.1.0
com.android.databinding:baseLibrary:7.0.4
com.android.databinding:baseLibrary:7.2.1
@@ -173,7 +173,7 @@ com.android.databinding:baseLibrary:8.1.1
com.android.databinding:compilerCommon:1.0-rc5
com.android.databinding:compilerCommon:3.0.1
com.android.tools.analytics-library:crash:26.2.1
com.android.tools.analytics-library:crash:26.5.3
com.android.tools.analytics-library:crash:26.5.4
com.android.tools.analytics-library:crash:27.1.0
com.android.tools.analytics-library:crash:30.0.4
com.android.tools.analytics-library:crash:30.2.1
@@ -181,7 +181,7 @@ com.android.tools.analytics-library:crash:30.3.1
com.android.tools.analytics-library:crash:31.1.1
com.android.tools.analytics-library:protos:26.0.1
com.android.tools.analytics-library:protos:26.2.1
com.android.tools.analytics-library:protos:26.5.3
com.android.tools.analytics-library:protos:26.5.4
com.android.tools.analytics-library:protos:27.1.0
com.android.tools.analytics-library:protos:30.0.4
com.android.tools.analytics-library:protos:30.2.1
@@ -189,7 +189,7 @@ com.android.tools.analytics-library:protos:30.3.1
com.android.tools.analytics-library:protos:31.1.1
com.android.tools.analytics-library:shared:26.0.1
com.android.tools.analytics-library:shared:26.2.1
com.android.tools.analytics-library:shared:26.5.3
com.android.tools.analytics-library:shared:26.5.4
com.android.tools.analytics-library:shared:27.1.0
com.android.tools.analytics-library:shared:30.0.4
com.android.tools.analytics-library:shared:30.2.1
@@ -197,7 +197,7 @@ com.android.tools.analytics-library:shared:30.3.1
com.android.tools.analytics-library:shared:31.1.1
com.android.tools.analytics-library:tracker:26.0.1
com.android.tools.analytics-library:tracker:26.2.1
com.android.tools.analytics-library:tracker:26.5.3
com.android.tools.analytics-library:tracker:26.5.4
com.android.tools.analytics-library:tracker:27.1.0
com.android.tools.analytics-library:tracker:30.0.4
com.android.tools.analytics-library:tracker:30.2.1
@@ -226,14 +226,14 @@ com.android.tools.build:aaptcompiler:7.3.1
com.android.tools.build:aaptcompiler:8.1.1
com.android.tools.build:apksig:3.0.1
com.android.tools.build:apksig:3.2.1
com.android.tools.build:apksig:3.5.3
com.android.tools.build:apksig:3.5.4
com.android.tools.build:apksig:4.1.0
com.android.tools.build:apksig:7.0.4
com.android.tools.build:apksig:7.2.1
com.android.tools.build:apksig:7.3.1
com.android.tools.build:apksig:8.1.1
com.android.tools.build:apkzlib:3.2.1
com.android.tools.build:apkzlib:3.5.3
com.android.tools.build:apkzlib:3.5.4
com.android.tools.build:apkzlib:4.1.0
com.android.tools.build:apkzlib:7.0.4
com.android.tools.build:apkzlib:7.2.1
@@ -243,7 +243,7 @@ com.android.tools.build:builder-model:1.3.1
com.android.tools.build:builder-model:1.5.0
com.android.tools.build:builder-model:3.0.1
com.android.tools.build:builder-model:3.2.1
com.android.tools.build:builder-model:3.5.3
com.android.tools.build:builder-model:3.5.4
com.android.tools.build:builder-model:4.1.0
com.android.tools.build:builder-model:7.0.4
com.android.tools.build:builder-model:7.2.1
@@ -253,7 +253,7 @@ com.android.tools.build:builder-test-api:1.3.1
com.android.tools.build:builder-test-api:1.5.0
com.android.tools.build:builder-test-api:3.0.1
com.android.tools.build:builder-test-api:3.2.1
com.android.tools.build:builder-test-api:3.5.3
com.android.tools.build:builder-test-api:3.5.4
com.android.tools.build:builder-test-api:4.1.0
com.android.tools.build:builder-test-api:7.0.4
com.android.tools.build:builder-test-api:7.2.1
@@ -263,7 +263,7 @@ com.android.tools.build:builder:1.3.1
com.android.tools.build:builder:1.5.0
com.android.tools.build:builder:3.0.1
com.android.tools.build:builder:3.2.1
com.android.tools.build:builder:3.5.3
com.android.tools.build:builder:3.5.4
com.android.tools.build:builder:4.1.0
com.android.tools.build:builder:7.0.4
com.android.tools.build:builder:7.2.1
@@ -278,7 +278,7 @@ com.android.tools.build:bundletool:1.9.0
com.android.tools.build:bundletool:1.14.0
com.android.tools.build:gradle-api:3.0.1
com.android.tools.build:gradle-api:3.2.1
com.android.tools.build:gradle-api:3.5.3
com.android.tools.build:gradle-api:3.5.4
com.android.tools.build:gradle-api:4.1.0
com.android.tools.build:gradle-api:7.0.4
com.android.tools.build:gradle-api:7.2.1
@@ -292,7 +292,7 @@ com.android.tools.build:gradle:1.3.1
com.android.tools.build:gradle:1.5.0
com.android.tools.build:gradle:3.0.1
com.android.tools.build:gradle:3.2.1
com.android.tools.build:gradle:3.5.3
com.android.tools.build:gradle:3.5.4
com.android.tools.build:gradle:4.1.0
com.android.tools.build:gradle:7.0.4
com.android.tools.build:gradle:7.2.1
@@ -301,7 +301,7 @@ com.android.tools.build:manifest-merger:24.3.1
com.android.tools.build:manifest-merger:24.5.0
com.android.tools.build:manifest-merger:26.0.1
com.android.tools.build:manifest-merger:26.2.1
com.android.tools.build:manifest-merger:26.5.3
com.android.tools.build:manifest-merger:26.5.4
com.android.tools.build:manifest-merger:27.1.0
com.android.tools.build:manifest-merger:30.0.4
com.android.tools.build:manifest-merger:30.2.1
@@ -313,7 +313,7 @@ com.android.tools.ddms:ddmlib:24.3.1
com.android.tools.ddms:ddmlib:24.5.0
com.android.tools.ddms:ddmlib:26.0.1
com.android.tools.ddms:ddmlib:26.2.1
com.android.tools.ddms:ddmlib:26.5.3
com.android.tools.ddms:ddmlib:26.5.4
com.android.tools.ddms:ddmlib:27.1.0
com.android.tools.ddms:ddmlib:30.0.4
com.android.tools.ddms:ddmlib:30.2.1
@@ -328,7 +328,7 @@ com.android.tools.layoutlib:layoutlib-api:24.3.1
com.android.tools.layoutlib:layoutlib-api:24.5.0
com.android.tools.layoutlib:layoutlib-api:26.0.1
com.android.tools.layoutlib:layoutlib-api:26.2.1
com.android.tools.layoutlib:layoutlib-api:26.5.3
com.android.tools.layoutlib:layoutlib-api:26.5.4
com.android.tools.layoutlib:layoutlib-api:27.1.0
com.android.tools.layoutlib:layoutlib-api:30.0.4
com.android.tools.layoutlib:layoutlib-api:30.2.1
@@ -341,7 +341,7 @@ com.android.tools.lint:lint-checks:24.3.1
com.android.tools.lint:lint-checks:24.5.0
com.android.tools.lint:lint-checks:26.0.1
com.android.tools.lint:lint-gradle-api:26.2.1
com.android.tools.lint:lint-gradle-api:26.5.3
com.android.tools.lint:lint-gradle-api:26.5.4
com.android.tools.lint:lint-gradle-api:27.1.0
com.android.tools.lint:lint-model:27.1.0
com.android.tools.lint:lint-model:30.0.4
@@ -382,7 +382,7 @@ com.android.tools:annotations:24.3.1
com.android.tools:annotations:24.5.0
com.android.tools:annotations:26.0.1
com.android.tools:annotations:26.2.1
com.android.tools:annotations:26.5.3
com.android.tools:annotations:26.5.4
com.android.tools:annotations:27.1.0
com.android.tools:annotations:30.0.4
com.android.tools:annotations:30.2.1
@@ -392,7 +392,7 @@ com.android.tools:common:24.3.1
com.android.tools:common:24.5.0
com.android.tools:common:26.0.1
com.android.tools:common:26.2.1
com.android.tools:common:26.5.3
com.android.tools:common:26.5.4
com.android.tools:common:27.1.0
com.android.tools:common:30.0.4
com.android.tools:common:30.2.1
@@ -402,7 +402,7 @@ com.android.tools:dvlib:24.3.1
com.android.tools:dvlib:24.5.0
com.android.tools:dvlib:26.0.1
com.android.tools:dvlib:26.2.1
com.android.tools:dvlib:26.5.3
com.android.tools:dvlib:26.5.4
com.android.tools:dvlib:27.1.0
com.android.tools:dvlib:30.0.4
com.android.tools:dvlib:30.2.1
@@ -410,7 +410,7 @@ com.android.tools:dvlib:30.3.1
com.android.tools:dvlib:31.1.1
com.android.tools:repository:26.0.1
com.android.tools:repository:26.2.1
com.android.tools:repository:26.5.3
com.android.tools:repository:26.5.4
com.android.tools:repository:27.1.0
com.android.tools:repository:30.0.4
com.android.tools:repository:30.2.1
@@ -420,7 +420,7 @@ com.android.tools:sdklib:24.3.1
com.android.tools:sdklib:24.5.0
com.android.tools:sdklib:26.0.1
com.android.tools:sdklib:26.2.1
com.android.tools:sdklib:26.5.3
com.android.tools:sdklib:26.5.4
com.android.tools:sdklib:27.1.0
com.android.tools:sdklib:30.0.4
com.android.tools:sdklib:30.2.1
@@ -430,7 +430,7 @@ com.android.tools:sdk-common:24.3.1
com.android.tools:sdk-common:24.5.0
com.android.tools:sdk-common:26.0.1
com.android.tools:sdk-common:26.2.1
com.android.tools:sdk-common:26.5.3
com.android.tools:sdk-common:26.5.4
com.android.tools:sdk-common:27.1.0
com.android.tools:sdk-common:30.0.4
com.android.tools:sdk-common:30.2.1
@@ -942,5 +942,4 @@ org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.8.0
com.android.tools.build:gradle:8.1.1
com.google.errorprone:error_prone_annotations:2.7.1
com.android.tools.lint:lint-gradle:31.1.1
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0
com.android.tools.build:gradle:3.5.4
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0
+14 -38
View File
@@ -68,7 +68,6 @@ https://dl.google.com/dl/android/maven2/androidx/core/core/1.9.0/core-1.9.0.pom
https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0.0/cursoradapter-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.2.1/databinding-common-3.2.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.5.3/databinding-common-3.5.3.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.5.4/databinding-common-3.5.4.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/4.1.0/databinding-common-4.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/7.0.4/databinding-common-7.0.4.pom
@@ -76,7 +75,6 @@ https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/7.3.1/databinding-common-7.3.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/8.1.1/databinding-common-8.1.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.2.1/databinding-compiler-common-3.2.1.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.5.3/databinding-compiler-common-3.5.3.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/3.5.4/databinding-compiler-common-3.5.4.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/4.1.0/databinding-compiler-common-4.1.0.pom
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-compiler-common/7.0.4/databinding-compiler-common-7.0.4.pom
@@ -183,7 +181,6 @@ https://dl.google.com/dl/android/maven2/android/arch/lifecycle/common/1.0.0/comm
https://dl.google.com/dl/android/maven2/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.1/baseLibrary-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.2.1/baseLibrary-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.5.3/baseLibrary-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.5.4/baseLibrary-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/4.1.0/baseLibrary-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/7.0.4/baseLibrary-7.0.4.pom
@@ -217,7 +214,6 @@ https://dl.google.com/dl/android/maven2/com/android/support/support-v4/26.0.2/su
https://dl.google.com/dl/android/maven2/com/android/support/support-vector-drawable/26.0.2/support-vector-drawable-26.0.2.pom
https://dl.google.com/dl/android/maven2/com/android/support/support-vector-drawable/27.0.1/support-vector-drawable-27.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.2.1/crash-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.5.3/crash-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/26.5.4/crash-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/27.1.0/crash-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/30.0.4/crash-30.0.4.pom
@@ -226,7 +222,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/cras
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/crash/31.1.1/crash-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.0.1/protos-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.2.1/protos-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.5.3/protos-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/26.5.4/protos-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/27.1.0/protos-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/30.0.4/protos-30.0.4.pom
@@ -235,7 +230,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/prot
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/protos/31.1.1/protos-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.0.1/shared-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.2.1/shared-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.5.3/shared-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/26.5.4/shared-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/27.1.0/shared-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/30.0.4/shared-30.0.4.pom
@@ -244,7 +238,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shar
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/shared/31.1.1/shared-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.0.1/tracker-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.2.1/tracker-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.5.3/tracker-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/26.5.4/tracker-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/27.1.0/tracker-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/30.0.4/tracker-30.0.4.pom
@@ -253,7 +246,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/trac
https://dl.google.com/dl/android/maven2/com/android/tools/analytics-library/tracker/31.1.1/tracker-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.0.1/annotations-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.2.1/annotations-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.5.3/annotations-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/26.5.4/annotations-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/27.1.0/annotations-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/annotations/30.0.4/annotations-30.0.4.pom
@@ -278,7 +270,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/aaptcompiler/7.3
https://dl.google.com/dl/android/maven2/com/android/tools/build/aaptcompiler/8.1.1/aaptcompiler-8.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.0.1/apksig-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.2.1/apksig-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.5.3/apksig-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/3.5.4/apksig-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/4.1.0/apksig-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.0.4/apksig-7.0.4.pom
@@ -286,7 +277,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.2.1/apk
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/7.3.1/apksig-7.3.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apksig/8.1.1/apksig-8.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.2.1/apkzlib-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.5.3/apkzlib-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/3.5.4/apkzlib-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/4.1.0/apkzlib-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.0.4/apkzlib-7.0.4.pom
@@ -295,7 +285,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/7.3.1/ap
https://dl.google.com/dl/android/maven2/com/android/tools/build/apkzlib/8.1.1/apkzlib-8.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.0.1/builder-model-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.2.1/builder-model-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.5.3/builder-model-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/3.5.4/builder-model-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/4.1.0/builder-model-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/7.0.4/builder-model-7.0.4.pom
@@ -304,7 +293,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/7.
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-model/8.1.1/builder-model-8.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.0.1/builder-test-api-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.2.1/builder-test-api-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.5.3/builder-test-api-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/3.5.4/builder-test-api-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/4.1.0/builder-test-api-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/7.0.4/builder-test-api-7.0.4.pom
@@ -313,7 +301,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder-test-api/8.1.1/builder-test-api-8.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.0.1/builder-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.2.1/builder-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.5.3/builder-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/3.5.4/builder-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/4.1.0/builder-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/builder/7.0.4/builder-7.0.4.pom
@@ -329,7 +316,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/1.9.0
https://dl.google.com/dl/android/maven2/com/android/tools/build/bundletool/1.14.0/bundletool-1.14.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.0.1/gradle-api-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.2.1/gradle-api-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.5.3/gradle-api-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/3.5.4/gradle-api-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/4.1.0/gradle-api-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-api/7.0.4/gradle-api-7.0.4.pom
@@ -340,7 +326,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-core/3.0.
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle-settings-api/8.1.1/gradle-settings-api-8.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.2.1/gradle-3.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.5.3/gradle-3.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.5.4/gradle-3.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/4.1.0/gradle-4.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/7.0.4/gradle-7.0.4.pom
@@ -357,7 +342,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifie
https://dl.google.com/dl/android/maven2/com/android/tools/build/jetifier/jetifier-processor/1.0.0-beta10/jetifier-processor-1.0.0-beta10.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.0.1/manifest-merger-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.2.1/manifest-merger-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.5.3/manifest-merger-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/26.5.4/manifest-merger-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/27.1.0/manifest-merger-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/30.0.4/manifest-merger-30.0.4.pom
@@ -366,7 +350,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/
https://dl.google.com/dl/android/maven2/com/android/tools/build/manifest-merger/31.1.1/manifest-merger-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.0.1/common-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.2.1/common-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.5.3/common-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/26.5.4/common-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/27.1.0/common-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/common/30.0.4/common-30.0.4.pom
@@ -375,7 +358,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/common/30.3.1/common-3
https://dl.google.com/dl/android/maven2/com/android/tools/common/31.1.1/common-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.0.1/ddmlib-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.2.1/ddmlib-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.5.3/ddmlib-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/26.5.4/ddmlib-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/27.1.0/ddmlib-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/30.0.4/ddmlib-30.0.4.pom
@@ -384,7 +366,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/30.3.1/ddm
https://dl.google.com/dl/android/maven2/com/android/tools/ddms/ddmlib/31.1.1/ddmlib-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.0.1/dvlib-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.2.1/dvlib-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.5.3/dvlib-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/26.5.4/dvlib-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/27.1.0/dvlib-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/dvlib/30.0.4/dvlib-30.0.4.pom
@@ -398,7 +379,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains
https://dl.google.com/dl/android/maven2/com/android/tools/external/org-jetbrains/uast/31.1.1/uast-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.0.1/layoutlib-api-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.2.1/layoutlib-api-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.5.3/layoutlib-api-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/26.5.4/layoutlib-api-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/27.1.0/layoutlib-api-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/layoutlib/layoutlib-api/30.0.4/layoutlib-api-30.0.4.pom
@@ -410,7 +390,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-api/31.1.1/l
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/26.0.1/lint-checks-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-checks/31.1.1/lint-checks-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.2.1/lint-gradle-api-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.5.3/lint-gradle-api-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/26.5.4/lint-gradle-api-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle-api/27.1.0/lint-gradle-api-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint-gradle/31.1.1/lint-gradle-31.1.1.pom
@@ -427,7 +406,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/lint/lint/31.1.1/lint-
https://dl.google.com/dl/android/maven2/com/android/tools/play-sdk-proto/31.1.1/play-sdk-proto-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.0.1/repository-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.2.1/repository-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.5.3/repository-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/26.5.4/repository-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/27.1.0/repository-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/repository/30.0.4/repository-30.0.4.pom
@@ -436,7 +414,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/repository/30.3.1/repo
https://dl.google.com/dl/android/maven2/com/android/tools/repository/31.1.1/repository-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.0.1/sdklib-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.2.1/sdklib-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.5.3/sdklib-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/26.5.4/sdklib-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/27.1.0/sdklib-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/30.0.4/sdklib-30.0.4.pom
@@ -445,7 +422,6 @@ https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/30.3.1/sdklib-3
https://dl.google.com/dl/android/maven2/com/android/tools/sdklib/31.1.1/sdklib-31.1.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.0.1/sdk-common-26.0.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.2.1/sdk-common-26.2.1.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.5.3/sdk-common-26.5.3.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.5.4/sdk-common-26.5.4.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/27.1.0/sdk-common-27.1.0.pom
https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/30.0.4/sdk-common-30.0.4.pom
@@ -523,9 +499,9 @@ https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-cod
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.9/commons-codec-1.9.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.10/commons-codec-1.10.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.11/commons-codec-1.11.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.17.0/commons-codec-1.17.0.pom
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.16.1/commons-codec-1.16.1.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.4/commons-io-2.4.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.16.1/commons-io-2.16.1.pom
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.16.0/commons-io-2.16.0.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2.pom
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.3.1/commons-logging-1.3.1.pom
@@ -711,7 +687,7 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotatio
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.9.0/error_prone_annotations-2.9.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.10.0/error_prone_annotations-2.10.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.11.0/error_prone_annotations-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.27.1/error_prone_annotations-2.27.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.26.1/error_prone_annotations-2.26.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.0.18/error_prone_parent-2.0.18.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.2.0/error_prone_parent-2.2.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1.pom
@@ -723,7 +699,7 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.9.0/error_prone_parent-2.9.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.10.0/error_prone_parent-2.10.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.11.0/error_prone_parent-2.11.0.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.27.1/error_prone_parent-2.27.1.pom
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.26.1/error_prone_parent-2.26.1.pom
https://repo.maven.apache.org/maven2/com/google/flatbuffers/flatbuffers-java/1.12.0/flatbuffers-java-1.12.0.pom
https://repo.maven.apache.org/maven2/com/google/google/1/google-1.pom
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
@@ -768,7 +744,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.13.0/pro
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.17.2/protobuf-bom-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.2/protobuf-bom-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/3.19.3/protobuf-bom-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.27.0-RC1/protobuf-bom-4.27.0-RC1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.26.1/protobuf-bom-4.26.1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.17.2/protobuf-javalite-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-javalite/3.19.2/protobuf-javalite-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
@@ -785,7 +761,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.13.0/pr
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.17.2/protobuf-java-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.2/protobuf-java-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.19.3/protobuf-java-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.27.0-RC1/protobuf-java-4.27.0-RC1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.26.1/protobuf-java-4.26.1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-lite/3.0.1/protobuf-lite-3.0.1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.0.0/protobuf-parent-3.0.0.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.4.0/protobuf-parent-3.4.0.pom
@@ -796,7 +772,7 @@ https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.13.0/
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.17.2/protobuf-parent-3.17.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.2/protobuf-parent-3.19.2.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/3.19.3/protobuf-parent-3.19.3.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.27.0-RC1/protobuf-parent-4.27.0-RC1.pom
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-parent/4.26.1/protobuf-parent-4.26.1.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth-parent/1.4.2/truth-parent-1.4.2.pom
https://repo.maven.apache.org/maven2/com/google/truth/truth/1.4.2/truth-1.4.2.pom
https://repo.maven.apache.org/maven2/com/ibm/icu/icu4j/53.1/icu4j-53.1.pom
@@ -1034,8 +1010,8 @@ https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/common
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/42/commons-parent-42.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/48/commons-parent-48.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/52/commons-parent-52.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/66/commons-parent-66.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/67/commons-parent-67.pom
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/69/commons-parent-69.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.2.6/httpclient-4.2.6.pom
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2.pom
@@ -1090,7 +1066,7 @@ https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.8.1/che
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.11.1/checker-qual-2.11.1.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.43.0/checker-qual-3.43.0.pom
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.42.0/checker-qual-3.42.0.pom
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.9/groovy-xml-3.0.9.pom
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-xml/3.0.10/groovy-xml-3.0.10.pom
@@ -1149,9 +1125,9 @@ https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/2.2/hamcrest-cor
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest/2.2/hamcrest-2.2.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.7.4.201502262128/org.jacoco.build-0.7.4.201502262128.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.8.12/org.jacoco.build-0.8.12.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.8.11/org.jacoco.build-0.8.11.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.7.4.201502262128/org.jacoco.core-0.7.4.201502262128.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.8.12/org.jacoco.core-0.8.12.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.core/0.8.11/org.jacoco.core-0.8.11.pom
https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.report/0.7.4.201502262128/org.jacoco.report-0.7.4.201502262128.pom
https://repo.maven.apache.org/maven2/org/jdom/jdom2/2.0.6/jdom2-2.0.6.pom
https://repo.maven.apache.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.pom
@@ -1247,7 +1223,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.10/
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.6.20/kotlin-reflect-1.6.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.7.22/kotlin-reflect-1.7.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/1.8.20-RC2/kotlin-reflect-1.8.20-RC2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.0-RC2/kotlin-reflect-2.0.0-RC2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-reflect/2.0.0-Beta5/kotlin-reflect-2.0.0-Beta5.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.6.20/kotlin-scripting-common-1.6.20.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.7.22/kotlin-scripting-common-1.7.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-scripting-common/1.8.0/kotlin-scripting-common-1.8.0.pom
@@ -1349,7 +1325,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.20-R
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.21/kotlin-stdlib-1.8.21.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.0/kotlin-stdlib-1.9.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.9.21/kotlin-stdlib-1.9.21.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.0-RC2/kotlin-stdlib-2.0.0-RC2.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/2.0.0-Beta5/kotlin-stdlib-2.0.0-Beta5.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.7.22/kotlin-tooling-core-1.7.22.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.8.0/kotlin-tooling-core-1.8.0.pom
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-tooling-core/1.9.0/kotlin-tooling-core-1.9.0.pom
@@ -1368,7 +1344,7 @@ https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trov
https://repo.maven.apache.org/maven2/org/json/json/20180813/json-20180813.pom
https://repo.maven.apache.org/maven2/org/json/json/20240303/json-20240303.pom
https://repo.maven.apache.org/maven2/org/jsoup/jsoup/1.13.1/jsoup-1.13.1.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.11.0-M1/junit-bom-5.11.0-M1.pom
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.10.2/junit-bom-5.10.2.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8.1/stax-ex-1.8.1.pom
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.8/stax-ex-1.8.pom
+1 -2
View File
@@ -54,8 +54,7 @@ org.jetbrains.kotlin.jvm:org.jetbrains.kotlin.jvm.gradle.plugin:1.8.0
com.android.tools.build:gradle:8.1.1
com.google.errorprone:error_prone_annotations:2.7.1
com.android.tools.lint:lint-gradle:31.1.1
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0
com.android.tools.build:gradle:3.5.4' \
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.0' \
>> "${DEPS_LIST}"
}
+1 -2
View File
@@ -16,13 +16,13 @@ react-native-dialogs
react-native-fast-image
react-native-fs
react-native-gesture-handler
react-native-get-random-values
react-native-hole-view
react-native-image-crop-picker
react-native-image-resizer
react-native-keychain
react-native-linear-gradient
react-native-lottie-splash-screen
react-native-mail
react-native-navigation
react-native-nfc-manager
react-native-orientation-locker
@@ -36,4 +36,3 @@ react-native-status-keycard
react-native-svg
react-native-transparent-video
react-native-webview
walletconnect_react-native-compat
-2
View File
@@ -7,8 +7,6 @@ let
manifestLock = "ios/Pods/Manifest.lock";
in mkShell {
buildInputs = [ cocoapods ];
# https://github.com/reactwg/react-native-new-architecture/blob/main/docs/enable-apps.md#enable-new-architecture-for-ios
RCT_NEW_ARCH_ENABLED = 1;
shellHook = ''
pushd "$STATUS_MOBILE_HOME" > /dev/null
{
+6 -5
View File
@@ -56,13 +56,14 @@ in {
ruby = super.ruby_3_1;
yarn = super.yarn.override { nodejs = super.nodejs-18_x; };
openjdk = super.openjdk11_headless;
xcodeWrapper = callPackage ./pkgs/xcodeenv/compose-xcodewrapper.nix { } {
versions = ["15.1"];
xcodeWrapper = super.xcodeenv.composeXcodeWrapper {
version = "15.0";
allowHigher = true;
};
go = super.go_1_20;
go = super.go_1_19;
clang = super.clang_15;
buildGoPackage = super.buildGo120Package;
buildGoModule = super.buildGo120Module;
buildGoPackage = super.buildGo119Package;
buildGoModule = super.buildGo119Module;
gomobile = (super.gomobile.overrideAttrs (old: {
patches = [
(self.fetchurl { # https://github.com/golang/mobile/pull/84
-1
View File
@@ -16,7 +16,6 @@ androidenv.composeAndroidPackages {
platformToolsVersion = "33.0.3";
buildToolsVersions = [ "34.0.0" ];
platformVersions = [ "34" ];
# This version must match cmake version inside android/app/build.gradle
cmakeVersions = [ "3.22.1" ];
ndkVersion = "25.2.9519653";
includeNDK = true;
@@ -1,50 +0,0 @@
{ stdenv, lib, writeShellScriptBin }:
{ versions ? [ "15.1" ]
, xcodeBaseDir ? "/Applications/Xcode.app" }:
assert stdenv.isDarwin;
let
xcodebuildPath = "${xcodeBaseDir}/Contents/Developer/usr/bin/xcodebuild";
xcodebuildWrapper = writeShellScriptBin "xcodebuild" ''
currentVer="$(${xcodebuildPath} -version | awk 'NR==1{print $2}')"
wrapperVers=(${lib.concatStringsSep " " versions})
for ver in "''${wrapperVers[@]}"; do
if [[ "$currentVer" == "$ver" ]]; then
# here exec replaces the shell without creating a new process
# https://www.gnu.org/software/bash/manual/bash.html#index-exec
exec "${xcodebuildPath}" "$@"
fi
done
echo "The installed Xcode version ($currentVer) does not match any of the allowed versions: ${lib.concatStringsSep ", " versions}"
echo "Please update your local Xcode installation to match one of the allowed versions"
exit 1
'';
in
stdenv.mkDerivation {
pname = "xcode-wrapper-plus";
version = lib.concatStringsSep "," versions;
# Fails in sandbox. Use `--option sandbox relaxed` or `--option sandbox false`.
__noChroot = true;
buildCommand = ''
mkdir -p $out/bin
cd $out/bin
ln -s "${xcodebuildWrapper}/bin/xcode-select"
ln -s /usr/bin/security
ln -s /usr/bin/codesign
ln -s /usr/bin/xcrun
ln -s /usr/bin/plutil
ln -s /usr/bin/clang
ln -s /usr/bin/lipo
ln -s /usr/bin/file
ln -s /usr/bin/rev
ln -s "${xcodebuildWrapper}/bin/xcodebuild"
ln -s "${xcodeBaseDir}/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator"
cd ..
ln -s "${xcodeBaseDir}/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs"
'';
}
-6
View File
@@ -11,12 +11,6 @@ buildGoPackage {
phases = ["unpackPhase" "configurePhase" "buildPhase"];
# https://pkg.go.dev/net#hdr-Name_Resolution
# https://github.com/status-im/status-mobile/issues/19736
# https://github.com/status-im/status-mobile/issues/19581
# TODO: try removing when go is upgraded to 1.22
GODEBUG = "netdns=cgo+2";
preBuild = ''
pushd go/src/$goPackagePath
go run cmd/library/*.go > $NIX_BUILD_TOP/main.go
+1 -6
View File
@@ -38,15 +38,10 @@ in buildGoPackage {
# Ensure XCode is present for iOS, instead of failing at the end of the build.
preConfigure = optionalString isIOS enforceXCodeAvailable;
# https://pkg.go.dev/net#hdr-Name_Resolution
# https://github.com/status-im/status-mobile/issues/19736
# https://github.com/status-im/status-mobile/issues/19581
# TODO: try removing when go is upgraded to 1.22
GODEBUG = "netdns=cgo+2";
buildPhase = ''
runHook preBuild
echo -e "\nBuilding $pname for: ${concatStringsSep "," targets}"
gomobile bind \
${concatStringsSep " " goBuildFlags} \
-ldflags="$ldflags" \
+5 -10
View File
@@ -8,27 +8,21 @@
"preinstall": "scripts/check-nix-shell.sh && make status-go-library"
},
"dependencies": {
"@ethersproject/shims": "^5.7.0",
"@json-rpc-tools/utils": "^1.7.6",
"@react-native-async-storage/async-storage": "1.19.3",
"@react-native-camera-roll/camera-roll": "7.5.2",
"@react-native-camera-roll/camera-roll": "git+https://github.com/status-im/react-native-camera-roll.git#refs/tags/v5.1.1.1",
"@react-native-clipboard/clipboard": "1.13.2",
"@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#refs/tags/v2.0.3-status-v6",
"@react-native-community/blur": "4.4.0",
"@react-native-community/blur": "git+https://github.com/status-im/react-native-blur.git#refs/tags/v4.3.3-status",
"@react-native-community/hooks": "^3.0.0",
"@react-native-community/masked-view": "^0.1.6",
"@react-native-community/netinfo": "^4.4.0",
"@react-native-community/push-notification-ios": "^1.4.1",
"@react-native-community/slider": "^3.0.0",
"@walletconnect/react-native-compat": "^2.12.2",
"@walletconnect/web3wallet": "^1.11.2",
"base-64": "^1.0.0",
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#refs/tags/v4.0.2-status",
"chance": "^1.1.0",
"emojilib": "^2.4.0",
"eth-phishing-detect": "^1.2.0",
"ethers": "5.7.2",
"fast-text-encoding": "^1.0.6",
"form-data": "^4.0.0",
"functional-red-black-tree": "^1.0.1",
"i18n-js": "^3.3.0",
@@ -47,7 +41,6 @@
"react-native-fast-image": "^8.5.11",
"react-native-fs": "^2.14.1",
"react-native-gesture-handler": "2.14.1",
"react-native-get-random-values": "^1.11.0",
"react-native-gifted-charts": "^1.3.2",
"react-native-hole-view": "^3.0.0-alpha4",
"react-native-image-crop-picker": "0.40.0",
@@ -55,9 +48,10 @@
"react-native-keychain": "8.1.2",
"react-native-linear-gradient": "^2.8.0",
"react-native-lottie-splash-screen": "^1.0.1",
"react-native-mail": "git+https://github.com/status-im/react-native-mail.git#refs/tags/v6.1.2-status",
"react-native-navigation": "7.38.3",
"react-native-orientation-locker": "^1.5.0",
"react-native-permissions": "4.1.5",
"react-native-permissions": "3.8.0",
"react-native-reanimated": "3.6.1",
"react-native-redash": "18.1.0",
"react-native-shadow-2": "^7.0.8",
@@ -100,6 +94,7 @@
"prettier": "^2.8.8",
"process": "0.11.10",
"react-test-renderer": "18.1.0",
"rn-snoopy": "git+https://github.com/status-im/rn-snoopy.git#refs/tags/v2.0.2-status",
"shadow-cljs": "2.26.2"
},
"binary": {
-11
View File
@@ -1,11 +0,0 @@
--- /tmp/tmp-status-mobile-851dbcb56/tmp.gcyqIAUEIA/build.gradle 2024-04-16 18:11:12.481819000 +0200
+++ ./node_modules/@react-native-community/blur/android/build.gradle 2024-04-16 18:11:18.889991702 +0200
@@ -5,7 +5,7 @@
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.5.3'
+ classpath 'com.android.tools.build:gradle:3.5.4'
}
}
-10
View File
@@ -1,10 +0,0 @@
--- /tmp/tmp-status-mobile-61974dae4/tmp.6k5ZPUa0Hp/BlurView.ios.tsx 2024-04-16 17:07:33.229847000 +0200
+++ ./node_modules/@react-native-community/blur/src/components/BlurView.ios.tsx 2024-04-16 17:07:58.540617624 +0200
@@ -6,6 +6,7 @@
| 'dark'
| 'light'
| 'xlight'
+ | 'transparent'
| 'prominent'
| 'regular'
| 'extraDark'
-57
View File
@@ -1,57 +0,0 @@
--- /tmp/tmp-status-mobile-851dbcb56/tmp.beqWjtcNwi/BlurView.mm 2024-04-16 17:55:00.688450000 +0200
+++ ./node_modules/@react-native-community/blur/ios/BlurView.mm 2024-04-16 17:56:17.772952042 +0200
@@ -73,7 +73,7 @@
{
const auto &oldViewProps = *std::static_pointer_cast<const BlurViewProps>(_props);
const auto &newViewProps = *std::static_pointer_cast<const BlurViewProps>(props);
-
+
if (oldViewProps.blurAmount != newViewProps.blurAmount) {
NSNumber *blurAmount = [NSNumber numberWithInt:newViewProps.blurAmount];
[self setBlurAmount:blurAmount];
@@ -83,12 +83,12 @@
NSString *blurType = [NSString stringWithUTF8String:toString(newViewProps.blurType).c_str()];
[self setBlurType:blurType];
}
-
+
if (oldViewProps.reducedTransparencyFallbackColor != newViewProps.reducedTransparencyFallbackColor) {
UIColor *color = RCTUIColorFromSharedColor(newViewProps.reducedTransparencyFallbackColor);
[self setReducedTransparencyFallbackColor:color];
}
-
+
[super updateProps:props oldProps:oldProps];
}
#endif // RCT_NEW_ARCH_ENABLED
@@ -131,6 +131,7 @@
- (UIBlurEffectStyle)blurEffectStyle
{
+ if ([self.blurType isEqual: @"transparent"]) return UIBlurEffectStyleDark;
if ([self.blurType isEqual: @"xlight"]) return UIBlurEffectStyleExtraLight;
if ([self.blurType isEqual: @"light"]) return UIBlurEffectStyleLight;
if ([self.blurType isEqual: @"dark"]) return UIBlurEffectStyleDark;
@@ -160,7 +161,7 @@
if ([self.blurType isEqual: @"thinMaterialLight"]) return UIBlurEffectStyleSystemThinMaterialLight;
if ([self.blurType isEqual: @"ultraThinMaterialLight"]) return UIBlurEffectStyleSystemUltraThinMaterialLight;
#endif
-
+
#if TARGET_OS_TV
if ([self.blurType isEqual: @"regular"]) return UIBlurEffectStyleRegular;
if ([self.blurType isEqual: @"prominent"]) return UIBlurEffectStyleProminent;
@@ -183,6 +184,13 @@
UIBlurEffectStyle style = [self blurEffectStyle];
self.blurEffect = [BlurEffectWithAmount effectWithStyle:style andBlurAmount:self.blurAmount];
self.blurEffectView.effect = self.blurEffect;
+
+ if ([self.blurType isEqual: @"transparent"]) {
+ for (UIView *subview in self.blurEffectView.subviews) {
+ subview.backgroundColor = [UIColor clearColor];
+ }
+ }
+
}
- (void)updateFallbackView
-10
View File
@@ -1,10 +0,0 @@
--- /tmp/tmp-status-mobile-61974dae4/tmp.NHLSFZG6LG/BlurViewNativeComponent.ts 2024-04-16 17:08:42.755929000 +0200
+++ ./node_modules/@react-native-community/blur/src/fabric/BlurViewNativeComponent.ts 2024-04-16 17:08:57.634037113 +0200
@@ -10,6 +10,7 @@
| 'dark'
| 'light'
| 'xlight'
+ | 'transparent'
| 'prominent'
| 'regular'
| 'extraDark'
-22
View File
@@ -1,22 +0,0 @@
--- /tmp/tmp-status-mobile-3907e6b2e/tmp.re8kHerusA/CameraRoll.ts 2024-04-16 15:17:12.942432000 +0200
+++ ./node_modules/@react-native-camera-roll/camera-roll/src/CameraRoll.ts 2024-04-16 15:17:42.455250986 +0200
@@ -239,6 +239,19 @@
}
/**
+ * Returns total iOS image count
+ */
+ static getPhotosCountiOS(): Promise<number> {
+ return RNCCameraRoll.getPhotosCountiOS('');
+ }
+ /**
+ * Returns favorites and their count iOS
+ */
+ static getFavoritesiOS(): Promise<Album> {
+ return RNCCameraRoll.getFavoritesiOS('');
+ }
+
+ /**
* Saves the photo or video to the camera roll or photo library, and returns the URI of the newly created asset.
*
* @deprecated `save(...)` is deprecated - use `saveAsset(...)` instead.
-37
View File
@@ -1,37 +0,0 @@
--- /tmp/tmp-status-mobile-ca53bf738/tmp.QcO69SAqs7/CameraRollModule.java 2024-04-19 14:02:42.746932000 +0200
+++ ./node_modules/@react-native-camera-roll/camera-roll/android/src/main/java/com/reactnativecommunity/cameraroll/CameraRollModule.java 2024-04-19 14:03:51.776866113 +0200
@@ -677,7 +677,7 @@
WritableArray subTypes = Arguments.createArray();
node.putArray("subTypes", subTypes);
-
+
if (includeSourceType) {
node.putString("sourceType", "UserLibrary");
} else {
@@ -685,7 +685,7 @@
}
WritableArray group_name = Arguments.createArray();
-
+
if (includeAlbums) {
group_name.pushString(media.getString(groupNameIndex));
}
@@ -1089,6 +1089,16 @@
promise.reject("CameraRoll:getPhotoThumbnail", "getPhotoThumbnail is not supported on Android");
}
+ @ReactMethod
+ public void getPhotosCountiOS(String arg, Promise promise) {
+ promise.reject("CameraRoll:getPhotosCountiOS", "getPhotosCountiOS is not supported on Android");
+ }
+
+ @ReactMethod
+ public void getFavoritesiOS(String arg, Promise promise) {
+ promise.reject("CameraRoll:getFavoritesiOS", "getFavoritesiOS is not supported on Android");
+ }
+
public void addListener(String eventName) {}
public void removeListeners(double count) {}
}
-11
View File
@@ -1,11 +0,0 @@
--- /tmp/tmp-status-mobile-3907e6b2e/tmp.juxTO1BeCM/NativeCameraRollModule.ts 2024-04-16 15:21:28.379979000 +0200
+++ ./node_modules/@react-native-camera-roll/camera-roll/src/NativeCameraRollModule.ts 2024-04-16 15:21:40.490391291 +0200
@@ -81,6 +81,8 @@
getPhotos(params: Object): Promise<PhotoIdentifiersPage>;
getAlbums(params: Object): Promise<Album[]>;
deletePhotos(photoUris: Array<string>): Promise<void>;
+ getPhotosCountiOS(arg: string): Promise<number>;
+ getFavoritesiOS(arg: string): Promise<Album>;
getPhotoByInternalID(
internalID: string,
options: Object,
@@ -1,16 +0,0 @@
--- /tmp/tmp-status-mobile-ca53bf738/tmp.Ay8Xen8Mmn/NativeCameraRollModuleSpec.java 2024-04-19 12:10:05.789750000 +0200
+++ ./node_modules/@react-native-camera-roll/camera-roll/android/src/paper/java/com/reactnativecommunity/cameraroll/NativeCameraRollModuleSpec.java 2024-04-19 12:12:27.231493426 +0200
@@ -50,4 +50,13 @@
@ReactMethod
@DoNotStrip
public abstract void getPhotoThumbnail(String internalID, ReadableMap options, Promise promise);
+
+ @ReactMethod
+ @DoNotStrip
+ public abstract void getPhotosCountiOS(String arg, Promise promise);
+
+ @ReactMethod
+ @DoNotStrip
+ public abstract void getFavoritesiOS(String arg, Promise promise);
+
}
-56
View File
@@ -1,56 +0,0 @@
--- /tmp/tmp-status-mobile-3907e6b2e/tmp.O0mkyjqnsy/RNCCameraRoll.mm 2024-04-16 15:26:23.070258000 +0200
+++ ./node_modules/@react-native-camera-roll/camera-roll/ios/RNCCameraRoll.mm 2024-04-16 15:26:32.664996066 +0200
@@ -955,6 +955,53 @@
return [albumTitles copy];
}
+RCT_EXPORT_METHOD(getPhotosCountiOS:(NSString *)blank
+ resolve:(RCTPromiseResolveBlock)resolve
+ reject:(RCTPromiseRejectBlock)reject)
+{
+ __block NSInteger intTotalCount=0;
+ PHFetchOptions *allPhotosOptions = [PHFetchOptions new];
+ allPhotosOptions.predicate = [NSPredicate predicateWithFormat:@"mediaType == %d ",PHAssetMediaTypeImage];
+ PHFetchResult *allPhotosResult = [PHAsset fetchAssetsWithOptions:allPhotosOptions];
+ intTotalCount+=allPhotosResult.count;
+
+ resolve(@(intTotalCount));
+}
+
+RCT_EXPORT_METHOD(getFavoritesiOS:(NSString *)blank
+ resolve:(RCTPromiseResolveBlock)resolve
+ reject:(RCTPromiseRejectBlock)reject)
+{
+ __block NSInteger intTotalCount=0;
+ PHFetchOptions *fetchOptions = [PHFetchOptions new];
+ NSString *format = @"(favorite == true)";
+ fetchOptions.predicate = [NSPredicate predicateWithFormat:format];
+ PHFetchResult<PHAsset *> *const assetsFetchResult = [PHAsset fetchAssetsWithOptions:fetchOptions];
+ PHAsset *imageAsset = [assetsFetchResult firstObject];
+ NSMutableArray * result = [NSMutableArray new];
+
+ for (PHAsset* asset in assetsFetchResult) {
+ NSArray *resources = [PHAssetResource assetResourcesForAsset:asset ];
+ if ([resources count] < 1) continue;
+ NSString *orgFilename = ((PHAssetResource*)resources[0]).originalFilename;
+ NSString *uit = ((PHAssetResource*)resources[0]).uniformTypeIdentifier;
+ NSString *mimeType = (NSString *)CFBridgingRelease(UTTypeCopyPreferredTagWithClass((__bridge CFStringRef _Nonnull)(uit), kUTTagClassMIMEType));
+ CFStringRef extension = UTTypeCopyPreferredTagWithClass((__bridge CFStringRef _Nonnull)(uit), kUTTagClassFilenameExtension);
+ [result addObject:@{
+ @"width": @([asset pixelWidth]),
+ @"height": @([asset pixelHeight]),
+ @"filename": orgFilename ?: @"",
+ @"mimeType": mimeType ?: @"",
+ @"id": [asset localIdentifier],
+ @"creationDate": [asset creationDate],
+ @"uri": [NSString stringWithFormat:@"ph://%@", [asset localIdentifier]],
+ @"duration": @([asset duration])
+ }];
+ }
+ [result addObject:@{@"count": @(assetsFetchResult.count)}];
+ resolve(result);
+}
+
static void checkPhotoLibraryConfig()
{
#if RCT_DEV
@@ -1,10 +0,0 @@
--- /tmp/tmp-status-mobile-61974dae4/tmp.zy6uXqO4gW/VibrancyViewNativeComponent.ts 2024-04-16 17:09:23.772623000 +0200
+++ ./node_modules/@react-native-community/blur/src/fabric/VibrancyViewNativeComponent.ts 2024-04-16 17:09:39.033737349 +0200
@@ -10,6 +10,7 @@
| 'dark'
| 'light'
| 'xlight'
+ | 'transparent'
| 'prominent'
| 'regular'
| 'extraDark'
Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 40 KiB

+2 -2
View File
@@ -1,9 +1,9 @@
#!/usr/bin/env sh
INVALID_CHANGES=$(grep -E -r '(/atom|re-frame/dispatch|rf/dispatch|re-frame/subscribe|rf/subscribe|rf/sub|<sub|>evt|status-im\.)' --include '*.cljs' --include '*.clj' './src/quo')
INVALID_CHANGES=$(grep -E -r '(re-frame/dispatch|rf/dispatch|re-frame/subscribe|rf/subscribe|rf/sub|<sub|>evt|status-im\.)' --include '*.cljs' --include '*.clj' './src/quo')
if test -n "$INVALID_CHANGES"; then
echo "WARNING: re-frame, status-im, reagent atoms are not allowed in quo components"
echo "WARNING: re-frame, status-im are not allowed in quo components"
echo ''
echo "$INVALID_CHANGES"
exit 1
+1 -2
View File
@@ -148,8 +148,7 @@
status-im.config/ALCHEMY_ARBITRUM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_ARBITRUM_SEPOLIA_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_MAINNET_TOKEN #shadow/env "ALCHEMY_OPTIMISM_MAINNET_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_GOERLI_TOKEN #shadow/env "ALCHEMY_OPTIMISM_GOERLI_TOKEN"
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"
status-im.config/WALLET_CONNECT_PROJECT_ID #shadow/env "WALLET_CONNECT_PROJECT_ID"}
status-im.config/ALCHEMY_OPTIMISM_SEPOLIA_TOKEN #shadow/env "ALCHEMY_OPTIMISM_SEPOLIA_TOKEN"}
:compiler-options
{;; needed because we override require and it
;; messes with source-map which reports callstack
@@ -0,0 +1,31 @@
(ns legacy.status-im.bottom-sheet.events
(:require
[utils.re-frame :as rf]))
(rf/defn show-bottom-sheet-old
[{:keys [db]} {:keys [view options]}]
{:dismiss-keyboard nil
:show-bottom-sheet-overlay-old nil
:db (assoc db
:bottom-sheet/show? true
:bottom-sheet/view view
:bottom-sheet/options options)})
(rf/defn show-bottom-sheet-event
{:events [:bottom-sheet/show-sheet-old]}
[cofx view options]
(show-bottom-sheet-old
cofx
{:view view
:options options}))
(rf/defn hide-bottom-sheet-old
{:events [:bottom-sheet/hide-old]}
[{:keys [db]}]
{:db (assoc db :bottom-sheet/show? false)
:dismiss-bottom-sheet-overlay-old nil})
(rf/defn hide-bottom-sheet-navigation-overlay
{:events [:bottom-sheet/hide-old-navigation-overlay]}
[{}]
{:dismiss-bottom-sheet-overlay-old nil})
@@ -0,0 +1,38 @@
(ns legacy.status-im.bottom-sheet.sheets
(:require
[legacy.status-im.bottom-sheet.view :as bottom-sheet]
[legacy.status-im.ui.screens.about-app.views :as about-app]
[legacy.status-im.ui.screens.mobile-network-settings.view :as mobile-network-settings]
[quo.theme :as theme]
[react-native.core :as rn]
[utils.re-frame :as rf]))
(defn bottom-sheet
[]
(let [dismiss-bottom-sheet-callback (fn []
(rf/dispatch [:bottom-sheet/hide-old])
true)
{:keys [show? view options]} (rf/sub [:bottom-sheet-old])
{:keys [content]
:as opts}
(cond-> {:visible? show?}
(map? view)
(merge view)
(= view :mobile-network-offline)
(merge mobile-network-settings/offline-sheet)
(= view :learn-more)
(merge about-app/learn-more))
page-theme (:theme options)]
[:f>
(fn []
(rn/use-mount (fn []
(rn/hw-back-add-listener dismiss-bottom-sheet-callback)
(fn []
(rn/hw-back-remove-listener dismiss-bottom-sheet-callback))))
[theme/provider {:theme (or page-theme (theme/get-theme))}
[bottom-sheet/bottom-sheet opts
(when content
[content (when options options)])]])]))
@@ -0,0 +1,59 @@
(ns legacy.status-im.bottom-sheet.styles
(:require
[quo.foundations.colors :as colors]))
(def border-radius 20)
(defn handle
[override-theme]
{:position :absolute
:top 8
:width 32
:height 4
:background-color (colors/theme-colors colors/neutral-100 colors/white override-theme)
:opacity 0.1
:border-radius 100
:align-self :center})
(def backdrop
{:position :absolute
:left 0
:right 0
:bottom 0
:top 0})
(def backdrop-color
{:background-color colors/neutral-100})
(def container
{:position :absolute
:left 0
:right 0
:top 0
:bottom 0
:overflow :hidden})
(defn content-style
[insets bottom-safe-area-spacing?]
{:position :absolute
:left 0
:right 0
:top 0
:padding-top border-radius
:padding-bottom (if bottom-safe-area-spacing? (:bottom insets) 0)})
(defn selected-background
[override-theme]
{:border-radius 12
:padding-left 12
:margin-horizontal 8
:margin-bottom 10
:height 48
:background-color (colors/theme-colors colors/white colors/neutral-90 override-theme)})
(defn background
[override-theme]
{:background-color (colors/theme-colors colors/white colors/neutral-95 override-theme)
:flex 1
:border-top-left-radius border-radius
:border-top-right-radius border-radius})
+240
View File
@@ -0,0 +1,240 @@
(ns legacy.status-im.bottom-sheet.view
(:require
[legacy.status-im.bottom-sheet.styles :as styles]
[oops.core :refer [oget]]
[re-frame.core :as re-frame]
[react-native.background-timer :as timer]
[react-native.core :as react]
[react-native.core :as rn]
[react-native.gesture :as gesture]
[react-native.hooks :as hooks]
[react-native.platform :as platform]
[react-native.reanimated :as reanimated]
[react-native.safe-area :as safe-area]
[reagent.core :as reagent]
[utils.worklets.bottom-sheet :as worklets.bottom-sheet]))
(def animation-delay 450)
(defn with-animation
[value]
(reanimated/with-spring
value
(clj->js {:mass 2
:stiffness 500
:damping 200})))
(defn get-bottom-sheet-gesture
[pan-y translate-y bg-height bg-height-expanded
window-height keyboard-shown disable-drag? expandable?
show-bottom-sheet? expanded? close-bottom-sheet gesture-running?]
(-> (gesture/gesture-pan)
(gesture/on-start
(fn [_]
(reset! gesture-running? true)
(when (and keyboard-shown (not disable-drag?) show-bottom-sheet?)
(re-frame/dispatch [:dismiss-keyboard]))))
(gesture/on-update
(fn [evt]
(when (and (not disable-drag?) show-bottom-sheet?)
(let [max-pan-up (if (or @expanded? (not expandable?))
0
(- (- bg-height-expanded bg-height)))
max-pan-down (if @expanded?
bg-height-expanded
bg-height)]
(reanimated/set-shared-value pan-y
(max
(min
(.-translationY evt)
max-pan-down)
max-pan-up))))))
(gesture/on-end
(fn [_]
(reset! gesture-running? false)
(when (and (not disable-drag?) show-bottom-sheet?)
(let [end-pan-y (- window-height (.-value translate-y))
expand-threshold (min (* bg-height 1.1) (+ bg-height 50))
collapse-threshold (max (* bg-height-expanded 0.9) (- bg-height-expanded 50))
should-close-bottom-sheet? (< end-pan-y (max (* bg-height 0.7) 50))]
(cond
should-close-bottom-sheet?
(close-bottom-sheet)
(and (not @expanded?) (> end-pan-y expand-threshold))
(reset! expanded? true)
(and @expanded? (< end-pan-y collapse-threshold))
(reset! expanded? false))))))))
(defn handle-view
[window-width override-theme]
[rn/view
{:style {:width window-width
:position :absolute
:background-color :transparent
:top 0
:height 20}}
[rn/view {:style (styles/handle override-theme)}]])
(defn bottom-sheet
[props children]
(let [{on-cancel :on-cancel
disable-drag? :disable-drag?
show-handle? :show-handle?
visible? :visible?
backdrop-dismiss? :backdrop-dismiss?
expandable? :expandable?
bottom-safe-area-spacing? :bottom-safe-area-spacing?
selected-item :selected-item
is-initially-expanded? :expanded?
override-theme :override-theme
:or {show-handle? true
backdrop-dismiss? true
expandable? false
bottom-safe-area-spacing? true
is-initially-expanded? false}}
props
content-height (reagent/atom nil)
show-bottom-sheet? (reagent/atom nil)
keyboard-was-shown? (reagent/atom false)
expanded? (reagent/atom is-initially-expanded?)
gesture-running? (reagent/atom false)
reset-atoms (fn []
(reset! show-bottom-sheet? nil)
(reset! content-height nil)
(reset! expanded? false)
(reset! keyboard-was-shown? false)
(reset! gesture-running? false))
close-bottom-sheet (fn []
(reset! show-bottom-sheet? false)
(when (fn? on-cancel) (on-cancel))
(timer/set-timeout
#(do
(re-frame/dispatch [:bottom-sheet/hide-old-navigation-overlay])
(reset-atoms))
animation-delay))]
[:f>
(fn []
(let [{height :height
window-width :width}
(rn/get-window)
window-height (if selected-item (- height 72) height)
{:keys [keyboard-shown]} (hooks/use-keyboard)
insets (safe-area/get-insets)
bg-height-expanded (- window-height (:top insets))
bg-height (max (min @content-height bg-height-expanded) 109)
bottom-sheet-dy (reanimated/use-shared-value 0)
pan-y (reanimated/use-shared-value 0)
translate-y (worklets.bottom-sheet/use-translate-y window-height bottom-sheet-dy pan-y)
bg-opacity
(worklets.bottom-sheet/use-background-opacity translate-y bg-height window-height 0.7)
on-content-layout (fn [evt]
(let [height (oget evt "nativeEvent" "layout" "height")]
(reset! content-height height)))
on-expanded (fn []
(reanimated/set-shared-value bottom-sheet-dy bg-height-expanded)
(reanimated/set-shared-value pan-y 0))
on-collapsed (fn []
(reanimated/set-shared-value bottom-sheet-dy bg-height)
(reanimated/set-shared-value pan-y 0))
bottom-sheet-gesture (get-bottom-sheet-gesture
pan-y
translate-y
bg-height
bg-height-expanded
window-height
keyboard-shown
disable-drag?
expandable?
show-bottom-sheet?
expanded?
close-bottom-sheet
gesture-running?)
handle-comp [gesture/gesture-detector {:gesture bottom-sheet-gesture}
[handle-view window-width override-theme]]]
(react/use-effect #(do
(cond
(and
(nil? @show-bottom-sheet?)
visible?
(some? @content-height)
(> @content-height 0))
(reset! show-bottom-sheet? true)
(and @show-bottom-sheet? (not visible?))
(close-bottom-sheet)))
[@show-bottom-sheet? @content-height visible?])
(react/use-effect #(do
(when @show-bottom-sheet?
(cond
keyboard-shown
(do
(reset! keyboard-was-shown? true)
(reset! expanded? true))
(and @keyboard-was-shown? (not keyboard-shown))
(reset! expanded? false))))
[@show-bottom-sheet? @keyboard-was-shown? keyboard-shown])
(react/use-effect #(do
(when-not @gesture-running?
(cond
@show-bottom-sheet?
(if @expanded?
(do
(reanimated/set-shared-value
bottom-sheet-dy
(with-animation (+ bg-height-expanded (.-value pan-y))))
;; Workaround for
;; https://github.com/software-mansion/react-native-reanimated/issues/1758#issue-817145741
;; withTiming/withSpring callback not working on-expanded
;; should be called as a callback of with-animation instead,
;; once this issue has been resolved
(timer/set-timeout on-expanded animation-delay))
(do
(reanimated/set-shared-value
bottom-sheet-dy
(with-animation (+ bg-height (.-value pan-y))))
;; Workaround for
;; https://github.com/software-mansion/react-native-reanimated/issues/1758#issue-817145741
;; withTiming/withSpring callback not working on-collapsed
;; should be called as a callback of with-animation instead,
;; once this issue has been resolved
(timer/set-timeout on-collapsed animation-delay)))
(= @show-bottom-sheet? false)
(reanimated/set-shared-value bottom-sheet-dy (with-animation 0)))))
[@show-bottom-sheet? @expanded? @gesture-running?])
[:<>
[rn/pressable
{:on-press (when backdrop-dismiss? close-bottom-sheet)
:style styles/backdrop}
[reanimated/view
{:style (reanimated/apply-animations-to-style
{:opacity bg-opacity}
styles/backdrop-color)}]]
(cond->> [reanimated/view
{:style (reanimated/apply-animations-to-style
{:transform [{:translateY translate-y}]}
{:width window-width
:height window-height})}
[rn/view {:style styles/container}
(when selected-item
[rn/view {:style (styles/selected-background override-theme)}
[selected-item]])
[rn/view {:style (styles/background override-theme)}
[rn/keyboard-avoiding-view
{:behaviour (if platform/ios? :padding :height)
:style {:flex 1}}
[rn/view
{:style (styles/content-style insets bottom-safe-area-spacing?)
:on-layout (when-not (and
(some? @content-height)
(> @content-height 0))
on-content-layout)}
children]]
(when show-handle?
handle-comp)]]]
(not show-handle?)
(conj [gesture/gesture-detector {:gesture bottom-sheet-gesture}]))]))]))
+2 -1
View File
@@ -2,6 +2,7 @@
(:require
["eth-phishing-detect" :as eth-phishing-detect]
[clojure.string :as string]
[legacy.status-im.bottom-sheet.events :as bottom-sheet]
[legacy.status-im.browser.permissions :as browser.permissions]
[legacy.status-im.browser.webview-ref :as webview-ref]
[legacy.status-im.ethereum.ens :as ens]
@@ -518,7 +519,7 @@
[{:keys [db] :as cofx} address]
(rf/merge cofx
{:browser/clear-web-data nil}
(navigation/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(browser.permissions/clear-dapps-permissions)
(multiaccounts.update/multiaccount-update :dapps-address address {})
#(when (= (:view-id db) :browser)
+59 -10
View File
@@ -1,9 +1,9 @@
(ns legacy.status-im.communities.core
(:require
[clojure.set :as set]
[legacy.status-im.bottom-sheet.events :as bottom-sheet]
legacy.status-im.communities.e2e
[re-frame.core :as re-frame]
[status-im.contexts.shell.activity-center.events :as activity-center]
[status-im.navigation.events :as navigation]
[taoensso.timbre :as log]
[utils.re-frame :as rf]))
@@ -22,10 +22,60 @@
{}
requests))
(defn- fetch-community-id-input
[{:keys [db]}]
(:communities/community-id-input db))
(rf/defn handle-response
[_ response-js]
{:dispatch [:sanitize-messages-and-process-response response-js]})
(rf/defn invite-users
{:events [::invite-people-confirmation-pressed]}
[cofx user-pk contacts]
(let [community-id (fetch-community-id-input cofx)
pks (if (seq user-pk)
(conj contacts user-pk)
contacts)]
(when (seq pks)
{:json-rpc/call [{:method "wakuext_inviteUsersToCommunity"
:params [{:communityId community-id
:users pks}]
:js-response true
:on-success #(re-frame/dispatch [::people-invited %])
:on-error #(do
(log/error "failed to invite-user community" %)
(re-frame/dispatch [::failed-to-invite-people %]))}]})))
(rf/defn share-community
{:events [::share-community-confirmation-pressed]}
[cofx user-pk contacts]
(let [community-id (fetch-community-id-input cofx)
pks (if (seq user-pk)
(conj contacts user-pk)
contacts)]
(when (seq pks)
{:json-rpc/call [{:method "wakuext_shareCommunity"
:params [{:communityId community-id
:users pks}]
:js-response true
:on-success #(re-frame/dispatch [::people-invited %])
:on-error #(do
(log/error "failed to invite-user community" %)
(re-frame/dispatch [::failed-to-share-community %]))}]})))
(re-frame/reg-event-fx :communities/invite-people-pressed
(fn [{:keys [db]} [id]]
{:db (assoc db :communities/community-id-input id)
:fx [[:dispatch [:hide-bottom-sheet]]
[:dispatch [:open-modal :legacy-invite-people-community {:invite? true}]]]}))
(re-frame/reg-event-fx :communities/share-community-pressed
(fn [{:keys [db]} [id]]
{:db (assoc db :communities/community-id-input id)
:fx [[:dispatch [:hide-bottom-sheet]]
[:dispatch [:open-modal :legacy-invite-people-community {}]]]}))
(rf/defn people-invited
{:events [::people-invited]}
[cofx response-js]
@@ -33,13 +83,12 @@
(navigation/navigate-back)
(handle-response response-js)))
(rf/defn member-banned
{:events [::member-banned]}
[cofx response-js]
(rf/merge cofx
(navigation/hide-bottom-sheet)
(handle-response response-js)
(activity-center/notifications-fetch-unread-count)))
(re-frame/reg-event-fx ::member-banned
(fn [{:keys [db]} [response-js]]
{:db (assoc db :bottom-sheet/show? false)
:fx [[:dismiss-bottom-sheet-overlay-old]
[:sanitize-messages-and-process-response response-js]
[:activity-center.notifications/fetch-unread-count]]}))
(rf/defn member-ban
{:events [::member-ban]}
@@ -58,7 +107,7 @@
{:events [::member-kicked]}
[cofx response-js]
(rf/merge cofx
(navigation/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(handle-response response-js)))
(rf/defn member-kick
@@ -92,7 +141,7 @@
{:events [:community.member/role-updated]}
[cofx response-js]
(rf/merge cofx
(navigation/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(handle-response response-js)))
(rf/defn add-role-to-member
+246 -24
View File
@@ -1,35 +1,257 @@
(ns legacy.status-im.communities.e2e
(:require [taoensso.timbre :as log]
(:require [promesa.core :as promesa]
[status-im.common.json-rpc.events :as rpc]
[status-im.constants :as constants]
[taoensso.timbre :as log]
[utils.re-frame :as rf]))
;;NOTE: ONLY FOR QA
(rf/defn create-closed-community
{:events [:fast-create-community/create-closed-community]}
[_]
{:json-rpc/call [{:method "wakuext_createClosedCommunity"
:params []
:js-response true
:on-success #(rf/dispatch [:sanitize-messages-and-process-response %])
:on-error #(log/error "failed to create closed community." {:error %})}]
:dispatch [:hide-bottom-sheet]})
(def one-stt-in-wei "1000000000000000000")
(def one-eth-in-wei "1000000000000000000")
(def ten-stt-in-wei "10000000000000000000")
(def stt-symbol "STT")
(def eth-symbol "ETH")
(def null-address "0x0000000000000000000000000000000000000000")
(defn- eth-token-criteria
[amount-in-wei]
{:contractAddresses {constants/ethereum-sepolia-chain-id null-address
constants/arbitrum-sepolia-chain-id null-address
constants/optimism-sepolia-chain-id null-address}
:type constants/community-token-type-erc20
:symbol "ETH"
:name "Ethereum"
:amountInWei amount-in-wei
:decimals 18})
(defn- stt-token-criteria
[amount-in-wei]
{:contractAddresses {constants/ethereum-sepolia-chain-id constants/sepolia-stt-contract-address}
:type constants/community-token-type-erc20
:symbol "STT"
:name "Status Test Token"
:amountInWei amount-in-wei
:decimals 18})
(def token-criteria
{stt-symbol stt-token-criteria
eth-symbol eth-token-criteria})
(def base-channel-permissions
[{:permission-type constants/community-token-permission-can-view-channel
:token-symbol stt-symbol
:amount one-stt-in-wei}
{:permission-type constants/community-token-permission-can-view-channel
:token-symbol eth-symbol
:amount one-eth-in-wei}
{:permission-type constants/community-token-permission-can-view-and-post-channel
:token-symbol stt-symbol
:amount one-stt-in-wei}
{:permission-type constants/community-token-permission-can-view-and-post-channel
:token-symbol eth-symbol
:amount one-eth-in-wei}])
(defn- channel-names->description
[channel-names]
(map #(hash-map :name %1
:permissions [%2])
channel-names
base-channel-permissions))
(def community-descriptions
{:open
{:community-name "Open community"
:membership constants/community-permissions-auto-accept
:pin-message-allowed false}
:closed
{:community-name "Closed community"
:membership constants/community-permissions-manual-accept
:pin-message-allowed true
:categories [{:category-name "Pets" :channels #{"Cats" "Dogs"}}
{:category-name "Household" :channels #{"Rules"}}]
:channel-list [{:name "Cats"} {:name "Dogs"} {:name "Rules"}]}
:token-gated
{:community-name "Token gated community"
:membership constants/community-permissions-auto-accept
:pin-message-allowed true
:community-permissions [{:amount-in-wei ten-stt-in-wei
:permission-type constants/community-token-permission-become-member
:token-symbol stt-symbol}]
:channel-list (channel-names->description ["Lions" "Birds" "Trees" "Flowers"])}
:snt-admin
{:community-name "SNT Admin Community"
:membership constants/community-permissions-auto-accept
:pin-message-allowed true
:community-permissions [{:amount-in-wei one-stt-in-wei
:permission-type constants/community-token-permission-become-admin
:token-symbol stt-symbol}]
:channel-list (channel-names->description ["Sounds" "Colors" "Books" "Sports"])}
:admin-and-member
{:community-name "Admin and Member"
:membership constants/community-permissions-auto-accept
:pin-message-allowed true
:community-permissions [{:amount-in-wei one-stt-in-wei
:permission-type constants/community-token-permission-become-member
:token-symbol stt-symbol}
{:amount-in-wei one-eth-in-wei
:permission-type constants/community-token-permission-become-admin
:token-symbol eth-symbol}]
:channel-list (channel-names->description ["Party" "Birthday" "Travel" "Cars"])}})
(defn- js-messenger-response->community-id
[response]
(-> response .-communities first .-id))
(defn- js-messenger-response->channel-id
[channel-name response]
(->> response
.-communities
first
.-chats
js->clj
vals
(some #(when (= channel-name (get % "name")) (get % "id")))))
(defn- channel-token-criteria->request
[community-id channel-id {:keys [token-symbol amount]}]
(fn []
(rpc/call
{:method "wakuext_createCommunityTokenPermissionV2"
:js-response true
:params [{:communityID community-id
:type constants/community-token-permission-become-member
:chatIds [channel-id]
:tokenCriteria [((token-criteria token-symbol) amount)]}]})))
(defn- channel-token-criteria->requests
[community-id channel-id tokens]
(let [keep-fn (partial channel-token-criteria->request community-id channel-id)]
(keep keep-fn tokens)))
(defn- create-community-channel!
[channel community-id]
(->
(rpc/call
{:method "wakuext_createCommunityChannel"
:js-response true
:params [{:name (:name channel)
:communityId community-id
:description (:name channel)}]})
(.then (fn [response]
(if (:permissions channel)
(let [channel-id (js-messenger-response->channel-id (:name channel) response)]
(apply
promesa/chain
(promesa/resolved nil)
(channel-token-criteria->requests community-id channel-id (:permissions channel))))
response)))
(.catch #(log/error "failed to create token gated community channel."
{:error %
:channel-name (:name channel)}))))
(defn- create-category!
[response {:keys [category-name channels]}]
(let [community-id (js-messenger-response->community-id response)
channel-ids (map #(js-messenger-response->channel-id % response)
channels)]
(rpc/call
{:method "wakuext_createCommunityCategory"
:js-response true
:params [{:communityId community-id
:categoryName category-name
:chatIds channel-ids}]})))
(defn- create-community!
[community-name membership pin-message-allowed]
(rpc/call
{:method "wakuext_createCommunity"
:js-response true
:params [{:name community-name
:description community-name
:color "#887af9"
:historyArchiveSupportEnabled true
:membership membership
:pinMessageAllMembersEnabled pin-message-allowed}]}))
(defn- create-token-gated-permission!
[{:keys [token-symbol permission-type amount-in-wei]} community-id]
(rpc/call
{:method "wakuext_createCommunityTokenPermissionV2"
:js-response true
:params [{:communityId community-id
:type permission-type
:tokenCriteria [((token-criteria token-symbol) amount-in-wei)]}]}))
(def passthrough [identity])
(defn- create-community-from-description
[{:keys [community-name
membership
community-permissions
pin-message-allowed
categories
channel-list]}]
(let [create-community-permissions-fn (if (seq community-permissions)
(map
(fn [permission]
(fn [response]
(create-token-gated-permission!
permission
(js-messenger-response->community-id response))))
community-permissions)
passthrough)
create-channels-fn (if (seq channel-list)
(map
(fn [channel]
(fn [response]
(create-community-channel!
channel
(js-messenger-response->community-id response))))
channel-list)
passthrough)
create-categories-fn (if (seq categories)
(map
(fn [category]
(fn [messenger-response]
(create-category! messenger-response category)))
categories)
passthrough)]
(as-> (create-community! community-name membership pin-message-allowed) $
(apply promesa/chain $ create-community-permissions-fn)
(apply promesa/chain $ create-channels-fn)
(apply promesa/chain $ create-categories-fn)
(promesa/then $ #(rf/dispatch [:hide-bottom-sheet]))
(promesa/catch $ #(log/error "failed to create community e2e" {:error %})))))
(rf/defn create-open-community
{:events [:fast-create-community/create-open-community]}
{:events [:e2e/create-open-community]}
[_]
{:json-rpc/call [{:method "wakuext_createOpenCommunity"
:params []
:js-response true
:on-success #(rf/dispatch [:sanitize-messages-and-process-response %])
:on-error #(log/error "failed to create open community." {:error %})}]
:dispatch [:hide-bottom-sheet]})
(create-community-from-description (community-descriptions :open))
nil)
(rf/defn create-closed-community
{:events [:e2e/create-closed-community]}
[_]
(create-community-from-description (community-descriptions :closed))
nil)
(rf/defn create-token-gated-community
{:events [:fast-create-community/create-token-gated-community]}
{:events [:e2e/create-token-gated-community]}
[_]
{:json-rpc/call [{:method "wakuext_createTokenGatedCommunity"
:params []
:js-response true
:on-success #(rf/dispatch [:sanitize-messages-and-process-response %])
:on-error #(log/error "failed to create token gated community." {:error %})}]
:dispatch [:hide-bottom-sheet]})
(create-community-from-description (community-descriptions :token-gated))
nil)
(rf/defn snt-admin-community
{:events [:e2e/create-snt-admin-community]}
[_]
(create-community-from-description (community-descriptions :snt-admin))
nil)
(rf/defn admin-and-member-community
{:events [:e2e/create-admin-and-member-community]}
[_]
(create-community-from-description (community-descriptions :admin-and-member))
nil)
+99
View File
@@ -0,0 +1,99 @@
(ns legacy.status-im.contact.block
(:require
[legacy.status-im.contact.db :as contact.db]
[legacy.status-im.data-store.chats :as chats-store]
[legacy.status-im.utils.deprecated-types :as types]
[re-frame.core :as re-frame]
[status-im.contexts.chat.contacts.events :as contacts-store]
[status-im.contexts.chat.messenger.messages.list.events :as message-list]
[status-im.navigation.events :as navigation]
[utils.re-frame :as rf]))
(rf/defn clean-up-chat
[{:keys [db]}
public-key
{:keys [chat-id
unviewed-messages-count
unviewed-mentions-count
last-message]}]
(let [removed-messages-ids (keep
(fn [[message-id {:keys [from]}]]
(when (= from public-key)
message-id))
(get-in db [:messages chat-id]))
db (-> db
;; remove messages
(update-in [:messages chat-id]
#(apply dissoc % removed-messages-ids))
(update-in [:chats chat-id]
assoc
:unviewed-messages-count unviewed-messages-count
:unviewed-mentions-count unviewed-mentions-count
:last-message last-message))]
{:db (assoc-in db
[:message-lists chat-id]
(message-list/add-many nil (vals (get-in db [:messages chat-id]))))}))
(rf/defn contact-blocked
{:events [:contacts/blocked]}
[{:keys [db] :as cofx} {:keys [public-key]} chats-js]
(let [fxs (when chats-js
(map #(->> (chats-store/<-rpc %)
(clean-up-chat public-key))
(types/js->clj chats-js)))]
(apply
rf/merge
cofx
{:db (->
db
(update :chats dissoc public-key)
(update :chats-home-list disj public-key)
(assoc-in [:contacts/contacts public-key
:added?]
false))
:fx [[:activity-center.notifications/fetch-unread-count]
[:effects/push-notifications-clear-message-notifications [public-key]]
[:dispatch-later
[{:ms 500
:dispatch [:chat.ui/close-and-remove-chat public-key]}]]]}
fxs)))
(rf/defn block-contact
{:events [:contact.ui/block-contact-confirmed]}
[{:keys [db] :as cofx} public-key]
(let [contact (-> (contact.db/public-key->contact
(:contacts/contacts db)
public-key)
(assoc :blocked? true
:added? false
:active? false))
current-chat-id (:current-chat-id db)
from-one-to-one-chat? (not (get-in db [:chats current-chat-id :group-chat]))]
(rf/merge cofx
{:db (assoc-in db [:contacts/contacts public-key] contact)}
(contacts-store/block
public-key
(fn [^js block-contact]
(re-frame/dispatch [:contacts/blocked contact (.-chats block-contact)])
(re-frame/dispatch [:sanitize-messages-and-process-response block-contact])
(re-frame/dispatch [:hide-popover])))
;; reset navigation to avoid going back to non existing one to one chat
(when current-chat-id
(if from-one-to-one-chat?
(navigation/pop-to-root :shell-stack)
(navigation/navigate-back))))))
(rf/defn contact-unblocked
{:events [:contacts/unblocked]}
[{:keys [db]} contact-id]
(let [contact (-> (get-in db [:contacts/contacts contact-id])
(assoc :blocked? false))]
{:db (assoc-in db [:contacts/contacts contact-id] contact)}))
(rf/defn unblock-contact
{:events [:contact.ui/unblock-contact-pressed]}
[cofx contact-id]
(contacts-store/unblock
cofx
contact-id
#(re-frame/dispatch [:contacts/unblocked contact-id])))
+87
View File
@@ -0,0 +1,87 @@
(ns legacy.status-im.contact.db
(:require
[clojure.set :as set]
[clojure.string :as string]
[status-im.constants :as constants]
[utils.address :as address]))
(defn public-key-and-ens-name->new-contact
[public-key ens-name]
(let [contact {:public-key public-key}]
(if ens-name
(-> contact
(assoc :ens-name ens-name)
(assoc :ens-verified true)
(assoc :name ens-name))
contact)))
(defn public-key->contact
[contacts public-key]
(when public-key
(get contacts public-key {:public-key public-key})))
(defn- contact-by-address
[[addr contact] address]
(when (address/address= addr address)
contact))
(defn find-contact-by-address
[contacts address]
(some #(contact-by-address % address) contacts))
(defn sort-contacts
[contacts]
(sort (fn [c1 c2]
(let [name1 (:primary-name c1)
name2 (:primary-name c2)]
(when (and name1 name2)
(compare (string/lower-case name1)
(string/lower-case name2)))))
(vals contacts)))
(defn query-chat-contacts
[{:keys [contacts]} all-contacts query-fn]
(let [participant-set (into #{} (filter identity) contacts)]
(query-fn (comp participant-set :public-key) (vals all-contacts))))
(defn get-all-contacts-in-group-chat
[members admins contacts {:keys [public-key preferred-name name display-name] :as current-account}]
(let [current-contact (some->
current-account
(select-keys [:name :preferred-name :public-key :images :compressed-key])
(set/rename-keys {:name :alias :preferred-name :name})
(assoc :primary-name (or display-name preferred-name name)))
all-contacts (cond-> contacts
current-contact
(assoc public-key current-contact))]
(->> members
(map #(or (get all-contacts %)
{:public-key %}))
(sort-by (comp string/lower-case
(fn [{:keys [primary-name name alias public-key]}]
(or primary-name
name
alias
public-key))))
(map #(if (get admins (:public-key %))
(assoc % :admin? true)
%)))))
(defn enrich-contact
([contact] (enrich-contact contact nil nil))
([{:keys [public-key] :as contact} setting own-public-key]
(cond-> contact
(and setting
(not= public-key own-public-key)
(or (= setting constants/profile-pictures-visibility-none)
(and (= setting constants/profile-pictures-visibility-contacts-only)
(not (:added? contact)))))
(dissoc :images))))
(defn enrich-contacts
[contacts profile-pictures-visibility own-public-key]
(reduce-kv
(fn [acc public-key contact]
(assoc acc public-key (enrich-contact contact profile-pictures-visibility own-public-key)))
{}
contacts))
+49
View File
@@ -0,0 +1,49 @@
(ns legacy.status-im.contact.db-test
(:require [cljs.test :refer-macros [deftest is testing]]
[legacy.status-im.contact.db :as contact.db]))
(deftest contacts-subs
(testing "get-all-contacts-in-group-chat"
(let
[chat-contact-ids
#{"0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917"
"0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"
"0x048a2f8b80c60f89a91b4c1316e56f75b087f446e7b8701ceca06a40142d8efe1f5aa36bd0fee9e248060a8d5207b43ae98bef4617c18c71e66f920f324869c09f"}
admins
#{"0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917"}
contacts
{"0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"
{:last-updated 0
:name "User B"
:primary-name "User B"
:last-online 0
:public-key
"0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"}}
current-multiaccount
{:last-updated 0
:signed-up? true
:sharing-usage-data? false
:primary-name "User A"
:name "User A"
:public-key
"0x048a2f8b80c60f89a91b4c1316e56f75b087f446e7b8701ceca06a40142d8efe1f5aa36bd0fee9e248060a8d5207b43ae98bef4617c18c71e66f920f324869c09f"}]
(is
(=
(contact.db/get-all-contacts-in-group-chat chat-contact-ids
admins
contacts
current-multiaccount)
[{:admin? true
:public-key
"0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917"}
{:alias "User A"
:primary-name "User A"
:public-key
"0x048a2f8b80c60f89a91b4c1316e56f75b087f446e7b8701ceca06a40142d8efe1f5aa36bd0fee9e248060a8d5207b43ae98bef4617c18c71e66f920f324869c09f"}
{:last-updated 0
:name "User B"
:primary-name "User B"
:last-online 0
:public-key
"0x04985040682b77a32bb4bb58268a0719bd24ca4d07c255153fe1eb2ccd5883669627bd1a092d7cc76e8e4b9104327667b19dcda3ac469f572efabe588c38c1985f"}])))))
+18
View File
@@ -0,0 +1,18 @@
(ns legacy.status-im.currency.core
(:require
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
[utils.re-frame :as rf]))
(defn get-currency
[db]
(get-in db [:profile/profile :currency] :usd))
(rf/defn set-currency
{:events [:wallet-legacy.settings.ui/currency-selected]}
[{:keys [db] :as cofx} currency]
(rf/merge cofx
(multiaccounts.update/multiaccount-update
:currency
currency
;; on changing currency, we should fetch tokens prices again
{:on-success #(rf/dispatch [:wallet/get-wallet-token])})))
@@ -0,0 +1,21 @@
(ns legacy.status-im.currency.core-test
(:require
[cljs.test :refer-macros [deftest is]]
[legacy.status-im.currency.core :as models]))
(deftest get-currency
(is (= :usd (models/get-currency {:profile/profile {:currency :usd}})))
(is (= :usd (models/get-currency {:profile/profile {:not-empty "would throw an error if was empty"}})))
(is (= :aud (models/get-currency {:profile/profile {:currency :aud}}))))
(deftest set-currency
(let [cofx (models/set-currency {:db {:profile/profile {:not-empty
"would throw an error if was empty"}}}
:usd)]
(is (= :usd (get-in cofx [:db :profile/profile :currency]))))
(is
(= :jpy
(get-in (models/set-currency {:db {:profile/profile {:not-empty
"would throw an error if was empty"}}}
:jpy)
[:db :profile/profile :currency]))))
+2 -1
View File
@@ -3,6 +3,7 @@
(:require
[clojure.set :as set]
[clojure.string :as string]
[legacy.status-im.bottom-sheet.events :as bottom-sheet]
[legacy.status-im.ethereum.ens :as ens]
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
[legacy.status-im.utils.random :as random]
@@ -287,7 +288,7 @@
[{:keys [db] :as cofx} _ {:keys [address]}]
(rf/merge cofx
{:db (assoc-in db [:ens/registration :address] address)}
(navigation/hide-bottom-sheet)))
(bottom-sheet/hide-bottom-sheet-old)))
(rf/defn save-preferred-name
{:events [::save-preferred-name]}
+5 -4
View File
@@ -5,6 +5,8 @@
legacy.status-im.browser.core
legacy.status-im.browser.permissions
legacy.status-im.chat.models.loading
legacy.status-im.contact.block
legacy.status-im.currency.core
legacy.status-im.data-store.chats
legacy.status-im.data-store.switcher-cards
legacy.status-im.data-store.visibility-status-updates
@@ -184,12 +186,11 @@
(= :chat view-id)
{:effects.async-storage/set {:chat-id (get-in cofx [:db :current-chat-id])
:key-uid (get-in cofx [:db :profile/profile :key-uid])}
:db (assoc db :screens/was-focused-once? true)
:dispatch [:alert-banners/unhide]}
:db (assoc db :screens/was-focused-once? true)}
(not (get db :screens/was-focused-once?))
{:db (assoc db :screens/was-focused-once? true)})))
{:db (assoc db :screens/was-focused-once? true)})
))
;;TODO :replace by named events
(rf/defn set-event
@@ -1,5 +1,6 @@
(ns legacy.status-im.mobile-sync-settings.core
(:require
[legacy.status-im.bottom-sheet.events :as bottom-sheet]
[legacy.status-im.mailserver.core :as mailserver]
[legacy.status-im.multiaccounts.model :as multiaccounts.model]
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
@@ -30,7 +31,7 @@
(assoc :mailserver/current-request true))
:fx [(when fetch-historic-messages?
[:mailserver/request-all-historic-messages])
[:dispatch [:hide-bottom-sheet]]
[:dismiss-bottom-sheet-overlay-old]
(when previously-initialized?
(let [new-identity-input (get-in db [:contacts/new-identity :input])]
[:dispatch [:contacts/set-new-identity {:input new-identity-input}]]))]}
@@ -100,10 +101,10 @@
[cofx]
(rf/merge
cofx
(navigation/hide-bottom-sheet)
(bottom-sheet/hide-bottom-sheet-old)
(navigation/navigate-to :mobile-network-settings nil)))
(rf/defn mobile-network-show-offline-sheet
{:events [:mobile-network/show-offline-sheet]}
[cofx]
(navigation/hide-bottom-sheet cofx))
(bottom-sheet/hide-bottom-sheet-old cofx))
@@ -59,7 +59,7 @@
:selected-storage-type :default
:selected-id (-> result first :id)
:step :choose-key))))
:navigate-to [:choose-name (:theme db)]})
:navigate-to :choose-name})
(rf/defn generate-and-derive-addresses
{:events [:generate-and-derive-addresses]}
+160
View File
@@ -1,8 +1,86 @@
(ns legacy.status-im.node.core
(:require
[clojure.string :as string]
[legacy.status-im.utils.deprecated-types :as types]
[react-native.platform :as platform]
[status-im.config :as config]))
(defn- add-log-level
[config log-level]
(if (empty? log-level)
(assoc config
:MaxPeers 20
:MaxPendingPeers 20
:LogLevel "ERROR"
:LogEnabled false)
(assoc config
:MaxPeers 20
:MaxPendingPeers 20
:LogLevel log-level
:LogEnabled true)))
(defn get-network-genesis-hash-prefix
"returns the hex representation of the first 8 bytes of
a network's genesis hash"
[network]
(case network
1 "d4e56740f876aef8"
3 "41941023680923e0"
4 "6341fd3daf94b748"
nil))
(defn get-les-topic
"returns discovery v5 topic derived from genesis of the provided network"
[network]
(let [les-discovery-identifier "LES2@"
hash-prefix (get-network-genesis-hash-prefix network)]
(when hash-prefix
(str les-discovery-identifier hash-prefix))))
(defn get-topics
[network]
(let [les-topic (get-les-topic network)]
(cond-> {"whisper" {:Min 2 :Max 2}}
les-topic (assoc les-topic {:Min 2 :Max 2}))))
(defn- get-base-node-config
[config]
(cond-> (assoc config
:Name
"StatusIM")
config/dev-build?
(assoc :ListenAddr ":0"
:DataDir (str (:DataDir config) "_dev"))))
(def wakuv2-default-config
{:DiscoveryLimit 20
:EnableDiscV5 true
:Host "0.0.0.0"
:AutoUpdate true
;; Temporary fix until https://github.com/status-im/status-go/issues/3024 is resolved
:Nameserver "8.8.8.8"
:PeerExchange true
:Port 0
:UDPPort 0
:LightClient false})
(def login-node-config
{:WalletConfig (cond-> {:Enabled true}
(not= config/opensea-api-key "")
(assoc :OpenseaAPIKey config/opensea-api-key))
:WakuV2Config wakuv2-default-config})
(defn- get-login-node-config
[config]
(merge config login-node-config))
(defn- pick-nodes
"Picks `limit` different nodes randomly from the list of nodes
if there is more than `limit` nodes in the list, otherwise return the list
of nodes"
[limit nodes]
(take limit (shuffle nodes)))
(defn fleets
[{:keys [custom-fleets]}]
(as-> [(js/require "./fleets.js")] $
@@ -15,3 +93,85 @@
(keyword (get-in db
[:profile/profile :fleet]
config/fleet)))
(defn get-current-fleet
[db]
(get (fleets db)
(current-fleet-key db)))
(defn- wakuv2-enabled?
[fleet]
(let [ks (keys fleet)]
(some #(string/includes? (str %) "waku") ks)))
(defn get-multiaccount-node-config
[{:keys [profile/profile :networks/networks :networks/current-network]
:as db}]
(let [wakuv2-config (get profile :wakuv2-config {})
fleet-key (current-fleet-key db)
current-fleet (get-current-fleet db)
wakuv2-enabled (wakuv2-enabled? current-fleet)
waku-nodes (get config/waku-nodes-config fleet-key)
rendezvous-nodes (pick-nodes 3 (vals (:rendezvous current-fleet)))
{:keys [installation-id log-level
waku-bloom-filter-mode]}
profile]
(cond-> (get-in networks [current-network :config])
:always
(get-base-node-config)
:always
(get-login-node-config)
current-fleet
(assoc :NoDiscovery wakuv2-enabled
:Rendezvous (if wakuv2-enabled false (boolean (seq rendezvous-nodes)))
:ClusterConfig {:Enabled true
:Fleet (name fleet-key)
:DiscV5BootstrapNodes
(if wakuv2-enabled
waku-nodes
[])
:TrustedMailServers
(if wakuv2-enabled [] (pick-nodes 6 (vals (:mail current-fleet))))
:StaticNodes
(if wakuv2-enabled
[]
(into (pick-nodes 2
(vals (:whisper current-fleet)))
(vals (:static current-fleet))))
:RendezvousNodes (if wakuv2-enabled [] rendezvous-nodes)
:WakuNodes (or waku-nodes [])})
:always
(assoc :LocalNotificationsConfig {:Enabled true}
:KeycardPairingDataFile "/ethereum/mainnet_rpc/keycard/pairings.json"
:BrowsersConfig {:Enabled true}
:PermissionsConfig {:Enabled true}
:MailserversConfig {:Enabled true}
:EnableNTPSync true
:WakuConfig
{:Enabled (not wakuv2-enabled)
:BloomFilterMode waku-bloom-filter-mode
:LightClient true
:MinimumPoW 0.000001}
:WakuV2Config (merge (assoc wakuv2-config :Enabled wakuv2-enabled)
wakuv2-default-config)
:ShhextConfig
{:BackupDisabledDataDir (if platform/android? "/../no_backup" "/")
:InstallationID installation-id
:MaxMessageDeliveryAttempts config/max-message-delivery-attempts
:MailServerConfirmations config/mailserver-confirmations-enabled?
:VerifyTransactionURL config/verify-transaction-url
:VerifyENSURL config/verify-ens-url
:VerifyENSContractAddress config/verify-ens-contract-address
:VerifyTransactionChainID config/verify-transaction-chain-id
:DataSyncEnabled true
:PFSEnabled true}
:RequireTopics (get-topics current-network)
:StatusAccountsConfig {:Enabled true})
:always
(add-log-level log-level))))
@@ -8,12 +8,11 @@
[legacy.status-im.ui.screens.profile.visibility-status.utils :as visibility-status-utils]
[quo.components.avatars.user-avatar.style :as user-avatar.style]
[quo.core :as quo]
[quo.theme]
[quo.theme :as theme]
[re-frame.core :as re-frame.core]
[react-native.core :as rn]
[status-im.contexts.profile.utils :as profile.utils]
[utils.ens.core :as utils.ens]
[utils.image-server :as image-server]))
[utils.ens.core :as utils.ens]))
;;TODO REWORK THIS NAMESPACE
@@ -53,8 +52,7 @@
(defn profile-photo-plus-dot-view
[{:keys [public-key full-name customization-color photo-container photo-path community?]}]
(let [theme @(re-frame.core/subscribe [:theme])
photo-container (if (nil? photo-container)
(let [photo-container (if (nil? photo-container)
styles/container-chat-list
photo-container)
size (:width photo-container)
@@ -73,7 +71,8 @@
{:size size
:full-name full-name
:font-size (get text-style :font-size)
:background-color (user-avatar.style/customization-color customization-color theme)
:background-color (user-avatar.style/customization-color customization-color
(theme/get-theme))
:indicator-size 0
:indicator-border 0
:indicator-color "#000000"
@@ -157,11 +156,9 @@
(styles/default-chat-icon-text size)
(styles/emoji-chat-icon-text size))}
override-styles)
img-config (:config photo-path)
photo-path (if img-config
photo-path (if (:fn photo-path)
;; temp support new media server avatar for old component
{:uri (image-server/get-image-uri
img-config
{:uri ((:fn photo-path)
{:size size
:full-name name
:font-size (get-in styles [:default-chat-icon-text :font-size])
@@ -151,7 +151,7 @@
{:title (i18n/label :t/settings)
:accessibility-label "settings"
:theme :accent
:on-press #(hide-sheet-and-dispatch [:navigate-to :legacy-sync-settings])
:on-press #(hide-sheet-and-dispatch [:navigate-to :sync-settings])
:icon :main-icons/settings}]
(when mobile
[:<>
@@ -223,28 +223,25 @@
(defn show-image-picker
([images-fn]
(show-image-picker images-fn nil nil))
(show-image-picker images-fn nil))
([images-fn
{:keys [media-type]
:or {media-type "any"}
:as props}
finally-callback]
:as props}]
(-> ^js image-picker
(.openPicker (clj->js (merge {:mediaType media-type}
props)))
(.then images-fn)
(.catch show-access-error)
(.finally finally-callback))))
(.catch show-access-error))))
(defn show-image-picker-camera
([images-fn]
(show-image-picker-camera images-fn nil nil))
([images-fn props finally-callback]
(show-image-picker-camera images-fn nil))
([images-fn props]
(-> ^js image-picker
(.openCamera (clj->js props))
(.then images-fn)
(.catch show-access-error)
(.finally finally-callback))))
(.catch show-access-error))))
;; Clipboard
@@ -2,7 +2,6 @@
(:require
[legacy.status-im.ui.components.core :as quo]
[quo.foundations.colors :as quo.colors]
[quo.theme]
[re-frame.core :as re-frame]
[react-native.safe-area :as safe-area]))
@@ -33,8 +32,7 @@
:or {border-bottom? true
new-ui? false}
:as props}]
(let [theme (quo.theme/use-theme)
navigation (if (= navigation :none)
(let [navigation (if (= navigation :none)
nil
[(default-navigation modal? navigation)])]
[quo/header
@@ -49,5 +47,4 @@
{:right-accessories right-accessories})
(when new-ui?
{:background (quo.colors/theme-colors quo.colors/neutral-5
quo.colors/neutral-95
theme)}))]))
quo.colors/neutral-95)}))]))
@@ -5,9 +5,11 @@
[legacy.status-im.ui.components.icons.icons :as icons]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[utils.i18n :as i18n]
[utils.re-frame :as rf])
[legacy.status-im.ui.components.webview :refer [webview]]
[re-frame.core :as re-frame]
[status-im.constants :refer
[principles-link privacy-policy-link terms-of-service-link]]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(views/defview about-app
@@ -15,38 +17,44 @@
(views/letsubs [app-version [:get-app-short-version]
commit-hash [:get-commit-hash]
node-version [:get-app-node-version]]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/about-app)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/scroll-view
[copyable-text/copyable-text-view
{:copied-text app-version}
[list.item/list-item
{:size :small
:accessibility-label :app-version
:title (i18n/label :t/version)
:accessory :text
:accessory-text app-version}]]
[copyable-text/copyable-text-view
{:copied-text commit-hash}
[list.item/list-item
{:size :small
:accessibility-label :commit-hash
:title (i18n/label :t/app-commit)
:accessory :text
:accessory-text commit-hash}]]
[copyable-text/copyable-text-view
{:copied-text node-version}
[list.item/list-item
{:size :small
:accessibility-label :node-version
:title (i18n/label :t/node-version)
:accessory :text
:accessory-text node-version}]]]]))
[react/scroll-view
[list.item/list-item
{:size :small
:title (i18n/label :t/privacy-policy)
:accessibility-label :privacy-policy
:on-press
#(re-frame/dispatch [:navigate-to :privacy-policy])
:chevron true}]
[list.item/list-item
{:size :small
:title (i18n/label :t/terms-of-service)
:accessibility-label :terms-of-service
:on-press #(re-frame/dispatch [:navigate-to :terms-of-service])
:chevron true}]
[copyable-text/copyable-text-view
{:copied-text app-version}
[list.item/list-item
{:size :small
:accessibility-label :app-version
:title (i18n/label :t/version)
:accessory :text
:accessory-text app-version}]]
[copyable-text/copyable-text-view
{:copied-text commit-hash}
[list.item/list-item
{:size :small
:accessibility-label :commit-hash
:title (i18n/label :t/app-commit)
:accessory :text
:accessory-text commit-hash}]]
[copyable-text/copyable-text-view
{:copied-text node-version}
[list.item/list-item
{:size :small
:accessibility-label :node-version
:title (i18n/label :t/node-version)
:accessory :text
:accessory-text node-version}]]]))
(views/defview learn-more-sheet
[]
@@ -65,3 +73,21 @@
(def learn-more
{:content learn-more-sheet})
(views/defview privacy-policy
[]
[webview
{:source {:uri privacy-policy-link}
:java-script-enabled true}])
(views/defview tos
[]
[webview
{:source {:uri terms-of-service-link}
:java-script-enabled true}])
(views/defview principles
[]
[webview
{:source {:uri principles-link}
:java-script-enabled true}])
@@ -1,12 +1,10 @@
(ns legacy.status-im.ui.screens.advanced-settings.views
(:require
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[quo.core :as quo]
[re-frame.core :as re-frame]
[utils.i18n :as i18n]
[utils.re-frame :as rf])
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn hide-sheet-and-dispatch
@@ -16,9 +14,10 @@
(defn- normal-mode-settings-data
[{:keys [current-log-level
telemetry-enabled?
light-client-enabled?
transactions-management-enabled?
current-fleet
webview-debug
test-networks-enabled?
is-goerli-enabled?
peer-syncing-enabled?]}]
@@ -28,7 +27,7 @@
:title (i18n/label :t/log-level)
:accessibility-label :log-level-settings-button
:on-press
#(re-frame/dispatch [:open-modal :legacy-:og-level-settings])
#(re-frame/dispatch [:open-modal :log-level-settings])
:accessory :text
:accessory-text current-log-level
:chevron true}
@@ -60,14 +59,6 @@
:on-press
#(re-frame/dispatch [:open-modal :peers-stats])
:chevron true}
{:size :small
:title "Telemetry"
:accessibility-label :telemetry-enabled
:container-margin-bottom 8
:on-press
#(re-frame/dispatch [:profile.settings/toggle-telemetry])
:accessory :switch
:active telemetry-enabled?}
{:size :small
:title (i18n/label :t/light-client-enabled)
:accessibility-label :light-client-enabled
@@ -77,6 +68,25 @@
[:wakuv2.ui/toggle-light-client (not light-client-enabled?)])
:accessory :switch
:active light-client-enabled?}
{:size :small
:title (i18n/label :t/transactions-management-enabled)
:accessibility-label :transactions-management-enabled
:container-margin-bottom 8
:on-press
#(re-frame/dispatch
[:multiaccounts.ui/switch-transactions-management-enabled
(not transactions-management-enabled?)])
:accessory :switch
:active transactions-management-enabled?}
{:size :small
:title "Webview debug"
:accessibility-label :webview-debug-switch
:container-margin-bottom 8
:on-press
#(re-frame/dispatch
[:profile.settings/change-webview-debug (not webview-debug)])
:accessory :switch
:active webview-debug}
{:size :small
:title "Testnet mode"
:accessibility-label :test-networks-enabled
@@ -100,7 +110,13 @@
:on-press
#(re-frame/dispatch [:profile.settings/toggle-peer-syncing])
:accessory :switch
:active peer-syncing-enabled?}]))
:active peer-syncing-enabled?}
{:size :small
:title (i18n/label :t/set-currency)
:accessibility-label :wallet-change-currency
:on-press #(hide-sheet-and-dispatch
[:open-modal :currency-settings])
:chevron true}]))
(defn- flat-list-data
[options]
@@ -109,34 +125,29 @@
(defn- render-item
[props]
(if (= (:type props) :section-header)
[components/list-header (:title props)]
[quo/list-header (:title props)]
[list.item/list-item props]))
(views/defview advanced-settings
[]
(views/letsubs [test-networks-enabled? [:profile/test-networks-enabled?]
is-goerli-enabled? [:profile/is-goerli-enabled?]
light-client-enabled? [:profile/light-client-enabled?]
telemetry-enabled? [:profile/telemetry-enabled?]
current-log-level [:log-level/current-log-level]
current-fleet [:fleets/current-fleet]
peer-syncing-enabled? [:profile/peer-syncing-enabled?]]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/advanced)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/flat-list
{:data (flat-list-data
{:current-log-level current-log-level
:telemetry-enabled? telemetry-enabled?
:light-client-enabled? light-client-enabled?
:current-fleet current-fleet
:dev-mode? false
:test-networks-enabled? test-networks-enabled?
:is-goerli-enabled? is-goerli-enabled?
:peer-syncing-enabled? peer-syncing-enabled?})
:key-fn (fn [_ i] (str i))
:render-fn render-item}]]))
(views/letsubs [test-networks-enabled? [:profile/test-networks-enabled?]
is-goerli-enabled? [:profile/is-goerli-enabled?]
light-client-enabled? [:profile/light-client-enabled?]
webview-debug [:profile/webview-debug]
transactions-management-enabled? [:wallet-legacy/transactions-management-enabled?]
current-log-level [:log-level/current-log-level]
current-fleet [:fleets/current-fleet]
peer-syncing-enabled? [:profile/peer-syncing-enabled?]]
[list/flat-list
{:data (flat-list-data
{:current-log-level current-log-level
:transactions-management-enabled? transactions-management-enabled?
:light-client-enabled? light-client-enabled?
:current-fleet current-fleet
:dev-mode? false
:webview-debug webview-debug
:test-networks-enabled? test-networks-enabled?
:is-goerli-enabled? is-goerli-enabled?
:peer-syncing-enabled? peer-syncing-enabled?})
:key-fn (fn [_ i] (str i))
:render-fn render-item}]))
@@ -3,12 +3,10 @@
(:require
[legacy.status-im.react-native.resources :as resources]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[re-frame.core :as re-frame]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
[utils.i18n :as i18n]))
(defn button
[label icon theme selected?]
@@ -26,13 +24,7 @@
[]
(views/letsubs [{:keys [appearance]} [:profile/profile]]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/appearance)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[components/list-header (i18n/label :t/preference)]
[quo/list-header (i18n/label :t/preference)]
[react/view
{:flex-direction :row
:padding-horizontal 8
@@ -31,7 +31,7 @@
:on-press #(re-frame/dispatch [:browser.ui/open-url url])
:on-long-press (fn []
(re-frame/dispatch
[:show-bottom-sheet
[:bottom-sheet/show-sheet-old
{:content (fn []
[react/view {:flex 1}
[list.item/list-item
@@ -110,7 +110,7 @@
[quo/button
{:accessibility-label :select-account
:type :scale
:on-press #(re-frame/dispatch [:show-bottom-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (accounts/accounts-list accounts
dapps-account)}])}
[react/view (styles/dapps-account color)
@@ -2,6 +2,7 @@
(:require
[legacy.status-im.browser.core :as browser]
[legacy.status-im.browser.webview-ref :as webview-ref]
[legacy.status-im.qr-scanner.core :as qr-scanner]
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.connectivity.view :as connectivity]
@@ -91,7 +92,7 @@
[icons/icon :main-icons/arrow-right {:color colors/black}]]
[react/touchable-highlight
{:accessibility-label :select-account
:on-press #(re-frame/dispatch [:show-bottom-sheet
:on-press #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (accounts/accounts-list accounts
dapps-account)}])}
[chat-icon/custom-icon-view-list (:name dapps-account) (:color dapps-account) 32]]
@@ -104,11 +105,13 @@
(if empty-tab
[react/touchable-highlight
{:accessibility-label :universal-qr-scanner
:on-press #(re-frame/dispatch [:open-modal :shell-qr-reader])}
:on-press #(re-frame/dispatch
[::qr-scanner/scan-code
{:handler ::qr-scanner/on-scan-success}])}
[icons/icon :main-icons/qr {:color colors/black}]]
[react/touchable-highlight
{:on-press #(re-frame/dispatch
[:show-bottom-sheet
[:bottom-sheet/show-sheet-old
{:content (options/browser-options
url
dapps-account
@@ -162,7 +165,7 @@
(defn request-resources-access-for-page
[resources url webview-ref]
(re-frame/dispatch
[:show-bottom-sheet
[:bottom-sheet/show-sheet-old
{:content (fn [] [request-resources-panel resources url webview-ref])
:show-handle? false
:backdrop-dismiss? false
@@ -172,7 +175,7 @@
(defn block-resources-access-and-notify-user
[url]
(.answerPermissionRequest ^js @webview-ref/webview-ref false)
(re-frame/dispatch [:show-bottom-sheet
(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content (fn [] [block-resources-panel url])}]))
;; should-component-update is called only when component's props are changed,
+11 -15
View File
@@ -1,27 +1,23 @@
(ns legacy.status-im.ui.screens.bug-report
(:require
[legacy.status-im.ui.components.core :as component]
[quo.core :as quo]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.topbar :as topbar]
[re-frame.core :as re-frame]
[react-native.core :as react-native]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
[utils.i18n :as i18n]))
(defn bug-report
[]
(let [{:keys [description steps]} @(re-frame/subscribe [:bug-report/details])]
[react-native/view {:style {:flex 1}}
[quo/page-nav
{:type :title
:title (i18n/label :t/bug-report)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[topbar/topbar
{:title (i18n/label :t/bug-report)
:modal? true}]
[react-native/view
{:style {:flex 1
:padding-top 8
:padding-horizontal 16}}
[component/text-input
[quo/text-input
{:label (i18n/label :t/bug-report-description)
:default-value description
:placeholder (i18n/label :t/bug-report-description-placeholder)
@@ -30,7 +26,7 @@
:error @(re-frame/subscribe [:bug-report/description-error])
:accessibility-label :bug-report-description
:on-change-text #(re-frame/dispatch [:logging/report-details :description %])}]
[component/text-input
[quo/text-input
{:label (i18n/label :t/bug-report-steps)
:default-value steps
:placeholder (i18n/label :t/bug-report-steps-placeholder)
@@ -38,7 +34,7 @@
:multiline true
:accessibility-label :bug-report-steps
:on-change-text #(re-frame/dispatch [:logging/report-details :steps %])}]
[component/button
[quo/button
{:type :primary
:accessibility-label :bug-report-submit
:theme :accent
@@ -47,8 +43,8 @@
[react-native/view
{:style {:margin-vertical 16
:align-items :center}}
[component/text (i18n/label :t/or)]]
[component/button
[quo/text (i18n/label :t/or)]]
[quo/button
{:type :primary
:accessibility-label :bug-report-submit-gh-issue
:theme :accent
@@ -46,22 +46,22 @@
:color colors/gray})
(defn message-default-style
[theme]
[]
{:font-family "Inter-Regular"
:color (quo.colors/theme-colors quo.colors/neutral-100 quo.colors/white theme)
:color (quo.colors/theme-colors quo.colors/neutral-100 quo.colors/white)
:font-size 15
:line-height 21.75
:letter-spacing -0.135})
;; Markdown styles
(defn default-text-style
[theme]
[]
{:max-font-size-multiplier react/max-font-size-multiplier
:style (message-default-style theme)})
:style (message-default-style)})
(defn system-text-style
[theme]
(update (default-text-style theme)
[]
(update (default-text-style)
:style assoc
:color colors/gray
:line-height 20
@@ -70,65 +70,65 @@
:font-weight "400"))
(defn text-style
[content-type in-popover? theme]
[content-type in-popover?]
(merge
(when in-popover? {:number-of-lines 2})
(cond
(= content-type constants/content-type-system-text) (system-text-style theme)
(= content-type constants/content-type-system-pinned-message) (system-text-style theme)
:else (default-text-style theme))))
(= content-type constants/content-type-system-text) (system-text-style)
(= content-type constants/content-type-system-pinned-message) (system-text-style)
:else (default-text-style))))
(defn emph-text-style
[theme]
(update (default-text-style theme)
[]
(update (default-text-style)
:style
assoc
:font-style :italic))
(defn emph-style
[theme]
(emph-text-style theme))
[]
(emph-text-style))
(defn strong-text-style
[theme]
(update (default-text-style theme)
[]
(update (default-text-style)
:style
assoc
:font-weight "700"))
(defn outgoing-strong-text-style
[theme]
(update (strong-text-style theme)
[]
(update (strong-text-style)
:style
assoc
:color colors/white-persist))
(defn strong-style
[theme]
(outgoing-strong-text-style theme)
(strong-text-style theme))
[]
(outgoing-strong-text-style)
(strong-text-style))
(defn strong-emph-style
[theme]
(update (strong-style theme)
[]
(update (strong-style)
:style
assoc
:font-style :italic))
(defn strikethrough-style
[theme]
(cond-> (update (default-text-style theme)
[]
(cond-> (update (default-text-style)
:style
assoc
:text-decoration-line :line-through)))
(defn edited-style
[theme]
[]
(cond->
(update (default-text-style theme)
(update (default-text-style)
:style
assoc
:color (quo.colors/theme-colors quo.colors/neutral-40 quo.colors/neutral-50 theme)
:color (quo.colors/theme-colors quo.colors/neutral-40 quo.colors/neutral-50)
:font-size 13
:line-height 18.2
:letter-spacing (typography/tracking 13))))
@@ -149,8 +149,8 @@
(default-blockquote-style))
(defn default-blockquote-text-style
[theme]
(update (default-text-style theme)
[]
(update (default-text-style)
:style
assoc
:line-height 19
@@ -158,16 +158,16 @@
:color colors/black-transparent-50))
(defn outgoing-blockquote-text-style
[theme]
(update (default-blockquote-text-style theme)
[]
(update (default-blockquote-text-style)
:style
assoc
:color colors/white-transparent-70-persist))
(defn blockquote-text-style
[theme]
(outgoing-blockquote-text-style theme)
(default-blockquote-text-style theme))
[]
(outgoing-blockquote-text-style)
(default-blockquote-text-style))
(defn community-verified
[]
@@ -6,7 +6,6 @@
[quo.core :as quo]
[quo.foundations.colors :as colors]
[quo.foundations.typography :as typography]
[quo.theme]
[react-native.core :as rn]
[status-im.constants :as constants]
[status-im.contexts.chat.messenger.messages.delete-message-for-me.events]
@@ -27,7 +26,7 @@
(defn render-inline
[_message-text content-type acc {:keys [type literal destination]}
community-id theme]
community-id]
(case type
""
(conj acc literal)
@@ -36,34 +35,30 @@
(conj acc [rn/text literal])
"emph"
(conj acc [rn/text (style/emph-style theme) literal])
(conj acc [rn/text (style/emph-style) literal])
"strong"
(conj acc [rn/text (style/strong-style theme) literal])
(conj acc [rn/text (style/strong-style) literal])
"strong-emph"
(conj acc [quo/text (style/strong-emph-style theme) literal])
(conj acc [quo/text (style/strong-emph-style) literal])
"del"
(conj acc [rn/text (style/strikethrough-style theme) literal])
(conj acc [rn/text (style/strikethrough-style) literal])
"link"
(conj
acc
[rn/text
{:style {:color (colors/theme-colors colors/primary-50 colors/primary-60 theme)
:text-decoration-line :underline}
:on-press #(rf/dispatch [:browser.ui/message-link-pressed destination])}
destination])
(conj acc
[rn/text
{:style {:color (colors/theme-colors colors/primary-50 colors/primary-60)
:text-decoration-line :underline}
:on-press #(rf/dispatch [:browser.ui/message-link-pressed destination])}
destination])
"mention"
(conj
acc
[rn/view
{:style {:background-color colors/primary-50-opa-10
:border-radius 6
:padding-horizontal 3
:margin-top -3}}
{:style {:background-color colors/primary-50-opa-10 :border-radius 6 :padding-horizontal 3}}
[rn/text
{:style (merge {:color (if (system-text? content-type) quo.colors/black colors/primary-50)}
(if (system-text? content-type) typography/font-regular typography/font-medium))
@@ -71,18 +66,17 @@
#(rf/dispatch [:chat.ui/show-profile literal]))}
[mention-element literal]]])
"status-tag"
(conj
acc
[rn/text
(when community-id
{:style {:color (colors/theme-colors colors/primary-50 colors/primary-60 theme)
:text-decoration-line :underline}
:on-press #(rf/dispatch [:communities/status-tag-pressed community-id literal])})
"#"
literal])
(conj acc
[rn/text
(when community-id
{:style {:color (colors/theme-colors colors/primary-50 colors/primary-60)
:text-decoration-line :underline}
:on-press #(rf/dispatch [:communities/status-tag-pressed community-id literal])})
"#"
literal])
"edited"
(conj acc [rn/text (style/edited-style theme) (str " (" (i18n/label :t/edited) ")")])
(conj acc [rn/text (style/edited-style) (str " (" (i18n/label :t/edited) ")")])
(conj acc literal)))
@@ -90,7 +84,7 @@
(defn render-block
[{:keys [content content-type edited-at in-popover?]} acc
{:keys [type ^js literal children]}
community-id theme]
community-id]
(case type
@@ -102,9 +96,8 @@
content-type
acc
e
community-id
theme))
[rn/text (style/text-style content-type in-popover? theme)]
community-id))
[rn/text (style/text-style content-type in-popover?)]
(conj
children
(when edited-at
@@ -113,7 +106,7 @@
"blockquote"
(conj acc
[rn/view (style/blockquote-style)
[rn/text (style/blockquote-text-style theme)
[rn/text (style/blockquote-text-style)
(.substring literal 0 (.-length literal))]])
"codeblock"
@@ -126,14 +119,12 @@
(defn render-parsed-text
[{:keys [content chat-id]
:as message-data}]
(let [community-id (rf/sub [:community-id-by-chat-id chat-id])
theme (quo.theme/use-theme)]
(let [community-id (rf/sub [:community-id-by-chat-id chat-id])]
(reduce (fn [acc e]
(render-block message-data
acc
e
community-id
theme))
community-id))
[:<>]
(:parsed-text content))))
@@ -146,13 +137,12 @@
;; STATUS ? whats that ?
(defmethod ->message constants/content-type-status
[{:keys [content content-type]}]
(let [theme (quo.theme/use-theme)]
[rn/view style/status-container
[rn/text {:style (style/status-text)}
(reduce
(fn [acc e] (render-inline (:text content) content-type acc e nil theme))
[rn/text {:style (style/status-text)}]
(-> content :parsed-text peek :children))]]))
[rn/view style/status-container
[rn/text {:style (style/status-text)}
(reduce
(fn [acc e] (render-inline (:text content) content-type acc e nil))
[rn/text {:style (style/status-text)}]
(-> content :parsed-text peek :children))]])
(defn contact-request-status-pending
[]
@@ -1,15 +1,16 @@
(ns legacy.status-im.ui.screens.communities.invite
(:require
[clojure.string :as string]
[legacy.status-im.communities.core :as communities]
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon.screen]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.toolbar :as toolbar]
[legacy.status-im.ui.components.topbar :as topbar]
[quo.theme]
[react-native.core :as rn]
[reagent.core :as reagent]
[status-im.constants :as constants]
[utils.debounce :as debounce]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
@@ -48,35 +49,18 @@
contacts-selected (reagent/atom #{})
{:keys [invite?]} (rf/sub [:get-screen-params])]
(fn []
(let [theme (quo.theme/use-theme)
contacts-data (rf/sub [:contacts/active])
{community-id :id
:keys [permissions
can-manage-users?]}
(let [contacts-data (rf/sub [:contacts/active])
{:keys [permissions
can-manage-users?]}
(rf/sub [:communities/edited-community])
selected @contacts-selected
selected-contacts-count (count selected)
contacts (map (fn [{:keys [public-key] :as contact}]
(assoc contact :active (contains? selected public-key)))
contacts-data)
;; no-membership communities can only be shared
can-invite? (and can-manage-users?
invite?
(not= (:access permissions) constants/community-no-membership-access))
on-press-share-community (rn/use-callback
(fn []
(rf/dispatch [:communities/share-community-confirmation-pressed
selected community-id])
(rf/dispatch [:navigate-back])
(rf/dispatch [:toasts/upsert
{:type :positive
:theme theme
:text (if (= 1 selected-contacts-count)
(i18n/label :t/one-user-was-invited)
(i18n/label
:t/n-users-were-invited
{:count selected-contacts-count}))}]))
[community-id selected selected-contacts-count theme])]
(not= (:access permissions) constants/community-no-membership-access))]
[:<>
[topbar/topbar
{:title (i18n/label (if can-invite?
@@ -97,8 +81,11 @@
:center
[quo/button
{:disabled (and (string/blank? @user-pk)
(zero? selected-contacts-count))
(zero? (count selected)))
:accessibility-label :share-community-link
:type :secondary
:on-press on-press-share-community}
:on-press #(debounce/throttle-and-dispatch
[::communities/share-community-confirmation-pressed @user-pk
selected]
3000)}
(i18n/label (if can-invite? :t/invite :t/share))]}]]))))
@@ -73,7 +73,7 @@
:accessory (when (not= public-key my-public-key)
[quo/button
{:on-press
#(rf/dispatch [:show-bottom-sheet
#(rf/dispatch [:bottom-sheet/show-sheet-old
{:content (fn []
[member-sheet primary-name member community-id
can-kick-users? can-manage-users? admin?])}])
@@ -0,0 +1,76 @@
(ns legacy.status-im.ui.screens.contacts-list.views
(:require
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon.screen]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.invite.views :as invite]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list.views]
[legacy.status-im.ui.components.react :as react]
[re-frame.core :as re-frame]
[status-im.contexts.profile.utils :as profile.utils]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :refer [defview letsubs]]))
(defn contacts-list-item
[{:keys [public-key] :as contact}]
(let [{:keys [primary-name secondary-name customization-color]} contact]
[list.item/list-item
{:title primary-name
:subtitle secondary-name
:icon [chat-icon.screen/profile-photo-plus-dot-view
{:public-key public-key
:full-name primary-name
:customization-color (or customization-color :primary)
:photo-path (profile.utils/photo contact)}]
:chevron true
:on-press #(re-frame/dispatch [:chat.ui/show-profile public-key])}]))
(defn add-new-contact
[]
[list.item/list-item
{:icon :main-icons/add
:theme :accent
:title (i18n/label :t/add-new-contact)
:accessibility-label :add-new-contact-button
:on-press #(re-frame/dispatch [:open-modal :new-contact])}])
(defview contacts-list
[]
(letsubs [blocked-contacts-count [:contacts/blocked-count]
sorted-contacts [:contacts/sorted-contacts]]
[react/scroll-view {:flex 1}
[add-new-contact]
(when (pos? blocked-contacts-count)
[react/view {:margin-vertical 16}
[list.item/list-item
{:title (i18n/label :t/blocked-users)
:icon :main-icons/cancel
:theme :negative
:accessibility-label :blocked-users-list-button
:chevron true
:accessory :text
:accessory-text blocked-contacts-count
:on-press #(re-frame/dispatch [:navigate-to :blocked-users-list])}]])
(if (seq sorted-contacts)
[list.views/flat-list
{:data sorted-contacts
:key-fn :address
:render-fn contacts-list-item}]
[react/view
{:align-items :center
:flex 1
:justify-content :center}
[react/text {:style {:color colors/gray :margin-vertical 24}}
(i18n/label :t/you-dont-have-contacts)]
[invite/button]])]))
(defview blocked-users-list
[]
(letsubs [blocked-contacts [:contacts/blocked]]
[list.views/flat-list
{:data blocked-contacts
:key-fn :address
:render-fn contacts-list-item
:default-separator? true
:enableEmptySections true
:keyboard-should-persist-taps :always}]))
@@ -0,0 +1,14 @@
(ns legacy.status-im.ui.screens.currency-settings.styles
(:require
[legacy.status-im.utils.styles :as styles]))
(styles/def currency-item
{:flex-direction :row
:justify-content :space-between
:align-items :center
:padding-horizontal 16
:ios {:height 64}
:android {:height 56}})
(def currency-name-text
{:typography :title})
@@ -0,0 +1,54 @@
(ns legacy.status-im.ui.screens.currency-settings.views
(:require-macros [legacy.status-im.utils.views :as views])
(:require
[legacy.status-im.ui.components.icons.icons :as icons]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.search-input.view :as search-input]
[legacy.status-im.ui.screens.currency-settings.styles :as styles]
[re-frame.core :as re-frame]
[reagent.core :as reagent]))
(defonce search-active? (reagent/atom false))
(defn render-currency
[{:keys [id code display-name]} _ _ current-currency-id]
(let [selected? (= id current-currency-id)]
[react/touchable-highlight
{:on-press #(re-frame/dispatch [:wallet-legacy.settings.ui/currency-selected id])
:accessibility-label :currency-item}
[react/view styles/currency-item
[react/text {:style styles/currency-name-text}
(str display-name " (" code ")")]
(when selected?
[icons/icon :main-icons/check {:color :active}])]]))
(views/defview currency-settings
[]
(views/letsubs [currency-id [:wallet-legacy/settings-currency]
{:keys [currencies search-filter]} [:wallet-legacy/search-filtered-currencies]]
{:component-will-unmount #(do
(re-frame/dispatch [:search/currency-filter-changed nil])
(reset! search-active? false))}
[:<>
[react/view {:flex 1}
[react/view
{:padding-horizontal 16
:padding-vertical 10}
[search-input/search-input-old
{:search-active? search-active?
:search-filter search-filter
:on-cancel #(re-frame/dispatch [:search/currency-filter-changed nil])
:on-focus (fn [search-filter]
(when-not search-filter
(re-frame/dispatch [:search/currency-filter-changed ""])))
:on-change (fn [text]
(re-frame/dispatch [:search/currency-filter-changed text]))}]]
[list/flat-list
{:data (->> currencies
vals
(sort #(compare (:code %1) (:code %2))))
:key-fn :code
:render-data currency-id
:render-fn render-currency
:keyboard-should-persist-taps :always}]]]))
@@ -0,0 +1,770 @@
(ns legacy.status-im.ui.screens.ens.views
(:require
[clojure.string :as string]
[legacy.status-im.ens.core :as ens]
[legacy.status-im.ethereum.tokens :as tokens]
[legacy.status-im.react-native.resources :as resources]
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon]
[legacy.status-im.ui.components.checkbox.view :as checkbox]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.common.common :as components.common]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.icons.icons :as icons]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.toolbar :as toolbar]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.screens.chat.utils :as chat.utils]
[legacy.status-im.ui.screens.profile.components.views :as profile.components]
[legacy.status-im.utils.utils :as utils]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[status-im.config :as config]
[utils.address :as address]
[utils.debounce :as debounce]
[utils.ens.core :as utils.ens]
[utils.ens.stateofus :as stateofus]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn- link
[{:keys [on-press]} label]
[react/touchable-opacity
{:on-press on-press
:style {:justify-content :center}}
[react/text {:style {:color colors/blue}}
label]])
(defn- section
[{:keys [title content]}]
[react/view
{:style {:margin-horizontal 16
:align-items :flex-start}}
[react/text {:style {:color colors/gray :font-size 15}}
title]
[react/view
{:margin-top 8
:padding-horizontal 16
:padding-vertical 12
:border-width 1
:border-radius 12
:border-color colors/gray-lighter}
[quo/text {:monospace true}
content]]])
(defn- domain-label
[custom-domain?]
(if custom-domain?
(i18n/label :t/ens-custom-domain)
(str "." stateofus/domain)))
(defn- domain-switch-label
[custom-domain?]
(if custom-domain?
(i18n/label :t/ens-want-domain)
(i18n/label :t/ens-want-custom-domain)))
(defn- big-blue-icon
[state]
[react/view
{:style {:margin-top 68
:margin-bottom 24
:width 60
:height 60
:border-radius 30
:background-color colors/blue
:align-items :center
:justify-content :center}}
[icons/icon
(case state
(:available :connected :connected-with-different-key :owned)
:main-icons/check
(:taken :error)
:main-icons/cancel
:main-icons/username)
{:color colors/white-persist}]])
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; SEARCH SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- icon-wrapper
[color icon]
[react/view
{:style {:margin-right 16
:margin-top 11
:width 32
:height 32
:border-radius 25
:align-items :center
:justify-content :center
:background-color color}}
icon])
(defn- input-icon
[state]
(case state
:searching
[icon-wrapper colors/gray
[react/activity-indicator {:color colors/white-persist}]]
(:available :connected :connected-with-different-key :owned)
[react/touchable-highlight
{:on-press #(debounce/throttle-and-dispatch [::ens/input-submitted] 3000)}
[icon-wrapper colors/blue
[icons/icon :main-icons/arrow-right {:color colors/white-persist}]]]
[icon-wrapper colors/gray
[icons/icon :main-icons/arrow-right {:color colors/white-persist}]]))
(defn help-message-text-element
([label]
[react/text
{:style {:flex 1
:margin-top 16
:margin-horizontal 16
:font-size 14
:text-align :center}}
(i18n/label label)])
([label second-label]
[react/nested-text
{:style {:flex 1
:margin-top 16
:margin-horizontal 16
:font-size 14
:text-align :center}}
(i18n/label label) " "
[{:style {:font-weight "700"}}
(i18n/label second-label)]]))
(defn help-message
[state custom-domain?]
(case state
:already-added
[help-message-text-element :t/ens-username-already-added]
:available
[help-message-text-element :t/ens-username-available]
:owned
[help-message-text-element
:t/ens-username-owned
:t/ens-username-owned-continue]
:connected
[help-message-text-element
:t/ens-username-connected
:t/ens-username-connected-continue]
:connected-with-different-key
[help-message-text-element
:t/ens-username-owned
:t/ens-username-connected-with-different-key]
:invalid-ens
[help-message-text-element
:t/ens-username-owned
:t/ens-username-registration-invalid]
(if custom-domain?
(case state
:too-short
[help-message-text-element :t/ens-custom-username-hints]
:invalid
[help-message-text-element :t/ens-custom-username-hints]
:taken
[help-message-text-element :t/ens-custom-username-taken]
[react/text ""])
(case state
:too-short
[help-message-text-element :t/ens-username-hints]
:invalid
[help-message-text-element :t/ens-username-invalid]
:taken
[help-message-text-element :t/ens-username-taken]
[react/text ""]))))
(defn- username-input
[_ _ _]
(let [input-ref (atom nil)]
(fn [_ state placeholder]
[react/view {:flex-direction :row :justify-content :center}
;;NOTE required so that the keyboards shows up when navigating back from checkout screen
;; TODO: navigation-events were deprecated
;; [:> navigation/navigation-events
;; {:on-did-focus
;; (fn []
;; (.focus ^js @input-ref))}]
;;NOTE setting the key as placeholder forces the component to remount
;;when the placeholder changes, this prevents the placeholder from
;;disappearing when switching between stateofus and custom domain
^{:key placeholder}
[react/text-input
{:ref #(reset! input-ref %)
:on-change-text #(do
(re-frame/dispatch [:set-in [:ens/registration :state] :searching])
(debounce/debounce-and-dispatch [::ens/set-username-candidate %]
600))
:on-submit-editing #(re-frame/dispatch [::ens/input-submitted])
:auto-capitalize :none
:auto-complete-type "off"
:auto-focus true
:auto-correct false
:default-value ""
:text-align :center
:placeholder placeholder
:placeholder-text-color colors/text-gray
:style {:flex 1
:font-size 22
:padding-left 48}}]
[input-icon state]])))
(views/defview search
[]
(views/letsubs [{:keys [state custom-domain? username]}
[:ens/search-screen]]
[react/keyboard-avoiding-view {:flex 1}
[react/scroll-view
{:style {:flex 1}
;;NOTE required so that switching custom-domain works on first tap and persists keyboard
;;instead of dismissing keyboard and requiring two taps
:keyboard-should-persist-taps :always}
[react/view {:style {:flex 1}}
[react/view
{:style {:flex 1
:align-items :center
:justify-content :center}}
[big-blue-icon state]
[username-input username state
(if custom-domain?
"vitalik94.domain.eth"
"vitalik94")]
[react/view
{:style {:height 36
:align-items :center
:justify-content :space-between
:padding-horizontal 12
:margin-top 24
:margin-horizontal 16
:border-color colors/gray-lighter
:border-radius 20
:border-width 1
:flex-direction :row}}
[react/text
{:style {:font-size 13
:typography :main-medium}}
(domain-label custom-domain?)]
[react/view {:flex 1 :min-width 24}]
[react/touchable-highlight {:on-press #(re-frame/dispatch [::ens/switch-domain-type])}
[react/text
{:style {:color colors/blue
:font-size 12
:typography :main-medium}
:number-of-lines 2}
(domain-switch-label custom-domain?)]]]]
[help-message state custom-domain?]]]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; CHECKOUT SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- agreement
[checked contract]
[react/view
{:flex-direction :row
:margin-left 26 ;; 10 for checkbox + 16
:margin-right 16
:margin-top 14
:align-items :flex-start
:justify-content :center}
[checkbox/checkbox
{:checked? @checked
:style {:padding 0}
:on-value-change #(reset! checked %)}]
[react/nested-text {:style {:margin-left 10}}
(i18n/label :t/ens-agree-to)
[{:style {:color colors/blue}
:on-press #(re-frame/dispatch [:navigate-to :ens-terms {:contract contract}])}
(i18n/label :t/ens-terms-registration)]
"\n"
(i18n/label :t/ens-understand)]])
(defn render-account
[address]
(let [account @(re-frame/subscribe [:account-by-address address])]
[list.item/list-item
{:icon [chat-icon/custom-icon-view-list (:name account) (:color account)]
:title (:name account)
:subtitle (utils/get-shortened-checksum-address (:address account))
:chevron true
:on-press #(js/alert "funcitonality no longer supported")}]))
(defn- registration
[checked contract address public-key]
[react/view {:style {:flex 1 :margin-top 24}}
[react/text {:style {:color colors/gray :font-size 15 :margin-horizontal 16}}
(i18n/label :t/wallet)]
[render-account address]
[react/view {:style {:margin-top 14}}
[section
{:title (i18n/label :t/key)
:content public-key}]]
[agreement checked contract]])
(defn checkout
[]
(let [checked? (reagent/atom false)]
(fn []
(let [{:keys [username address custom-domain? public-key
chain amount-label sufficient-funds?]}
@(re-frame/subscribe [:ens/checkout-screen])]
[react/keyboard-avoiding-view {:flex 1}
[react/scroll-view {:style {:flex 1}}
[react/view
{:style {:flex 1
:align-items :center
:justify-content :center}}
[big-blue-icon nil]
[react/text
{:text-align :center
:style {:flex 1
:font-size 22
:padding-horizontal 48}}
username]
[react/view
{:style {:height 36
:align-items :center
:justify-content :space-between
:padding-horizontal 12
:margin-top 24
:margin-horizontal 16
:border-color colors/gray-lighter
:border-radius 20
:border-width 1
:flex-direction :row}}
[react/text
{:style {:font-size 13
:typography :main-medium}}
(domain-label custom-domain?)]
[react/view {:flex 1 :min-width 24}]]]
[registration
checked?
(when (or (not= chain :goerli) config/test-stateofus?)
(stateofus/get-cached-registrar chain))
address
public-key]]
[toolbar/toolbar
{:show-border? true
:size :large
:left [react/view {:flex-direction :row :align-items :center}
[react/image
{:source tokens/snt-icon-source
:style {:width 36 :height 36}}]
[react/view {:flex-direction :column :margin 8}
[react/text {:style {:font-size 15}}
amount-label]
[react/text {:style {:color colors/gray :font-size 15}}
(i18n/label :t/ens-deposit)]]]
:right [react/view {:padding-horizontal 8}
[quo/button
{:disabled (or (not @checked?) (not sufficient-funds?))
:on-press #(debounce/throttle-and-dispatch [::ens/register-name-pressed
address]
2000)}
(if sufficient-funds?
(i18n/label :t/ens-register)
(i18n/label :t/not-enough-snt))]]}]]))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; CONFIRMATION SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- finalized-icon
[state]
(case state
:registration-failed
[react/view
{:style {:width 40
:height 40
:border-radius 30
:background-color colors/red-light
:align-items :center
:justify-content :center}}
[icons/icon :main-icons/warning {:color colors/red}]]
[react/view
{:style {:width 40
:height 40
:border-radius 30
:background-color colors/gray-lighter
:align-items :center
:justify-content :center}}
[icons/icon :main-icons/check {:color colors/blue}]]))
(defn- final-state-label
[state username]
(case state
:available
(i18n/label :t/ens-username-registration-confirmation
{:username (stateofus/username-with-domain username)})
:connected-with-different-key
(i18n/label :t/ens-username-connection-confirmation
{:username (stateofus/username-with-domain username)})
:connected
(i18n/label :t/ens-saved-title)
;;NOTE: this state can't be reached atm
:registration-failed
(i18n/label :t/ens-registration-failed-title)
nil))
(defn- final-state-details
[state username]
(case state
:available
[react/text {:style {:color colors/gray :font-size 15 :text-align :center}}
(i18n/label :t/ens-username-you-can-follow-progress)]
:connected-with-different-key
[react/text {:style {:color colors/gray :font-size 15 :text-align :center}}
(i18n/label :t/ens-username-you-can-follow-progress)]
:connected
[react/nested-text
{:style {:font-size 15 :text-align :center}}
(stateofus/username-with-domain username)
[{:style {:color colors/gray}}
(i18n/label :t/ens-saved)]]
;;NOTE: this state can't be reached atm
:registration-failed
[react/text {:style {:color colors/gray :font-size 14}}
(i18n/label :t/ens-registration-failed)]
nil))
(views/defview confirmation
[]
(views/letsubs [{:keys [state username]} [:ens/confirmation-screen]]
[react/keyboard-avoiding-view {:flex 1}
[react/view
{:style {:flex 1
:align-items :center
:justify-content :center}}
[finalized-icon state]
[react/text
{:style {:typography :header
:margin-top 32
:margin-horizontal 32
:text-align :center}}
(final-state-label state username)]
[react/view
{:align-items :center
:margin-horizontal 32
:margin-top 12
:margin-bottom 20
:justify-content :center}
[final-state-details state username]]
(if (= state :registration-failed)
[react/view
[quo/button {:on-press #(re-frame/dispatch [::ens/retry-pressed])}
(i18n/label :t/retry)]
[quo/button {:on-press #(re-frame/dispatch [::ens/cancel-pressed])}
(i18n/label :t/cancel)]]
[quo/button {:on-press #(re-frame/dispatch [::ens/got-it-pressed])}
(i18n/label :t/ens-got-it)])]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; TERMS SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- term-point
[content]
[react/view {:style {:flex 1 :margin-top 24 :margin-horizontal 16 :flex-direction :row}}
[react/view {:style {:width 16 :margin-top 8}}
[react/view {:style {:background-color colors/gray :width 4 :height 4 :border-radius 25}}]]
[react/text {:style {:flex 1 :font-size 15}}
content]])
(defn- etherscan-url
[address]
(str "https://etherscan.io/address/" address))
(views/defview terms
[]
(views/letsubs [{:keys [contract]} [:get-screen-params :ens-terms]]
[react/scroll-view {:style {:flex 1}}
[react/view
{:style {:height 136
:background-color colors/gray-lighter
:justify-content :center
:align-items :center}}
[react/text {:style {:text-align :center :typography :header :letter-spacing -0.275}}
(i18n/label :t/ens-terms-header)]]
[react/view
[term-point
(i18n/label :t/ens-terms-point-1)]
[term-point
(i18n/label :t/ens-terms-point-2)]
[term-point
(i18n/label :t/ens-terms-point-3)]
[term-point
(i18n/label :t/ens-terms-point-4)]
[term-point
(i18n/label :t/ens-terms-point-5)]
[term-point
(i18n/label :t/ens-terms-point-6)]
[term-point
(i18n/label :t/ens-terms-point-7)]]
[react/view
[react/text {:style {:font-size 15 :margin-top 24 :margin-horizontal 16 :font-weight "700"}}
(i18n/label :t/ens-terms-point-8)]
[term-point
(i18n/label :t/ens-terms-point-9 {:address contract})]
[react/view {:style {:align-items :center :margin-top 16 :margin-bottom 8}}
[link {:on-press #(.openURL ^js react/linking (etherscan-url contract))}
(i18n/label :t/etherscan-lookup)]]
[term-point
(i18n/label :t/ens-terms-point-10)]
[react/view {:style {:align-items :center :margin-top 16 :margin-bottom 8}}
[link
{:on-press #(.openURL ^js react/linking (etherscan-url (:mainnet utils.ens/ens-registries)))}
(i18n/label :t/etherscan-lookup)]]]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; NAME DETAILS SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def release-instructions-link "https://our.status.im/managing-your-ens-name-in-v1/")
(defn open-release-instructions-link!
[]
(.openURL ^js react/linking release-instructions-link))
(views/defview name-details
[]
(views/letsubs [{:keys [name address custom-domain? public-key
expiration-date releasable? pending?]}
[:ens.name/screen]]
[react/view {:style {:flex 1}}
[topbar/topbar {:title name}]
[react/scroll-view {:style {:flex 1}}
(when-not custom-domain?
[react/view {:style {:flex 1 :margin-horizontal 16}}
[react/view {:flex-direction :row :align-items :center :margin-top 20}
[react/view {:style {:margin-right 16}}
[components.common/logo
{:size 40
:icon-size 16}]]
[react/text {:style {:typography :title}}
(if pending?
(i18n/label :t/ens-transaction-pending)
(str (i18n/label :t/ens-10-SNT) ", deposit unlocked"))]]])
[react/view {:style {:margin-top 22}}
(when-not pending?
[section
{:title (i18n/label :t/wallet-address)
:content (address/normalized-hex address)}])
(when-not pending?
[react/view {:style {:margin-top 14}}
[section
{:title (i18n/label :t/key)
:content public-key}]])
[react/view {:style {:margin-top 16 :margin-bottom 32}}
;;TODO this is temporary fix for accounts with failed txs we still need this for regular ens
;;names (not pending) but we need to detach public key in the contract
(when pending?
[list.item/list-item
{:title (i18n/label :t/ens-remove-username)
;:subtext (i18n/label :t/ens-remove-hints)
:icon :main-icons/close
:theme :negative
:on-press #(re-frame/dispatch [::ens/remove-username name])}])
(when (and (not custom-domain?) (not pending?))
[react/view {:style {:margin-top 18}}
[list.item/list-item
{:title (i18n/label :t/ens-release-username)
:theme :accent
:disabled (not releasable?)
:subtitle (when (and expiration-date
(not releasable?))
(i18n/label :t/ens-locked
{:date expiration-date}))
:icon :main-icons/delete
:on-press #(open-release-instructions-link!)}]])]]]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; WELCOME SCREEN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- welcome-item
[{:keys [icon-label title]} content]
[react/view
{:style {:flex 1
:margin-top 24
:margin-left 16
:flex-direction :row}}
[react/view
{:style {:height 40
:width 40
:border-radius 25
:border-width 1
:border-color colors/gray-lighter
:align-items :center
:justify-content :center}}
[react/text {:style {:typography :title}}
icon-label]]
[react/view
{:style {:flex 1
:margin-horizontal 16}}
[react/text
{:style {:font-size 15
:typography :main-semibold}}
title]
content]])
(defn- welcome
[]
(let [name (:name @(re-frame/subscribe [:profile/profile]))]
[react/view {:style {:flex 1}}
[react/scroll-view {:content-container-style {:align-items :center}}
[react/image
{:source (resources/get-theme-image :ens-header)
:style {:margin-top 32}}]
[react/text {:style {:margin-top 32 :margin-bottom 8 :typography :header}}
(i18n/label :t/ens-get-name)]
[react/text
{:style {:margin-top 8
:margin-bottom 24
:color colors/gray
:font-size 15
:margin-horizontal 16
:text-align :center}}
(i18n/label :t/ens-welcome-hints)]
[welcome-item {:icon-label "1" :title (i18n/label :t/ens-welcome-point-customize-title)}
[react/view {:flex-direction :row}
[react/text
{:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-customize {:name name})]]]
[welcome-item {:icon-label "2" :title (i18n/label :t/ens-welcome-point-simplify-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-simplify)]]
[welcome-item {:icon-label "3" :title (i18n/label :t/ens-welcome-point-receive-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-receive)]]
[welcome-item {:icon-label "4" :title (i18n/label :t/ens-welcome-point-register-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-register)]]
[welcome-item {:icon-label "@" :title (i18n/label :t/ens-welcome-point-verify-title)}
[react/text {:style {:color colors/gray}}
(i18n/label :t/ens-welcome-point-verify)]]
[react/text
{:style
{:margin-top 16 :text-align :center :color colors/gray :typography :caption :padding-bottom 96}}
(i18n/label :t/ens-powered-by)]]
[toolbar/toolbar
{:show-border? true
:right [quo/button
{:on-press #(re-frame/dispatch [::ens/get-started-pressed])
:type :secondary
:after :main-icons/next}
(i18n/label :t/get-started)]}]]))
(defn- name-item
[{:keys [name action subtitle]}]
(let [stateofus-username (stateofus/username name)
s (or stateofus-username name)]
[list.item/list-item
(merge {:title s
:subtitle (if subtitle
subtitle
(when stateofus-username stateofus/domain))
:icon :main-icons/username}
(when action
{:on-press action}))]))
(defn- name-list
[names preferred-name]
[react/view {:style {:flex 1 :margin-top 16}}
[react/view {:style {:margin-horizontal 16 :align-items :center :justify-content :center}}
[react/nested-text
{:style {:color colors/gray}}
(i18n/label :t/ens-displayed-with)
[{:style {:color colors/black :text-align :center}}
(str "\n@" preferred-name)]]]
[react/view {:style {:flex 1 :margin-top 8}}
(for [name names]
(let [action #(do (re-frame/dispatch [::ens/save-preferred-name name])
(re-frame/dispatch [:bottom-sheet/hide-old]))
stateofus-username (stateofus/username name)
s (or stateofus-username name)]
^{:key name}
[list.item/list-item
{:accessibility-label (if (= name preferred-name)
:primary-username
:not-primary-username)
:title s
:subtitle (when stateofus-username stateofus/domain)
:icon :main-icons/username
:on-press action
:accessory :radio
:active (= name preferred-name)}]))]])
(views/defview in-progress-registrations
[registrations]
[react/view {:style {:margin-top 8}}
(for [[tx-hash {:keys [state username]}] registrations
:when (or (= state :submitted) (= state :failure))]
^{:key tx-hash}
[name-item
{:name username
:action (when-not (= state :submitted)
#(re-frame/dispatch [:ens/clear-registration tx-hash]))
:subtitle (case state
:submitted (i18n/label :t/ens-registration-in-progress)
:failure (i18n/label :t/ens-registration-failure)
nil)}])])
(views/defview my-name
[]
(views/letsubs [contact-name [:multiaccount/preferred-name]]
(when-not (string/blank? contact-name)
(chat.utils/format-author-old {:primary-name
(str "@"
(or (stateofus/username contact-name)
contact-name))}))))
(views/defview registered
[names {:keys [preferred-name]} _ registrations]
[react/view {:style {:flex 1}}
[react/scroll-view
[react/view {:style {:margin-top 8}}
[list.item/list-item
{:title (i18n/label :t/ens-add-username)
:theme :accent
:on-press #(re-frame/dispatch [::ens/add-username-pressed])
:icon :main-icons/add}]]
[react/view {:style {:margin-top 22 :margin-bottom 8}}
[react/text {:style {:color colors/gray :margin-horizontal 16}}
(i18n/label :t/ens-your-usernames)]
(when registrations
[in-progress-registrations registrations])
(if (seq names)
[react/view {:style {:margin-top 8}}
(for [name names]
^{:key name}
[name-item
{:name name
:action #(re-frame/dispatch [::ens/navigate-to-name name])}])]
[react/text
{:style {:color colors/gray
:font-size 15
:margin-horizontal 16}}
(i18n/label :t/ens-no-usernames)])]
[react/view {:style {:padding-vertical 22 :border-color colors/gray-lighter :border-top-width 1}}
(when (> (count names) 1)
[react/view
[react/text {:style {:color colors/gray :margin-horizontal 16}}
(i18n/label :t/ens-chat-settings)]
[profile.components/settings-item
{:label-kw :ens-primary-username
:value preferred-name
:action-fn #(re-frame/dispatch [:bottom-sheet/show-sheet-old
{:content
(fn [] (name-list names preferred-name))}])}]])]]])
(views/defview main
[]
(views/letsubs [{:keys [names profile/profile show? registrations]} [:ens.main/screen]]
[react/keyboard-avoiding-view {:style {:flex 1}}
(if (or (seq names) registrations)
[registered names profile show? registrations]
[welcome])]))
@@ -3,9 +3,7 @@
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
[utils.i18n :as i18n]))
(def messages
[{:title :t/account-title
@@ -58,17 +56,10 @@
(map (fn [[k v]]
{:title k
:data v})))]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/glossary)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/section-list
{:contentContainerStyle {:padding-horizontal 16
:padding-bottom 16}
:stickySectionHeadersEnabled true
:sections sections
:render-fn render-element
:render-section-header-fn render-section-header}]]))
[list/section-list
{:contentContainerStyle {:padding-horizontal 16
:padding-bottom 16}
:stickySectionHeadersEnabled true
:sections sections
:render-fn render-element
:render-section-header-fn render-section-header}]))
@@ -0,0 +1,32 @@
(ns legacy.status-im.ui.screens.group.styles
(:require
[legacy.status-im.ui.components.colors :as colors]))
(def group-container
{:flex 1
:flex-direction :column})
(defn no-contact-text
[]
{:margin-bottom 20
:margin-horizontal 50
:text-align :center
:color colors/gray})
(def no-contacts
{:flex 1
:justify-content :center
:align-items :center})
(defn search-container
[]
{:border-bottom-color colors/gray-lighter
:border-bottom-width 1
:padding-horizontal 16
:padding-vertical 10})
(defn members-title
[]
{:color colors/gray
:margin-top 14
:margin-bottom 4})
@@ -0,0 +1,196 @@
(ns legacy.status-im.ui.screens.group.views
(:require
[clojure.string :as string]
[legacy.status-im.ui.components.chat-icon.screen :as chat-icon]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.invite.views :as invite]
[legacy.status-im.ui.components.keyboard-avoid-presentation :as kb-presentation]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.components.search-input.view :as search]
[legacy.status-im.ui.components.toolbar :as toolbar]
[legacy.status-im.ui.components.topbar :as topbar]
[legacy.status-im.ui.screens.group.styles :as styles]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[status-im.constants :as constants]
[utils.debounce :as debounce]
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn- render-contact
[row]
(let [{:keys [primary-name secondary-name]} row]
[list.item/list-item
{:title primary-name
:subtitle secondary-name
:icon [chat-icon/contact-icon-contacts-tab row]}]))
(defn- on-toggle-participant
[allow-new-users? checked? public-key]
(cond
checked?
(re-frame/dispatch [:deselect-participant public-key allow-new-users?])
;; Only allow new users if not reached the maximum
(and (not checked?)
allow-new-users?)
(re-frame/dispatch [:select-participant public-key allow-new-users?])))
(defn- toggle-item
[]
(fn [allow-new-users? subs-name {:keys [public-key] :as contact} on-toggle]
(let [contact-selected? @(re-frame/subscribe [subs-name public-key])
{:keys [primary-name secondary-name]} contact]
[list.item/list-item
{:title primary-name
:subtitle secondary-name
:icon [chat-icon/contact-icon-contacts-tab contact]
:on-press #(on-toggle allow-new-users? contact-selected? public-key)
:active contact-selected?
:accessory :checkbox}])))
(defn- group-toggle-participant
[contact _ _ allow-new-users?]
[toggle-item allow-new-users? :is-participant-selected? contact on-toggle-participant])
(defn toggle-list
[{:keys [contacts render-fn render-data]}]
[list/flat-list
{:data contacts
:key-fn :public-key
:render-data render-data
:render-fn render-fn
:keyboard-should-persist-taps :always}])
(defn no-contacts-view
[{:keys [no-contacts]}]
[react/view {:style styles/no-contacts}
[react/text
{:style (styles/no-contact-text)}
no-contacts]
[invite/button]])
(defn filter-contacts
[filter-text contacts]
(let [lower-filter-text (string/lower-case (str filter-text))
filter-fn (fn [{:keys [name alias nickname]}]
(or
(string/includes? (string/lower-case (str name)) lower-filter-text)
(string/includes? (string/lower-case (str alias)) lower-filter-text)
(when nickname
(string/includes? (string/lower-case (str nickname))
lower-filter-text))))]
(if filter-text
(filter filter-fn contacts)
contacts)))
;; Set name of new group-chat
(views/defview new-group
[]
(views/letsubs [contacts [:selected-group-contacts]
group-name [:new-chat-name]]
(let [group-name-empty? (not (and (string? group-name) (not-empty group-name)))]
[react/keyboard-avoiding-view
{:style styles/group-container
:ignore-offset true}
[react/view {:flex 1}
[topbar/topbar
{:use-insets false
:title (i18n/label :t/new-group-chat)
:subtitle (i18n/label :t/group-chat-members-count
{:selected (inc (count contacts))
:max constants/max-group-chat-participants})}]
[react/view
{:style {:padding-top 16
:flex 1}}
[react/view {:style {:padding-horizontal 16}}
[quo/text-input
{:auto-focus true
:on-change-text #(re-frame/dispatch [:set :new-chat-name %])
:default-value group-name
:placeholder (i18n/label :t/set-a-topic)
:accessibility-label :chat-name-input}]
[react/text {:style (styles/members-title)}
(i18n/label :t/members-title)]]
[react/view
{:style {:margin-top 8
:flex 1}}
[list/flat-list
{:data contacts
:key-fn :address
:render-fn render-contact
:bounces false
:keyboard-should-persist-taps :always
:enable-empty-sections true}]]]
[toolbar/toolbar
{:show-border? true
:left
[quo/button
{:type :secondary
:before :main-icon/back
:accessibility-label :previous-button
:on-press #(re-frame/dispatch [:navigate-back])}
(i18n/label :t/back)]
:right
[quo/button
{:type :secondary
:accessibility-label :create-group-chat-button
:disabled group-name-empty?
:on-press #(debounce/throttle-and-dispatch [:group-chats.ui/create-pressed
group-name]
300)}
(i18n/label :t/create-group-chat)]}]]])))
(defn searchable-contact-list
[]
(let [search-value (reagent/atom nil)]
(fn [{:keys [contacts no-contacts-label toggle-fn allow-new-users?]}]
[react/view {:style {:flex 1}}
[react/view {:style (styles/search-container)}
[search/search-input-old
{:on-cancel #(reset! search-value nil)
:on-change #(reset! search-value %)}]]
[react/view
{:style {:flex 1
:padding-vertical 8}}
(if (seq contacts)
[toggle-list
{:contacts (filter-contacts @search-value contacts)
:render-data allow-new-users?
:render-fn toggle-fn}]
[no-contacts-view {:no-contacts no-contacts-label}])]])))
;; Add participants to existing group chat
(views/defview add-participants-toggle-list
[]
(views/letsubs [contacts [:contacts/all-contacts-not-in-current-chat]
current-chat [:chats/current-chat]
selected-contacts-count [:selected-participants-count]]
(let [current-participants-count (count (:contacts current-chat))]
[kb-presentation/keyboard-avoiding-view {:style styles/group-container}
[topbar/topbar
{:use-insets false
:border-bottom false
:title (i18n/label :t/add-members)
:subtitle (i18n/label :t/group-chat-members-count
{:selected (+ current-participants-count selected-contacts-count)
:max constants/max-group-chat-participants})}]
[searchable-contact-list
{:contacts contacts
:no-contacts-label (i18n/label :t/group-chat-all-contacts-invited)
:toggle-fn group-toggle-participant
:allow-new-users? (< (+ current-participants-count
selected-contacts-count)
constants/max-group-chat-participants)}]
[toolbar/toolbar
{:show-border? true
:center
[quo/button
{:type :secondary
:accessibility-label :next-button
:disabled (zero? selected-contacts-count)
:on-press #(re-frame/dispatch [:group-chats.ui/add-members-pressed])}
(i18n/label :t/add)]}]])))
@@ -2,33 +2,34 @@
(:require
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[quo.core :as quo]
[legacy.status-im.ui.components.react :as react]
[re-frame.core :as re-frame]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
[status-im.constants :as constants]
[utils.i18n :as i18n]))
(def data
[{:size :small
:title (i18n/label :t/glossary)
[{:size :small
:title (i18n/label :t/faq)
:accessibility-label :faq-button
:on-press
#(.openURL ^js react/linking constants/faq)
:chevron true}
{:size :small
:title (i18n/label :t/glossary)
:accessibility-label :glossary-button
:on-press #(re-frame/dispatch [:open-modal :glossary])
:chevron true}
{:size :small
:title (i18n/label :t/submit-bug)
:on-press
#(re-frame/dispatch [:navigate-to :glossary])
:chevron true}
{:size :small
:title (i18n/label :t/submit-bug)
:accessibility-label :submit-bug-button
:on-press #(re-frame/dispatch [:open-modal :bug-report])
:chevron true}])
:on-press
#(re-frame/dispatch [:open-modal :bug-report])
:chevron true}])
(defn help-center
[]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/need-help)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/flat-list
{:data data
:key-fn (fn [_ i] (str i))
:render-fn list.item/list-item}]])
[list/flat-list
{:data data
:key-fn (fn [_ i] (str i))
:render-fn list.item/list-item}])
@@ -2,16 +2,14 @@
(:require-macros [legacy.status-im.utils.views :as views])
(:require
[legacy.status-im.react-native.resources :as resources]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.screens.link-previews-settings.styles :as styles]
[quo.core :as quo]
[re-frame.core :as re-frame]
[status-im.contexts.chat.messenger.messages.link-preview.events]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
[utils.i18n :as i18n]))
(defn prepare-urls-items-data
[link-previews-enabled-sites]
@@ -31,24 +29,18 @@
link-previews-enabled-sites [:link-preview/enabled-sites]]
(let [all-enabled (= (count link-previews-whitelist) (count link-previews-enabled-sites))]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/chat-link-previews)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/image
{:source (resources/get-theme-image :unfurl)
:style styles/link-preview-settings-image}]
[components/text {:style {:margin 16}}
[quo/text {:style {:margin 16}}
(i18n/label :t/you-can-choose-preview-websites)]
[components/separator {:style {:margin-vertical 8}}]
[quo/separator {:style {:margin-vertical 8}}]
[react/view styles/whitelist-container
[components/list-header (i18n/label :t/websites)]
[quo/list-header (i18n/label :t/websites)]
(when (> (count link-previews-whitelist) 1)
[components/button
[quo/button
{:on-press #(re-frame/dispatch [:chat.ui/enable-all-link-previews
link-previews-whitelist
(not all-enabled)])
@@ -4,10 +4,7 @@
[legacy.status-im.ui.components.list.views :as list]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.screens.log-level-settings.styles :as styles]
[quo.core :as quo]
[re-frame.core :as re-frame]
[utils.i18n :as i18n]
[utils.re-frame :as rf])
[re-frame.core :as re-frame])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn- log-level-icon
@@ -49,16 +46,9 @@
(views/defview log-level-settings
[]
(views/letsubs [current-log-level [:log-level/current-log-level]]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/log-level-settings)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[list/flat-list
{:data log-levels
:default-separator? false
:key-fn :name
:render-data current-log-level
:render-fn render-row}]]))
[list/flat-list
{:data log-levels
:default-separator? false
:key-fn :name
:render-data current-log-level
:render-fn render-row}]))
@@ -1,10 +1,9 @@
(ns legacy.status-im.ui.screens.notifications-settings.views
(:require
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[react-native.platform :as platform]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))
@@ -23,10 +22,10 @@
:active notifications-enabled?
:on-press #(rf/dispatch [:push-notifications/switch (not notifications-enabled?)])
:accessory :switch}]
[components/separator
[quo/separator
{:color (:ui-02 @colors/theme)
:style {:margin-vertical 8}}]
[components/list-header (i18n/label :t/notifications-preferences)]
[quo/list-header (i18n/label :t/notifications-preferences)]
[list.item/list-item
{:size :small
:title (i18n/label :t/notifications-non-contacts)
@@ -62,16 +61,9 @@
(defn notifications-settings
[]
[:<>
[quo/page-nav
{:type :title
:title (i18n/label :t/notification-settings)
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/scroll-view
{:style {:flex 1}
:content-container-style {:padding-vertical 8}}
(if platform/ios?
[notifications-settings-ios]
[notifications-settings-android])]])
[react/scroll-view
{:style {:flex 1}
:content-container-style {:padding-vertical 8}}
(if platform/ios?
[notifications-settings-ios]
[notifications-settings-android])])
@@ -5,6 +5,7 @@
[legacy.status-im.ui.components.animation :as anim]
[legacy.status-im.ui.components.colors :as colors]
[legacy.status-im.ui.components.react :as react]
[legacy.status-im.ui.screens.profile.user.views :as profile.user]
[legacy.status-im.ui.screens.reset-password.views :as reset-password.views]
[re-frame.core :as re-frame]
[react-native.platform :as platform]
@@ -126,6 +127,9 @@
(vector? view)
view
(= :share-chat-key view)
[profile.user/share-chat-key]
(= :password-reset-popover view)
[reset-password.views/reset-password-popover]
@@ -2,21 +2,20 @@
(:require
[legacy.status-im.multiaccounts.reset-password.core :as reset-password]
[legacy.status-im.multiaccounts.update.core :as multiaccounts.update]
[legacy.status-im.ui.components.core :as components]
[legacy.status-im.ui.components.common.common :as components.common]
[legacy.status-im.ui.components.core :as quo]
[legacy.status-im.ui.components.list.item :as list.item]
[legacy.status-im.ui.components.react :as react]
[quo.core :as quo]
[re-frame.core :as re-frame]
[react-native.platform :as platform]
[status-im.config :as config]
[status-im.constants :as constants]
[utils.i18n :as i18n]
[utils.re-frame :as rf])
[utils.i18n :as i18n])
(:require-macros [legacy.status-im.utils.views :as views]))
(defn separator
[]
[components/separator {:style {:margin-vertical 8}}])
[quo/separator {:style {:margin-vertical 8}}])
(def titles
{constants/profile-pictures-visibility-contacts-only (i18n/label :t/recent-recipients)
@@ -28,7 +27,8 @@
(views/defview privacy-and-security
[]
(views/letsubs [{:keys [preview-privacy?
(views/letsubs [{:keys [mnemonic
preview-privacy?
messages-from-contacts-only
webview-allow-permission-requests?
opensea-enabled?
@@ -36,107 +36,110 @@
[:profile/profile]
has-picture [:profile/has-picture]
profile-pictures-show-to [:multiaccount/profile-pictures-show-to]]
[:<>
[quo/page-nav
{:type :no-title
:background :blur
:icon-name :i/close
:on-press #(rf/dispatch [:navigate-back])}]
[react/scroll-view {:padding-vertical 8}
[components/list-header (i18n/label :t/privacy)]
[list.item/list-item
{:size :small
:title (i18n/label :t/set-dapp-access-permissions)
:on-press #(re-frame/dispatch [:navigate-to :dapps-permissions])
:accessibility-label :dapps-permissions-button
:chevron true}]
[list.item/list-item
{:size :small
:title (if platform/android?
(i18n/label :t/hide-content-when-switching-apps)
(i18n/label :t/hide-content-when-switching-apps-ios))
:container-margin-bottom 8
:active preview-privacy?
:accessory :switch
:on-press #(re-frame/dispatch
[:profile.settings/change-preview-privacy
((complement boolean) preview-privacy?)])}]
(when config/collectibles-enabled?
[list.item/list-item
{:size :small
:title (i18n/label :t/display-collectibles)
:container-margin-bottom 8
:active opensea-enabled?
:accessory :switch
:on-press #(re-frame/dispatch
[::multiaccounts.update/toggle-opensea-nfts-visiblity
(not opensea-enabled?)])}])
[list.item/list-item
{:size :small
:title (i18n/label :t/chat-link-previews)
:chevron true
:on-press #(re-frame/dispatch [:open-modal :legacy-link-previews-settings])
:accessibility-label :chat-link-previews}]
[list.item/list-item
{:size :small
:title (i18n/label :t/accept-new-chats-from)
:chevron true
:accessory :text
:accessory-text (i18n/label (if messages-from-contacts-only
:t/contacts
:t/anyone))
:on-press #(re-frame/dispatch [:navigate-to :messages-from-contacts-only])
:accessibility-label :accept-new-chats-from}]
[list.item/list-item
{:size :small
:title (i18n/label :t/reset-password)
:chevron true
:accessory :text
:on-press #(do
(re-frame/dispatch [::reset-password/clear-form-vals])
(re-frame/dispatch [:navigate-to :reset-password]))
:accessibility-label :reset-password}]
(when platform/android?
[list.item/list-item
{:size :small
:title (i18n/label :t/webview-camera-permission-requests)
:active webview-allow-permission-requests?
:accessory :switch
:subtitle (i18n/label :t/webview-camera-permission-requests-subtitle)
:subtitle-max-lines 2
:on-press #(re-frame/dispatch
[:profile.settings/profile-update
:webview-allow-permission-requests?
((complement boolean) webview-allow-permission-requests?)])}])
[separator]
[components/list-header (i18n/label :t/privacy-photos)]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures)
:accessibility-label :show-profile-pictures
:accessory :text
:accessory-text (get titles profile-pictures-visibility)
:on-press #(re-frame/dispatch [:navigate-to :privacy-and-security-profile-pic])
:chevron true}]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures-to)
:disabled (not has-picture)
:accessibility-label :show-profile-pictures-to
:accessory :text
:accessory-text (get titles profile-pictures-show-to)
:on-press #(re-frame/dispatch [:navigate-to
:privacy-and-security-profile-pic-show-to])
:chevron true}]
[react/scroll-view {:padding-vertical 8}
[quo/list-header (i18n/label :t/security)]
[list.item/list-item
{:size :small
:title (i18n/label :t/back-up-seed-phrase)
:accessibility-label :back-up-recovery-phrase-button
:disabled (not mnemonic)
:chevron (boolean mnemonic)
:accessory (when mnemonic [components.common/counter {:size 22} 1])
:on-press #(re-frame/dispatch [:navigate-to :backup-seed])}]
[separator]
[quo/list-header (i18n/label :t/privacy)]
[list.item/list-item
{:size :small
:title (i18n/label :t/set-dapp-access-permissions)
:on-press #(re-frame/dispatch [:navigate-to :dapps-permissions])
:accessibility-label :dapps-permissions-button
:chevron true}]
[list.item/list-item
{:size :small
:title (if platform/android?
(i18n/label :t/hide-content-when-switching-apps)
(i18n/label :t/hide-content-when-switching-apps-ios))
:container-margin-bottom 8
:active preview-privacy?
:accessory :switch
:on-press #(re-frame/dispatch
[:profile.settings/change-preview-privacy
((complement boolean) preview-privacy?)])}]
(when config/collectibles-enabled?
[list.item/list-item
{:size :small
:title (i18n/label :t/display-collectibles)
:container-margin-bottom 8
:active opensea-enabled?
:accessory :switch
:on-press #(re-frame/dispatch
[::multiaccounts.update/toggle-opensea-nfts-visiblity
(not opensea-enabled?)])}])
[list.item/list-item
{:size :small
:title (i18n/label :t/chat-link-previews)
:chevron true
:on-press #(re-frame/dispatch [:navigate-to :link-previews-settings])
:accessibility-label :chat-link-previews}]
[list.item/list-item
{:size :small
:title (i18n/label :t/accept-new-chats-from)
:chevron true
:accessory :text
:accessory-text (i18n/label (if messages-from-contacts-only
:t/contacts
:t/anyone))
:on-press #(re-frame/dispatch [:navigate-to :messages-from-contacts-only])
:accessibility-label :accept-new-chats-from}]
[list.item/list-item
{:size :small
:title (i18n/label :t/reset-password)
:chevron true
:accessory :text
:on-press #(do
(re-frame/dispatch [::reset-password/clear-form-vals])
(re-frame/dispatch [:navigate-to :reset-password]))
:accessibility-label :reset-password}]
(when platform/android?
[list.item/list-item
{:size :small
:title (i18n/label :t/webview-camera-permission-requests)
:active webview-allow-permission-requests?
:accessory :switch
:subtitle (i18n/label :t/webview-camera-permission-requests-subtitle)
:subtitle-max-lines 2
:on-press #(re-frame/dispatch
[:profile.settings/profile-update
:webview-allow-permission-requests?
((complement boolean) webview-allow-permission-requests?)])}])
[separator]
[quo/list-header (i18n/label :t/privacy-photos)]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures)
:accessibility-label :show-profile-pictures
:accessory :text
:accessory-text (get titles profile-pictures-visibility)
:on-press #(re-frame/dispatch [:navigate-to :privacy-and-security-profile-pic])
:chevron true}]
[list.item/list-item
{:size :small
:title (i18n/label :t/show-profile-pictures-to)
:disabled (not has-picture)
:accessibility-label :show-profile-pictures-to
:accessory :text
:accessory-text (get titles profile-pictures-show-to)
:on-press #(re-frame/dispatch [:navigate-to :privacy-and-security-profile-pic-show-to])
:chevron true}]
[separator]
[list.item/list-item
{:size :small
:theme :negative
:title (i18n/label :t/delete-my-profile)
:on-press #(re-frame/dispatch [:navigate-to :delete-profile])
:accessibility-label :dapps-permissions-button
:chevron true}]]]))
[separator]
[list.item/list-item
{:size :small
:theme :negative
:title (i18n/label :t/delete-my-profile)
:on-press #(re-frame/dispatch [:navigate-to :delete-profile])
:accessibility-label :dapps-permissions-button
:chevron true}]]))
(defn ppst-radio-item
[id value]
@@ -155,7 +158,7 @@
[ppst-radio-item constants/profile-pictures-show-to-none profile-pictures-show-to]
[react/view {:style {:margin-horizontal 16}}
[components/text {:color :secondary}
[quo/text {:color :secondary}
(i18n/label :t/privacy-show-to-warning)]]]))
(defn ppvf-radio-item

Some files were not shown because too many files have changed in this diff Show More