Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bd7da02c25 | ||
|
|
ece2605cb9 | ||
|
|
407454859b | ||
|
|
12221ea067 | ||
|
|
2ae875f82a | ||
|
|
8e85d15a86 | ||
|
|
9e126a7399 | ||
|
|
a0254c0fa8 | ||
|
|
72a0df6332 | ||
|
|
08da76c22a | ||
|
|
66482863c1 | ||
|
|
a3f4673177 | ||
|
|
55915a9176 | ||
|
|
891d1e6360 | ||
|
|
1eb956d562 | ||
|
|
cf606b921a | ||
|
|
e6f552e785 | ||
|
|
7f007f204f | ||
|
|
a2497c81e7 | ||
|
|
5fd7e35d99 | ||
|
|
a71ad6e1a8 | ||
|
|
e8e70143d2 | ||
|
|
0769528dcd | ||
|
|
aaf655abe4 | ||
|
|
c59089c7d3 | ||
|
|
37108c8ee3 | ||
|
|
f220e0fed8 | ||
|
|
606c3c05e7 | ||
|
|
6cb48834ae | ||
|
|
7b7a86284b | ||
|
|
cf734032f2 | ||
|
|
36c7d8e4ca | ||
|
|
a8e4363e6b | ||
|
|
bcf20c358c | ||
|
|
d77701537a | ||
|
|
52afbf46ee | ||
|
|
9850dd5160 | ||
|
|
e59a2663f7 | ||
|
|
e1e709220e | ||
|
|
d5c865d092 | ||
|
|
f0302e7cbf | ||
|
|
8f52b9b63c | ||
|
|
82916de15c | ||
|
|
8ed9accbeb | ||
|
|
c1a338c2dd | ||
|
|
3745a8e2fe | ||
|
|
9fb81c3894 | ||
|
|
8e560d313d | ||
|
|
c0e30b459f | ||
|
|
b63117845a | ||
|
|
fd894dc339 | ||
|
|
dc8cbcde56 | ||
|
|
4bf393ec3d | ||
|
|
b1780a7128 | ||
|
|
82f7fbf7e4 | ||
|
|
a6eee856cf | ||
|
|
136a6313cd | ||
|
|
6a8f7a07bf | ||
|
|
c6eb964b7c | ||
|
|
93d4dc8cb5 | ||
|
|
7bbb882ffa | ||
|
|
012b3e396e | ||
|
|
bf92c51ce4 | ||
|
|
eefc2ede81 | ||
|
|
111064f747 | ||
|
|
cfab672f63 | ||
|
|
69221695b3 | ||
|
|
c44e5bbb67 | ||
|
|
826dd32c40 | ||
|
|
04b7357646 | ||
|
|
2c38c74c16 | ||
|
|
eb7a6ce45a | ||
|
|
525577ab17 | ||
|
|
83a7d3fafc | ||
|
|
4318bb6431 | ||
|
|
c466f96326 | ||
|
|
130308fa8a | ||
|
|
a858918b80 | ||
|
|
d5b8cde8e2 | ||
|
|
e5a30eaf1d | ||
|
|
b0fd58e9cb |
@@ -1,6 +1,5 @@
|
||||
status-im.utils.build/warning-handler
|
||||
status-im.utils.build/get-current-sha
|
||||
status-im.ethereum.resolver/name
|
||||
status-im.chat.constants/spacing-char
|
||||
status-im.chat.constants/arg-wrapping-char
|
||||
status-im.ios.core/init
|
||||
|
||||
@@ -36,3 +36,4 @@ COMMUNITIES_MANAGEMENT_ENABLED=1
|
||||
METRICS_ENABLED=0
|
||||
DELETE_MESSAGE_ENABLED=1
|
||||
TWO_MINUTES_SYNCING=1
|
||||
ENABLE_QUO_PREVIEW=1
|
||||
|
||||
@@ -27,11 +27,11 @@ Upgrade (e2e):
|
||||
### Process
|
||||
#### 1) Kick-off
|
||||
- [ ] 1. Translation PRs is merged before cutting branch (Jinho)
|
||||
- [ ] 2. Prepare scope of visible changes based on commits history, started from previous release branch cut ([example]( https://notes.status.im/1.14-release-notes?view))
|
||||
- [ ] 2. Prepare scope of visible changes based on commits history, started from previous release branch cut ([guide](https://notes.status.im/how-to-prepare-release-notes))
|
||||
- [ ] 3. Update [RELEASES.md](https://github.com/status-im/status-react/blob/develop/RELEASES.md) with release notes (make PR based on previous step)
|
||||
- [ ] 4. Create release branch using this [guide](https://github.com/status-im/status-react/blob/develop/doc/RELEASE_GUIDE.md), bump VERSION (merge created PR ([example](https://github.com/status-im/status-react/pull/12504) ) to develop) and get successful release builds (so, testing can be started)
|
||||
- [ ] 5. Based on release scope, ask for comms (Jonny)
|
||||
- [ ] 6. Make sure that assets (screenshots, video) in stores are up to date. If should be updated, ask @cammellos for help
|
||||
- [ ] 6. Make sure that assets (screenshots, video) in stores are up-to-date, more info [here](https://notes.status.im/how-to-update-assets)
|
||||
|
||||
#### 2) Testing
|
||||
[comment]: # (Section will be maintained by QA)
|
||||
@@ -53,14 +53,15 @@ Upgrade (e2e):
|
||||
|
||||
#### 3) Submission
|
||||
|
||||
- [ ] 1. Release notes written and added (500 character limit for updates (Android) and PR for [RELEASES.md](https://github.com/status-im/status-react/blob/develop/RELEASES.md) is ready to be merged (from 1.3 step)
|
||||
- [ ] 2. Submit beta version for Android (Open Testing in Play Store)
|
||||
- [ ] 3. Submit iOS build to Apple review ([instruction](https://drive.google.com/file/d/10Cl7PBB7TFPkZiVbfzdFGpfMRP9bxXuq/view?usp=sharing), be careful - low quality of audio)
|
||||
- [ ] 4. Play store content reviewed and updated
|
||||
- [ ] 5. Privacy policy reviewed and updated (ask in channel)
|
||||
- [ ] 6. Countries to be excluded (ask in channel)
|
||||
- [ ] 7. Changes to our FAQ made (should be checked and if any changes needed, ask Jakub to made them)
|
||||
- [ ] 8. Prepare PR for F-droid build ([instruction]( https://github.com/status-im/status-react/blob/develop/doc/FDROID.md))
|
||||
- [ ] 1. Prepare PR for F-droid build ([instruction]( https://github.com/status-im/status-react/blob/develop/doc/FDROID.md))
|
||||
- [ ] 2. Release notes written and added (500 character limit for updates (Android) and PR for [RELEASES.md](https://github.com/status-im/status-react/blob/develop/RELEASES.md) is ready to be merged (from 1.3 step)
|
||||
- [ ] 3. Submit beta version for Android (Open Testing in Play Store)
|
||||
- [ ] 4. Submit iOS build to Apple review ([instruction](https://drive.google.com/file/d/10Cl7PBB7TFPkZiVbfzdFGpfMRP9bxXuq/view?usp=sharing), be careful - low quality of audio)
|
||||
- [ ] 5. Play store content reviewed and updated
|
||||
- [ ] 6. Privacy policy reviewed and updated (ask in channel)
|
||||
- [ ] 7. Countries to be excluded (ask in channel)
|
||||
- [ ] 8. Changes to our FAQ made (should be checked and if any changes needed, ask Jakub to made them)
|
||||
|
||||
|
||||
#### 4) Before publishing
|
||||
- [ ] 1. Translations for comms available (marketing, ask in the channel)
|
||||
|
||||
@@ -10,7 +10,7 @@ project-board:
|
||||
|
||||
automated-tests:
|
||||
repo-full-name: 'status-im/status-react'
|
||||
job-full-name: 'end-to-end-tests/status-app-prs'
|
||||
job-full-name: 'status-react/e2e/status-app-prs'
|
||||
kickoff-column-name: 'E2E Tests'
|
||||
|
||||
github-team:
|
||||
|
||||
@@ -168,4 +168,5 @@ project.clj
|
||||
|
||||
##appium
|
||||
test/appium/report/
|
||||
result.xml
|
||||
result.xml
|
||||
test/appium/tests/users.py
|
||||
@@ -1,4 +1,4 @@
|
||||
.PHONY: nix-add-gcroots clean nix-clean run-metro test release _list _fix-node-perms _tmpdir-mk _tmpdir-rm
|
||||
.PHONY: nix-add-gcroots clean nix-clean run-metro test release _list _fix-node-perms _tmpdir-mk _tmpdir-rm _install-hooks
|
||||
|
||||
help: SHELL := /bin/sh
|
||||
help: ##@other Show this help
|
||||
@@ -124,6 +124,11 @@ _tmpdir-rm: SHELL := /bin/sh
|
||||
_tmpdir-rm: ##@prepare Remove TMPDIR
|
||||
rm -fr "$(TMPDIR)"
|
||||
|
||||
_install-hooks: SHELL := /bin/sh
|
||||
_install-hooks: ##@prepare Create prepare-commit-msg git hook symlink
|
||||
@ln -s -f ../../scripts/hooks/prepare-commit-msg .git/hooks
|
||||
-include _install-hooks
|
||||
|
||||
# Remove directories and ignored files
|
||||
clean: SHELL := /bin/sh
|
||||
clean: _fix-node-perms _tmpdir-rm ##@prepare Remove all output folders
|
||||
@@ -200,8 +205,9 @@ release-fdroid: export BUILD_TYPE = release
|
||||
release-fdroid: export ANDROID_APK_SIGNED = false
|
||||
release-fdroid: export ANDROID_ABI_SPLIT = false
|
||||
release-fdroid: export ANDROID_ABI_INCLUDE = armeabi-v7a;arm64-v8a;x86;x86_64
|
||||
release-fdroid: export READER_FEATURES = google-free
|
||||
release-fdroid: ##@build Build release for F-Droid
|
||||
sed -i -e '$$aGOOGLE_FREE=1' .env.release
|
||||
scripts/google-free.sh
|
||||
scripts/release-android.sh
|
||||
|
||||
release-ios: export TARGET := ios
|
||||
|
||||
@@ -126,7 +126,7 @@ def enableHermes = project.ext.react.get("enableHermes", false);
|
||||
/**
|
||||
* Exclude google library so we can publish to external android stores
|
||||
*/
|
||||
def googleFree = project.env.get("GOOGLE_FREE", false)
|
||||
def googleFree = project.env.get("GOOGLE_FREE", 0) == '1'
|
||||
|
||||
def getCommitHash = { ->
|
||||
if (project.hasProperty("commitHash")) {
|
||||
@@ -341,6 +341,8 @@ dependencies {
|
||||
exclude group: 'com.google.android.gms'
|
||||
exclude group: 'com.android.installreferrer'
|
||||
}
|
||||
} else {
|
||||
implementation 'com.google.firebase:firebase-messaging:23.0.0'
|
||||
}
|
||||
|
||||
// react-native-screens
|
||||
@@ -358,6 +360,7 @@ dependencies {
|
||||
implementation 'com.github.status-im:function:0.0.1'
|
||||
implementation 'com.facebook.fresco:fresco:2.2.0'
|
||||
implementation 'com.facebook.fresco:animated-gif:2.2.0'
|
||||
implementation "com.squareup.okhttp3:okhttp-tls:3.12.12"
|
||||
}
|
||||
|
||||
def getLocalNDKDir = { ->
|
||||
@@ -393,3 +396,7 @@ task hemroidBuild(type: Exec) {
|
||||
preBuild.dependsOn hemroidBuild
|
||||
|
||||
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
||||
|
||||
if (!googleFree) {
|
||||
apply plugin: "com.google.gms.google-services"
|
||||
}
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
{
|
||||
"project_info": {
|
||||
"project_number": "854811651919",
|
||||
"firebase_url": "https://status-react-app.firebaseio.com",
|
||||
"project_id": "status-react-app",
|
||||
"storage_bucket": "status-react-app.appspot.com"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:854811651919:android:11ee7444ded8a00a",
|
||||
"android_client_info": {
|
||||
"package_name": "im.status.ethereum"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "im.status.ethereum"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:854811651919:android:15dbe4af1e06ca3e005f3a",
|
||||
"android_client_info": {
|
||||
"package_name": "im.status.ethereum.debug"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "im.status.ethereum"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"client_info": {
|
||||
"mobilesdk_app_id": "1:854811651919:android:1d0d69fe8c1bb89b005f3a",
|
||||
"android_client_info": {
|
||||
"package_name": "im.status.ethereum.pr"
|
||||
}
|
||||
},
|
||||
"oauth_client": [
|
||||
{
|
||||
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
}
|
||||
],
|
||||
"api_key": [
|
||||
{
|
||||
"current_key": "AIzaSyAOF4W1j8GYeXzzVKRfNKlXywD6bx0rJtQ"
|
||||
}
|
||||
],
|
||||
"services": {
|
||||
"appinvite_service": {
|
||||
"other_platform_oauth_client": [
|
||||
{
|
||||
"client_id": "854811651919-gua52csicclb5p9gr4eeu33ukk0aaphj.apps.googleusercontent.com",
|
||||
"client_type": 3
|
||||
},
|
||||
{
|
||||
"client_id": "854811651919-30s20e3l0me0ins0vc4185jbnj7ja49o.apps.googleusercontent.com",
|
||||
"client_type": 2,
|
||||
"ios_info": {
|
||||
"bundle_id": "im.status.ethereum"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"configuration_version": "1"
|
||||
}
|
||||
@@ -81,6 +81,12 @@
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_provider_paths" />
|
||||
</provider>
|
||||
<meta-data
|
||||
android:name="com.google.firebase.messaging.default_notification_icon"
|
||||
android:resource="@drawable/notification_icon" />
|
||||
<meta-data
|
||||
android:name="com.google.firebase.messaging.default_notification_color"
|
||||
android:resource="@color/notification_icon_color" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
||||
@@ -15,12 +15,14 @@ import com.reactnativenavigation.NavigationApplication;
|
||||
import com.reactnativenavigation.react.NavigationReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.modules.network.OkHttpClientProvider;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import im.status.ethereum.keycard.RNStatusKeycardPackage;
|
||||
import im.status.ethereum.module.StatusPackage;
|
||||
import im.status.ethereum.pushnotifications.PushNotificationPackage;
|
||||
import im.status.ethereum.StatusOkHttpClientFactory;
|
||||
|
||||
public class MainApplication extends NavigationApplication {
|
||||
|
||||
@@ -56,7 +58,9 @@ public class MainApplication extends NavigationApplication {
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
|
||||
|
||||
OkHttpClientProvider.setOkHttpClientFactory(new StatusOkHttpClientFactory());
|
||||
|
||||
WebView.setWebContentsDebuggingEnabled(BuildConfig.DEBUG_WEBVIEW == "1");
|
||||
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package im.status.ethereum;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
import com.facebook.react.modules.network.OkHttpClientFactory;
|
||||
import com.facebook.react.modules.network.OkHttpClientProvider;
|
||||
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Interceptor;
|
||||
import okhttp3.tls.HandshakeCertificates;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.lang.RuntimeException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.security.cert.CertificateFactory;
|
||||
import java.security.cert.X509Certificate;
|
||||
|
||||
import im.status.ethereum.module.StatusPackage;
|
||||
|
||||
class StatusOkHttpClientFactory implements OkHttpClientFactory {
|
||||
public OkHttpClient createNewNetworkModuleClient() {
|
||||
String certPem = StatusPackage.getImageTLSCert();
|
||||
X509Certificate cert;
|
||||
|
||||
try {
|
||||
CertificateFactory cf = CertificateFactory.getInstance("X.509");
|
||||
cert = (X509Certificate) cf.generateCertificate(new ByteArrayInputStream(certPem.getBytes()));
|
||||
} catch(Exception e) {
|
||||
Log.e("StatusOkHttpClientFactory", "Could not parse certificate");
|
||||
cert = null;
|
||||
}
|
||||
|
||||
HandshakeCertificates clientCertificates = new HandshakeCertificates.Builder()
|
||||
.addPlatformTrustedCertificates()
|
||||
.addTrustedCertificate(cert)
|
||||
.build();
|
||||
|
||||
return OkHttpClientProvider.createClientBuilder()
|
||||
.sslSocketFactory(clientCertificates.sslSocketFactory(), clientCertificates.trustManager())
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 482 B |
|
After Width: | Height: | Size: 272 B |
|
Before Width: | Height: | Size: 975 B |
|
After Width: | Height: | Size: 495 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 826 B |
|
Before Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 826 B |
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="alert_text">#ffffff</color>
|
||||
<color name="alert_background">#141414</color>
|
||||
<color name="alert_text">#ffffff</color>
|
||||
</resources>
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="alert_text">#000000</color>
|
||||
<color name="alert_background">#ffffff</color>
|
||||
<color name="alert_text">#000000</color>
|
||||
<color name="notification_icon_color">#4360DF</color>
|
||||
</resources>
|
||||
|
||||
@@ -23,8 +23,9 @@
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
</style>
|
||||
|
||||
<style name="AlertDialogTheme" parent="Base.Theme.AppCompat.Light.Dialog.Alert">
|
||||
<style name="AlertDialogTheme" parent="Theme.AppCompat.DayNight.Dialog.Alert">
|
||||
<item name="android:textColor">@color/alert_text</item>
|
||||
<item name="android:textColorPrimary">@color/alert_text</item>
|
||||
<item name="android:background">@color/alert_background</item>
|
||||
</style>
|
||||
</resources>
|
||||
|
||||
@@ -22,6 +22,7 @@ buildscript {
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31"
|
||||
classpath "com.android.tools.build:gradle:${project.ext.gradlePluginVersion}"
|
||||
classpath "com.google.gms:google-services:4.3.10"
|
||||
// WARNING: Do not place your application dependencies here!
|
||||
// They belong in the individual module build.gradle files.
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
library 'status-jenkins-lib@v1.3.3'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux' }
|
||||
agent { label 'linux && x86_64 && nix-2.3' }
|
||||
|
||||
options {
|
||||
timestamps()
|
||||
|
||||
@@ -101,7 +101,7 @@ pipeline {
|
||||
steps { script {
|
||||
e2eApk = utils.getEnv(apke2e, 'SAUCE_URL')
|
||||
build(
|
||||
job: 'end-to-end-tests/status-app-nightly',
|
||||
job: 'status-react/e2e/status-app-nightly',
|
||||
parameters: [string(name: 'APK_NAME', value: e2eApk)],
|
||||
wait: false
|
||||
)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
library 'status-jenkins-lib@v1.3.3'
|
||||
|
||||
pipeline {
|
||||
agent { label 'macos && x86_64 && xcode-12.5' }
|
||||
agent { label 'macos && x86_64 && nix-2.3 && xcode-12.5' }
|
||||
|
||||
parameters {
|
||||
string(
|
||||
|
||||
@@ -48,8 +48,14 @@ pipeline {
|
||||
credentialsId: 'infura-e2e-token',
|
||||
variable: 'WEB3_INFURA_PROJECT_ID'
|
||||
),
|
||||
file(
|
||||
credentialsId: "mobile-tests-eth-accounts",
|
||||
variable: 'TEST_ETH_ACCOUNTS_FILE'
|
||||
),
|
||||
]) {
|
||||
dir('test/appium/tests') {
|
||||
/* Provide Eth test accounts secrets. */
|
||||
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
|
||||
sh """
|
||||
python3 -m pytest \
|
||||
--numprocesses 15 \
|
||||
|
||||
@@ -8,11 +8,12 @@ pipeline {
|
||||
description: 'Name of the branch to checkout and build.',
|
||||
defaultValue: 'develop',
|
||||
)
|
||||
/* Commented to use TEST_MARKERS values from job params
|
||||
string(
|
||||
name: 'TEST_MARKERS',
|
||||
description: 'Marker expression for matching tests to run.',
|
||||
defaultValue: '',
|
||||
)
|
||||
defaultValue: 'critical or high',
|
||||
) */
|
||||
string(
|
||||
name: 'APK_NAME',
|
||||
description: 'Filename of APK uploaded to SauceLabs, path, or URL.',
|
||||
@@ -84,8 +85,14 @@ pipeline {
|
||||
credentialsId: 'infura-e2e-token',
|
||||
variable: 'WEB3_INFURA_PROJECT_ID'
|
||||
),
|
||||
file(
|
||||
credentialsId: "mobile-tests-eth-accounts",
|
||||
variable: 'TEST_ETH_ACCOUNTS_FILE'
|
||||
),
|
||||
]) {
|
||||
dir('test/appium/tests') {
|
||||
/* Provide Eth test account secrets. */
|
||||
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
|
||||
sh """
|
||||
python3 -m pytest \
|
||||
--numprocesses 15 \
|
||||
|
||||
@@ -62,8 +62,14 @@ pipeline {
|
||||
credentialsId: 'infura-e2e-token',
|
||||
variable: 'WEB3_INFURA_PROJECT_ID'
|
||||
),
|
||||
file(
|
||||
credentialsId: "mobile-tests-eth-accounts",
|
||||
variable: 'TEST_ETH_ACCOUNTS_FILE'
|
||||
),
|
||||
]) {
|
||||
dir('test/appium/tests') {
|
||||
/* Provide Eth test accounts secrets. */
|
||||
sh 'cp -f $TEST_ETH_ACCOUNTS_FILE users.py'
|
||||
sh """
|
||||
python3 -m pytest \
|
||||
-m "upgrade" \
|
||||
|
||||
@@ -28,6 +28,13 @@ There are three steps necessary to start development, in this case for Android:
|
||||
The first two will continue watching for changes and keep re-building the app. They need to be ready first.
|
||||
The last one will exit once the app is up and ready.
|
||||
|
||||
# Updating Dependencies
|
||||
|
||||
* `make nix-update-pods` - iOS CocoaPods dependencies (updates `ios/Podfile` and `ios/Podfile.loc`)
|
||||
* `make nix-update-gradle` - Android Gradle/Maven dependencies (updates `nix/deps/gradle/deps.json`)
|
||||
* `make nix-update-clojure` - Clojure Maven dependencies (updates `nix/deps/clojure/deps.json`)
|
||||
* `make nix-update-gems` - Fastlane Ruby dependencies (updates `fastlane/Gemfile.lock` and `fastlane/gemset.nix`)
|
||||
|
||||
# Manual Steps
|
||||
|
||||
There are a few manual steps you might want to do in order to start contributing.
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
import "node-libs-react-native/globals";
|
||||
import "./app/index.js";
|
||||
|
||||
@@ -2,7 +2,7 @@ PODS:
|
||||
- boost-for-react-native (1.63.0)
|
||||
- BVLinearGradient (2.5.6):
|
||||
- React
|
||||
- CryptoSwift (1.4.2)
|
||||
- CryptoSwift (1.4.3)
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (0.63.4)
|
||||
- FBReactNativeSpec (0.63.4):
|
||||
@@ -206,6 +206,10 @@ PODS:
|
||||
- React-jsinspector (0.63.4)
|
||||
- react-native-background-timer (2.2.0):
|
||||
- React
|
||||
- react-native-blob-util (0.13.18):
|
||||
- React-Core
|
||||
- react-native-blur (0.8.0):
|
||||
- React
|
||||
- react-native-camera-kit (8.0.4):
|
||||
- React
|
||||
- react-native-cameraroll (4.0.4):
|
||||
@@ -220,6 +224,10 @@ PODS:
|
||||
- React-Core
|
||||
- react-native-netinfo (4.7.0):
|
||||
- React
|
||||
- react-native-notifications (4.1.3):
|
||||
- React-Core
|
||||
- react-native-randombytes (3.6.1):
|
||||
- React-Core
|
||||
- react-native-safe-area-context (2.0.0):
|
||||
- React
|
||||
- react-native-shake (3.4.0):
|
||||
@@ -233,7 +241,7 @@ PODS:
|
||||
- react-native-status-keycard (2.5.37):
|
||||
- Keycard
|
||||
- React
|
||||
- react-native-webview (11.3.0):
|
||||
- react-native-webview (11.16.0):
|
||||
- React-Core
|
||||
- React-RCTActionSheet (0.63.4):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.63.4)
|
||||
@@ -388,8 +396,8 @@ PODS:
|
||||
- SQLCipher/common (3.4.2)
|
||||
- SQLCipher/standard (3.4.2):
|
||||
- SQLCipher/common
|
||||
- SSZipArchive (2.4.2)
|
||||
- TOCropViewController (2.6.0)
|
||||
- SSZipArchive (2.4.3)
|
||||
- TOCropViewController (2.6.1)
|
||||
- TouchID (4.4.1):
|
||||
- React
|
||||
- Yoga (1.14.0)
|
||||
@@ -417,12 +425,16 @@ DEPENDENCIES:
|
||||
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
|
||||
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
|
||||
- react-native-background-timer (from `../node_modules/react-native-background-timer`)
|
||||
- react-native-blob-util (from `../node_modules/react-native-blob-util`)
|
||||
- "react-native-blur (from `../node_modules/@react-native-community/blur`)"
|
||||
- react-native-camera-kit (from `../node_modules/react-native-camera-kit`)
|
||||
- "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)"
|
||||
- react-native-config (from `../node_modules/react-native-config`)
|
||||
- react-native-image-resizer (from `../node_modules/react-native-image-resizer`)
|
||||
- react-native-mail (from `../node_modules/react-native-mail`)
|
||||
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
|
||||
- react-native-notifications (from `../node_modules/react-native-notifications`)
|
||||
- react-native-randombytes (from `../node_modules/react-native-randombytes`)
|
||||
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
|
||||
- react-native-shake (from `../node_modules/react-native-shake`)
|
||||
- "react-native-slider (from `../node_modules/@react-native-community/slider`)"
|
||||
@@ -517,6 +529,10 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/jsinspector"
|
||||
react-native-background-timer:
|
||||
:path: "../node_modules/react-native-background-timer"
|
||||
react-native-blob-util:
|
||||
:path: "../node_modules/react-native-blob-util"
|
||||
react-native-blur:
|
||||
:path: "../node_modules/@react-native-community/blur"
|
||||
react-native-camera-kit:
|
||||
:path: "../node_modules/react-native-camera-kit"
|
||||
react-native-cameraroll:
|
||||
@@ -529,6 +545,10 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-mail"
|
||||
react-native-netinfo:
|
||||
:path: "../node_modules/@react-native-community/netinfo"
|
||||
react-native-notifications:
|
||||
:path: "../node_modules/react-native-notifications"
|
||||
react-native-randombytes:
|
||||
:path: "../node_modules/react-native-randombytes"
|
||||
react-native-safe-area-context:
|
||||
:path: "../node_modules/react-native-safe-area-context"
|
||||
react-native-shake:
|
||||
@@ -621,7 +641,7 @@ CHECKOUT OPTIONS:
|
||||
SPEC CHECKSUMS:
|
||||
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
|
||||
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
|
||||
CryptoSwift: a532e74ed010f8c95f611d00b8bbae42e9fe7c17
|
||||
CryptoSwift: a0799ee936271bd2253a006f1e4523df21845000
|
||||
DoubleConversion: cde416483dac037923206447da6e1454df403714
|
||||
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
|
||||
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
|
||||
@@ -642,19 +662,23 @@ SPEC CHECKSUMS:
|
||||
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
|
||||
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
|
||||
react-native-background-timer: 1f7d560647b40e6a60b01c452ba29c54bf581fc4
|
||||
react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9
|
||||
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
|
||||
react-native-camera-kit: 498a6d111a904834e0824e9073cfadef7303235f
|
||||
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
|
||||
react-native-config: c98128a72bc2c3a1ca72caec0b021f0fa944aa29
|
||||
react-native-image-resizer: 2f1577efa3bc762597681f530c8e8d05ce0ceeb3
|
||||
react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a
|
||||
react-native-netinfo: ddaca8bbb9e6e914b1a23787ccb879bc642931c9
|
||||
react-native-notifications: 805108822ceff3440644d5701944f0cda35f5b4b
|
||||
react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846
|
||||
react-native-safe-area-context: 60f654e00b6cc416573f6d5dbfce3839958eb57a
|
||||
react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c
|
||||
react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4
|
||||
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
||||
react-native-status: 45dbf1302ce3c258b459dfab137cd1c2c68c295d
|
||||
react-native-status-keycard: 961d01ca190889ddf220206822fd752f8f4f3f7a
|
||||
react-native-webview: af9990b21a9aeafa8e8347746eb4116c0de086af
|
||||
react-native-webview: 28a8636d97ee641f2ee8f20492d7a6c269c1d703
|
||||
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
|
||||
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
|
||||
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
|
||||
@@ -688,8 +712,8 @@ SPEC CHECKSUMS:
|
||||
SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815
|
||||
secp256k1: f61d67e6fdcb85fd727acf1bf35ace6036db540c
|
||||
SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990
|
||||
SSZipArchive: e7b4f3d9e780c2acc1764cd88fbf2de28f26e5b2
|
||||
TOCropViewController: 3105367e808b7d3d886a74ff59bf4804e7d3ab38
|
||||
SSZipArchive: fe6a26b2a54d5a0890f2567b5cc6de5caa600aef
|
||||
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
|
||||
TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4
|
||||
Yoga: 4bd86afe9883422a7c4028c00e34790f560923d6
|
||||
|
||||
|
||||
@@ -19,10 +19,23 @@
|
||||
|
||||
#import <React/RCTBridge.h>
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
#import <React/RCTHTTPRequestHandler.h>
|
||||
|
||||
#import <UserNotifications/UserNotifications.h>
|
||||
#import <RNCPushNotificationIOS.h>
|
||||
|
||||
#import <SDWebImage/SDWebImageDownloaderConfig.h>
|
||||
#import <SDWebImage/SDWebImageDownloaderOperation.h>
|
||||
|
||||
#import <Security/Security.h>
|
||||
|
||||
//TODO: properly import the framework
|
||||
extern NSString* StatusgoImageServerTLSCert();
|
||||
|
||||
@interface StatusDownloaderOperation : SDWebImageDownloaderOperation
|
||||
+ (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler;
|
||||
@end
|
||||
|
||||
/*
|
||||
#if DEBUG
|
||||
#import <FlipperKit/FlipperClient.h>
|
||||
@@ -45,7 +58,7 @@ static void InitializeFlipper(UIApplication *application) {
|
||||
#endif
|
||||
*/
|
||||
|
||||
@implementation AppDelegate
|
||||
@implementation AppDelegate
|
||||
{
|
||||
UIView *_blankView;
|
||||
}
|
||||
@@ -84,6 +97,8 @@ static void InitializeFlipper(UIApplication *application) {
|
||||
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
||||
center.delegate = self;
|
||||
|
||||
SDWebImageDownloaderConfig.defaultDownloaderConfig.operationClass = [StatusDownloaderOperation class];
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
@@ -124,7 +139,7 @@ static void InitializeFlipper(UIApplication *application) {
|
||||
[UIView animateWithDuration:0.5 animations:^{
|
||||
_blankView.alpha = 1;
|
||||
}];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)applicationDidBecomeActive:(UIApplication *)application {
|
||||
@@ -169,14 +184,67 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response
|
||||
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
|
||||
{
|
||||
NSDictionary *userInfo = notification.request.content.userInfo;
|
||||
|
||||
|
||||
NSString *notificationType = userInfo[@"notificationType"]; // check your notification type
|
||||
if (![notificationType isEqual: @"local-notification"]) { // we silence all notifications which are not local
|
||||
completionHandler(UNNotificationPresentationOptionNone);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation StatusDownloaderOperation
|
||||
|
||||
+ (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
|
||||
NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;
|
||||
__block NSURLCredential *credential = nil;
|
||||
|
||||
NSString *pemCert = StatusgoImageServerTLSCert();
|
||||
pemCert = [pemCert stringByReplacingOccurrencesOfString:@"-----BEGIN CERTIFICATE-----\n" withString:@""];
|
||||
pemCert = [pemCert stringByReplacingOccurrencesOfString:@"\n-----END CERTIFICATE-----" withString:@""];
|
||||
NSData *derCert = [[NSData alloc] initWithBase64EncodedString:pemCert options:NSDataBase64DecodingIgnoreUnknownCharacters];
|
||||
SecCertificateRef certRef = SecCertificateCreateWithData(NULL, (__bridge_retained CFDataRef) derCert);
|
||||
CFArrayRef certArrayRef = CFArrayCreate(NULL, (void *)&certRef, 1, NULL);
|
||||
SecTrustSetAnchorCertificates(challenge.protectionSpace.serverTrust, certArrayRef);
|
||||
|
||||
SecTrustResultType trustResult;
|
||||
SecTrustEvaluate(challenge.protectionSpace.serverTrust, &trustResult);
|
||||
|
||||
if ((trustResult == kSecTrustResultProceed) || (trustResult == kSecTrustResultUnspecified)) {
|
||||
disposition = NSURLSessionAuthChallengeUseCredential;
|
||||
credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
|
||||
}
|
||||
|
||||
if (completionHandler) {
|
||||
completionHandler(disposition, credential);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
|
||||
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust] &&
|
||||
[challenge.protectionSpace.host isEqualToString:@"localhost"]) {
|
||||
[StatusDownloaderOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler];
|
||||
} else {
|
||||
[super URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation RCTHTTPRequestHandler (SelfSigned)
|
||||
|
||||
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
|
||||
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust] &&
|
||||
[challenge.protectionSpace.host isEqualToString:@"localhost"]) {
|
||||
[StatusDownloaderOperation URLSession:session task:task didReceiveChallenge:challenge completionHandler:completionHandler];
|
||||
} else {
|
||||
if (completionHandler) {
|
||||
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -13,4 +13,7 @@ module.exports = {
|
||||
},
|
||||
}),
|
||||
},
|
||||
resolver: {
|
||||
extraNodeModules: require('node-libs-react-native'),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1011,6 +1011,25 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL
|
||||
StatusThreadPoolExecutor.getInstance().execute(r);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void recover(final String rpcParams, final Callback callback) {
|
||||
Log.d(TAG, "recover");
|
||||
if (!checkAvailability()) {
|
||||
callback.invoke(false);
|
||||
return;
|
||||
}
|
||||
|
||||
Runnable r = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String res = Statusgo.recover(rpcParams);
|
||||
callback.invoke(res);
|
||||
}
|
||||
};
|
||||
|
||||
StatusThreadPoolExecutor.getInstance().execute(r);
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void signTypedData(final String data, final String account, final String password, final Callback callback) {
|
||||
Log.d(TAG, "signTypedData");
|
||||
|
||||
@@ -10,10 +10,16 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import statusgo.Statusgo;
|
||||
|
||||
public class StatusPackage implements ReactPackage {
|
||||
|
||||
private boolean rootedDevice;
|
||||
|
||||
public static String getImageTLSCert() {
|
||||
return Statusgo.imageServerTLSCert();
|
||||
}
|
||||
|
||||
public StatusPackage(boolean rootedDevice) {
|
||||
this.rootedDevice = rootedDevice;
|
||||
}
|
||||
|
||||
@@ -124,6 +124,11 @@ public class PushNotification extends ReactContextBaseJavaModule implements Acti
|
||||
}
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void clearAllMessageNotifications() {
|
||||
pushNotificationHelper.clearAllMessageNotifications();
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void enableNotifications() {
|
||||
this.started = true;
|
||||
|
||||
@@ -199,6 +199,10 @@ public class PushNotificationHelper {
|
||||
cleanGroup(conversationId);
|
||||
}
|
||||
|
||||
public void clearAllMessageNotifications() {
|
||||
notificationManager.cancelAll();
|
||||
}
|
||||
|
||||
public void sendToNotificationCentreWithPicture(final Bundle bundle, Bitmap largeIconBitmap, Bitmap bigPictureBitmap) {
|
||||
|
||||
try {
|
||||
|
||||
@@ -662,6 +662,18 @@ RCT_EXPORT_METHOD(signMessage:(NSString *)message
|
||||
callback(@[result]);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
#pragma mark - Recover
|
||||
//////////////////////////////////////////////////////////////////// recover
|
||||
RCT_EXPORT_METHOD(recover:(NSString *)message
|
||||
callback:(RCTResponseSenderBlock)callback) {
|
||||
#if DEBUG
|
||||
NSLog(@"Recover() method called");
|
||||
#endif
|
||||
NSString *result = StatusgoRecover(message);
|
||||
callback(@[result]);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
#pragma mark - SignTypedData
|
||||
//////////////////////////////////////////////////////////////////// signTypedData
|
||||
|
||||
@@ -60,6 +60,7 @@ androidx.savedstate:savedstate:1.0.0
|
||||
androidx.slidingpanelayout:slidingpanelayout:1.0.0
|
||||
androidx.swiperefreshlayout:swiperefreshlayout:1.0.0
|
||||
androidx.swiperefreshlayout:swiperefreshlayout:1.1.0
|
||||
androidx.test:monitor:1.2.0
|
||||
androidx.test:monitor:1.3.0-rc03
|
||||
androidx.transition:transition:1.2.0
|
||||
androidx.transition:transition:1.2.0-rc01
|
||||
@@ -71,6 +72,9 @@ androidx.versionedparcelable:versionedparcelable:1.0.0
|
||||
androidx.versionedparcelable:versionedparcelable:1.1.0
|
||||
androidx.viewpager2:viewpager2:1.0.0
|
||||
androidx.viewpager:viewpager:1.0.0
|
||||
androidx.webkit:webkit:1.4.0
|
||||
backport-util-concurrent:backport-util-concurrent:3.1
|
||||
classworlds:classworlds:1.1-alpha-2
|
||||
commons-codec:commons-codec:1.4
|
||||
commons-codec:commons-codec:1.6
|
||||
commons-codec:commons-codec:1.9
|
||||
@@ -350,14 +354,26 @@ com.github.wix-playground:reflow-animator:1.0.6
|
||||
com.github.yalantis:ucrop:2.2.6-native
|
||||
com.googlecode.json-simple:json-simple:1.1
|
||||
com.googlecode.juniversalchardet:juniversalchardet:1.0.3
|
||||
com.google.android.apps.common.testing.accessibility.framework:accessibility-test-framework:2.1
|
||||
com.google.android.datatransport:transport-api:2.2.1
|
||||
com.google.android.datatransport:transport-api:3.0.0
|
||||
com.google.android.datatransport:transport-backend-cct:2.3.3
|
||||
com.google.android.datatransport:transport-backend-cct:3.0.0
|
||||
com.google.android.datatransport:transport-runtime:2.2.5
|
||||
com.google.android.datatransport:transport-runtime:3.0.0
|
||||
com.google.android.gms:play-services-basement:17.0.0
|
||||
com.google.android.gms:play-services-base:17.0.0
|
||||
com.google.android.gms:play-services-cloud-messaging:16.0.0
|
||||
com.google.android.gms:play-services-cloud-messaging:17.0.0
|
||||
com.google.android.gms:play-services-iid:17.0.0
|
||||
com.google.android.gms:play-services-stats:17.0.0
|
||||
com.google.android.gms:play-services-tasks:17.0.0
|
||||
com.google.android.gms:strict-version-matcher-plugin:1.2.2
|
||||
com.google.android.material:material:1.2.0-alpha03
|
||||
com.google.auto.service:auto-service:1.0-rc4
|
||||
com.google.auto.value:auto-value-annotations:1.6.2
|
||||
com.google.auto.value:auto-value:1.5.2
|
||||
com.google.auto:auto-common:0.8
|
||||
com.google.code.findbugs:jsr305:1.3.9
|
||||
com.google.code.findbugs:jsr305:3.0.2
|
||||
com.google.code.gson:gson:2.2.4
|
||||
@@ -370,6 +386,28 @@ com.google.errorprone:error_prone_annotations:2.0.18
|
||||
com.google.errorprone:error_prone_annotations:2.1.2
|
||||
com.google.errorprone:error_prone_annotations:2.2.0
|
||||
com.google.errorprone:error_prone_annotations:2.3.1
|
||||
com.google.firebase:firebase-annotations:16.0.0
|
||||
com.google.firebase:firebase-common:19.5.0
|
||||
com.google.firebase:firebase-common:20.0.0
|
||||
com.google.firebase:firebase-components:16.1.0
|
||||
com.google.firebase:firebase-components:17.0.0
|
||||
com.google.firebase:firebase-datatransport:17.0.10
|
||||
com.google.firebase:firebase-datatransport:18.0.0
|
||||
com.google.firebase:firebase-encoders-json:17.1.0
|
||||
com.google.firebase:firebase-encoders-json:18.0.0
|
||||
com.google.firebase:firebase-encoders:16.1.0
|
||||
com.google.firebase:firebase-encoders:17.0.0
|
||||
com.google.firebase:firebase-iid-interop:17.1.0
|
||||
com.google.firebase:firebase-iid:21.1.0
|
||||
com.google.firebase:firebase-installations-interop:16.0.1
|
||||
com.google.firebase:firebase-installations-interop:17.0.0
|
||||
com.google.firebase:firebase-installations:16.3.5
|
||||
com.google.firebase:firebase-installations:17.0.0
|
||||
com.google.firebase:firebase-measurement-connector:18.0.0
|
||||
com.google.firebase:firebase-measurement-connector:19.0.0
|
||||
com.google.firebase:firebase-messaging:21.1.0
|
||||
com.google.firebase:firebase-messaging:23.0.0
|
||||
com.google.gms:google-services:4.3.10
|
||||
com.google.guava:failureaccess:1.0.1
|
||||
com.google.guava:guava:17.0
|
||||
com.google.guava:guava:22.0
|
||||
@@ -380,6 +418,7 @@ com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
|
||||
com.google.j2objc:j2objc-annotations:1.1
|
||||
com.google.jimfs:jimfs:1.1
|
||||
com.google.protobuf:protobuf-java-util:3.4.0
|
||||
com.google.protobuf:protobuf-java:2.6.1
|
||||
com.google.protobuf:protobuf-java:3.0.0
|
||||
com.google.protobuf:protobuf-java:3.4.0
|
||||
com.google.zxing:core:3.3.0
|
||||
@@ -389,6 +428,7 @@ com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0
|
||||
com.parse.bolts:bolts-applinks:1.4.0
|
||||
com.parse.bolts:bolts-tasks:1.4.0
|
||||
com.squareup.assertj:assertj-android:1.1.1
|
||||
com.squareup.okhttp3:okhttp-tls:3.12.12
|
||||
com.squareup.okhttp3:okhttp-urlconnection:3.12.12
|
||||
com.squareup.okhttp3:okhttp:3.12.12
|
||||
com.squareup.okio:okio:1.15.0
|
||||
@@ -408,6 +448,8 @@ javax.inject:javax.inject:1
|
||||
javax.xml.bind:jaxb-api:2.2.12-b140109.1041
|
||||
junit:junit:4.12
|
||||
me.zhanghai.android.materialprogressbar:library:1.4.2
|
||||
nekohtml:nekohtml:1.9.6.2
|
||||
nekohtml:xercesMinimal:1.9.6.2
|
||||
net.bytebuddy:byte-buddy-agent:1.9.10
|
||||
net.bytebuddy:byte-buddy-agent:1.10.18
|
||||
net.bytebuddy:byte-buddy:1.9.10
|
||||
@@ -428,6 +470,8 @@ org.antlr:antlr4-runtime:4.5.2-1
|
||||
org.antlr:antlr4:4.5.3
|
||||
org.antlr:antlr-runtime:3.5.2
|
||||
org.antlr:antlr:3.5.2
|
||||
org.apache.ant:ant-launcher:1.8.0
|
||||
org.apache.ant:ant:1.8.0
|
||||
org.apache.commons:commons-compress:1.8.1
|
||||
org.apache.commons:commons-compress:1.12
|
||||
org.apache.commons:commons-lang3:3.3.2
|
||||
@@ -445,11 +489,26 @@ org.apache.httpcomponents:httpcore:4.4.10
|
||||
org.apache.httpcomponents:httpmime:4.1
|
||||
org.apache.httpcomponents:httpmime:4.5.2
|
||||
org.apache.httpcomponents:httpmime:4.5.6
|
||||
org.apache.maven.wagon:wagon-file:1.0-beta-6
|
||||
org.apache.maven.wagon:wagon-http-lightweight:1.0-beta-6
|
||||
org.apache.maven.wagon:wagon-http-shared:1.0-beta-6
|
||||
org.apache.maven.wagon:wagon-provider-api:1.0-beta-6
|
||||
org.apache.maven:maven-ant-tasks:2.1.3
|
||||
org.apache.maven:maven-artifact-manager:2.2.1
|
||||
org.apache.maven:maven-artifact:2.2.1
|
||||
org.apache.maven:maven-error-diagnostics:2.2.1
|
||||
org.apache.maven:maven-model:2.2.1
|
||||
org.apache.maven:maven-plugin-registry:2.2.1
|
||||
org.apache.maven:maven-profile:2.2.1
|
||||
org.apache.maven:maven-project:2.2.1
|
||||
org.apache.maven:maven-repository-metadata:2.2.1
|
||||
org.apache.maven:maven-settings:2.2.1
|
||||
org.apiguardian:apiguardian-api:1.1.0
|
||||
org.assertj:assertj-core:3.8.0
|
||||
org.bouncycastle:bcpkix-jdk15on:1.48
|
||||
org.bouncycastle:bcpkix-jdk15on:1.56
|
||||
org.bouncycastle:bcprov-jdk15on:1.48
|
||||
org.bouncycastle:bcprov-jdk15on:1.52
|
||||
org.bouncycastle:bcprov-jdk15on:1.56
|
||||
org.bouncycastle:bcprov-jdk15on:1.60
|
||||
org.bouncycastle:bcprov-jdk15on:1.65
|
||||
@@ -457,6 +516,9 @@ org.checkerframework:checker-qual:2.5.2
|
||||
org.codehaus.groovy:groovy-all:2.4.15
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.14
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.17
|
||||
org.codehaus.plexus:plexus-container-default:1.0-alpha-9-stable-1
|
||||
org.codehaus.plexus:plexus-interpolation:1.11
|
||||
org.codehaus.plexus:plexus-utils:1.5.15
|
||||
org.conscrypt:conscrypt-android:2.0.0
|
||||
org.eclipse.jdt.core.compiler:ecj:4.4
|
||||
org.eclipse.jdt.core.compiler:ecj:4.4.2
|
||||
@@ -465,6 +527,7 @@ org.glassfish.jaxb:jaxb-core:2.2.11
|
||||
org.glassfish.jaxb:jaxb-runtime:2.2.11
|
||||
org.glassfish.jaxb:txw2:2.2.11
|
||||
org.hamcrest:hamcrest-core:1.3
|
||||
org.hamcrest:hamcrest-library:1.3
|
||||
org.jacoco:org.jacoco.core:0.7.4.201502262128
|
||||
org.jacoco:org.jacoco.report:0.7.4.201502262128
|
||||
org.jdom:jdom2:2.0.6
|
||||
@@ -518,10 +581,12 @@ org.jetbrains.kotlin:kotlin-stdlib-common:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0
|
||||
@@ -549,30 +614,46 @@ org.opentest4j:opentest4j:1.2.0
|
||||
org.ow2.asm:asm-analysis:5.0.3
|
||||
org.ow2.asm:asm-analysis:5.1
|
||||
org.ow2.asm:asm-analysis:6.0
|
||||
org.ow2.asm:asm-analysis:7.0
|
||||
org.ow2.asm:asm-analysis:7.2
|
||||
org.ow2.asm:asm-commons:5.1
|
||||
org.ow2.asm:asm-commons:6.0
|
||||
org.ow2.asm:asm-commons:7.0
|
||||
org.ow2.asm:asm-commons:7.2
|
||||
org.ow2.asm:asm-debug-all:5.0.1
|
||||
org.ow2.asm:asm-tree:5.0.3
|
||||
org.ow2.asm:asm-tree:5.1
|
||||
org.ow2.asm:asm-tree:6.0
|
||||
org.ow2.asm:asm-tree:7.0
|
||||
org.ow2.asm:asm-tree:7.2
|
||||
org.ow2.asm:asm-util:5.1
|
||||
org.ow2.asm:asm-util:6.0
|
||||
org.ow2.asm:asm-util:7.0
|
||||
org.ow2.asm:asm-util:7.2
|
||||
org.ow2.asm:asm:5.0.3
|
||||
org.ow2.asm:asm:5.1
|
||||
org.ow2.asm:asm:6.0
|
||||
org.ow2.asm:asm:7.0
|
||||
org.ow2.asm:asm:7.2
|
||||
org.robolectric:annotations:4.3
|
||||
org.robolectric:annotations:4.4
|
||||
org.robolectric:junit:4.3
|
||||
org.robolectric:junit:4.4
|
||||
org.robolectric:pluginapi:4.3
|
||||
org.robolectric:pluginapi:4.4
|
||||
org.robolectric:plugins-maven-dependency-resolver:4.3
|
||||
org.robolectric:plugins-maven-dependency-resolver:4.4
|
||||
org.robolectric:resources:4.3
|
||||
org.robolectric:resources:4.4
|
||||
org.robolectric:robolectric:4.3
|
||||
org.robolectric:robolectric:4.4
|
||||
org.robolectric:sandbox:4.3
|
||||
org.robolectric:sandbox:4.4
|
||||
org.robolectric:shadowapi:4.3
|
||||
org.robolectric:shadowapi:4.4
|
||||
org.robolectric:shadows-framework:4.3
|
||||
org.robolectric:shadows-framework:4.4
|
||||
org.robolectric:utils-reflector:4.3
|
||||
org.robolectric:utils-reflector:4.4
|
||||
org.robolectric:utils:4.3
|
||||
org.robolectric:utils:4.4
|
||||
|
||||
@@ -67,6 +67,7 @@ https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/sav
|
||||
https://dl.google.com/dl/android/maven2/androidx/slidingpanelayout/slidingpanelayout/1.0.0/slidingpanelayout-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.0.0/swiperefreshlayout-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.1.0/swiperefreshlayout-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.2.0/monitor-1.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/test/monitor/1.3.0-rc03/monitor-1.3.0-rc03.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.0.0/transition-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.2.0-rc01/transition-1.2.0-rc01.pom
|
||||
@@ -80,6 +81,7 @@ https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedpa
|
||||
https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/viewpager2/viewpager2/1.0.0/viewpager2-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/webkit/webkit/1.4.0/webkit-1.4.0.pom
|
||||
https://dl.google.com/dl/android/maven2/android/arch/core/common/1.0.0/common-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/android/arch/lifecycle/common/1.0.0/common-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/android/arch/lifecycle/runtime/1.0.0/runtime-1.0.0.pom
|
||||
@@ -102,6 +104,7 @@ https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/
|
||||
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/26.0.2/support-annotations-26.0.2.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/26.1.0/support-annotations-26.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/27.0.1/support-annotations-27.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/support/support-annotations/28.0.0/support-annotations-28.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/support/support-compat/26.0.2/support-compat-26.0.2.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/support/support-compat/27.0.1/support-compat-27.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/android/support/support-core-ui/26.0.2/support-core-ui-26.0.2.pom
|
||||
@@ -265,22 +268,52 @@ https://dl.google.com/dl/android/maven2/com/android/tools/sdk-common/26.1.4/sdk-
|
||||
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.3.1/sdk-common-26.3.1.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/google/android/datatransport/transport-api/2.2.0/transport-api-2.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-api/2.2.1/transport-api-2.2.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-api/3.0.0/transport-api-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-backend-cct/2.3.3/transport-backend-cct-2.3.3.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-backend-cct/3.0.0/transport-backend-cct-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/2.2.0/transport-runtime-2.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/2.2.5/transport-runtime-2.2.5.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/datatransport/transport-runtime/3.0.0/transport-runtime-3.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-basement/17.0.0/play-services-basement-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-base/17.0.0/play-services-base-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-cloud-messaging/16.0.0/play-services-cloud-messaging-16.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-cloud-messaging/17.0.0/play-services-cloud-messaging-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-iid/17.0.0/play-services-iid-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-stats/17.0.0/play-services-stats-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-tasks/17.0.0/play-services-tasks-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/strict-version-matcher-plugin/1.2.2/strict-version-matcher-plugin-1.2.2.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.2.0-alpha03/material-1.2.0-alpha03.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-annotations/16.0.0/firebase-annotations-16.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common/19.5.0/firebase-common-19.5.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common/20.0.0/firebase-common-20.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-components/16.1.0/firebase-components-16.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-components/17.0.0/firebase-components-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-datatransport/17.0.10/firebase-datatransport-17.0.10.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-datatransport/18.0.0/firebase-datatransport-18.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders-json/17.1.0/firebase-encoders-json-17.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders-json/18.0.0/firebase-encoders-json-18.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders/16.1.0/firebase-encoders-16.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-encoders/17.0.0/firebase-encoders-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid-interop/17.1.0/firebase-iid-interop-17.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid/21.1.0/firebase-iid-21.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations-interop/16.0.1/firebase-installations-interop-16.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations-interop/17.0.0/firebase-installations-interop-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations/16.3.5/firebase-installations-16.3.5.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-installations/17.0.0/firebase-installations-17.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measurement-connector/18.0.0/firebase-measurement-connector-18.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-measurement-connector/19.0.0/firebase-measurement-connector-19.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messaging/21.1.0/firebase-messaging-21.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-messaging/23.0.0/firebase-messaging-23.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/com/google/gms/google-services/4.3.10/google-services-4.3.10.pom
|
||||
https://jitpack.io/com/github/status-im/function/0.0.1/function-0.0.1.pom
|
||||
https://jitpack.io/com/github/status-im/status-keycard-java/android/3.0.4/android-3.0.4.pom
|
||||
https://jitpack.io/com/github/status-im/status-keycard-java/lib/3.0.4/lib-3.0.4.pom
|
||||
https://jitpack.io/com/github/wix-playground/ahbottomnavigation/3.3.0/ahbottomnavigation-3.3.0.pom
|
||||
https://jitpack.io/com/github/wix-playground/reflow-animator/1.0.6/reflow-animator-1.0.6.pom
|
||||
https://jitpack.io/com/github/yalantis/ucrop/2.2.6-native/ucrop-2.2.6-native.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/flipper/flipper/0.54.0/flipper-0.54.0.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/fresco/drawee/2.2.0/drawee-2.2.0.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/fresco/fbcore/2.2.0/fbcore-2.2.0.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/fresco/fresco/2.2.0/fresco-2.2.0.pom
|
||||
@@ -290,15 +323,22 @@ https://plugins.gradle.org/m2/com/facebook/fresco/memory-type-java/2.2.0/memory-
|
||||
https://plugins.gradle.org/m2/com/facebook/fresco/memory-type-native/2.2.0/memory-type-native-2.2.0.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/fresco/nativeimagefilters/2.2.0/nativeimagefilters-2.2.0.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/fresco/stetho/2.2.0/stetho-2.2.0.pom
|
||||
https://plugins.gradle.org/m2/com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1.pom
|
||||
https://repo.maven.apache.org/maven2/antlr/antlr/2.7.7/antlr-2.7.7.pom
|
||||
https://repo.maven.apache.org/maven2/aopalliance/aopalliance/1.0/aopalliance-1.0.pom
|
||||
https://repo.maven.apache.org/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom
|
||||
https://repo.maven.apache.org/maven2/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom
|
||||
https://repo.maven.apache.org/maven2/commons-cli/commons-cli/1.2/commons-cli-1.2.pom
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.2/commons-codec-1.2.pom
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.4/commons-codec-1.4.pom
|
||||
https://repo.maven.apache.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6.pom
|
||||
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.15/commons-codec-1.15.pom
|
||||
https://repo.maven.apache.org/maven2/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.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.6/commons-io-2.6.pom
|
||||
https://repo.maven.apache.org/maven2/commons-io/commons-io/2.11.0/commons-io-2.11.0.pom
|
||||
https://repo.maven.apache.org/maven2/commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.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/com/adobe/xmp/xmpcore/5.1.2/xmpcore-5.1.2.pom
|
||||
@@ -362,7 +402,10 @@ https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.3.1/sdk-com
|
||||
https://repo.maven.apache.org/maven2/com/android/tools/sdk-common/24.5.0/sdk-common-24.5.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/drewnoakes/metadata-extractor/2.9.1/metadata-extractor-2.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/conceal/conceal/1.1.3/conceal-1.1.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/fbjni/fbjni-java-only/0.0.3/fbjni-java-only-0.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/fbjni/fbjni/0.0.2/fbjni-0.0.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/flipper/flipper-fresco-plugin/0.54.0/flipper-fresco-plugin-0.54.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/flipper/flipper/0.54.0/flipper-0.54.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-base/2.2.0/animated-base-2.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-drawable/2.2.0/animated-drawable-2.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/fresco/animated-gif/2.2.0/animated-gif-2.2.0.pom
|
||||
@@ -390,6 +433,7 @@ https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.6.0/soload
|
||||
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.8.2/soloader-0.8.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/soloader/soloader/0.9.0/soloader-0.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/stetho/stetho/1.3.1/stetho-1.3.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/facebook/yoga/proguard-annotations/1.14.1/proguard-annotations-1.14.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/annotations/4.12.0/annotations-4.12.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/compiler/4.12.0/compiler-4.12.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/bumptech/glide/disklrucache/4.12.0/disklrucache-4.12.0.pom
|
||||
@@ -400,12 +444,16 @@ https://repo.maven.apache.org/maven2/com/github/clans/fab/1.6.4/fab-1.6.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/github/gundy/semver4j/0.16.4/semver4j-0.16.4.pom
|
||||
https://repo.maven.apache.org/maven2/com/googlecode/json-simple/json-simple/1.1/json-simple-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/android/apps/common/testing/accessibility/framework/accessibility-test-framework/2.1/accessibility-test-framework-2.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/auto-common/0.8/auto-common-0.8.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/3/auto-parent-3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/5/auto-parent-5.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/auto-parent/6/auto-parent-6.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/service/auto-service/1.0-rc4/auto-service-1.0-rc4.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.6.2/auto-value-annotations-1.6.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.8.2/auto-value-annotations-1.8.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-annotations/1.9/auto-value-annotations-1.9.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.6.2/auto-value-parent-1.6.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.8.2/auto-value-parent-1.8.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value-parent/1.9/auto-value-parent-1.9.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/auto/value/auto-value/1.5.2/auto-value-1.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom
|
||||
@@ -421,17 +469,19 @@ https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.7/gson-2.7.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.0/gson-2.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.5/gson-2.8.5.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/code/gson/gson/2.8.6/gson-2.8.6.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/dagger/dagger/2.24/dagger-2.24.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.0.18/error_prone_annotations-2.0.18.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.1.2/error_prone_annotations-2.1.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.2.0/error_prone_annotations-2.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_annotations/2.3.1/error_prone_annotations-2.3.1.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_parent/2.0.18/error_prone_parent-2.0.18.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.1.2/error_prone_parent-2.1.2.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
|
||||
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/google/1/google-1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/google/5/google-5.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/17.0/guava-parent-17.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/22.0/guava-parent-22.0.pom
|
||||
@@ -448,12 +498,15 @@ https://repo.maven.apache.org/maven2/com/google/guava/guava/26.0-jre/guava-26.0-
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/27.0.1-jre/guava-27.0.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/inject/guice-parent/5.1.0/guice-parent-5.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/inject/guice/5.1.0/guice-5.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs-parent/1.1/jimfs-parent-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/jimfs/jimfs/1.1/jimfs-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-bom/4.0.0-rc-2/protobuf-bom-4.0.0-rc-2.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java-util/3.4.0/protobuf-java-util-3.4.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/2.6.1/protobuf-java-2.6.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.0.0/protobuf-java-3.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/3.4.0/protobuf-java-3.4.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/4.0.0-rc-2/protobuf-java-4.0.0-rc-2.pom
|
||||
@@ -472,17 +525,17 @@ https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-tasks/1.4.0/bolts-tas
|
||||
https://repo.maven.apache.org/maven2/com/squareup/assertj/assertj-android/1.1.1/assertj-android-1.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/javapoet/1.8.0/javapoet-1.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/javawriter/2.5.0/javawriter-2.5.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-tls/3.12.12/okhttp-tls-3.12.12.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-urlconnection/3.12.12/okhttp-urlconnection-3.12.12.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.9.1/okhttp-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.1/okhttp-3.12.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.12/okhttp-3.12.12.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.2/okhttp-5.0.0-alpha.2.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.5/okhttp-5.0.0-alpha.5.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.9.1/parent-3.9.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.1/parent-3.12.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/parent/3.12.12/parent-3.12.12.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio-parent/1.15.0/okio-parent-1.15.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/okio-1.15.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/2.9.0/okio-2.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.0.0/okio-3.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/sun/activation/all/1.2.0/all-1.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/sun/activation/all/2.0.1/all-2.0.1.pom
|
||||
@@ -513,20 +566,28 @@ https://repo.maven.apache.org/maven2/com/tunnelvisionlabs/antlr4/4.5/antlr4-4.5.
|
||||
https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/3.4.3/gradle-download-task-3.4.3.pom
|
||||
https://repo.maven.apache.org/maven2/de/undercouch/gradle-download-task/4.0.2/gradle-download-task-4.0.2.pom
|
||||
https://repo.maven.apache.org/maven2/it/unimi/dsi/fastutil/7.2.0/fastutil-7.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/jakarta/activation/jakarta.activation-api/2.1.0-RC1/jakarta.activation-api-2.1.0-RC1.pom
|
||||
https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api-parent/4.0.0-RC2/jakarta.xml.bind-api-parent-4.0.0-RC2.pom
|
||||
https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/4.0.0-RC2/jakarta.xml.bind-api-4.0.0-RC2.pom
|
||||
https://repo.maven.apache.org/maven2/jakarta/activation/jakarta.activation-api/2.1.0/jakarta.activation-api-2.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api-parent/4.0.0-RC3/jakarta.xml.bind-api-parent-4.0.0-RC3.pom
|
||||
https://repo.maven.apache.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api/4.0.0-RC3/jakarta.xml.bind-api-4.0.0-RC3.pom
|
||||
https://repo.maven.apache.org/maven2/javax/activation/activation/1.1/activation-1.1.pom
|
||||
https://repo.maven.apache.org/maven2/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/1.2/javax.annotation-api-1.2.pom
|
||||
https://repo.maven.apache.org/maven2/javax/annotation/javax.annotation-api/1.3.2/javax.annotation-api-1.3.2.pom
|
||||
https://repo.maven.apache.org/maven2/javax/el/javax.el-api/3.0.1-b06/javax.el-api-3.0.1-b06.pom
|
||||
https://repo.maven.apache.org/maven2/javax/enterprise/cdi-api/1.2/cdi-api-1.2.pom
|
||||
https://repo.maven.apache.org/maven2/javax/enterprise/cdi-api/2.0-PFD2/cdi-api-2.0-PFD2.pom
|
||||
https://repo.maven.apache.org/maven2/javax/inject/javax.inject/1/javax.inject-1.pom
|
||||
https://repo.maven.apache.org/maven2/javax/interceptor/javax.interceptor-api/1.2.2/javax.interceptor-api-1.2.2.pom
|
||||
https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api-parent/2.4.0-b180830.0359/jaxb-api-parent-2.4.0-b180830.0359.pom
|
||||
https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.2.12-b140109.1041/jaxb-api-2.2.12-b140109.1041.pom
|
||||
https://repo.maven.apache.org/maven2/javax/xml/bind/jaxb-api/2.4.0-b180830.0359/jaxb-api-2.4.0-b180830.0359.pom
|
||||
https://repo.maven.apache.org/maven2/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.pom
|
||||
https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.pom
|
||||
https://repo.maven.apache.org/maven2/junit/junit/4.12/junit-4.12.pom
|
||||
https://repo.maven.apache.org/maven2/junit/junit/4.13.2/junit-4.13.2.pom
|
||||
https://repo.maven.apache.org/maven2/me/zhanghai/android/materialprogressbar/library/1.4.2/library-1.4.2.pom
|
||||
https://repo.maven.apache.org/maven2/nekohtml/nekohtml/1.9.6.2/nekohtml-1.9.6.2.pom
|
||||
https://repo.maven.apache.org/maven2/nekohtml/xercesMinimal/1.9.6.2/xercesMinimal-1.9.6.2.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.9.0/byte-buddy-agent-1.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.9.10/byte-buddy-agent-1.9.10.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-agent/1.10.18/byte-buddy-agent-1.10.18.pom
|
||||
@@ -569,18 +630,27 @@ https://repo.maven.apache.org/maven2/org/antlr/antlr-master/3.5.2/antlr-master-3
|
||||
https://repo.maven.apache.org/maven2/org/antlr/antlr-runtime/3.5.2/antlr-runtime-3.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/antlr/antlr/3.5.2/antlr-3.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/ant/ant-launcher/1.8.0/ant-launcher-1.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/ant/ant-parent/1.8.0/ant-parent-1.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/ant/ant/1.8.0/ant-1.8.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/1/apache-1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/3/apache-3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/4/apache-4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/5/apache-5.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/9/apache-9.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/13/apache-13.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/15/apache-15.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/16/apache-16.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/18/apache-18.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/19/apache-19.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/21/apache-21.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/apache/23/apache-23.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-compress/1.12/commons-compress-1.12.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.3.2/commons-lang3-3.3.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.9/commons-lang3-3.9.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/5/commons-parent-5.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/11/commons-parent-11.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/22/commons-parent-22.pom
|
||||
@@ -590,8 +660,13 @@ https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/33/common
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/34/commons-parent-34.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/35/commons-parent-35.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/commons/commons-parent/39/commons-parent-39.pom
|
||||
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/47/commons-parent-47.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/geronimo/genesis/genesis-default-flava/2.3/genesis-default-flava-2.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/geronimo/genesis/genesis-java8-flava/2.3/genesis-java8-flava-2.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/geronimo/genesis/genesis/2.3/genesis-2.3.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
|
||||
@@ -610,7 +685,7 @@ https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-co
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.5/httpcomponents-core-4.4.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.6/httpcomponents-core-4.4.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.10/httpcomponents-core-4.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.14/httpcomponents-core-4.4.14.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.15/httpcomponents-core-4.4.15.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-parent/10/httpcomponents-parent-10.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcomponents-parent/11/httpcomponents-parent-11.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.pom
|
||||
@@ -618,12 +693,64 @@ https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.2.5/ht
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.5/httpcore-4.4.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.6/httpcore-4.4.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.10/httpcore-4.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.14/httpcore-4.4.14.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpcore/4.4.15/httpcore-4.4.15.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5.2/httpmime-4.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/httpmime/4.5.6/httpmime-4.5.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/project/4.1.1/project-4.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/httpcomponents/project/7/project-7.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-ant-tasks/2.1.3/maven-ant-tasks-2.1.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact-manager/2.2.1/maven-artifact-manager-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-artifact/3.8.4/maven-artifact-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-builder-support/3.8.4/maven-builder-support-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-compat/3.8.4/maven-compat-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-core/3.8.4/maven-core-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-error-diagnostics/2.2.1/maven-error-diagnostics-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-model-builder/3.8.4/maven-model-builder-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-model/3.8.4/maven-model-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/10/maven-parent-10.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/11/maven-parent-11.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/19/maven-parent-19.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-parent/34/maven-parent-34.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-api/3.8.4/maven-plugin-api-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-registry/2.2.1/maven-plugin-registry-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-profile/2.2.1/maven-profile-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-project-builder/3.0-alpha-2/maven-project-builder-3.0-alpha-2.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/2.2.1/maven-project-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-project/3.0-alpha-2/maven-project-3.0-alpha-2.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/2.2.1/maven-repository-metadata-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-repository-metadata/3.8.4/maven-repository-metadata-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-resolver-provider/3.8.4/maven-resolver-provider-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings-builder/3.8.4/maven-settings-builder-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/2.2.1/maven-settings-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven-settings/3.8.4/maven-settings-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven/2.2.1/maven-2.2.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven/3.0-alpha-2/maven-3.0-alpha-2.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/maven/3.8.4/maven-3.8.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-api/1.7.3/maven-resolver-api-1.7.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-impl/1.7.3/maven-resolver-impl-1.7.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-named-locks/1.7.3/maven-resolver-named-locks-1.7.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-spi/1.7.3/maven-resolver-spi-1.7.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver-util/1.7.3/maven-resolver-util-1.7.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/resolver/maven-resolver/1.7.3/maven-resolver-1.7.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-components/34/maven-shared-components-34.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/shared/maven-shared-utils/3.3.4/maven-shared-utils-3.3.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-file/1.0-beta-6/wagon-file-1.0-beta-6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-file/3.5.1/wagon-file-3.5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-lightweight/1.0-beta-6/wagon-http-lightweight-1.0-beta-6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-lightweight/3.5.1/wagon-http-lightweight-3.5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shared/1.0-beta-6/wagon-http-shared-1.0-beta-6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-http-shared/3.5.1/wagon-http-shared-3.5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-providers/1.0-beta-6/wagon-providers-1.0-beta-6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-providers/3.5.1/wagon-providers-3.5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-provider-api/3.5.1/wagon-provider-api-3.5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon/3.5.1/wagon-3.5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/xbean/xbean-reflect/4.20/xbean-reflect-4.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/apache/xbean/xbean/4.20/xbean-4.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/assertj/assertj-core/1.7.1/assertj-core-1.7.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/assertj/assertj-core/3.8.0/assertj-core-3.8.0.pom
|
||||
@@ -632,22 +759,63 @@ https://repo.maven.apache.org/maven2/org/assertj/assertj-parent-pom/2.1.6/assert
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcpkix-jdk15on/1.56/bcpkix-jdk15on-1.56.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.52/bcprov-jdk15on-1.52.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.56/bcprov-jdk15on-1.56.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.65/bcprov-jdk15on-1.65.pom
|
||||
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.70/bcprov-jdk15on-1.70.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/2.5.2/checker-qual-2.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.19.0/checker-qual-3.19.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.21.2/checker-qual-3.21.2.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-all/2.4.15/groovy-all-2.4.15.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.17/animal-sniffer-annotations-1.17.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.20/animal-sniffer-annotations-1.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-annotations/1.21/animal-sniffer-annotations-1.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.14/animal-sniffer-parent-1.14.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.17/animal-sniffer-parent-1.17.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.20/animal-sniffer-parent-1.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/animal-sniffer-parent/1.21/animal-sniffer-parent-1.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/40/mojo-parent-40.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/61/mojo-parent-61.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/mojo/mojo-parent/65/mojo-parent-65.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-cipher/2.0/plexus-cipher-2.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.4/plexus-classworlds-2.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.5.2/plexus-classworlds-2.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.5.6/plexus-component-annotations-1.5.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/1.6/plexus-component-annotations-1.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/2.1.0/plexus-component-annotations-2.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-component-annotations/2.1.1/plexus-component-annotations-2.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.5.6/plexus-containers-1.5.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.6/plexus-containers-1.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/2.1.0/plexus-containers-2.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/2.1.1/plexus-containers-2.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-interpolation/1.26/plexus-interpolation-1.26.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-sec-dispatcher/2.0/plexus-sec-dispatcher-2.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.18/plexus-utils-3.0.18.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.0.24/plexus-utils-3.0.24.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/3.4.1/plexus-utils-3.4.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/3.3.2/plexus-3.3.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/4.0/plexus-4.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/5.1/plexus-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/6.5/plexus-6.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus/8/plexus-8.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/woodstox/wstx-asl/3.2.6/wstx-asl-3.2.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/woodstox/wstx-asl/4.0.6/wstx-asl-4.0.6.pom
|
||||
https://repo.maven.apache.org/maven2/org/conscrypt/conscrypt-android/2.0.0/conscrypt-android-2.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/easymock/easymockclassextension/3.2/easymockclassextension-3.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/easymock/easymock-parent/3.2/easymock-parent-3.2.pom
|
||||
@@ -658,6 +826,10 @@ https://repo.maven.apache.org/maven2/org/eclipse/ee4j/project/1.0.7/project-1.0.
|
||||
https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4.2/ecj-4.4.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.4/ecj-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/eclipse/jdt/core/compiler/ecj/4.6.1/ecj-4.6.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.5/org.eclipse.sisu.inject-0.3.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.5/org.eclipse.sisu.plexus-0.3.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/eclipse/sisu/sisu-inject/0.3.5/sisu-inject-0.3.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/eclipse/sisu/sisu-plexus/0.3.5/sisu-plexus-0.3.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/2.2.11/jaxb-bom-2.2.11.pom
|
||||
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-bom/3.0.2/jaxb-bom-3.0.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core-2.2.11.pom
|
||||
@@ -667,6 +839,7 @@ https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/2.2.11/txw2-2.2.11.
|
||||
https://repo.maven.apache.org/maven2/org/glassfish/jaxb/txw2/3.0.2/txw2-3.0.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-library/1.3/hamcrest-library-1.3.pom
|
||||
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
|
||||
@@ -674,6 +847,8 @@ https://repo.maven.apache.org/maven2/org/jacoco/org.jacoco.build/0.8.7/org.jacoc
|
||||
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.7/org.jacoco.core-0.8.7.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/jboss/weld/weld-parent/26/weld-parent-26.pom
|
||||
https://repo.maven.apache.org/maven2/org/jboss/weld/weld-parent/36/weld-parent-36.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
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/intellij/deps/trove4j/1.0.20181211/trove4j-1.0.20181211.pom
|
||||
@@ -728,17 +903,19 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.50/kotlin-stdlib-common-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.3.71/kotlin-stdlib-common-1.3.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.10/kotlin-stdlib-common-1.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.21/kotlin-stdlib-common-1.4.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.30/kotlin-stdlib-common-1.4.30.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.31/kotlin-stdlib-common-1.4.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.31/kotlin-stdlib-common-1.5.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.10/kotlin-stdlib-common-1.6.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.2.71/kotlin-stdlib-jdk7-1.2.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.20/kotlin-stdlib-jdk7-1.3.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.3.50/kotlin-stdlib-jdk7-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.10/kotlin-stdlib-jdk7-1.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.31/kotlin-stdlib-jdk7-1.4.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.2.71/kotlin-stdlib-jdk8-1.2.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.20/kotlin-stdlib-jdk8-1.3.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.3.50/kotlin-stdlib-jdk8-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.10/kotlin-stdlib-jdk8-1.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.31/kotlin-stdlib-jdk8-1.4.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre7/1.2.0/kotlin-stdlib-jre7-1.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jre8/1.2.0/kotlin-stdlib-jre8-1.2.0.pom
|
||||
@@ -752,7 +929,6 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.31/k
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.50/kotlin-stdlib-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.3.71/kotlin-stdlib-1.3.71.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.10/kotlin-stdlib-1.4.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.21/kotlin-stdlib-1.4.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.30/kotlin-stdlib-1.4.30.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.4.31/kotlin-stdlib-1.4.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-test-common/1.4.31/kotlin-test-common-1.4.31.pom
|
||||
@@ -762,6 +938,9 @@ https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.4.31/
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/1.4.31/kotlin-util-klib-1.4.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/trove4j/trove4j/20160824/trove4j-20160824.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.0/junit-bom-5.7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.1/junit-bom-5.7.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.7.2/junit-bom-5.7.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/junit-bom/5.8.2/junit-bom-5.8.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.7.0/junit-jupiter-api-5.7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/junit/platform/junit-platform-commons/1.7.0/junit-platform-commons-1.7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/1.7.7/stax-ex-1.7.7.pom
|
||||
@@ -779,10 +958,12 @@ https://repo.maven.apache.org/maven2/org/opentest4j/opentest4j/1.2.0/opentest4j-
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.1/asm-analysis-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/6.0/asm-analysis-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.0/asm-analysis-7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/7.2/asm-analysis-7.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/9.2/asm-analysis-9.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/5.1/asm-commons-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/6.0/asm-commons-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.0/asm-commons-7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/7.2/asm-commons-7.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-commons/9.2/asm-commons-9.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.pom
|
||||
@@ -795,33 +976,73 @@ https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/6.0_BETA/asm-parent-
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.1/asm-tree-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/6.0/asm-tree-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.0/asm-tree-7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/7.2/asm-tree-7.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/9.2/asm-tree-9.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/5.1/asm-util-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/6.0/asm-util-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.0/asm-util-7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-util/7.2/asm-util-7.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.0.3/asm-5.0.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.1/asm-5.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/6.0/asm-6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.0/asm-7.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/7.2/asm-7.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/9.2/asm-9.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.5/ow2-1.5.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/annotations/4.3/annotations-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/annotations/4.4/annotations-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/junit/4.3/junit-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/junit/4.4/junit-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/pluginapi/4.3/pluginapi-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/pluginapi/4.4/pluginapi-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.3/plugins-maven-dependency-resolver-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/plugins-maven-dependency-resolver/4.4/plugins-maven-dependency-resolver-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/resources/4.3/resources-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/resources/4.4/resources-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/robolectric/4.3/robolectric-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/robolectric/4.4/robolectric-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/sandbox/4.3/sandbox-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/sandbox/4.4/sandbox-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.3/shadowapi-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/shadowapi/4.4/shadowapi-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.3/shadows-framework-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/shadows-framework/4.4/shadows-framework-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.3/utils-reflector-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/utils-reflector/4.4/utils-reflector-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/utils/4.3/utils-4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/robolectric/utils/4.4/utils-4.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/2.0.0-alpha5/jcl-over-slf4j-2.0.0-alpha5.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha5/slf4j-api-2.0.0-alpha5.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/2.0.0-alpha5/slf4j-jdk14-2.0.0-alpha5.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha5/slf4j-parent-2.0.0-alpha5.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/2.0.0-alpha6/jcl-over-slf4j-2.0.0-alpha6.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/jul-to-slf4j/2.0.0-alpha6/jul-to-slf4j-2.0.0-alpha6.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha6/slf4j-api-2.0.0-alpha6.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/2.0.0-alpha6/slf4j-jdk14-2.0.0-alpha6.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha6/slf4j-parent-2.0.0-alpha6.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-simple/2.0.0-alpha6/slf4j-simple-2.0.0-alpha6.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/buildsupport/5/buildsupport-5.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/buildsupport/12/buildsupport-12.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/public-parent/5/public-parent-5.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/buildsupport/public-parent/12/public-parent-12.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/3/forge-parent-3.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/6/forge-parent-6.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/10/forge-parent-10.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/forge/forge-parent/38/forge-parent-38.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/4/oss-parent-4.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/7/oss-parent-7.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/cglib/3.1.1/cglib-3.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/guice-parent/2.9.4/guice-parent-2.9.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/guice-parent/4.2.0/guice-parent-4.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/inject/wrappers/2.6.0/wrappers-2.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-guice/2.9.4/sisu-guice-2.9.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-guice/4.2.0/sisu-guice-4.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-inject-bean/2.6.0/sisu-inject-bean-2.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-inject-plexus/2.6.0/sisu-inject-plexus-2.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-inject/2.6.0/sisu-inject-2.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/sisu/sisu-parent/2.6.0/sisu-parent-2.6.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/spice/model-builder/1.10/model-builder-1.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/10/spice-parent-10.pom
|
||||
https://repo.maven.apache.org/maven2/org/sonatype/spice/spice-parent/17/spice-parent-17.pom
|
||||
https://repo.maven.apache.org/maven2/stax/stax-api/1.0.1/stax-api-1.0.1.pom
|
||||
https://repo.maven.apache.org/maven2/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.pom
|
||||
https://repo.maven.apache.org/maven2/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.pom
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
app
|
||||
react-native-background-timer
|
||||
react-native-blob-util
|
||||
react-native-camera-kit
|
||||
react-native-community_async-storage
|
||||
react-native-community_audio-toolkit
|
||||
@@ -24,6 +25,7 @@ react-native-linear-gradient
|
||||
react-native-mail
|
||||
react-native-navigation
|
||||
react-native-nfc-manager
|
||||
react-native-notifications
|
||||
react-native-permissions
|
||||
react-native-reanimated
|
||||
react-native-safe-area-context
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
"dependencies": {
|
||||
"@react-native-community/async-storage": "^1.11.0",
|
||||
"@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#v2.0.3-status-v6",
|
||||
"@react-native-community/blur": "^3.6.0",
|
||||
"@react-native-community/cameraroll": "git+https://github.com/status-im/react-native-cameraroll.git#v4.0.4-status.0",
|
||||
"@react-native-community/clipboard": "^1.2.2",
|
||||
"@react-native-community/hooks": "^2.5.1",
|
||||
@@ -20,6 +21,7 @@
|
||||
"@react-native-community/netinfo": "^4.4.0",
|
||||
"@react-native-community/push-notification-ios": "^1.4.1",
|
||||
"@react-native-community/slider": "^3.0.0",
|
||||
"@walletconnect/client": "^2.0.0-beta.23",
|
||||
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status",
|
||||
"buffer": "^5.4.2",
|
||||
"chance": "^1.1.0",
|
||||
@@ -27,33 +29,37 @@
|
||||
"emojilib": "^2.4.0",
|
||||
"eth-phishing-detect": "^1.1.13",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"hermes-engine": "0.5.2-rc1",
|
||||
"hi-base32": "^0.5.0",
|
||||
"i18n-js": "^3.3.0",
|
||||
"node-libs-react-native": "^1.2.1",
|
||||
"qrcode": "^1.4.1",
|
||||
"react": "16.13.1",
|
||||
"react-dom": "^16.4.2",
|
||||
"react-native": "0.63.4",
|
||||
"react-native-background-timer": "^2.1.1",
|
||||
"react-native-blob-util": "^0.13.18",
|
||||
"react-native-camera-kit": "^8.0.4",
|
||||
"react-native-config": "git+https://github.com/status-im/react-native-config.git#v1.4.2-status",
|
||||
"react-native-dark-mode": "^0.2.2",
|
||||
"react-native-device-info": "^7.4.0",
|
||||
"react-native-dialogs": "^1.0.4",
|
||||
"react-native-draggable-flatlist": "^3.0.3",
|
||||
"react-native-fast-image": "8.5.11",
|
||||
"react-native-fast-image": "^8.5.11",
|
||||
"react-native-fetch-polyfill": "^1.1.2",
|
||||
"react-native-fs": "^2.14.1",
|
||||
"react-native-gesture-handler": "^1.8.0",
|
||||
"react-native-haptic-feedback": "^1.9.0",
|
||||
"react-native-image-crop-picker": "git+https://github.com/status-im/react-native-image-crop-picker.git#v0.36.2-status.0",
|
||||
"react-native-image-resizer": "^1.2.3",
|
||||
"react-native-image-viewing": "git+https://github.com/Ferossgp/react-native-image-viewing.git#v0.2.1",
|
||||
"react-native-image-viewing": "git+https://github.com/status-im/react-native-image-viewing.git#v0.2.1.status",
|
||||
"react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-5-status",
|
||||
"react-native-languages": "^3.0.2",
|
||||
"react-native-linear-gradient": "^2.5.6",
|
||||
"react-native-mail": "^6.1.1",
|
||||
"react-native-navigation": "^7.13.0",
|
||||
"react-native-notifications": "^4.1.3",
|
||||
"react-native-permissions": "^2.1.5",
|
||||
"react-native-randombytes": "^3.6.1",
|
||||
"react-native-reanimated": "^2.1.0",
|
||||
"react-native-redash": "^16.0.11",
|
||||
"react-native-safe-area-context": "^2.0.0",
|
||||
@@ -63,7 +69,7 @@
|
||||
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#v2.5.37",
|
||||
"react-native-svg": "^9.8.4",
|
||||
"react-native-touch-id": "^4.4.1",
|
||||
"react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v11.3.0-status",
|
||||
"react-native-webview": "git+https://github.com/status-im/react-native-webview.git#v11.16.0-status",
|
||||
"rn-emoji-keyboard": "git+https://github.com/status-im/rn-emoji-keyboard.git#v0.4.2",
|
||||
"tdigest": "^0.1.1",
|
||||
"web3-utils": "^1.2.1"
|
||||
|
||||
@@ -22,5 +22,10 @@ module.exports = {
|
||||
ios: null,
|
||||
},
|
||||
},
|
||||
'@react-native-community/blur': {
|
||||
platforms: {
|
||||
android: null,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
After Width: | Height: | Size: 469 B |
|
After Width: | Height: | Size: 637 B |
|
After Width: | Height: | Size: 386 B |
|
After Width: | Height: | Size: 539 B |
|
Before Width: | Height: | Size: 338 B After Width: | Height: | Size: 249 B |
|
Before Width: | Height: | Size: 467 B After Width: | Height: | Size: 323 B |
|
After Width: | Height: | Size: 338 B |
|
After Width: | Height: | Size: 467 B |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 9.2 KiB |
@@ -107,6 +107,7 @@
|
||||
}
|
||||
else
|
||||
{
|
||||
if (window.statusAppDebug) { console.log("resolve " + callback.method + " :" + JSON.stringify(data.result.result)); }
|
||||
callback.resolve(data.result.result);
|
||||
}
|
||||
}
|
||||
@@ -239,6 +240,7 @@
|
||||
|
||||
return new Promise(function (resolve, reject) {
|
||||
callbacks[messageId] = {beta: true,
|
||||
method: method,
|
||||
resolve: resolve,
|
||||
reject: reject};
|
||||
});
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
# Used by Clojure to condition code and Gradle to make dependencies optional
|
||||
sed -i -e '$aGOOGLE_FREE=1' .env.release
|
||||
|
||||
# remove react-native-notifications(uses google dependencies) and google-services.json for the fdroid-build
|
||||
yarn remove react-native-notifications
|
||||
rm android/app/google-services.json
|
||||
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
if [[ -z $(git diff --cached --name-only -r | grep status-go-version.json) ]]; then
|
||||
exit 0 # No status-go-version.json changes found.
|
||||
fi
|
||||
|
||||
MERGE_BASE=$(git merge-base -a develop "$(git rev-parse --abbrev-ref HEAD)" develop)
|
||||
GO_COMMIT_MERGE_BASE=$(git show "${MERGE_BASE}":status-go-version.json | jq -r '."commit-sha1"')
|
||||
GO_COMMIT_CURRENT=$(jq -r '."commit-sha1"' status-go-version.json)
|
||||
GITHUB_LINK_PREFIX="https://github.com/status-im/status-go/compare/"
|
||||
# Link to the current StatusGo changelog being updated.
|
||||
GITHUB_LINK="${GITHUB_LINK_PREFIX}${GO_COMMIT_MERGE_BASE}...${GO_COMMIT_CURRENT}"
|
||||
|
||||
COMMIT_MSG_FILE=$1
|
||||
# Check if the commit message already contains the link (rebase) and update otherwise insert into line2
|
||||
if ! grep -qF "${GITHUB_LINK_PREFIX}" "${COMMIT_MSG_FILE}" >/dev/null; then
|
||||
sed -in "2i${GITHUB_LINK}\n" "${COMMIT_MSG_FILE}"
|
||||
else
|
||||
sed -in "s;^${GITHUB_LINK_PREFIX}.*$;${GITHUB_LINK};" "${COMMIT_MSG_FILE}"
|
||||
fi
|
||||
@@ -52,6 +52,12 @@ fi
|
||||
if [[ -n "${INFURA_TOKEN}" ]]; then
|
||||
append_env_export 'INFURA_TOKEN'
|
||||
fi
|
||||
|
||||
# Used by Clojure at compile time for remove import of react-native-notifications for fdroid release
|
||||
if [[ -n "${READER_FEATURES}" ]]; then
|
||||
append_env_export 'READER_FEATURES'
|
||||
fi
|
||||
|
||||
# If no secrets were passed there's no need to pass the 'secretsFile'.
|
||||
if [[ -s "${SECRETS_FILE_PATH}" ]]; then
|
||||
nixOpts+=("--argstr" "secretsFile" "${SECRETS_FILE_PATH}")
|
||||
|
||||
@@ -64,7 +64,8 @@
|
||||
:static-fns true
|
||||
:fn-invoke-direct true
|
||||
:optimizations :advanced
|
||||
:js-options {:js-provider :closure}}}}
|
||||
:js-options {:js-provider :closure}
|
||||
:reader-features #{#shadow/env ["READER_FEATURES" :as :keyword :default :cljs]}}}}
|
||||
;; the tests are ran with node, react-native dependencies are mocked
|
||||
;; by using node --require override.js, which uses the node-library
|
||||
;; produced by the target :mocks below and redefines node require
|
||||
|
||||
@@ -67,7 +67,9 @@
|
||||
:Properties #{}
|
||||
:create (fn [])
|
||||
:configureNext (fn [])}
|
||||
:requireNativeComponent (fn [] {:propTypes ""})}))
|
||||
:requireNativeComponent (fn [] {:propTypes ""})
|
||||
:Appearance {:getColorScheme (fn [])
|
||||
:addChangeListener (fn [])}}))
|
||||
|
||||
(set! js/ReactNative react-native)
|
||||
|
||||
@@ -100,7 +102,6 @@
|
||||
(def safe-area-context (clj->js {:SafeAreaProvider {:_reactNativeIphoneXHelper {:getStatusBarHeight (fn [])}}
|
||||
:SafeAreaInsetsContext {:Consumer (fn [])}
|
||||
:SafeAreaView {}}))
|
||||
(def react-native-dark-mode #js {"eventEmitter" {} "initialMode" {}})
|
||||
|
||||
(def back-handler #js {:addEventListener identity
|
||||
:removeEventListener identity})
|
||||
@@ -209,6 +210,19 @@
|
||||
(def react-native-draggable-flatlist
|
||||
#js {:default #js {}})
|
||||
|
||||
(def react-native-notifications
|
||||
#js {:Notifications #js {}})
|
||||
|
||||
(def react-native-blur
|
||||
(clj->js {:BlurView {}}))
|
||||
|
||||
(def wallet-connect-client #js {:default #js {}
|
||||
:CLIENT_EVENTS #js {:session #js {:request nil
|
||||
:created nil
|
||||
:deleted nil
|
||||
:proposal nil
|
||||
:updated nil}}})
|
||||
|
||||
;; Update i18n_resources.cljs
|
||||
(defn mock [module]
|
||||
(case module
|
||||
@@ -218,7 +232,6 @@
|
||||
"react-native-gesture-handler" react-native-gesture-handler
|
||||
"react-native-safe-area-context" safe-area-context
|
||||
"react-native-config" config
|
||||
"react-native-dark-mode" react-native-dark-mode
|
||||
"react-native-iphone-x-helper" (clj->js {:getStatusBarHeight (fn [])
|
||||
:getBottomSpace (fn [])})
|
||||
"react-native-screens" (clj->js {})
|
||||
@@ -240,11 +253,14 @@
|
||||
"react-native-linear-gradient" react-native-gradien
|
||||
"react-native-navigation" react-native-navigation
|
||||
"@react-native-community/push-notification-ios" push-notification-ios
|
||||
"@react-native-community/blur" react-native-blur
|
||||
"react-native-camera-kit" react-native-camera-kit
|
||||
"rn-emoji-keyboard" rn-emoji-keyboard
|
||||
"react-native-notifications" react-native-notifications
|
||||
"react-native-draggable-flatlist" react-native-draggable-flatlist
|
||||
"./fleets.js" default-fleets
|
||||
"./chats.js" default-chats
|
||||
"@walletconnect/client" wallet-connect-client
|
||||
"../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json"))
|
||||
"../translations/de.json" (js/JSON.parse (slurp "./translations/de.json"))
|
||||
"../translations/en.json" (js/JSON.parse (slurp "./translations/en.json"))
|
||||
|
||||
@@ -57,6 +57,8 @@
|
||||
(defn pressable-hooks [props]
|
||||
(let [{background-color :bgColor
|
||||
border-radius :borderRadius
|
||||
border-color :borderColor
|
||||
border-width :borderWidth
|
||||
type :type
|
||||
disabled :disabled
|
||||
on-press :onPress
|
||||
@@ -121,7 +123,9 @@
|
||||
[animated/view {:style (merge absolute-fill
|
||||
background
|
||||
{:background-color background-color
|
||||
:border-radius border-radius})}]
|
||||
:border-radius border-radius
|
||||
:border-color border-color
|
||||
:border-width border-width})}]
|
||||
(into [animated/view {:style foreground}]
|
||||
(react/get-children children))]]]])))
|
||||
|
||||
|
||||
@@ -28,27 +28,31 @@
|
||||
|
||||
(defn themes [theme]
|
||||
(case theme
|
||||
:main {:icon-color (:icon-04 @colors/theme)
|
||||
:background-color (:interactive-02 @colors/theme)
|
||||
:text-color (:text-04 @colors/theme)}
|
||||
:icon {:icon-color (:icon-01 @colors/theme)
|
||||
:background-color (:interactive-02 @colors/theme)
|
||||
:text-color (:text-01 @colors/theme)}
|
||||
:negative {:icon-color (:negative-01 @colors/theme)
|
||||
:background-color (:negative-02 @colors/theme)
|
||||
:text-color (:negative-01 @colors/theme)}
|
||||
:positive {:icon-color (:positive-01 @colors/theme)
|
||||
:background-color (:positive-02 @colors/theme)
|
||||
:text-color (:positive-01 @colors/theme)}
|
||||
:accent {:icon-color (:icon-05 @colors/theme)
|
||||
:background-color (:interactive-01 @colors/theme)
|
||||
:text-color (:text-05 @colors/theme)}
|
||||
:secondary {:icon-color (:icon-02 @colors/theme)
|
||||
:background-color (:interactive-02 @colors/theme)
|
||||
:text-color (:text-02 @colors/theme)}
|
||||
:disabled {:icon-color (:icon-02 @colors/theme)
|
||||
:background-color (:ui-01 @colors/theme)
|
||||
:text-color (:text-02 @colors/theme)}))
|
||||
:main {:icon-color (:icon-04 @colors/theme)
|
||||
:background-color (:interactive-02 @colors/theme)
|
||||
:text-color (:text-04 @colors/theme)}
|
||||
:icon {:icon-color (:icon-01 @colors/theme)
|
||||
:background-color (:interactive-02 @colors/theme)
|
||||
:text-color (:text-01 @colors/theme)}
|
||||
:negative {:icon-color (:negative-01 @colors/theme)
|
||||
:background-color (:negative-02 @colors/theme)
|
||||
:text-color (:negative-01 @colors/theme)}
|
||||
:positive {:icon-color (:positive-01 @colors/theme)
|
||||
:background-color (:positive-02 @colors/theme)
|
||||
:text-color (:positive-01 @colors/theme)}
|
||||
:accent {:icon-color (:icon-05 @colors/theme)
|
||||
:background-color (:interactive-01 @colors/theme)
|
||||
:text-color (:text-05 @colors/theme)}
|
||||
:secondary {:icon-color (:icon-02 @colors/theme)
|
||||
:background-color (:interactive-02 @colors/theme)
|
||||
:text-color (:text-02 @colors/theme)}
|
||||
:disabled {:icon-color (:icon-02 @colors/theme)
|
||||
:background-color (:ui-01 @colors/theme)
|
||||
:text-color (:text-02 @colors/theme)}
|
||||
:monocromatic {:icon-color (:icon-01 @colors/theme)
|
||||
:background-color (:ui-background @colors/theme)
|
||||
:text-color (:text-01 @colors/theme)
|
||||
:border-color (:ui-01 @colors/theme)}))
|
||||
|
||||
(defn button [{:keys [on-press disabled type theme before after
|
||||
haptic-feedback haptic-type on-long-press on-press-start
|
||||
@@ -62,7 +66,7 @@
|
||||
(let [theme' (cond
|
||||
disabled :disabled
|
||||
:else theme)
|
||||
{:keys [icon-color background-color text-color]}
|
||||
{:keys [icon-color background-color text-color border-color]}
|
||||
(themes theme')
|
||||
|
||||
optional-haptic (fn []
|
||||
@@ -73,6 +77,9 @@
|
||||
:type type
|
||||
:disabled disabled
|
||||
:accessibility-label accessibility-label}
|
||||
(when border-color
|
||||
{:border-color border-color
|
||||
:border-width 1})
|
||||
(when on-press
|
||||
{:on-press (fn []
|
||||
(optional-haptic)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
(def light-theme
|
||||
{:positive-01 "rgba(68,208,88,1)" ; Primary Positive, text, icons color
|
||||
:positive-02 "rgba(78,188,96,0.1)" ; Secondary Positive, Supporting color for success illustrations
|
||||
:positive-03 "rgba(78,188,96,1)" ; Lighter Positive, Supporting color for success illustrations
|
||||
:negative-01 "rgba(255,45,85,1)" ; Primary Negative, text, icons color
|
||||
:negative-02 "rgba(255,45,85,0.1))" ; Secondary Negative, Supporting color for errors illustrations
|
||||
:warning-01 "rgba(255, 202, 15, 1)"
|
||||
@@ -46,11 +47,13 @@
|
||||
:backdrop "rgba(0,0,0,0.4)" ; Backdrop for modals and bottom sheet
|
||||
:border-01 "rgba(238,242,245,1)"
|
||||
:border-02 "rgba(67, 96, 223, 0.1)"
|
||||
:highlight "rgba(67,96,223,0.4)"})
|
||||
:highlight "rgba(67,96,223,0.4)"
|
||||
:blurred-bg "rgba(255,255,255,0.3)"})
|
||||
|
||||
(def dark-theme
|
||||
{:positive-01 "rgba(68,208,88,1)"
|
||||
:positive-02 "rgba(78,188,96,0.1)"
|
||||
:positive-03 "rgba(78,188,96,1)"
|
||||
:negative-01 "rgba(252,95,95,1)"
|
||||
:negative-02 "rgba(252,95,95,0.1)"
|
||||
:warning-01 "rgba(255, 202, 15, 1)"
|
||||
@@ -77,7 +80,8 @@
|
||||
:backdrop "rgba(0,0,0,0.4)"
|
||||
:border-01 "rgba(37,37,40,1)"
|
||||
:border-02 "rgba(97,119,229,0.1)"
|
||||
:highlight "rgba(67,96,223,0.4)"})
|
||||
:highlight "rgba(67,96,223,0.4)"
|
||||
:blurred-bg "rgba(0,0,0,0.3)"})
|
||||
|
||||
(def theme (reagent/atom light-theme))
|
||||
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
(ns quo.theme
|
||||
(:require [quo.design-system.colors :as colors]))
|
||||
|
||||
(defn set-theme [theme]
|
||||
(reset! colors/theme (case theme
|
||||
(def theme (atom nil))
|
||||
|
||||
(defn get-theme []
|
||||
@theme)
|
||||
|
||||
(defn set-theme [value]
|
||||
(reset! theme value)
|
||||
(reset! colors/theme (case value
|
||||
:dark colors/dark-theme
|
||||
colors/light-theme))
|
||||
(colors/set-legacy-theme-type theme))
|
||||
(colors/set-legacy-theme-type value))
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
(ns quo2.components.button
|
||||
(:require [quo.react-native :as rn]
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[quo2.components.text :as text]
|
||||
[quo.theme :as theme]
|
||||
[reagent.core :as reagent]))
|
||||
|
||||
(def themes {:light {:primary {:icon-color colors/white
|
||||
:label {:style {:color colors/white}}
|
||||
:background-color {:default colors/primary-50
|
||||
:pressed colors/primary-70
|
||||
:disabled colors/primary-50}}
|
||||
:secondary {:icon-color colors/primary-50
|
||||
:label {:style {:color colors/primary-50}}
|
||||
:background-color {:default colors/primary-50-opa-20
|
||||
:pressed colors/primary-50-opa-40
|
||||
:disabled colors/primary-50-opa-20}}
|
||||
:grey {:icon-color colors/neutral-50
|
||||
:label {:style {:color colors/black}}
|
||||
:background-color {:default colors/neutral-40
|
||||
:pressed colors/neutral-30
|
||||
:disabled colors/neutral-20}}
|
||||
:outline {:icon-color colors/neutral-50
|
||||
:label {:style {:color colors/black}}
|
||||
:border-color {:default colors/neutral-30
|
||||
:pressed colors/neutral-40}}
|
||||
:ghost {:icon-color colors/neutral-50
|
||||
:label {:style {:color colors/black}}
|
||||
:background-color {:pr:pressedess colors/neutral-10}}
|
||||
:danger {:icon-color colors/white
|
||||
:label {:style {:color colors/white}}
|
||||
:background-color {:default colors/danger-50
|
||||
:pressed colors/danger-60
|
||||
:disabled colors/danger-50}}}
|
||||
:dark {:primary {:icon-color colors/white
|
||||
:label {:style {:color colors/white}}
|
||||
:background-color {:default colors/primary-60
|
||||
:pressed colors/primary-40
|
||||
:disabled colors/primary-60}}
|
||||
:secondary {:icon-color colors/primary-50
|
||||
:label {:style {:color colors/primary-50}}
|
||||
:background-color {:default colors/primary-50-opa-20
|
||||
:pressed colors/primary-50-opa-30
|
||||
:disabled colors/primary-50-opa-20}}
|
||||
:grey {:icon-color colors/neutral-40
|
||||
:label {:style {:color colors/white}}
|
||||
:background-color {:default colors/neutral-80
|
||||
:pressed colors/neutral-60
|
||||
:disabled colors/neutral-80}}
|
||||
:outline {:icon-color colors/neutral-40
|
||||
:label {:style {:color colors/white}}
|
||||
:border-color {:default colors/neutral-70
|
||||
:pressed colors/neutral-60}}
|
||||
:ghost {:icon-color colors/neutral-40
|
||||
:label {:style {:color colors/white}}
|
||||
:background-color {:pressed colors/neutral-80}}
|
||||
:danger {:icon-color colors/white
|
||||
:label {:style {:color colors/white}}
|
||||
:background-color {:default colors/danger-50
|
||||
:pressed colors/danger-40
|
||||
:disabled colors/danger-50}}}})
|
||||
|
||||
(defn style-container [type size disabled background-color border-color icon above]
|
||||
(merge {:height size
|
||||
:align-items :center
|
||||
:justify-content :center
|
||||
:flex-direction (if above :column :row)
|
||||
:border-radius (if (and icon (#{:primary :secondary :danger} type))
|
||||
24
|
||||
(case size
|
||||
56 12
|
||||
40 12
|
||||
32 10
|
||||
24 8))
|
||||
:background-color background-color
|
||||
:padding-horizontal (if icon 0 (case size 56 16 40 16 32 12 24 8))}
|
||||
(when icon
|
||||
{:width size})
|
||||
(when border-color
|
||||
{:border-color border-color
|
||||
:border-width 1})
|
||||
(when disabled
|
||||
{:opacity 0.3})))
|
||||
|
||||
(defn button
|
||||
"with label
|
||||
[button opts \"label\"]
|
||||
opts
|
||||
{:type :primary/:secondary/:grey/:outline/:ghost/:danger
|
||||
:size 40/32/24
|
||||
:icon true/false
|
||||
:before :icon-keyword
|
||||
:after :icon-keyword}
|
||||
|
||||
only icon
|
||||
[button {:icon true} :main-icons/close-circle]"
|
||||
[_ _]
|
||||
(let [pressed (reagent/atom false)]
|
||||
(fn [{:keys [on-press disabled type size before after above
|
||||
on-long-press accessibility-label icon]
|
||||
:or {type :primary
|
||||
size 40}}
|
||||
children]
|
||||
(let [{:keys [icon-color background-color label border-color]}
|
||||
(get-in themes [(theme/get-theme) type])
|
||||
state (cond disabled :disabled @pressed :pressed :else :default)]
|
||||
[rn/touchable-without-feedback (merge {:disabled disabled
|
||||
:accessibility-label accessibility-label}
|
||||
(when on-press
|
||||
{:on-press (fn []
|
||||
(on-press))})
|
||||
(when on-long-press
|
||||
{:on-long-press (fn []
|
||||
(on-long-press))})
|
||||
{:on-press-in (fn []
|
||||
(reset! pressed true))}
|
||||
{:on-press-out (fn []
|
||||
(reset! pressed nil))})
|
||||
|
||||
[rn/view {:style (style-container type size disabled (get background-color state) (get border-color state) icon above)}
|
||||
(when above
|
||||
[rn/view
|
||||
[icons/icon above {:color icon-color}]])
|
||||
(when before
|
||||
[rn/view
|
||||
[icons/icon before {:color icon-color}]])
|
||||
[rn/view
|
||||
(cond
|
||||
icon
|
||||
[icons/icon children {:color icon-color}]
|
||||
|
||||
(string? children)
|
||||
[text/text (merge {:size (when (#{56 24} size) :paragraph-2)
|
||||
:weight :medium
|
||||
:number-of-lines 1}
|
||||
label)
|
||||
children]
|
||||
|
||||
(vector? children)
|
||||
children)]
|
||||
(when after
|
||||
[rn/view
|
||||
[icons/icon after {:color icon-color}]])]]))))
|
||||
@@ -0,0 +1,35 @@
|
||||
(ns quo2.components.segmented-control
|
||||
(:require [reagent.core :as reagent]
|
||||
[quo.react-native :as rn]
|
||||
[quo2.components.tab :as tab]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[quo.theme :as theme]))
|
||||
|
||||
(def themes {:light {:background-color colors/neutral-20}
|
||||
:dark {:background-color colors/neutral-80}})
|
||||
|
||||
(defn segmented-control [{:keys [default-active on-change]}]
|
||||
(let [active-tab-id (reagent/atom default-active)]
|
||||
(fn [{:keys [data size]}]
|
||||
(let [active-id @active-tab-id]
|
||||
[rn/view {:flex-direction :row
|
||||
:background-color (get-in themes [(theme/get-theme) :background-color])
|
||||
:border-radius (case size
|
||||
32 10
|
||||
28 8
|
||||
24 8
|
||||
20 6)
|
||||
:padding 2}
|
||||
(for [[indx {:keys [label id]}] (map-indexed vector data)]
|
||||
^{:key id}
|
||||
[rn/view {:margin-left (if (= 0 indx) 0 2)
|
||||
:flex 1}
|
||||
[tab/tab
|
||||
{:id id
|
||||
:segmented true
|
||||
:size size
|
||||
:active (= id active-id)
|
||||
:on-press #(do (reset! active-tab-id %)
|
||||
(when on-change
|
||||
(on-change %)))}
|
||||
label]])]))))
|
||||
@@ -0,0 +1,75 @@
|
||||
(ns quo2.components.tab
|
||||
(:require [quo2.foundations.colors :as colors]
|
||||
[quo.react-native :as rn]
|
||||
[quo.theme :as theme]
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[quo2.components.text :as text]))
|
||||
|
||||
(def themes {:light {:default {:background-color colors/neutral-20
|
||||
:icon-color colors/neutral-50
|
||||
:label {:style {:color colors/black}}}
|
||||
:active {:background-color colors/neutral-50
|
||||
:icon-color colors/white
|
||||
:label {:style {:color colors/white}}}
|
||||
:disabled {:background-color colors/neutral-20
|
||||
:icon-color colors/neutral-50
|
||||
:label {:style {:color colors/black}}}}
|
||||
:dark {:default {:background-color colors/neutral-80
|
||||
:icon-color colors/neutral-40
|
||||
:label {:style {:color colors/white}}}
|
||||
:active {:background-color colors/neutral-60
|
||||
:icon-color colors/white
|
||||
:label {:style {:color colors/white}}}
|
||||
:disabled {:background-color colors/neutral-80
|
||||
:icon-color colors/neutral-40
|
||||
:label {:style {:color colors/white}}}}})
|
||||
|
||||
(defn style-container [size disabled background-color]
|
||||
(merge {:height size
|
||||
:align-items :center
|
||||
:justify-content :center
|
||||
:flex-direction :row
|
||||
:border-radius (case size
|
||||
32 10
|
||||
28 8
|
||||
24 8
|
||||
20 6)
|
||||
:background-color background-color
|
||||
:padding-horizontal (case size 32 12 28 12 24 8 20 8)}
|
||||
(when disabled
|
||||
{:opacity 0.3})))
|
||||
|
||||
(defn tab
|
||||
"[tab opts \"label\"]
|
||||
opts
|
||||
{:type :primary/:secondary/:grey/:outline/:ghost/:danger
|
||||
:size 40/32/24
|
||||
:icon true/false
|
||||
:before :icon-keyword
|
||||
:after :icon-keyword}"
|
||||
[_ _]
|
||||
(fn [{:keys [id on-press disabled size before active accessibility-label]
|
||||
:or {size 32}}
|
||||
children]
|
||||
(let [state (cond disabled :disabled active :active :else :default)
|
||||
{:keys [icon-color background-color label]}
|
||||
(get-in themes [(theme/get-theme) state])]
|
||||
[rn/touchable-without-feedback (merge {:disabled disabled
|
||||
:accessibility-label accessibility-label}
|
||||
(when on-press
|
||||
{:on-press (fn []
|
||||
(on-press id))}))
|
||||
[rn/view {:style (style-container size disabled background-color)}
|
||||
(when before
|
||||
[rn/view
|
||||
[icons/icon before {:color icon-color}]])
|
||||
[rn/view
|
||||
(cond
|
||||
(string? children)
|
||||
[text/text (merge {:size (case size 24 :paragraph-2 20 :label nil)
|
||||
:weight :medium
|
||||
:number-of-lines 1}
|
||||
label)
|
||||
children]
|
||||
(vector? children)
|
||||
children)]]])))
|
||||
@@ -0,0 +1,21 @@
|
||||
(ns quo2.components.tabs
|
||||
(:require [reagent.core :as reagent]
|
||||
[quo.react-native :as rn]
|
||||
[quo2.components.tab :as tab]))
|
||||
|
||||
(defn tabs [{:keys [default-active on-change]}]
|
||||
(let [active-tab-id (reagent/atom default-active)]
|
||||
(fn [{:keys [data size]}]
|
||||
(let [active-id @active-tab-id]
|
||||
[rn/view {:flex-direction :row}
|
||||
(for [{:keys [label id]} data]
|
||||
^{:key id}
|
||||
[rn/view {:margin-right (if (= size 32) 12 8)}
|
||||
[tab/tab
|
||||
{:id id
|
||||
:size size
|
||||
:active (= id active-id)
|
||||
:on-press #(do (reset! active-tab-id %)
|
||||
(when on-change
|
||||
(on-change %)))}
|
||||
label]])]))))
|
||||
@@ -0,0 +1,33 @@
|
||||
(ns quo2.components.text
|
||||
(:require [quo.react-native :as rn]
|
||||
[reagent.core :as reagent]
|
||||
[quo.theme :as theme]
|
||||
[quo2.foundations.colors :as colors]
|
||||
[quo2.foundations.typography :as typography]))
|
||||
|
||||
(defn text-style [{:keys [size align weight style]}]
|
||||
(merge (case (or weight :regular)
|
||||
:regular typography/font-regular
|
||||
:medium typography/font-medium
|
||||
:semi-bold typography/font-semi-bold
|
||||
:bold typography/font-bold
|
||||
:monospace typography/monospace
|
||||
:inherit nil)
|
||||
(case (or size :paragraph-1)
|
||||
:label typography/label
|
||||
:paragraph-2 typography/paragraph-2
|
||||
:paragraph-1 typography/paragraph-1
|
||||
:heading-2 typography/heading-2
|
||||
:heading-1 typography/heading-1
|
||||
:inherit nil)
|
||||
{:text-align (or align :auto)}
|
||||
(if (:color style)
|
||||
style
|
||||
(assoc style :color (if (= (theme/get-theme) :dark) colors/white colors/black)))))
|
||||
|
||||
(defn text []
|
||||
(let [this (reagent/current-component)
|
||||
props (reagent/props this)
|
||||
style (text-style props)]
|
||||
(into [rn/text {:style style}]
|
||||
(reagent/children this))))
|
||||
@@ -0,0 +1,176 @@
|
||||
(ns quo2.foundations.colors
|
||||
(:require [clojure.string :as string]))
|
||||
|
||||
(defn alpha [value opacity]
|
||||
(if (string/starts-with? value "#")
|
||||
(let [hex (string/replace value #"#" "")
|
||||
r (js/parseInt (subs hex 0 2) 16)
|
||||
g (js/parseInt (subs hex 2 4) 16)
|
||||
b (js/parseInt (subs hex 4 6) 16)]
|
||||
(str "rgba(" r "," g "," b "," opacity ")"))
|
||||
(let [rgb (string/split value #",")]
|
||||
(str (string/join "," (butlast rgb)) "," opacity ")"))))
|
||||
|
||||
;;;;Neutral
|
||||
|
||||
;;Solid
|
||||
(def neutral-5 "#F5F6F8")
|
||||
(def neutral-10 "#F0F2F5")
|
||||
(def neutral-20 "#ECEEF1")
|
||||
(def neutral-30 "#E7EAEE")
|
||||
(def neutral-40 "#A1ABBD")
|
||||
(def neutral-50 "#647084")
|
||||
(def neutral-60 "#303D55")
|
||||
(def neutral-70 "#192438")
|
||||
(def neutral-80 "#131D2F")
|
||||
(def neutral-90 "#0D1625")
|
||||
(def neutral-95 "#09101C")
|
||||
|
||||
;;50 with transparency
|
||||
(def neutral-50-opa-5 (alpha neutral-50 0.05))
|
||||
(def neutral-50-opa-10 (alpha neutral-50 0.1))
|
||||
(def neutral-50-opa-20 (alpha neutral-50 0.2))
|
||||
(def neutral-50-opa-30 (alpha neutral-50 0.3))
|
||||
(def neutral-50-opa-40 (alpha neutral-50 0.4))
|
||||
|
||||
;;80 with transparency
|
||||
(def neutral-80-opa-60 (alpha neutral-80 0.6))
|
||||
(def neutral-80-opa-70 (alpha neutral-80 0.7))
|
||||
(def neutral-80-opa-80 (alpha neutral-80 0.8))
|
||||
(def neutral-80-opa-90 (alpha neutral-80 0.9))
|
||||
(def neutral-80-opa-95 (alpha neutral-80 0.95))
|
||||
|
||||
;;95 with transparency
|
||||
(def neutral-95-opa-60 (alpha neutral-95 0.6))
|
||||
(def neutral-95-opa-70 (alpha neutral-95 0.7))
|
||||
(def neutral-95-opa-80 (alpha neutral-95 0.8))
|
||||
(def neutral-95-opa-90 (alpha neutral-95 0.9))
|
||||
(def neutral-95-opa-95 (alpha neutral-95 0.95))
|
||||
|
||||
;;;;Black
|
||||
(def black "#000000")
|
||||
(def black-opa-5 (alpha black 0.05))
|
||||
(def black-opa-10 (alpha black 0.1))
|
||||
(def black-opa-20 (alpha black 0.2))
|
||||
(def black-opa-30 (alpha black 0.3))
|
||||
(def black-opa-40 (alpha black 0.4))
|
||||
(def black-opa-50 (alpha black 0.5))
|
||||
(def black-opa-60 (alpha black 0.6))
|
||||
(def black-opa-70 (alpha black 0.7))
|
||||
(def black-opa-80 (alpha black 0.8))
|
||||
(def black-opa-90 (alpha black 0.9))
|
||||
(def black-opa-95 (alpha black 0.95))
|
||||
|
||||
;;;;White
|
||||
(def white "#ffffff")
|
||||
(def white-opa-5 (alpha white 0.05))
|
||||
(def white-opa-10 (alpha white 0.1))
|
||||
(def white-opa-20 (alpha white 0.2))
|
||||
(def white-opa-30 (alpha white 0.3))
|
||||
(def white-opa-40 (alpha white 0.4))
|
||||
(def white-opa-50 (alpha white 0.5))
|
||||
(def white-opa-60 (alpha white 0.6))
|
||||
(def white-opa-70 (alpha white 0.7))
|
||||
(def white-opa-80 (alpha white 0.8))
|
||||
(def white-opa-90 (alpha white 0.9))
|
||||
(def white-opa-95 (alpha white 0.95))
|
||||
|
||||
;;;;Primary
|
||||
|
||||
;;Solid
|
||||
(def primary-10 "#F8F9FE")
|
||||
(def primary-20 "#D9DFF9")
|
||||
(def primary-30 "#ACB9F1")
|
||||
(def primary-40 "#7F93E9")
|
||||
(def primary-50 "#4360DF")
|
||||
(def primary-60 "#3851BB")
|
||||
(def primary-70 "#2E4198")
|
||||
(def primary-80 "#233274")
|
||||
(def primary-90 "#182350")
|
||||
|
||||
;;50 with transparency
|
||||
(def primary-50-opa-5 (alpha primary-50 0.05))
|
||||
(def primary-50-opa-10 (alpha primary-50 0.1))
|
||||
(def primary-50-opa-20 (alpha primary-50 0.2))
|
||||
(def primary-50-opa-30 (alpha primary-50 0.3))
|
||||
(def primary-50-opa-40 (alpha primary-50 0.4))
|
||||
|
||||
;;;;Success
|
||||
|
||||
;;Solid
|
||||
(def success-10 "#F6FBFB")
|
||||
(def success-20 "#D4EDEB")
|
||||
(def success-30 "#9FD8D3")
|
||||
(def success-40 "#6BC2BA")
|
||||
(def success-50 "#26A69A")
|
||||
(def success-60 "#208B81")
|
||||
(def success-70 "#1A7169")
|
||||
(def success-80 "#145650")
|
||||
(def success-90 "#08211F")
|
||||
|
||||
;;50 with transparency
|
||||
(def success-50-opa-5 (alpha success-50 0.05))
|
||||
(def success-50-opa-10 (alpha success-50 0.1))
|
||||
(def success-50-opa-20 (alpha success-50 0.2))
|
||||
(def success-50-opa-30 (alpha success-50 0.3))
|
||||
(def success-50-opa-40 (alpha success-50 0.4))
|
||||
|
||||
;;;;Warning
|
||||
|
||||
;;Solid
|
||||
(def warning-10 "#FFFBF9")
|
||||
(def warning-20 "#FEE9DF")
|
||||
(def warning-30 "#FDCEBA")
|
||||
(def warning-40 "#FCB394")
|
||||
(def warning-50 "#FB8F61")
|
||||
(def warning-60 "#D37851")
|
||||
(def warning-70 "#AB6142")
|
||||
(def warning-80 "#824A32")
|
||||
(def warning-90 "#5A3323")
|
||||
|
||||
;;50 with transparency
|
||||
(def warning-50-opa-5 (alpha warning-50 0.05))
|
||||
(def warning-50-opa-10 (alpha warning-50 0.1))
|
||||
(def warning-50-opa-20 (alpha warning-50 0.2))
|
||||
(def warning-50-opa-30 (alpha warning-50 0.3))
|
||||
(def warning-50-opa-40 (alpha warning-50 0.4))
|
||||
|
||||
;;;;Danger
|
||||
|
||||
;;Solid
|
||||
(def danger-10 "#FEF9F9")
|
||||
(def danger-20 "#FADFDE")
|
||||
(def danger-30 "#F4B9B7")
|
||||
(def danger-40 "#EE9290")
|
||||
(def danger-50 "#E65F5C")
|
||||
(def danger-60 "#C1504D")
|
||||
(def danger-70 "#9C413F")
|
||||
(def danger-80 "#783130")
|
||||
(def danger-90 "#532221")
|
||||
|
||||
;;50 with transparency
|
||||
(def danger-50-opa-5 (alpha danger-50 0.05))
|
||||
(def danger-50-opa-10 (alpha danger-50 0.1))
|
||||
(def danger-50-opa-20 (alpha danger-50 0.2))
|
||||
(def danger-50-opa-30 (alpha danger-50 0.3))
|
||||
(def danger-50-opa-40 (alpha danger-50 0.4))
|
||||
|
||||
;;;;Info
|
||||
|
||||
;;Solid
|
||||
(def info-10 "#F6FCFD")
|
||||
(def info-20 "#D2EEF4")
|
||||
(def info-30 "#9DD9E6")
|
||||
(def info-40 "#67C4D8")
|
||||
(def info-50 "#20A8C6")
|
||||
(def info-60 "#1B8DA6")
|
||||
(def info-70 "#167287")
|
||||
(def info-80 "#115767")
|
||||
(def info-90 "#0C3C47")
|
||||
|
||||
;;50 with transparency
|
||||
(def info-50-opa-5 (alpha info-50 0.05))
|
||||
(def info-50-opa-10 (alpha info-50 0.1))
|
||||
(def info-50-opa-20 (alpha info-50 0.2))
|
||||
(def info-50-opa-30 (alpha info-50 0.3))
|
||||
(def info-50-opa-40 (alpha info-50 0.4))
|
||||
@@ -0,0 +1,31 @@
|
||||
(ns quo2.foundations.typography)
|
||||
|
||||
(def heading-1 {:font-size 27
|
||||
:line-height 32.4
|
||||
:letter-spacing -2.1})
|
||||
|
||||
(def heading-2 {:font-size 19
|
||||
:line-height 25.65
|
||||
:letter-spacing -1.6})
|
||||
|
||||
(def paragraph-1 {:font-size 15
|
||||
:line-height 21.75
|
||||
:letter-spacing -0.9})
|
||||
|
||||
(def paragraph-2 {:font-size 13
|
||||
:line-height 18.2
|
||||
:letter-spacing -0.3})
|
||||
|
||||
(def label {:font-size 11
|
||||
:line-height 15.62
|
||||
:letter-spacing 0.5})
|
||||
|
||||
(def font-regular {:font-family "Inter-Regular"}) ; 400
|
||||
|
||||
(def font-medium {:font-family "Inter-Medium"}) ; 500 ff
|
||||
|
||||
(def font-semi-bold {:font-family "Inter-SemiBold"}) ; 600
|
||||
|
||||
(def font-bold {:font-family "Inter-Bold"}) ; 700
|
||||
|
||||
(def monospace {:font-family "InterStatus-Regular"})
|
||||
@@ -0,0 +1,86 @@
|
||||
(ns quo2.screens.button
|
||||
(:require [reagent.core :as reagent]
|
||||
[quo.react-native :as rn]
|
||||
[quo.previews.preview :as preview]
|
||||
[quo.design-system.colors :as colors]
|
||||
[quo2.components.button :as quo2]))
|
||||
|
||||
(def descriptor [{:label "Type:"
|
||||
:key :type
|
||||
:type :select
|
||||
:options [{:key :primary
|
||||
:value "Primary"}
|
||||
{:key :secondary
|
||||
:value "Secondary"}
|
||||
{:key :grey
|
||||
:value "Grey"}
|
||||
{:key :outline
|
||||
:value "Outline"}
|
||||
{:key :ghost
|
||||
:value "Ghost"}
|
||||
{:key :danger
|
||||
:value "Danger"}]}
|
||||
{:label "Size:"
|
||||
:key :size
|
||||
:type :select
|
||||
:options [{:key 56
|
||||
:value "56"}
|
||||
{:key 40
|
||||
:value "40"}
|
||||
{:key 32
|
||||
:value "32"}
|
||||
{:key 24
|
||||
:value "24"}]}
|
||||
{:label "Icon:"
|
||||
:key :icon
|
||||
:type :boolean}
|
||||
{:label "Above icon:"
|
||||
:key :above
|
||||
:type :boolean}
|
||||
{:label "After icon:"
|
||||
:key :after
|
||||
:type :boolean}
|
||||
{:label "Before icon:"
|
||||
:key :before
|
||||
:type :boolean}
|
||||
{:label "Disabled:"
|
||||
:key :disabled
|
||||
:type :boolean}
|
||||
{:label "Label"
|
||||
:key :label
|
||||
:type :text}])
|
||||
|
||||
(defn cool-preview []
|
||||
(let [state (reagent/atom {:label "Press Me"
|
||||
:size 40})
|
||||
label (reagent/cursor state [:label])
|
||||
before (reagent/cursor state [:before])
|
||||
after (reagent/cursor state [:after])
|
||||
above (reagent/cursor state [:above])
|
||||
icon (reagent/cursor state [:icon])]
|
||||
(fn []
|
||||
[rn/view {:margin-bottom 50
|
||||
:padding 16}
|
||||
[rn/view {:flex 1}
|
||||
[preview/customizer state descriptor]]
|
||||
[rn/view {:padding-vertical 60
|
||||
:flex-direction :row
|
||||
:justify-content :center}
|
||||
[quo2/button (merge (dissoc @state
|
||||
:theme :before :after)
|
||||
{:on-press #(println "Hello world!")}
|
||||
(when @above
|
||||
{:above :main-icons/close-circle})
|
||||
(when @before
|
||||
{:before :main-icons/back})
|
||||
(when @after
|
||||
{:after :main-icons/next}))
|
||||
(if @icon :main-icons/close-circle @label)]]])))
|
||||
|
||||
(defn preview-button []
|
||||
[rn/view {:background-color (:ui-background @colors/theme)
|
||||
:flex 1}
|
||||
[rn/flat-list {:flex 1
|
||||
:keyboardShouldPersistTaps :always
|
||||
:header [cool-preview]
|
||||
:key-fn str}]])
|
||||
@@ -0,0 +1,63 @@
|
||||
(ns quo2.screens.main
|
||||
(:require [quo.react-native :as rn]
|
||||
[quo.theme :as theme]
|
||||
[quo.design-system.colors :as colors]
|
||||
[re-frame.core :as re-frame]
|
||||
[quo2.screens.button :as button]
|
||||
[quo2.screens.text :as text]
|
||||
[quo2.screens.tabs :as tabs]
|
||||
[quo2.screens.segmented :as segmented]
|
||||
[quo.core :as quo]))
|
||||
|
||||
(def screens [{:name :quo2-texts
|
||||
:insets {:top false}
|
||||
:component text/preview-text}
|
||||
{:name :quo2-button
|
||||
:insets {:top false}
|
||||
:component button/preview-button}
|
||||
{:name :quo2-tabs
|
||||
:insets {:top false}
|
||||
:component tabs/preview-tabs}
|
||||
{:name :quo2-segmented
|
||||
:insets {:top false}
|
||||
:component segmented/preview-segmented}])
|
||||
|
||||
(defn theme-switcher []
|
||||
[rn/view {:style {:flex-direction :row
|
||||
:margin-vertical 8
|
||||
:border-radius 4
|
||||
:background-color (:ui-01 @colors/theme)
|
||||
:border-width 1
|
||||
:border-color (:ui-02 @colors/theme)}}
|
||||
[rn/touchable-opacity {:style {:padding 8
|
||||
:flex 1
|
||||
:justify-content :center
|
||||
:align-items :center}
|
||||
:on-press #(theme/set-theme :light)}
|
||||
[quo/text "Set light theme"]]
|
||||
[rn/view {:width 1
|
||||
:margin-vertical 4
|
||||
:background-color (:ui-02 @colors/theme)}]
|
||||
[rn/touchable-opacity {:style {:padding 8
|
||||
:flex 1
|
||||
:justify-content :center
|
||||
:align-items :center}
|
||||
:on-press #(theme/set-theme :dark)}
|
||||
[quo/text "Set dark theme"]]])
|
||||
|
||||
(defn main-screen []
|
||||
[rn/scroll-view {:flex 1
|
||||
:padding-vertical 8
|
||||
:padding-horizontal 16
|
||||
:background-color (:ui-background @colors/theme)}
|
||||
[theme-switcher]
|
||||
[rn/view
|
||||
(for [{:keys [name]} screens]
|
||||
^{:key name}
|
||||
[rn/touchable-opacity {:on-press #(re-frame/dispatch [:navigate-to name])}
|
||||
[rn/view {:style {:padding-vertical 8}}
|
||||
[quo/text (str "Preview " name)]]])]])
|
||||
|
||||
(def main-screens [{:name :quo2-preview
|
||||
:insets {:top false}
|
||||
:component main-screen}])
|
||||
@@ -0,0 +1,48 @@
|
||||
(ns quo2.screens.segmented
|
||||
(:require [quo.react-native :as rn]
|
||||
[quo.design-system.colors :as colors]
|
||||
[quo.previews.preview :as preview]
|
||||
[quo2.components.segmented-control :as quo2]
|
||||
[reagent.core :as reagent]))
|
||||
|
||||
(def descriptor [{:label "Size:"
|
||||
:key :size
|
||||
:type :select
|
||||
:options [{:key 32
|
||||
:value "32"}
|
||||
{:key 28
|
||||
:value "28"}
|
||||
{:key 24
|
||||
:value "24"}
|
||||
{:key 20
|
||||
:value "20"}]}])
|
||||
|
||||
(defn cool-preview []
|
||||
(let [state (reagent/atom {:size 32})]
|
||||
(fn []
|
||||
[rn/view {:margin-bottom 50
|
||||
:padding 16}
|
||||
[rn/view {:flex 1}
|
||||
[preview/customizer state descriptor]]
|
||||
[rn/view {:padding-vertical 60}
|
||||
[quo2/segmented-control (merge @state
|
||||
{:default-active 1
|
||||
:data [{:id 1 :label "Tab 1"}
|
||||
{:id 2 :label "Tab 2"}
|
||||
{:id 3 :label "Tab 3"}
|
||||
{:id 4 :label "Tab 4"}]
|
||||
:on-change #(println "Active tab" %)})]]
|
||||
[rn/view {:padding-vertical 60}
|
||||
[quo2/segmented-control (merge @state
|
||||
{:default-active 1
|
||||
:data [{:id 1 :label "Tab 1"}
|
||||
{:id 2 :label "Tab 2"}]
|
||||
:on-change #(println "Active tab" %)})]]])))
|
||||
|
||||
(defn preview-segmented []
|
||||
[rn/view {:background-color (:ui-background @colors/theme)
|
||||
:flex 1}
|
||||
[rn/flat-list {:flex 1
|
||||
:keyboardShouldPersistTaps :always
|
||||
:header [cool-preview]
|
||||
:key-fn str}]])
|
||||
@@ -0,0 +1,44 @@
|
||||
(ns quo2.screens.tabs
|
||||
(:require [quo.react-native :as rn]
|
||||
[quo.design-system.colors :as colors]
|
||||
[quo.previews.preview :as preview]
|
||||
[quo2.components.tabs :as quo2]
|
||||
[reagent.core :as reagent]))
|
||||
|
||||
(def descriptor [{:label "Size:"
|
||||
:key :size
|
||||
:type :select
|
||||
:options [{:key 32
|
||||
:value "32"}
|
||||
{:key 28
|
||||
:value "28"}
|
||||
{:key 24
|
||||
:value "24"}
|
||||
{:key 20
|
||||
:value "20"}]}])
|
||||
|
||||
(defn cool-preview []
|
||||
(let [state (reagent/atom {:size 32})]
|
||||
(fn []
|
||||
[rn/view {:margin-bottom 50
|
||||
:padding 16}
|
||||
[rn/view {:flex 1}
|
||||
[preview/customizer state descriptor]]
|
||||
[rn/view {:padding-vertical 60
|
||||
:flex-direction :row
|
||||
:justify-content :center}
|
||||
[quo2/tabs (merge @state
|
||||
{:default-active 1
|
||||
:data [{:id 1 :label "Tab 1"}
|
||||
{:id 2 :label "Tab 2"}
|
||||
{:id 3 :label "Tab 3"}
|
||||
{:id 4 :label "Tab 4"}]
|
||||
:on-change #(println "Active tab" %)})]]])))
|
||||
|
||||
(defn preview-tabs []
|
||||
[rn/view {:background-color (:ui-background @colors/theme)
|
||||
:flex 1}
|
||||
[rn/flat-list {:flex 1
|
||||
:keyboardShouldPersistTaps :always
|
||||
:header [cool-preview]
|
||||
:key-fn str}]])
|
||||
@@ -0,0 +1,51 @@
|
||||
(ns quo2.screens.text
|
||||
(:require [quo.react-native :as rn]
|
||||
[quo.previews.preview :as preview]
|
||||
[reagent.core :as reagent]
|
||||
[quo2.components.text :as quo2]
|
||||
[quo.design-system.colors :as colors]))
|
||||
|
||||
(def descriptor [{:label "Size:"
|
||||
:key :size
|
||||
:type :select
|
||||
:options [{:key :heading-1
|
||||
:value "Heading 1"}
|
||||
{:key :heading-2
|
||||
:value "Heading 2"}
|
||||
{:key :paragraph-1
|
||||
:value "Paragraph 1"}
|
||||
{:key :paragraph-2
|
||||
:value "Paragraph 2"}
|
||||
{:key :label
|
||||
:value "Label"}]}
|
||||
{:label "Weight:"
|
||||
:key :weight
|
||||
:type :select
|
||||
:options [{:key :regular
|
||||
:value "Regular"}
|
||||
{:key :medium
|
||||
:value "Medium"}
|
||||
{:key :semi-bold
|
||||
:value "Semi-bold"}
|
||||
{:key :bold
|
||||
:value "Bold"}
|
||||
{:key :monospace
|
||||
:value "Monospace"}]}])
|
||||
|
||||
(defn cool-preview []
|
||||
(let [state (reagent/atom {})]
|
||||
(fn []
|
||||
[rn/view {:margin-bottom 50
|
||||
:padding 16}
|
||||
[preview/customizer state descriptor]
|
||||
[rn/view {:padding-vertical 60}
|
||||
[quo2/text @state
|
||||
"The quick brown fox jumped over the lazy dog."]]])))
|
||||
|
||||
(defn preview-text []
|
||||
[rn/view {:background-color (:ui-background @colors/theme)
|
||||
:flex 1}
|
||||
[rn/flat-list {:flex 1
|
||||
:keyboardShouldPersistTaps :always
|
||||
:header [cool-preview]
|
||||
:key-fn str}]])
|
||||
@@ -101,23 +101,22 @@
|
||||
|
||||
(re-frame/reg-fx
|
||||
::resolve-contract
|
||||
(fn [{:keys [chain contract on-success]}]
|
||||
(let [register (get ens/ens-registries chain)]
|
||||
(when contract
|
||||
(if (string/starts-with? contract "0x")
|
||||
(on-success contract)
|
||||
(ens/get-addr register contract on-success))))))
|
||||
(fn [{:keys [chain-id contract on-success]}]
|
||||
(when contract
|
||||
(if (string/starts-with? contract "0x")
|
||||
(on-success contract)
|
||||
(ens/address chain-id contract on-success)))))
|
||||
|
||||
(fx/defn create [{:keys [db]}]
|
||||
(when-not config/google-free
|
||||
{::resolve-contract {:chain (ethereum/chain-keyword db)
|
||||
{::resolve-contract {:chain (ethereum/chain-id db)
|
||||
:contract (contracts/get-address db :status/acquisition)
|
||||
:on-success #(re-frame/dispatch [:set-in [:acquisition :contract] %])}
|
||||
::get-referrer nil}))
|
||||
|
||||
(fx/defn login [{:keys [db]}]
|
||||
(when-not config/google-free
|
||||
{::resolve-contract {:chain (ethereum/chain-keyword db)
|
||||
{::resolve-contract {:chain (ethereum/chain-id db)
|
||||
:contract (contracts/get-address db :status/acquisition)
|
||||
:on-success #(re-frame/dispatch [:set-in [:acquisition :contract] %])}
|
||||
::check-referrer nil}))
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.ethereum.ens :as ens]
|
||||
[status-im.ethereum.resolver :as resolver]
|
||||
[status-im.add-new.db :as db]
|
||||
[status-im.utils.random :as random]
|
||||
[status-im.utils.utils :as utils]
|
||||
@@ -12,14 +11,15 @@
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.contact.core :as contact]
|
||||
[status-im.router.core :as router]
|
||||
[status-im.navigation :as navigation]))
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.ethereum.stateofus :as stateofus]
|
||||
[status-im.utils.db :as utils.db]))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:resolve-public-key
|
||||
(fn [{:keys [chain contact-identity cb]}]
|
||||
(let [registry (get ens/ens-registries chain)
|
||||
ens-name (resolver/ens-name-parse contact-identity)]
|
||||
(resolver/pubkey registry ens-name cb))))
|
||||
(fn [{:keys [chain-id contact-identity cb]}]
|
||||
(let [ens-name (stateofus/ens-name-parse contact-identity)]
|
||||
(ens/pubkey chain-id ens-name cb))))
|
||||
|
||||
;;NOTE we want to handle only last resolve
|
||||
(def resolve-last-id (atom nil))
|
||||
@@ -27,37 +27,39 @@
|
||||
(fx/defn new-chat-set-new-identity
|
||||
{:events [:new-chat/set-new-identity]}
|
||||
[{db :db} new-identity-raw new-ens-name id]
|
||||
(when (or (not id) (= id @resolve-last-id))
|
||||
(let [new-identity (utils/safe-trim new-identity-raw)
|
||||
is-public-key? (and (string? new-identity)
|
||||
(string/starts-with? new-identity "0x"))
|
||||
is-ens? (and (not is-public-key?)
|
||||
(ens/valid-eth-name-prefix? new-identity))
|
||||
error (db/validate-pub-key db new-identity)]
|
||||
(reset! resolve-last-id nil)
|
||||
(merge {:db (assoc db
|
||||
:contacts/new-identity
|
||||
{:public-key new-identity
|
||||
:state (cond is-ens?
|
||||
:searching
|
||||
(and (string/blank? new-identity) (not new-ens-name))
|
||||
:empty
|
||||
error
|
||||
:error
|
||||
:else
|
||||
:valid)
|
||||
:error error
|
||||
:ens-name (resolver/ens-name-parse new-ens-name)})}
|
||||
(when is-ens?
|
||||
(reset! resolve-last-id (random/id))
|
||||
(let [chain (ethereum/chain-keyword db)]
|
||||
{:resolve-public-key
|
||||
{:chain chain
|
||||
:contact-identity new-identity
|
||||
:cb #(re-frame/dispatch [:new-chat/set-new-identity
|
||||
%
|
||||
new-identity
|
||||
@resolve-last-id])}}))))))
|
||||
(let [ens-error (and (= new-identity-raw "0x") (not (string/blank? new-ens-name)))]
|
||||
(when (or (not id) (= id @resolve-last-id))
|
||||
(if ens-error
|
||||
{:db (assoc-in db [:contacts/new-identity :state] :error)}
|
||||
(let [new-identity (utils/safe-trim new-identity-raw)
|
||||
is-public-key? (and (string? new-identity)
|
||||
(utils.db/valid-public-key? new-identity))
|
||||
is-ens? (and (not is-public-key?)
|
||||
(ens/valid-eth-name-prefix? new-identity))
|
||||
error (db/validate-pub-key db new-identity)]
|
||||
(reset! resolve-last-id nil)
|
||||
(merge {:db (assoc db
|
||||
:contacts/new-identity
|
||||
{:public-key new-identity
|
||||
:state (cond is-ens?
|
||||
:searching
|
||||
(and (string/blank? new-identity) (not new-ens-name))
|
||||
:empty
|
||||
error
|
||||
:error
|
||||
:else
|
||||
:valid)
|
||||
:error error
|
||||
:ens-name (stateofus/ens-name-parse new-ens-name)})}
|
||||
(when is-ens?
|
||||
(reset! resolve-last-id (random/id))
|
||||
{:resolve-public-key
|
||||
{:chain-id (ethereum/chain-id db)
|
||||
:contact-identity new-identity
|
||||
:cb #(re-frame/dispatch [:new-chat/set-new-identity
|
||||
%
|
||||
new-identity
|
||||
@resolve-last-id])}})))))))
|
||||
|
||||
(fx/defn clear-new-identity
|
||||
{:events [::clear-new-identity ::new-chat-focus]}
|
||||
@@ -66,7 +68,7 @@
|
||||
|
||||
(fx/defn qr-code-handled
|
||||
{:events [::qr-code-handled]}
|
||||
[{:keys [db] :as cofx} {:keys [type public-key chat-id data]} {:keys [new-contact?] :as opts}]
|
||||
[{:keys [db] :as cofx} {:keys [type public-key chat-id data ens-name]} {:keys [new-contact?] :as opts}]
|
||||
(let [public-key? (and (string? data)
|
||||
(string/starts-with? data "0x"))
|
||||
chat-key (cond
|
||||
@@ -78,9 +80,9 @@
|
||||
(if-not validation-result
|
||||
(if new-contact?
|
||||
(fx/merge cofx
|
||||
(contact/add-contact chat-key nil nil)
|
||||
(contact/add-contact chat-key nil ens-name)
|
||||
(navigation/navigate-to-cofx :contacts-list {}))
|
||||
(chat/start-chat cofx chat-key nil))
|
||||
(chat/start-chat cofx chat-key ens-name))
|
||||
{:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code)
|
||||
:content (case validation-result
|
||||
:invalid
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.ethereum.ens :as ens]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.ethereum.resolver :as resolver]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.native-module.core :as status]
|
||||
[status-im.ui.components.list-selection :as list-selection]
|
||||
@@ -14,7 +13,6 @@
|
||||
[status-im.utils.contenthash :as contenthash]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.utils.http :as http]
|
||||
[status-im.utils.multihash :as multihash]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.random :as random]
|
||||
[status-im.utils.types :as types]
|
||||
@@ -73,22 +71,10 @@
|
||||
(let [history-host (http/url-host (try (nth history history-index) (catch js/Error _)))]
|
||||
(cond-> browser history-host (assoc :unsafe? (eth-phishing-detect history-host)))))
|
||||
|
||||
(defn- content->hash [hex]
|
||||
(when (and hex (not= hex "0x"))
|
||||
;; TODO(julien) Remove once our ENS DApp are migrated
|
||||
(multihash/base58 (multihash/create :sha2-256 (subs hex 2)))))
|
||||
|
||||
(defn resolve-ens-content-callback [hex]
|
||||
(let [hash (content->hash hex)]
|
||||
(if (and hash (not= hash resolver/default-hash))
|
||||
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-success {:namespace :ipfs :hash hash}])
|
||||
(re-frame/dispatch [:browser.callback/resolve-ens-contenthash]))))
|
||||
|
||||
(defn resolve-ens-contenthash-callback [hex]
|
||||
(let [{:keys [hash] :as m} (contenthash/decode hex)]
|
||||
(if (and hash (not= hash resolver/default-hash))
|
||||
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-success m])
|
||||
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-error]))))
|
||||
(defn resolve-ens-contenthash-callback [url]
|
||||
(if (not (string/blank? url))
|
||||
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-success url])
|
||||
(re-frame/dispatch [:browser.callback/resolve-ens-multihash-error])))
|
||||
|
||||
(fx/defn resolve-url
|
||||
[{:keys [db]} {:keys [error? resolved-url]}]
|
||||
@@ -96,26 +82,12 @@
|
||||
(let [current-url (get-current-url (get-current-browser db))
|
||||
host (http/url-host current-url)]
|
||||
(if (and (not resolved-url) (ens/is-valid-eth-name? host))
|
||||
(let [chain (ethereum/chain-keyword db)]
|
||||
{:db (update db :browser/options assoc :resolving? true)
|
||||
:browser/resolve-ens-content {:registry (get ens/ens-registries
|
||||
chain)
|
||||
:ens-name host
|
||||
:cb resolve-ens-content-callback}})
|
||||
{:db (update db :browser/options assoc :resolving? true)
|
||||
:browser/resolve-ens-contenthash {:chain-id (ethereum/chain-id db)
|
||||
:ens-name host
|
||||
:cb resolve-ens-contenthash-callback}}
|
||||
{:db (update db :browser/options assoc :url (or resolved-url current-url) :resolving? false)}))))
|
||||
|
||||
(fx/defn resolve-ens-contenthash
|
||||
{:events [:browser.callback/resolve-ens-contenthash]}
|
||||
[{:keys [db]}]
|
||||
(let [current-url (get-current-url (get-current-browser db))
|
||||
host (http/url-host current-url)
|
||||
chain (ethereum/chain-keyword db)]
|
||||
{:db (update db :browser/options assoc :resolving? true)
|
||||
:browser/resolve-ens-contenthash {:registry (get ens/ens-registries
|
||||
chain)
|
||||
:ens-name host
|
||||
:cb resolve-ens-contenthash-callback}}))
|
||||
|
||||
(fx/defn update-browser
|
||||
[{:keys [db]}
|
||||
{:keys [browser-id] :as browser}]
|
||||
@@ -135,28 +107,37 @@
|
||||
{:keys [url] :as bookmark}]
|
||||
{:db (assoc-in db [:bookmarks/bookmarks url] bookmark)
|
||||
::json-rpc/call [{:method "browsers_storeBookmark"
|
||||
:params [bookmark]
|
||||
:on-success #(re-frame/dispatch [:browser/sync-bookmark %1])}]})
|
||||
|
||||
(fx/defn sync-bookmark
|
||||
{:events [:browser/sync-bookmark]}
|
||||
[_ bookmark]
|
||||
{::json-rpc/call [{:method "wakuext_syncBookmark"
|
||||
:params [bookmark]
|
||||
:on-success #()}]})
|
||||
|
||||
(fx/defn update-bookmark
|
||||
{:events [:browser/update-bookmark]}
|
||||
[{:keys [db]}
|
||||
[{:keys [db] :as cofx}
|
||||
{:keys [url] :as bookmark}]
|
||||
{:db (update-in db
|
||||
[:bookmarks/bookmarks url]
|
||||
merge bookmark)
|
||||
::json-rpc/call [{:method "browsers_updateBookmark"
|
||||
:params [url bookmark]
|
||||
:on-success #()}]})
|
||||
(let [old-bookmark (get-in db [:bookmarks/bookmarks url])
|
||||
new-bookmark (merge old-bookmark bookmark)]
|
||||
(fx/merge cofx {:db (assoc-in db [:bookmarks/bookmarks url] new-bookmark)
|
||||
::json-rpc/call [{:method "browsers_updateBookmark"
|
||||
:params [url bookmark]
|
||||
:on-success #(re-frame/dispatch [:browser/sync-bookmark new-bookmark])}]})))
|
||||
|
||||
(fx/defn delete-bookmark
|
||||
{:events [:browser/delete-bookmark]}
|
||||
[{:keys [db]}
|
||||
[{:keys [db] :as cofx}
|
||||
url]
|
||||
{:db (update db :bookmarks/bookmarks dissoc url)
|
||||
::json-rpc/call [{:method "browsers_deleteBookmark"
|
||||
:params [url]
|
||||
:on-success #()}]})
|
||||
(let [old-bookmark (get-in db [:bookmarks/bookmarks url])
|
||||
removed-bookmark (merge old-bookmark {:removed true})]
|
||||
(fx/merge cofx {:db (update db :bookmarks/bookmarks dissoc url)
|
||||
::json-rpc/call [{:method "browsers_removeBookmark"
|
||||
:params [url]
|
||||
:on-success #(re-frame/dispatch [:browser/sync-bookmark removed-bookmark])}]})))
|
||||
|
||||
(defn can-go-back? [{:keys [history-index]}]
|
||||
(pos? history-index))
|
||||
@@ -217,11 +198,11 @@
|
||||
|
||||
(fx/defn resolve-ens-multihash-success
|
||||
{:events [:browser.callback/resolve-ens-multihash-success]}
|
||||
[{:keys [db] :as cofx} m]
|
||||
[{:keys [db] :as cofx} url]
|
||||
(let [current-url (get-current-url (get-current-browser db))
|
||||
host (http/url-host current-url)
|
||||
path (subs current-url (+ (.indexOf ^js current-url host) (count host)))
|
||||
gateway (storage-gateway m)]
|
||||
gateway url]
|
||||
(fx/merge cofx
|
||||
{:db (-> (update db :browser/options
|
||||
assoc
|
||||
@@ -418,12 +399,19 @@
|
||||
:result {:jsonrpc "2.0"
|
||||
:id (int id)
|
||||
:result (if (= method "eth_coinbase") dapps-address [dapps-address])}})
|
||||
{:browser/call-rpc [payload
|
||||
#(re-frame/dispatch [:browser.callback/call-rpc
|
||||
{:type constants/web3-send-async-callback
|
||||
:messageId message-id
|
||||
:error %1
|
||||
:result %2}])]}))))
|
||||
(if (= method "personal_ecRecover")
|
||||
{:signing.fx/recover-message {:params {:message (first params)
|
||||
:signature (second params)}
|
||||
:on-completed #(re-frame/dispatch [:browser.callback/call-rpc
|
||||
{:type constants/web3-send-async-callback
|
||||
:messageId message-id
|
||||
:result (types/json->clj %)}])}}
|
||||
{:browser/call-rpc [payload
|
||||
#(re-frame/dispatch [:browser.callback/call-rpc
|
||||
{:type constants/web3-send-async-callback
|
||||
:messageId message-id
|
||||
:error %1
|
||||
:result %2}])]})))))
|
||||
|
||||
(fx/defn handle-no-permissions [cofx {:keys [method id]} message-id]
|
||||
(if (= method "eth_accounts")
|
||||
@@ -490,23 +478,18 @@
|
||||
(= type constants/api-request)
|
||||
(browser.permissions/process-permission cofx dapp-name permission messageId params))))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:browser/resolve-ens-content
|
||||
(fn [{:keys [registry ens-name cb]}]
|
||||
(resolver/content registry ens-name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:browser/resolve-ens-contenthash
|
||||
(fn [{:keys [registry ens-name cb]}]
|
||||
(resolver/contenthash registry ens-name cb)))
|
||||
(fn [{:keys [chain-id ens-name cb]}]
|
||||
(ens/resource-url chain-id ens-name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:browser/send-to-bridge
|
||||
(fn [message]
|
||||
(let [^js webview @webview-ref/webview-ref
|
||||
msg (str "ReactNativeWebView.onMessage('"
|
||||
msg (str "(function() { var __send = function() { if (ReactNativeWebView.onMessage) { ReactNativeWebView.onMessage('"
|
||||
(types/clj->json message)
|
||||
"');")]
|
||||
"');} else {setTimeout(__send, 0)}}; __send();})();")]
|
||||
(when (and message webview)
|
||||
(.injectJavaScript webview msg)))))
|
||||
|
||||
@@ -584,3 +567,12 @@
|
||||
{:events [:browser/loading-started]}
|
||||
[cofx]
|
||||
(update-browser-options cofx {:error? false :loading? true}))
|
||||
|
||||
(fx/defn handle-bookmarks
|
||||
[{:keys [db]} bookmarks]
|
||||
(let [changed-bookmarks (reduce (fn [acc {:keys [url] :as bookmark}]
|
||||
(assoc acc url bookmark))
|
||||
{}
|
||||
bookmarks)
|
||||
stored-bookmarks (get-in db [:bookmarks/bookmarks])]
|
||||
{:db (assoc-in db [:bookmarks/bookmarks] (merge stored-bookmarks changed-bookmarks))}))
|
||||
@@ -387,12 +387,14 @@
|
||||
|
||||
(fx/defn show-profile
|
||||
{:events [:chat.ui/show-profile]}
|
||||
[{:keys [db] :as cofx} identity]
|
||||
[{:keys [db] :as cofx} identity ens-name]
|
||||
(let [my-public-key (get-in db [:multiaccount :public-key])]
|
||||
(when (not= my-public-key identity)
|
||||
(fx/merge
|
||||
cofx
|
||||
{:db (assoc db :contacts/identity identity)}
|
||||
{:db (-> db
|
||||
(assoc :contacts/identity identity)
|
||||
(assoc :contacts/ens-name ens-name))}
|
||||
(start-profile-chat identity true)))))
|
||||
|
||||
(fx/defn clear-history-pressed
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.utils.fx :as fx]
|
||||
["@react-native-community/cameraroll" :as CameraRoll]
|
||||
["react-native-blob-util" :default ReactNativeBlobUtil]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im.utils.config :as config]
|
||||
[status-im.ui.components.permissions :as permissions]
|
||||
@@ -12,6 +13,7 @@
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.fs :as fs]
|
||||
[status-im.chat.models :as chat]))
|
||||
|
||||
(def maximum-image-size-px 2000)
|
||||
@@ -37,31 +39,27 @@
|
||||
(.-localIdentifier result)
|
||||
(.-path result)))
|
||||
|
||||
(defn android-save-image-to-gallery [base64-uri]
|
||||
(react/image-get-size
|
||||
base64-uri
|
||||
(fn [width height]
|
||||
(image-processing/resize
|
||||
base64-uri
|
||||
width
|
||||
height
|
||||
100
|
||||
(fn [^js resized-image]
|
||||
(let [path (.-path resized-image)
|
||||
path (if (string/starts-with? path "file") path (str "file://" path))]
|
||||
(.save CameraRoll path)))
|
||||
#(log/error "could not resize image" %)))))
|
||||
(def temp-image-url (str (fs/cache-dir) "/StatusIm_Image.jpeg"))
|
||||
|
||||
(defn download-image-http [base64-uri on-success]
|
||||
(-> (.config ReactNativeBlobUtil (clj->js {:trusty platform/ios?
|
||||
:path temp-image-url}))
|
||||
(.fetch "GET" base64-uri)
|
||||
(.then #(on-success (.path %)))
|
||||
(.catch #(log/error "could not save image"))))
|
||||
|
||||
(defn save-to-gallery [path] (.save CameraRoll path))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::save-image-to-gallery
|
||||
(fn [base64-uri]
|
||||
(if platform/ios?
|
||||
(-> (.save CameraRoll base64-uri)
|
||||
(-> (download-image-http base64-uri save-to-gallery)
|
||||
(.catch #(utils/show-popup (i18n/label :t/error)
|
||||
(i18n/label :t/external-storage-denied))))
|
||||
(permissions/request-permissions
|
||||
{:permissions [:write-external-storage]
|
||||
:on-allowed #(android-save-image-to-gallery base64-uri)
|
||||
:on-allowed #(download-image-http base64-uri save-to-gallery)
|
||||
:on-denied (fn []
|
||||
(utils/set-timeout
|
||||
#(utils/show-popup (i18n/label :t/error)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
{:chat-id chat-id
|
||||
:content-type constants/content-type-image
|
||||
:image-path (utils/safe-replace uri #"file://" "")
|
||||
:text (i18n/label :t/update-to-see-image)})
|
||||
:text (i18n/label :t/update-to-see-image {"locale" "en"})})
|
||||
images)))
|
||||
|
||||
(fx/defn clean-input [{:keys [db] :as cofx} current-chat-id]
|
||||
@@ -227,7 +227,7 @@
|
||||
:content-type constants/content-type-audio
|
||||
:audio-path audio-path
|
||||
:audio-duration-ms duration
|
||||
:text (i18n/label :t/update-to-listen-audio)})))
|
||||
:text (i18n/label :t/update-to-listen-audio {"locale" "en"})})))
|
||||
|
||||
(fx/defn send-sticker-message
|
||||
[cofx {:keys [hash pack]} current-chat-id]
|
||||
@@ -236,7 +236,7 @@
|
||||
:content-type constants/content-type-sticker
|
||||
:sticker {:hash hash
|
||||
:pack pack}
|
||||
:text (i18n/label :t/update-to-see-sticker)})))
|
||||
:text (i18n/label :t/update-to-see-sticker {"locale" "en"})})))
|
||||
|
||||
(fx/defn send-edited-message [{:keys [db] :as cofx} text {:keys [message-id]}]
|
||||
(fx/merge
|
||||
|
||||
@@ -200,7 +200,17 @@
|
||||
:nickname nickname
|
||||
:public-key public-key})))
|
||||
|
||||
(defn mentionable-commmunity-members [contacts my-public-key community-members]
|
||||
(defn mentionable-contacts [contacts]
|
||||
(reduce
|
||||
(fn [acc [key contact]]
|
||||
(let [mentionable-contact (add-searchable-phrases-to-contact contact false)]
|
||||
(if (nil? mentionable-contact)
|
||||
acc
|
||||
(assoc acc key mentionable-contact))))
|
||||
{}
|
||||
contacts))
|
||||
|
||||
(defn mentionable-contacts-from-identites [contacts my-public-key identities]
|
||||
(reduce (fn [acc identity]
|
||||
(let [contact (multiaccounts/contact-by-identity
|
||||
contacts identity)
|
||||
@@ -213,58 +223,31 @@
|
||||
(if (nil? mentionable-contact) acc
|
||||
(assoc acc identity mentionable-contact))))
|
||||
{}
|
||||
(keys (dissoc community-members my-public-key))))
|
||||
(remove #(= my-public-key %) identities)))
|
||||
|
||||
(defn get-mentionable-users
|
||||
[{{:keys [current-chat-id]
|
||||
:contacts/keys [contacts] :as db} :db}]
|
||||
(let [{:keys [chat-type community-id users] :as chat} (get-in db [:chats current-chat-id])
|
||||
{:keys [name preferred-name public-key]} (:multiaccount db)
|
||||
chat-specific-suggestions
|
||||
(cond
|
||||
(= chat-type constants/private-group-chat-type)
|
||||
(let [{:keys [public-key]} (:multiaccount db)
|
||||
all-contacts (:contacts/contacts db)
|
||||
group-contacts
|
||||
(contact.db/get-all-contacts-in-group-chat
|
||||
(disj (:contacts chat) public-key)
|
||||
nil
|
||||
all-contacts
|
||||
nil)]
|
||||
(reduce
|
||||
(fn [acc {:keys [alias public-key identicon name]}]
|
||||
(assoc acc public-key
|
||||
{:alias alias
|
||||
:identicon identicon
|
||||
:public-key public-key
|
||||
:name name}))
|
||||
{}
|
||||
group-contacts))
|
||||
(= chat-type constants/one-to-one-chat-type)
|
||||
(assoc users
|
||||
current-chat-id
|
||||
(contact.db/public-key->contact contacts current-chat-id))
|
||||
(defn get-mentionable-users [chat all-contacts current-multiaccount community-members]
|
||||
(let [{:keys [name preferred-name public-key]} current-multiaccount
|
||||
{:keys [chat-id users contacts chat-type]} chat
|
||||
mentionable-contacts (mentionable-contacts all-contacts)
|
||||
mentionable-users (assoc users public-key {:alias name
|
||||
:name (or preferred-name name)
|
||||
:public-key public-key})]
|
||||
(cond
|
||||
(= chat-type constants/private-group-chat-type)
|
||||
(merge mentionable-users
|
||||
(mentionable-contacts-from-identites all-contacts public-key contacts))
|
||||
|
||||
(= chat-type constants/community-chat-type)
|
||||
(merge users (mentionable-commmunity-members
|
||||
contacts public-key
|
||||
(get-in db [:communities community-id :members])))
|
||||
(= chat-type constants/one-to-one-chat-type)
|
||||
(assoc mentionable-users chat-id (get mentionable-contacts chat-id
|
||||
(-> chat-id
|
||||
contact.db/public-key->new-contact
|
||||
contact.db/enrich-contact)))
|
||||
|
||||
:else users)]
|
||||
(reduce
|
||||
(fn [acc [key {:keys [alias name identicon]}]]
|
||||
(let [name (utils/safe-replace name ".stateofus.eth" "")]
|
||||
(assoc acc key
|
||||
{:alias alias
|
||||
:name (or name alias)
|
||||
:identicon identicon
|
||||
:public-key key})))
|
||||
(assoc chat-specific-suggestions
|
||||
public-key
|
||||
{:alias name
|
||||
:name (or preferred-name name)
|
||||
:public-key public-key})
|
||||
contacts)))
|
||||
(= chat-type constants/community-chat-type)
|
||||
(merge mentionable-users
|
||||
(mentionable-contacts-from-identites all-contacts public-key (keys community-members)))
|
||||
|
||||
:else (merge mentionable-users mentionable-contacts))))
|
||||
|
||||
(def ending-chars "[\\s\\.,;:]")
|
||||
(def ending-chars-regex (re-pattern ending-chars))
|
||||
@@ -376,8 +359,14 @@
|
||||
(recur new-text users (rest idxs)
|
||||
(+ diff (- (count text) (count new-text)))))))))))))
|
||||
|
||||
(defn check-mentions [cofx text]
|
||||
(replace-mentions text (get-mentionable-users cofx)))
|
||||
(defn check-mentions [{:keys [db]} text]
|
||||
(let [current-chat-id (:current-chat-id db)
|
||||
chat (get-in db [:chats current-chat-id])
|
||||
all-contacts (:contacts/contacts db)
|
||||
current-multiaccount (:multiaccount db)
|
||||
community-members (get-in db [:communities (:community-id chat) :members])
|
||||
mentionable-users (get-mentionable-users chat all-contacts current-multiaccount community-members)]
|
||||
(replace-mentions text mentionable-users)))
|
||||
|
||||
(defn get-at-sign-idxs
|
||||
([text start]
|
||||
|
||||
@@ -222,3 +222,16 @@
|
||||
:c2 {:m3 {:chat-id :c2 :message-id :m3}
|
||||
:m4 {:chat-id :c2 :message-id :m4}}}}}
|
||||
[:m1 :m3]))
|
||||
|
||||
(defn remove-cleared-message [messages cleared-at]
|
||||
(into {} (remove #(let [message-clock (:clock-value (second %))]
|
||||
(<= message-clock cleared-at))
|
||||
messages)))
|
||||
|
||||
(fx/defn handle-cleared-histories-messages
|
||||
{:events [::handle-cleared-hisotories-messages]}
|
||||
[{:keys [db]} cleared-histories]
|
||||
{:db (reduce (fn [acc current]
|
||||
(update-in acc [:messages (:chatId current)] remove-cleared-message (:clearedAt current)))
|
||||
db
|
||||
cleared-histories)})
|
||||
@@ -221,12 +221,10 @@
|
||||
(fx/defn create
|
||||
{:events [::create-confirmation-pressed]}
|
||||
[{:keys [db]}]
|
||||
(let [{:keys [name description image]} (get db :communities/create)]
|
||||
;; If access is ENS only, we set the access to require approval and set the rule
|
||||
;; of ens only
|
||||
(let [{:keys [name description membership image]} (get db :communities/create)]
|
||||
(let [params {:name name
|
||||
:description description
|
||||
:membership constants/community-on-request-access
|
||||
:membership membership
|
||||
:color (rand-nth colors/chat-colors)
|
||||
:image (string/replace-first (str image) #"file://" "")
|
||||
:imageAx 0
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
(fx/defn send-message-pressed
|
||||
{:events [:contact.ui/send-message-pressed]
|
||||
:interceptors [(re-frame/inject-cofx :random-id-generator)]}
|
||||
[cofx {:keys [public-key]}]
|
||||
[cofx {:keys [public-key ens-name]}]
|
||||
(fx/merge cofx
|
||||
{:dispatch-later [{:ms 1000 :dispatch [:chat.ui/start-chat public-key]}]}
|
||||
{:dispatch-later [{:ms 1000 :dispatch [:chat.ui/start-chat public-key ens-name]}]}
|
||||
(notification-center/accept-all-activity-center-notifications-from-chat public-key)
|
||||
(navigation/pop-to-root-tab :chat-stack)))
|
||||
|
||||
|
||||
@@ -14,6 +14,14 @@
|
||||
:identicon (identicon/identicon public-key)
|
||||
:public-key public-key}))
|
||||
|
||||
(defn public-key-and-ens-name->new-contact [public-key ens-name]
|
||||
(let [contact (public-key->new-contact 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
|
||||
|
||||
@@ -2,19 +2,14 @@
|
||||
(:refer-clojure :exclude [name])
|
||||
(:require [clojure.string :as string]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.ethereum.abi-spec :as abi-spec]
|
||||
[status-im.ethereum.contracts :as contracts]
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.ethereum.eip55 :as eip55]
|
||||
[status-im.ethereum.ens :as ens]
|
||||
[status-im.ethereum.resolver :as resolver]
|
||||
[status-im.ethereum.stateofus :as stateofus]
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]
|
||||
[status-im.signing.core :as signing]
|
||||
[status-im.navigation :as navigation]
|
||||
[status-im.utils.datetime :as datetime]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.utils.money :as money]
|
||||
[status-im.utils.random :as random]
|
||||
[status-im.bottom-sheet.core :as bottom-sheet]))
|
||||
|
||||
@@ -23,6 +18,26 @@
|
||||
username
|
||||
(stateofus/subdomain username)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::resolve-address
|
||||
(fn [[chain-id name cb]]
|
||||
(ens/address chain-id name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::resolve-owner
|
||||
(fn [[chain-id name cb]]
|
||||
(ens/owner chain-id name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::resolve-pubkey
|
||||
(fn [[chain-id name cb]]
|
||||
(ens/pubkey chain-id name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::get-expiration-time
|
||||
(fn [[chain-id name cb]]
|
||||
(ens/expire-at chain-id name cb)))
|
||||
|
||||
(fx/defn update-ens-tx-state
|
||||
{:events [:update-ens-tx-state]}
|
||||
[{:keys [db]} new-state username custom-domain? tx-hash]
|
||||
@@ -52,29 +67,6 @@
|
||||
[{:keys [db]} tx-hash]
|
||||
{:db (update db :ens/registrations dissoc tx-hash)})
|
||||
|
||||
(re-frame/reg-fx
|
||||
::resolve-address
|
||||
(fn [[registry name cb]]
|
||||
(ens/get-addr registry name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::resolve-owner
|
||||
(fn [[registry name cb]]
|
||||
(ens/get-owner registry name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::resolve-pubkey
|
||||
(fn [[registry name cb]]
|
||||
(resolver/pubkey registry name cb)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::get-expiration-time
|
||||
(fn [[chain label-hash cb]]
|
||||
(stateofus/get-registrar
|
||||
chain
|
||||
(fn [registrar]
|
||||
(stateofus/get-expiration-time registrar label-hash cb)))))
|
||||
|
||||
(fx/defn set-state
|
||||
{:events [::name-resolved]}
|
||||
[{:keys [db]} username state address]
|
||||
@@ -84,23 +76,6 @@
|
||||
(assoc-in [:ens/registration :state] state)
|
||||
(assoc-in [:ens/registration :address] address))}))
|
||||
|
||||
(fx/defn on-resolver-found
|
||||
{:events [::resolver-found]}
|
||||
[{:keys [db] :as cofx} resolver-contract address]
|
||||
(let [{:keys [username custom-domain?]} (:ens/registration db)
|
||||
{:keys [public-key]} (:multiaccount db)
|
||||
{:keys [x y]} (ethereum/coordinates public-key)
|
||||
namehash (ens/namehash (str username (when-not custom-domain?
|
||||
".stateofus.eth")))]
|
||||
(signing/eth-transaction-call
|
||||
cofx
|
||||
{:contract resolver-contract
|
||||
:from address
|
||||
:method "setPubkey(bytes32,bytes32,bytes32)"
|
||||
:params [namehash x y]
|
||||
:on-result [::save-username custom-domain? username true]
|
||||
:on-error [::on-registration-failure]})))
|
||||
|
||||
(fx/defn save-username
|
||||
{:events [::save-username]}
|
||||
[{:keys [db] :as cofx} custom-domain? username redirectToSummary]
|
||||
@@ -116,26 +91,37 @@
|
||||
(multiaccounts.update/multiaccount-update
|
||||
:preferred-name name {})))))
|
||||
|
||||
(fx/defn set-pub-key
|
||||
{:events [::set-pub-key]}
|
||||
[{:keys [db]}]
|
||||
(let [{:keys [username address custom-domain?]} (:ens/registration db)
|
||||
address (or address (ethereum/default-address db))
|
||||
{:keys [public-key]} (:multiaccount db)
|
||||
chain-id (ethereum/chain-id db)
|
||||
username (fullname custom-domain? username)]
|
||||
(ens/set-pub-key-prepare-tx
|
||||
chain-id address username public-key
|
||||
#(re-frame/dispatch [:signing.ui/sign
|
||||
{:tx-obj %
|
||||
:on-result [::save-username custom-domain? username true]
|
||||
:on-error [::on-registration-failure]}]))))
|
||||
|
||||
(fx/defn on-input-submitted
|
||||
{:events [::input-submitted ::input-icon-pressed]}
|
||||
{:events [::input-submitted]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [{:keys [state username custom-domain? address]} (:ens/registration db)
|
||||
registry-contract (get ens/ens-registries (ethereum/chain-keyword db))
|
||||
ens-name (str username (when-not custom-domain?
|
||||
".stateofus.eth"))]
|
||||
(let [{:keys [state username custom-domain?]} (:ens/registration db)]
|
||||
(case state
|
||||
(:available :owned)
|
||||
(navigation/navigate-to-cofx cofx :ens-checkout {})
|
||||
:connected-with-different-key
|
||||
(ens/resolver registry-contract ens-name
|
||||
#(re-frame/dispatch [::resolver-found % address]))
|
||||
(re-frame/dispatch [::set-pub-key])
|
||||
:connected
|
||||
(save-username cofx custom-domain? username true)
|
||||
;; for other states, we do nothing
|
||||
nil)))
|
||||
|
||||
(defn- on-resolve-owner
|
||||
[registry custom-domain? username addresses public-key response resolve-last-id* resolve-last-id]
|
||||
[chain-id custom-domain? username addresses public-key response resolve-last-id* resolve-last-id]
|
||||
(when (= @resolve-last-id* resolve-last-id)
|
||||
(cond
|
||||
|
||||
@@ -146,14 +132,17 @@
|
||||
;; if we get an address back, we try to get the public key associated
|
||||
;; with the username as well
|
||||
(get addresses (eip55/address->checksum response))
|
||||
(resolver/pubkey registry (fullname custom-domain? username)
|
||||
#(re-frame/dispatch [::name-resolved username
|
||||
(cond
|
||||
(not public-key) :owned
|
||||
(= % public-key) :connected
|
||||
:else :connected-with-different-key)
|
||||
(eip55/address->checksum response)]))
|
||||
|
||||
(ens/pubkey
|
||||
chain-id
|
||||
(fullname custom-domain? username)
|
||||
#(re-frame/dispatch [::name-resolved username
|
||||
(cond
|
||||
(not public-key) :owned
|
||||
(string/ends-with? % "0000000000000000000000000000000000000000000000000000000000000000")
|
||||
:invalid-ens
|
||||
(= % public-key) :connected
|
||||
:else :connected-with-different-key)
|
||||
(eip55/address->checksum response)]))
|
||||
:else
|
||||
(re-frame/dispatch [::name-resolved username :taken]))))
|
||||
|
||||
@@ -165,28 +154,17 @@
|
||||
|
||||
(fx/defn register-name
|
||||
{:events [::register-name-pressed]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [{:keys [custom-domain? username address]}
|
||||
[{:keys [db]} address]
|
||||
(let [{:keys [username]}
|
||||
(:ens/registration db)
|
||||
{:keys [public-key]} (:multiaccount db)
|
||||
chain (ethereum/chain-keyword db)
|
||||
chain-id (ethereum/chain-id db)
|
||||
amount (registration-cost chain-id)
|
||||
{:keys [x y]} (ethereum/coordinates public-key)]
|
||||
(stateofus/get-registrar
|
||||
chain
|
||||
(fn [contract]
|
||||
(signing/eth-transaction-call
|
||||
cofx
|
||||
{:contract (contracts/get-address db :status/snt)
|
||||
:method "approveAndCall(address,uint256,bytes)"
|
||||
:from address
|
||||
:params [contract
|
||||
(money/unit->token amount 18)
|
||||
(abi-spec/encode "register(bytes32,address,bytes32,bytes32)"
|
||||
[(ethereum/sha3 username) address x y])]
|
||||
:on-result [:update-ens-tx-state-and-redirect :submitted username custom-domain?]
|
||||
:on-error [::on-registration-failure]})))))
|
||||
chain-id (ethereum/chain-id db)]
|
||||
(ens/register-prepare-tx
|
||||
chain-id address username public-key
|
||||
#(re-frame/dispatch [:signing.ui/sign
|
||||
{:tx-obj %
|
||||
:on-result [:update-ens-tx-state-and-redirect :submitted username false]
|
||||
:on-error [::on-registration-failure]}]))))
|
||||
|
||||
(defn- valid-custom-domain? [username]
|
||||
(and (ens/is-valid-eth-name? username)
|
||||
@@ -225,11 +203,11 @@
|
||||
(let [{:keys [multiaccount]} db
|
||||
{:keys [public-key]} multiaccount
|
||||
addresses (ethereum/addresses-without-watch db)
|
||||
registry (get ens/ens-registries (ethereum/chain-keyword db))]
|
||||
{::resolve-owner [registry
|
||||
chain-id (ethereum/chain-id db)]
|
||||
{::resolve-owner [chain-id
|
||||
(fullname custom-domain? username)
|
||||
#(on-resolve-owner
|
||||
registry custom-domain? username addresses public-key %
|
||||
chain-id custom-domain? username addresses public-key %
|
||||
resolve-last-id @resolve-last-id)]})))))
|
||||
|
||||
(fx/defn return-to-ens-main-screen
|
||||
@@ -260,7 +238,7 @@
|
||||
|
||||
(fx/defn save-preferred-name
|
||||
{:events [::save-preferred-name]}
|
||||
[{:keys [db] :as cofx} name]
|
||||
[cofx name]
|
||||
(multiaccounts.update/multiaccount-update cofx
|
||||
:preferred-name name
|
||||
{}))
|
||||
@@ -270,7 +248,7 @@
|
||||
it should only be called if the user cancels the signing
|
||||
Actual registration failure has not been implemented properly"
|
||||
{:events [::on-registration-failure]}
|
||||
[{:keys [db]} username])
|
||||
[_ _])
|
||||
|
||||
(fx/defn store-name-address
|
||||
{:events [::address-resolved]}
|
||||
@@ -293,20 +271,17 @@
|
||||
(fx/defn navigate-to-name
|
||||
{:events [::navigate-to-name]}
|
||||
[{:keys [db] :as cofx} username]
|
||||
(let [chain (ethereum/chain-keyword db)
|
||||
registry (get ens/ens-registries chain)]
|
||||
(let [chain-id (ethereum/chain-id db)]
|
||||
(fx/merge cofx
|
||||
{::get-expiration-time
|
||||
[chain
|
||||
(-> username
|
||||
stateofus/username
|
||||
ethereum/sha3)
|
||||
[chain-id
|
||||
(stateofus/username username)
|
||||
#(re-frame/dispatch [::get-expiration-time-success username %])]
|
||||
::resolve-address
|
||||
[registry username
|
||||
[chain-id username
|
||||
#(re-frame/dispatch [::address-resolved username %])]
|
||||
::resolve-pubkey
|
||||
[registry username
|
||||
[chain-id username
|
||||
#(re-frame/dispatch [::public-key-resolved username %])]}
|
||||
(navigation/navigate-to-cofx :ens-name-details username))))
|
||||
|
||||
|
||||
@@ -1,12 +1,5 @@
|
||||
(ns status-im.ethereum.ens
|
||||
"
|
||||
https://docs.ens.domains/en/latest/index.html
|
||||
https://eips.ethereum.org/EIPS/eip-137
|
||||
https://eips.ethereum.org/EIPS/eip-181
|
||||
"
|
||||
(:refer-clojure :exclude [name])
|
||||
(:require [clojure.string :as string]
|
||||
[status-im.ethereum.core :as ethereum]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.ethereum.abi-spec :as abi-spec]))
|
||||
|
||||
@@ -16,143 +9,9 @@
|
||||
:testnet "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"
|
||||
:rinkeby "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"})
|
||||
|
||||
(def default-namehash "0000000000000000000000000000000000000000000000000000000000000000")
|
||||
(def default-address "0x0000000000000000000000000000000000000000")
|
||||
(def default-key "0x0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
|
||||
|
||||
(defn namehash
|
||||
[s]
|
||||
(ethereum/normalized-hex
|
||||
(if (string/blank? s)
|
||||
default-namehash
|
||||
(let [[label remainder] (-> s
|
||||
string/lower-case
|
||||
(string/split #"\." 2))]
|
||||
(if-not (seq label)
|
||||
default-namehash
|
||||
(ethereum/sha3 (str (namehash remainder)
|
||||
(subs (ethereum/sha3 label) 2))))))))
|
||||
|
||||
;; Registry contract
|
||||
|
||||
(defn resolver
|
||||
[registry ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract registry
|
||||
:method "resolver(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:outputs ["address"]
|
||||
:on-error #(cb "0x")
|
||||
:on-success
|
||||
(fn [[address]]
|
||||
(cb (when-not (= address default-address) address)))}))
|
||||
|
||||
(defn owner
|
||||
[registry ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract registry
|
||||
:method "owner(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:outputs ["address"]
|
||||
:on-error #(cb "0x")
|
||||
:on-success
|
||||
(fn [[address]]
|
||||
(cb address))}))
|
||||
|
||||
(defn ttl
|
||||
[registry ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract registry
|
||||
:method "ttl(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:outputs ["uint256"]
|
||||
:on-success
|
||||
(fn [[ttl]]
|
||||
(cb ttl))}))
|
||||
|
||||
;; Resolver contract
|
||||
;; Resolver must implement EIP65 (supportsInterface). When interacting with an unknown resolver it's safer to rely on it.
|
||||
|
||||
(def addr-hash "0x3b3b57de")
|
||||
|
||||
(defn addr
|
||||
[resolver ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract resolver
|
||||
:method "addr(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:outputs ["address"]
|
||||
:on-error #(cb "0x")
|
||||
:on-success
|
||||
(fn [[address]]
|
||||
(cb address))}))
|
||||
|
||||
(def name-hash "0x691f3431")
|
||||
|
||||
;; Defined by https://eips.ethereum.org/EIPS/eip-181
|
||||
|
||||
(defn name
|
||||
[resolver ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract resolver
|
||||
:method "name(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:outputs ["string"]
|
||||
:on-error #(cb "0x")
|
||||
:on-success
|
||||
(fn [[name]]
|
||||
(cb name))}))
|
||||
|
||||
(defn cleanup-hash [raw-hash]
|
||||
;; NOTE: it would be better if our abi-spec/decode was able to do that
|
||||
(let [;; ignore hex prefix
|
||||
[_ raw-hash-rest] (split-at 2 raw-hash)
|
||||
;; the first field gives us the length of the next one in hex and has
|
||||
;; a length of 32 bytes
|
||||
;; 1 byte is 2 chars here
|
||||
[next-field-length-hex raw-hash-rest] (split-at 64 raw-hash-rest)
|
||||
next-field-length (* ^number (abi-spec/hex-to-number (string/join next-field-length-hex)) 2)
|
||||
;; we get the next field which is the length of the hash and is
|
||||
;; expected to be 32 bytes as well
|
||||
[hash-field-length-hex raw-hash-rest] (split-at next-field-length
|
||||
raw-hash-rest)
|
||||
hash-field-length (* ^number (abi-spec/hex-to-number (string/join hash-field-length-hex)) 2)
|
||||
;; we get the hash
|
||||
[hash _] (split-at hash-field-length raw-hash-rest)]
|
||||
(str "0x" (string/join hash))))
|
||||
|
||||
(defn contenthash
|
||||
[resolver ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract resolver
|
||||
:method "contenthash(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:on-error #(cb "0x")
|
||||
:on-success
|
||||
(fn [raw-hash]
|
||||
;; NOTE: it would be better if our abi-spec/decode was able to do that
|
||||
(cb (cleanup-hash raw-hash)))}))
|
||||
|
||||
(defn content
|
||||
[resolver ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract resolver
|
||||
:method "content(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:on-success
|
||||
(fn [hash]
|
||||
(cb hash))
|
||||
;;at some point infura started to return execution reverted error instead of "0x" result
|
||||
;;our code expects "0x" result
|
||||
:on-error #(cb "0x")}))
|
||||
|
||||
(def ABI-hash "0x2203ab56")
|
||||
(def pubkey-hash "0xc8690233")
|
||||
|
||||
(defn uncompressed-public-key
|
||||
[x y]
|
||||
(when (and x y)
|
||||
(str "0x04" x y)))
|
||||
(def default-hash "0x0000000000000000000000000000000000000000000000000000000000000000")
|
||||
|
||||
(defn valid-eth-name-prefix?
|
||||
[prefix]
|
||||
@@ -167,29 +26,54 @@
|
||||
(string? ens-name)
|
||||
(string/ends-with? ens-name ".eth")))
|
||||
|
||||
(defn address
|
||||
[chain-id ens-name cb]
|
||||
{:pre [(is-valid-eth-name? ens-name)]}
|
||||
(json-rpc/call {:method "ens_addressOf"
|
||||
:params [chain-id ens-name]
|
||||
:on-success cb
|
||||
:on-error #(cb "0x")}))
|
||||
|
||||
(defn pubkey
|
||||
[resolver ens-name cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract resolver
|
||||
:method "pubkey(bytes32)"
|
||||
:params [(namehash ens-name)]
|
||||
:outputs ["bytes32" "bytes32"]
|
||||
:on-success
|
||||
(fn [[x y]]
|
||||
(let [public-key (uncompressed-public-key x y)]
|
||||
(cb public-key)))
|
||||
;;at some point infura started to return execution reverted error instead of "0x" result
|
||||
;;our code expects "0x" result
|
||||
:on-error #(cb "0x")}))
|
||||
|
||||
(defn get-addr
|
||||
[registry ens-name cb]
|
||||
[chain-id ens-name cb]
|
||||
{:pre [(is-valid-eth-name? ens-name)]}
|
||||
(resolver registry
|
||||
ens-name
|
||||
#(addr % ens-name cb)))
|
||||
(json-rpc/call {:method "ens_publicKeyOf"
|
||||
:params [chain-id ens-name]
|
||||
:on-success cb
|
||||
;;at some point infura started to return execution reverted error instead of "0x" result
|
||||
;;our code expects "0x" result
|
||||
:on-error #(cb "0x")}))
|
||||
|
||||
(defn get-owner
|
||||
[registry ens-name cb]
|
||||
{:pre [(is-valid-eth-name? ens-name)]}
|
||||
(owner registry ens-name cb))
|
||||
(defn owner
|
||||
[chain-id ens-name cb]
|
||||
(json-rpc/call {:method "ens_ownerOf"
|
||||
:params [chain-id ens-name]
|
||||
:on-success cb
|
||||
:on-error #(cb "0x")}))
|
||||
|
||||
(defn resource-url
|
||||
[chain-id ens-name cb]
|
||||
(json-rpc/call {:method "ens_resourceURL"
|
||||
:params [chain-id ens-name]
|
||||
:on-success #(cb (str "https://" (:Host %)))
|
||||
:on-error #(cb "0x")}))
|
||||
|
||||
(defn expire-at
|
||||
[chain-id ens-name cb]
|
||||
(json-rpc/call {:method "ens_expireAt"
|
||||
:params [chain-id ens-name]
|
||||
:on-success
|
||||
;;NOTE: returns a timestamp in s and we want ms
|
||||
#(cb (* (js/Number (abi-spec/hex-to-number %)) 1000))}))
|
||||
|
||||
(defn register-prepare-tx
|
||||
[chain-id from ens-name pubkey cb]
|
||||
(json-rpc/call {:method "ens_registerPrepareTx"
|
||||
:params [chain-id {:from from} ens-name pubkey]
|
||||
:on-success cb}))
|
||||
|
||||
(defn set-pub-key-prepare-tx
|
||||
[chain-id from ens-name pubkey cb]
|
||||
(json-rpc/call {:method "ens_setPubKeyPrepareTx"
|
||||
:params [chain-id {:from from} ens-name pubkey]
|
||||
:on-success cb}))
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
(ns status-im.ethereum.ens-test
|
||||
(:require [cljs.test :refer-macros [deftest is]]
|
||||
[status-im.ethereum.ens :as ens]))
|
||||
|
||||
(deftest namehash
|
||||
(is (= (str "0x" ens/default-namehash) (ens/namehash nil)))
|
||||
(is (= (str "0x" ens/default-namehash) (ens/namehash "")))
|
||||
(is (= "0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae"
|
||||
(ens/namehash "eth")))
|
||||
(is (= "0xde9b09fd7c5f901e23a3f19fecc54828e9c848539801e86591bd9801b019f84f"
|
||||
(ens/namehash "foo.eth"))))
|
||||
|
||||
(deftest cleanup-hash
|
||||
;; simpledapp.eth
|
||||
(is (= "0xe30101701220795c1ea0ceaf4ceedc9896f14b73bb30e978e4855ee221b9a57f5a934268280e"
|
||||
(ens/cleanup-hash "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000026e30101701220795c1ea0ceaf4ceedc9896f14b73bb30e978e4855ee221b9a57f5a934268280e0000000000000000000000000000000000000000000000000000")))
|
||||
;; ethereum.eth
|
||||
(is (= "0xe301017012206e70f0f72e2bcd0ad69bb2b15ee9e0f4f88693f6b2f485e48699e7d6f8dbd62a"
|
||||
(ens/cleanup-hash "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000026e301017012206e70f0f72e2bcd0ad69bb2b15ee9e0f4f88693f6b2f485e48699e7d6f8dbd62a0000000000000000000000000000000000000000000000000000"))))
|
||||
@@ -29,6 +29,14 @@
|
||||
"eth_getCode" {}
|
||||
"eth_syncing" {}
|
||||
"eth_feeHistory" {}
|
||||
"ens_publicKeyOf" {}
|
||||
"ens_addressOf" {}
|
||||
"ens_expireAt" {}
|
||||
"ens_ownerOf" {}
|
||||
"ens_contentHash" {}
|
||||
"ens_resourceURL" {}
|
||||
"ens_registerPrepareTx" {}
|
||||
"ens_setPubKeyPrepareTx" {}
|
||||
"net_version" {}
|
||||
"web3_clientVersion" {}
|
||||
"shh_generateSymKeyFromPassword" {}
|
||||
@@ -49,6 +57,7 @@
|
||||
"wakuext_startMessenger" {}
|
||||
"wakuext_sendPairInstallation" {}
|
||||
"wakuext_syncDevices" {}
|
||||
"wakuext_syncBookmark" {}
|
||||
"wakuext_requestMessages" {}
|
||||
"wakuext_sendDirectMessage" {}
|
||||
"wakuext_sendPublicMessage" {}
|
||||
@@ -196,13 +205,15 @@
|
||||
"wallet_getOpenseaCollectionsByOwner" {}
|
||||
"wallet_getOpenseaAssetsByOwnerAndCollection" {}
|
||||
"wallet_loadTransferByHash" {}
|
||||
"wallet_getTokens" {};, %* [chainId]}
|
||||
"wallet_getTokensBalancesForChainIDs" {};, %* [@[chainId], accounts, tokens]
|
||||
"browsers_getBrowsers" {}
|
||||
"browsers_addBrowser" {}
|
||||
"browsers_deleteBrowser" {}
|
||||
"browsers_getBookmarks" {}
|
||||
"browsers_storeBookmark" {}
|
||||
"browsers_updateBookmark" {}
|
||||
"browsers_deleteBookmark" {}
|
||||
"browsers_removeBookmark" {}
|
||||
"mailservers_getMailserverRequestGaps" {}
|
||||
"mailservers_addMailserverRequestGaps" {}
|
||||
"mailservers_deleteMailserverRequestGaps" {}
|
||||
|
||||
@@ -1,37 +1,26 @@
|
||||
(ns status-im.ethereum.macros
|
||||
(:require [clojure.string :as string]
|
||||
[clojure.java.io :as io]))
|
||||
(:require [clojure.java.io :as io]
|
||||
[clojure.string :as cstr]))
|
||||
|
||||
(defn token-icon-path
|
||||
[network symbol]
|
||||
(let [s (str "./resources/images/tokens/" (name network) "/" (name symbol) ".png")
|
||||
s-js (str "." s)
|
||||
image (gensym)]
|
||||
(if (.exists (io/file s))
|
||||
`(let [~image (atom nil)]
|
||||
(fn []
|
||||
(or @~image
|
||||
(reset! ~image (js/require ~s-js)))))
|
||||
`(let [~image (atom nil)]
|
||||
(fn []
|
||||
(or
|
||||
@~image
|
||||
(reset! ~image
|
||||
(js/require "../resources/images/tokens/default-token.png"))))))))
|
||||
|
||||
(defn- token->icon [network {:keys [icon symbol]}]
|
||||
;; Tokens can define their own icons.
|
||||
;; If not try to make one using a local image as resource, if it does not exist fallback to default.
|
||||
(or icon (token-icon-path network symbol)))
|
||||
(defn token-icon-path [path]
|
||||
(fn [el]
|
||||
(let [el (cstr/replace el ".png" "")
|
||||
s (str path el ".png")
|
||||
s-js (str "." s)]
|
||||
(when (.exists (io/file s))
|
||||
[el `(js/require ~s-js)]))))
|
||||
|
||||
(defmacro resolve-icons
|
||||
"In react-native arguments to require must be static strings.
|
||||
Resolve all icons at compilation time so no variable is used."
|
||||
[network tokens]
|
||||
(mapv #(-> %
|
||||
(assoc-in [:icon :source] (token->icon network %))
|
||||
(update :address string/lower-case))
|
||||
tokens))
|
||||
[network]
|
||||
(let [path (str "./resources/images/tokens/" (name network) "/")
|
||||
files (->> (io/file path)
|
||||
file-seq
|
||||
(filter #(cstr/ends-with? % "png"))
|
||||
(map #(first (cstr/split (.getName %) #"@")))
|
||||
distinct)]
|
||||
(into {} (map (token-icon-path path) files))))
|
||||
|
||||
(defn network->icon [network]
|
||||
(let [s (str "./resources/images/tokens/" (name network) "/0-native.png")
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
(ns status-im.ethereum.resolver
|
||||
(:refer-clojure :exclude [name])
|
||||
(:require [status-im.ethereum.ens :as ens]
|
||||
[status-im.ethereum.stateofus :as stateofus]
|
||||
[clojure.string :as string]))
|
||||
|
||||
(def default-hash "0x0000000000000000000000000000000000000000000000000000000000000000")
|
||||
(defn contenthash [registry ens-name cb]
|
||||
(ens/resolver registry
|
||||
ens-name
|
||||
#(ens/contenthash % ens-name cb)))
|
||||
|
||||
(defn content [registry ens-name cb]
|
||||
(ens/resolver registry
|
||||
ens-name
|
||||
#(ens/content % ens-name cb)))
|
||||
|
||||
(defn name [registry ens-name cb]
|
||||
(ens/resolver registry
|
||||
ens-name
|
||||
#(ens/name % ens-name cb)))
|
||||
|
||||
(defn pubkey
|
||||
[registry ens-name cb]
|
||||
{:pre [(ens/is-valid-eth-name? ens-name)]}
|
||||
(ens/resolver registry
|
||||
ens-name
|
||||
#(ens/pubkey % ens-name cb)))
|
||||
|
||||
(defn ens-name-parse [contact-identity]
|
||||
(when (string? contact-identity)
|
||||
(string/lower-case
|
||||
(if (ens/is-valid-eth-name? contact-identity)
|
||||
contact-identity
|
||||
(stateofus/subdomain contact-identity)))))
|
||||
@@ -1,8 +1,8 @@
|
||||
(ns status-im.ethereum.stateofus
|
||||
(:require [clojure.string :as string]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.utils.config :as config]
|
||||
[status-im.ethereum.ens :as ens]))
|
||||
[status-im.ethereum.ens :as ens]
|
||||
[status-im.ethereum.core :as ethereum]))
|
||||
|
||||
(def domain "stateofus.eth")
|
||||
|
||||
@@ -37,14 +37,13 @@
|
||||
(defn get-registrar [chain callback]
|
||||
(if-let [contract (get @registrars-cache chain)]
|
||||
(callback contract)
|
||||
(let [registry (get ens/ens-registries chain)]
|
||||
(ens/get-owner
|
||||
registry
|
||||
domain
|
||||
(fn [addr]
|
||||
(let [addr (or addr (get old-registrars chain))]
|
||||
(swap! registrars-cache assoc chain addr)
|
||||
(callback addr)))))))
|
||||
(ens/owner
|
||||
(ethereum/chain-keyword->chain-id chain)
|
||||
domain
|
||||
(fn [addr]
|
||||
(let [addr (or addr (get old-registrars chain))]
|
||||
(swap! registrars-cache assoc chain addr)
|
||||
(callback addr))))))
|
||||
|
||||
(defn get-cached-registrar [chain]
|
||||
(get @registrars-cache chain (get old-registrars chain)))
|
||||
@@ -58,14 +57,9 @@
|
||||
(and (lower-case? username)
|
||||
(re-find #"^[a-z0-9]+$" username))))
|
||||
|
||||
(defn get-expiration-time
|
||||
[registrar label-hash cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract registrar
|
||||
:method "getExpirationTime(bytes32)"
|
||||
:params [label-hash]
|
||||
:outputs ["uint256"]
|
||||
:on-success
|
||||
(fn [[release-time]]
|
||||
;;NOTE: returns a timestamp in s and we want ms
|
||||
(cb (* release-time 1000)))}))
|
||||
(defn ens-name-parse [contact-identity]
|
||||
(when (string? contact-identity)
|
||||
(string/lower-case
|
||||
(if (ens/is-valid-eth-name? contact-identity)
|
||||
contact-identity
|
||||
(subdomain contact-identity)))))
|
||||
|
||||
@@ -52,800 +52,20 @@
|
||||
(defn ethereum? [symbol]
|
||||
(native-currency-symbols symbol))
|
||||
|
||||
;; NOTE(goranjovic) - fields description:
|
||||
;;
|
||||
;; - address - token contract address
|
||||
;; - symbol - token identifier, must be unique within network
|
||||
;; - name - token display name
|
||||
;; - decimals - the maximum number of decimals (raw balance must be divided by 10^decimals to get the actual amount)
|
||||
;; - nft? - set to true when token is an ERC-781 collectible
|
||||
;; - hidden? - when true, token is not displayed in any asset selection screens, but will be displayed properly in
|
||||
;; transaction history (setting this field is a form of "soft" token removal).
|
||||
;; - skip-decimals-check? - some tokens do not include the decimals field, which is compliant with ERC-20 since it is
|
||||
;;; and optional field. In that case we are explicitly skipping this step in order not to raise a false error.
|
||||
;;; We have this explicit flag for decimals and not for name and symbol because we can't tell apart unset decimals
|
||||
;;; from 0 decimals case.
|
||||
|
||||
(def all-default-tokens
|
||||
{:mainnet
|
||||
(resolve-icons :mainnet
|
||||
[{:symbol :DAI
|
||||
:name "Dai Stablecoin"
|
||||
:address "0x6b175474e89094c44da98b954eedeac495271d0f"
|
||||
:decimals 18}
|
||||
{:symbol :SAI
|
||||
:name "Sai Stablecoin v1.0"
|
||||
:address "0x89d24a6b4ccb1b6faa2625fe562bdd9a23260359"
|
||||
:decimals 18}
|
||||
{:symbol :MKR
|
||||
:name "MKR"
|
||||
:address "0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2"
|
||||
:decimals 18}
|
||||
{:symbol :EOS
|
||||
:name "EOS"
|
||||
:address "0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0"
|
||||
:decimals 18}
|
||||
{:symbol :OMG
|
||||
:name "OMGToken"
|
||||
:address "0xd26114cd6ee289accf82350c8d8487fedb8a0c07"
|
||||
:decimals 18}
|
||||
{:symbol :PPT
|
||||
:name "Populous Platform"
|
||||
:address "0xd4fa1460f537bb9085d22c7bccb5dd450ef28e3a"
|
||||
:decimals 8}
|
||||
{:symbol :REP
|
||||
:name "Reputation"
|
||||
:address "0x1985365e9f78359a9b6ad760e32412f4a445e862"
|
||||
:decimals 18}
|
||||
{:symbol :POWR
|
||||
:name "PowerLedger"
|
||||
:address "0x595832f8fc6bf59c85c527fec3740a1b7a361269"
|
||||
:decimals 6}
|
||||
{:symbol :PAY
|
||||
:name "TenX Pay Token"
|
||||
:address "0xb97048628db6b661d4c2aa833e95dbe1a905b280"
|
||||
:decimals 18}
|
||||
{:symbol :VRS
|
||||
:name "Veros"
|
||||
:address "0x92e78dae1315067a8819efd6dca432de9dcde2e9"
|
||||
:decimals 6}
|
||||
{:symbol :GNT
|
||||
:name "Golem Network Token"
|
||||
:address "0xa74476443119a942de498590fe1f2454d7d4ac0d"
|
||||
:decimals 18}
|
||||
{:symbol :SALT
|
||||
:name "Salt"
|
||||
:address "0x4156d3342d5c385a87d264f90653733592000581"
|
||||
:decimals 8}
|
||||
{:symbol :BNB
|
||||
:name "BNB"
|
||||
:address "0xb8c77482e45f1f44de1745f52c74426c631bdd52"
|
||||
:decimals 18}
|
||||
{:symbol :BAT
|
||||
:name "Basic Attention Token"
|
||||
:address "0x0d8775f648430679a709e98d2b0cb6250d2887ef"
|
||||
:decimals 18}
|
||||
{:symbol :KNC
|
||||
:name "Kyber Network Crystal"
|
||||
:address "0xdd974d5c2e2928dea5f71b9825b8b646686bd200"
|
||||
:decimals 18}
|
||||
{:symbol :BTU
|
||||
:name "BTU Protocol"
|
||||
:address "0xb683D83a532e2Cb7DFa5275eED3698436371cc9f"
|
||||
:decimals 18}
|
||||
{:symbol :DGD
|
||||
:name "Digix DAO"
|
||||
:address "0xe0b7927c4af23765cb51314a0e0521a9645f0e2a"
|
||||
:decimals 9
|
||||
:skip-decimals-check? true}
|
||||
{:symbol :AE
|
||||
:name "Aeternity"
|
||||
:address "0x5ca9a71b1d01849c0a95490cc00559717fcf0d1d"
|
||||
:decimals 18}
|
||||
{:symbol :TRX
|
||||
:name "Tronix"
|
||||
:address "0xf230b790e05390fc8295f4d3f60332c93bed42e2"
|
||||
:decimals 6}
|
||||
{:symbol :RDN
|
||||
:name "Raiden Token"
|
||||
:address "0x255aa6df07540cb5d3d297f0d0d4d84cb52bc8e6"
|
||||
:decimals 18}
|
||||
{:symbol :SNT
|
||||
:name "Status Network Token"
|
||||
:address "0x744d70fdbe2ba4cf95131626614a1763df805b9e"
|
||||
:decimals 18}
|
||||
{:symbol :SNGLS
|
||||
:name "SingularDTV"
|
||||
:address "0xaec2e87e0a235266d9c5adc9deb4b2e29b54d009"
|
||||
:decimals 0}
|
||||
{:symbol :GNO
|
||||
:name "Gnosis Token"
|
||||
:address "0x6810e776880c02933d47db1b9fc05908e5386b96"
|
||||
:decimals 18}
|
||||
{:symbol :STORJ
|
||||
:name "StorjToken"
|
||||
:address "0xb64ef51c888972c908cfacf59b47c1afbc0ab8ac"
|
||||
:decimals 8}
|
||||
{:symbol :ADX
|
||||
:name "AdEx"
|
||||
:address "0x4470bb87d77b963a013db939be332f927f2b992e"
|
||||
:decimals 4}
|
||||
{:symbol :FUN
|
||||
:name "FunFair"
|
||||
:address "0x419d0d8bdd9af5e606ae2232ed285aff190e711b"
|
||||
:decimals 8}
|
||||
{:symbol :CVC
|
||||
:name "Civic"
|
||||
:address "0x41e5560054824ea6b0732e656e3ad64e20e94e45"
|
||||
:decimals 8}
|
||||
{:symbol :ICN
|
||||
:name "ICONOMI"
|
||||
:address "0x888666ca69e0f178ded6d75b5726cee99a87d698"
|
||||
:decimals 18}
|
||||
{:symbol :WTC
|
||||
:name "Walton Token"
|
||||
:address "0xb7cb1c96db6b22b0d3d9536e0108d062bd488f74"
|
||||
:decimals 18}
|
||||
{:symbol :BTM
|
||||
:name "Bytom"
|
||||
:address "0xcb97e65f07da24d46bcdd078ebebd7c6e6e3d750"
|
||||
:decimals 8}
|
||||
{:symbol :ZRX
|
||||
:name "0x Protocol Token"
|
||||
:address "0xe41d2489571d322189246dafa5ebde1f4699f498"
|
||||
:decimals 18}
|
||||
{:symbol :BNT
|
||||
:name "Bancor Network Token"
|
||||
:address "0x1f573d6fb3f13d689ff844b4ce37794d79a7ff1c"
|
||||
:decimals 18}
|
||||
{:symbol :MTL
|
||||
:name "Metal"
|
||||
:address "0xf433089366899d83a9f26a773d59ec7ecf30355e"
|
||||
:decimals 8}
|
||||
{:symbol :PPP
|
||||
:name "PayPie"
|
||||
:address "0xc42209accc14029c1012fb5680d95fbd6036e2a0"
|
||||
:decimals 18}
|
||||
{:symbol :LINK
|
||||
:name "ChainLink Token"
|
||||
:address "0x514910771af9ca656af840dff83e8264ecf986ca"
|
||||
:decimals 18}
|
||||
{:symbol :KIN
|
||||
:name "Kin"
|
||||
:address "0x818fc6c2ec5986bc6e2cbf00939d90556ab12ce5"
|
||||
:decimals 18}
|
||||
{:symbol :ANT
|
||||
:name "Aragon Network Token"
|
||||
:address "0x960b236a07cf122663c4303350609a66a7b288c0"
|
||||
:decimals 18}
|
||||
{:symbol :MGO
|
||||
:name "MobileGo Token"
|
||||
:address "0x40395044ac3c0c57051906da938b54bd6557f212"
|
||||
:decimals 8}
|
||||
{:symbol :MCO
|
||||
:name "Monaco"
|
||||
:address "0xb63b606ac810a52cca15e44bb630fd42d8d1d83d"
|
||||
:decimals 8}
|
||||
{:symbol :LRC
|
||||
:name "LoopringCoin V2"
|
||||
:address "0xbbbbca6a901c926f240b89eacb641d8aec7aeafd"
|
||||
:decimals 18}
|
||||
{:symbol :ZSC
|
||||
:name "Zeus Shield Coin"
|
||||
:address "0x7a41e0517a5eca4fdbc7fbeba4d4c47b9ff6dc63"
|
||||
:decimals 18}
|
||||
{:symbol :XDATA
|
||||
:name "Streamr (old)"
|
||||
:address "0x0cf0ee63788a0849fe5297f3407f701e122cc023"
|
||||
:decimals 18}
|
||||
{:symbol :RCN
|
||||
:name "Ripio Credit Network Token"
|
||||
:address "0xf970b8e36e23f7fc3fd752eea86f8be8d83375a6"
|
||||
:decimals 18}
|
||||
{:symbol :WINGS
|
||||
:name "WINGS"
|
||||
:address "0x667088b212ce3d06a1b553a7221e1fd19000d9af"
|
||||
:decimals 18}
|
||||
{:symbol :EDG
|
||||
:name "Edgeless"
|
||||
:address "0x08711d3b02c8758f2fb3ab4e80228418a7f8e39c"
|
||||
:decimals 0}
|
||||
{:symbol :MLN
|
||||
:name "Melon Token"
|
||||
:address "0xbeb9ef514a379b997e0798fdcc901ee474b6d9a1"
|
||||
:decimals 18}
|
||||
{:symbol :MDA
|
||||
:name "Moeda Loyalty Points"
|
||||
:address "0x51db5ad35c671a87207d88fc11d593ac0c8415bd"
|
||||
:decimals 18}
|
||||
{:symbol :PLR
|
||||
:name "PILLAR"
|
||||
:address "0xe3818504c1b32bf1557b16c238b2e01fd3149c17"
|
||||
:decimals 18}
|
||||
{:symbol :QRL
|
||||
:name "QRL"
|
||||
:address "0x697beac28b09e122c4332d163985e8a73121b97f"
|
||||
:decimals 8}
|
||||
{:symbol :MOD
|
||||
:name "Modum Token"
|
||||
:address "0x957c30ab0426e0c93cd8241e2c60392d08c6ac8e"
|
||||
:decimals 0}
|
||||
{:symbol :TAAS
|
||||
:name "Token-as-a-Service"
|
||||
:address "0xe7775a6e9bcf904eb39da2b68c5efb4f9360e08c"
|
||||
:decimals 6}
|
||||
{:symbol :GRID
|
||||
:name "GRID Token"
|
||||
:address "0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd"
|
||||
:decimals 12}
|
||||
{:symbol :SAN
|
||||
:name "SANtiment network token"
|
||||
:address "0x7c5a0ce9267ed19b22f8cae653f198e3e8daf098"
|
||||
:decimals 18}
|
||||
{:symbol :SNM
|
||||
:name "SONM Token"
|
||||
:address "0x983f6d60db79ea8ca4eb9968c6aff8cfa04b3c63"
|
||||
:decimals 18}
|
||||
{:symbol :REQ
|
||||
:name "Request Token"
|
||||
:address "0x8f8221afbb33998d8584a2b05749ba73c37a938a"
|
||||
:decimals 18}
|
||||
{:symbol :SUB
|
||||
:name "Substratum"
|
||||
:address "0x12480e24eb5bec1a9d4369cab6a80cad3c0a377a"
|
||||
:decimals 2}
|
||||
{:symbol :MANA
|
||||
:name "Decentraland MANA"
|
||||
:address "0x0f5d2fb29fb7d3cfee444a200298f468908cc942"
|
||||
:decimals 18}
|
||||
{:symbol :AST
|
||||
:name "AirSwap Token"
|
||||
:address "0x27054b13b1b798b345b591a4d22e6562d47ea75a"
|
||||
:decimals 4}
|
||||
{:symbol :R
|
||||
:name "R token"
|
||||
:address "0x48f775efbe4f5ece6e0df2f7b5932df56823b990"
|
||||
:decimals 0}
|
||||
{:symbol :1ST
|
||||
:name "FirstBlood Token"
|
||||
:address "0xaf30d2a7e90d7dc361c8c4585e9bb7d2f6f15bc7"
|
||||
:decimals 18}
|
||||
{:symbol :CFI
|
||||
:name "Cofoundit"
|
||||
:address "0x12fef5e57bf45873cd9b62e9dbd7bfb99e32d73e"
|
||||
:decimals 18}
|
||||
{:symbol :ENG
|
||||
:name "Enigma"
|
||||
:address "0xf0ee6b27b759c9893ce4f094b49ad28fd15a23e4"
|
||||
:decimals 8}
|
||||
{:symbol :AMB
|
||||
:name "Amber Token"
|
||||
:address "0x4dc3643dbc642b72c158e7f3d2ff232df61cb6ce"
|
||||
:decimals 18}
|
||||
{:symbol :XPA
|
||||
:name "XPlay Token"
|
||||
:address "0x90528aeb3a2b736b780fd1b6c478bb7e1d643170"
|
||||
:decimals 18}
|
||||
{:symbol :OTN
|
||||
:name "Open Trading Network"
|
||||
:address "0x881ef48211982d01e2cb7092c915e647cd40d85c"
|
||||
:decimals 18}
|
||||
{:symbol :TRST
|
||||
:name "Trustcoin"
|
||||
:address "0xcb94be6f13a1182e4a4b6140cb7bf2025d28e41b"
|
||||
:decimals 6}
|
||||
{:symbol :TKN
|
||||
:name "Monolith TKN"
|
||||
:address "0xaaaf91d9b90df800df4f55c205fd6989c977e73a"
|
||||
:decimals 8}
|
||||
{:symbol :RHOC
|
||||
:name "RHOC"
|
||||
:address "0x168296bb09e24a88805cb9c33356536b980d3fc5"
|
||||
:decimals 8}
|
||||
{:symbol :TGT
|
||||
:name "Target Coin"
|
||||
:address "0xac3da587eac229c9896d919abc235ca4fd7f72c1"
|
||||
:decimals 1}
|
||||
{:symbol :EVX
|
||||
:name "Everex"
|
||||
:address "0xf3db5fa2c66b7af3eb0c0b782510816cbe4813b8"
|
||||
:decimals 4}
|
||||
{:symbol :ICOS
|
||||
:name "ICOS"
|
||||
:address "0x014b50466590340d41307cc54dcee990c8d58aa8"
|
||||
:decimals 6}
|
||||
{:symbol :DNT
|
||||
:name "district0x Network Token"
|
||||
:address "0x0abdace70d3790235af448c88547603b945604ea"
|
||||
:decimals 18}
|
||||
{:symbol :DCN
|
||||
:name "Dentacoin"
|
||||
:address "0x08d32b0da63e2c3bcf8019c9c5d849d7a9d791e6"
|
||||
:decimals 0}
|
||||
{:symbol :EDO
|
||||
:name "Eidoo Token"
|
||||
:address "0xced4e93198734ddaff8492d525bd258d49eb388e"
|
||||
:decimals 18}
|
||||
{:symbol :CSNO
|
||||
:name "BitDice"
|
||||
:address "0x29d75277ac7f0335b2165d0895e8725cbf658d73"
|
||||
:decimals 8}
|
||||
{:symbol :COB
|
||||
:name "Cobinhood Token"
|
||||
:address "0xb2f7eb1f2c37645be61d73953035360e768d81e6"
|
||||
:decimals 18}
|
||||
{:symbol :ENJ
|
||||
:name "Enjin Coin"
|
||||
:address "0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c"
|
||||
:decimals 18}
|
||||
{:symbol :AVT
|
||||
:name "AVENTUS"
|
||||
:address "0x0d88ed6e74bbfd96b831231638b66c05571e824f"
|
||||
:decimals 18}
|
||||
{:symbol :TIME
|
||||
:name "Chronobank TIME"
|
||||
:address "0x6531f133e6deebe7f2dce5a0441aa7ef330b4e53"
|
||||
:decimals 8}
|
||||
{:symbol :CND
|
||||
:name "Cindicator Token"
|
||||
:address "0xd4c435f5b09f855c3317c8524cb1f586e42795fa"
|
||||
:decimals 18}
|
||||
{:symbol :STX
|
||||
:name "Stox"
|
||||
:address "0x006bea43baa3f7a6f765f14f10a1a1b08334ef45"
|
||||
:decimals 18}
|
||||
{:symbol :XAUR
|
||||
:name "Xaurum"
|
||||
:address "0x4df812f6064def1e5e029f1ca858777cc98d2d81"
|
||||
:decimals 8}
|
||||
{:symbol :VIB
|
||||
:name "Vibe"
|
||||
:address "0x2c974b2d0ba1716e644c1fc59982a89ddd2ff724"
|
||||
:decimals 18}
|
||||
{:symbol :PRG
|
||||
:name "PRG"
|
||||
:address "0x7728dfef5abd468669eb7f9b48a7f70a501ed29d"
|
||||
:decimals 6}
|
||||
{:symbol :DPY
|
||||
:name "Delphy Token"
|
||||
:address "0x6c2adc2073994fb2ccc5032cc2906fa221e9b391"
|
||||
:decimals 18}
|
||||
{:symbol :CDT
|
||||
:name "CoinDash Token"
|
||||
:address "0x2fe6ab85ebbf7776fee46d191ee4cea322cecf51"
|
||||
:decimals 18}
|
||||
{:symbol :TNT
|
||||
:name "Tierion Network Token"
|
||||
:address "0x08f5a9235b08173b7569f83645d2c7fb55e8ccd8"
|
||||
:decimals 8}
|
||||
{:symbol :DRT
|
||||
:name "DomRaiderToken"
|
||||
:address "0x9af4f26941677c706cfecf6d3379ff01bb85d5ab"
|
||||
:decimals 8}
|
||||
{:symbol :SPANK
|
||||
:name "SPANK"
|
||||
:address "0x42d6622dece394b54999fbd73d108123806f6a18"
|
||||
:decimals 18}
|
||||
{:symbol :BRLN
|
||||
:name "Berlin Coin"
|
||||
:address "0x80046305aaab08f6033b56a360c184391165dc2d"
|
||||
:decimals 18}
|
||||
{:symbol :USDC
|
||||
:name "USD Coin"
|
||||
:address "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
|
||||
:decimals 6}
|
||||
{:symbol :LPT
|
||||
:name "Livepeer Token"
|
||||
:address "0x58b6a8a3302369daec383334672404ee733ab239"
|
||||
:decimals 18}
|
||||
{:symbol :ST
|
||||
:name "Simple Token"
|
||||
:address "0x2c4e8f2d746113d0696ce89b35f0d8bf88e0aeca"
|
||||
:decimals 18}
|
||||
{:symbol :WBTC
|
||||
:name "Wrapped BTC"
|
||||
:address "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599"
|
||||
:decimals 8}
|
||||
{:symbol :BLT
|
||||
:name "Bloom Token"
|
||||
:address "0x107c4504cd79c5d2696ea0030a8dd4e92601b82e"
|
||||
:decimals 18}
|
||||
{:symbol :OXT
|
||||
:name "Orchid"
|
||||
:address "0x4575f41308EC1483f3d399aa9a2826d74Da13Deb"
|
||||
:decimals 18}
|
||||
;; NOTE(goranjovic): the following three tokens are removed from the Manage Assets list
|
||||
;; and automatically removed from user's selection by a migration. However, we still need
|
||||
;; them listed here in order to correctly display any previous transactions the user had
|
||||
;; in their history prior to the upgrade. So, we're just hiding them, not actually deleting from the
|
||||
;; app.
|
||||
{:symbol :Centra
|
||||
:name "Centra token"
|
||||
:address "0x96a65609a7b84e8842732deb08f56c3e21ac6f8a"
|
||||
:decimals 18
|
||||
:hidden? true}
|
||||
{:symbol :ROL
|
||||
:name "DICE"
|
||||
:address "0x2e071d2966aa7d8decb1005885ba1977d6038a65"
|
||||
:decimals 16
|
||||
:hidden? true}
|
||||
{:symbol :ATM
|
||||
:name "Attention Token of Media"
|
||||
:address "0x9b11efcaaa1890f6ee52c6bb7cf8153ac5d74139"
|
||||
:decimals 8
|
||||
:hidden? true}
|
||||
;; NOTE(goranjovic): the following tokens are collectibles
|
||||
{:symbol :CK
|
||||
:nft? true
|
||||
:name "CryptoKitties"
|
||||
:address "0x06012c8cf97bead5deae237070f9587f8e7a266d"}
|
||||
{:symbol :EMONA
|
||||
:nft? true
|
||||
:name "EtheremonAsset"
|
||||
:address "0xb2c0782ae4a299f7358758b2d15da9bf29e1dd99"}
|
||||
{:symbol :STRK
|
||||
:nft? true
|
||||
:name "CryptoStrikers"
|
||||
:address "0xdcaad9fd9a74144d226dbf94ce6162ca9f09ed7e"}
|
||||
{:symbol :SUPR
|
||||
:nft? true
|
||||
:name "SupeRare"
|
||||
:address "0x41a322b28d0ff354040e2cbc676f0320d8c8850d"}
|
||||
{:symbol :SUPRR
|
||||
:nft? true
|
||||
:name "SuperRare"
|
||||
:address "0xb932a70a57673d89f4acffbe830e8ed7f75fb9e0"}
|
||||
{:symbol :KDO
|
||||
:nft? true
|
||||
:name "KudosToken"
|
||||
:address "0x2aea4add166ebf38b63d09a75de1a7b94aa24163"}
|
||||
{:address "0x99ea4dB9EE77ACD40B119BD1dC4E33e1C070b80d"
|
||||
:decimals 18
|
||||
:symbol :QSP
|
||||
:name "Quantstamp Token"}
|
||||
{:address "0x80fB784B7eD66730e8b1DBd9820aFD29931aab03"
|
||||
:decimals 18
|
||||
:symbol :LEND
|
||||
:name "EthLend Token"}
|
||||
{:address "0xA15C7Ebe1f07CaF6bFF097D8a589fb8AC49Ae5B3"
|
||||
:decimals 18
|
||||
:symbol :NPXS
|
||||
:name "Pundi X Token"}
|
||||
{:address "0xA4e8C3Ec456107eA67d3075bF9e3DF3A75823DB0"
|
||||
:decimals 18
|
||||
:symbol :LOOM
|
||||
:name "LoomToken"}
|
||||
{:address "0x0e0989b1f9B8A38983c2BA8053269Ca62Ec9B195"
|
||||
:decimals 8
|
||||
:symbol :POE
|
||||
:name "Po.et"}
|
||||
{:address "0x5732046A883704404F284Ce41FfADd5b007FD668"
|
||||
:decimals 18
|
||||
:symbol :BLZ
|
||||
:name "Bluzelle Token"}
|
||||
{:address "0xFA1a856Cfa3409CFa145Fa4e20Eb270dF3EB21ab"
|
||||
:decimals 18
|
||||
:symbol :IOST
|
||||
:name "IOSToken"}
|
||||
{:address "0x1776e1F26f98b1A5dF9cD347953a26dd3Cb46671"
|
||||
:decimals 18
|
||||
:symbol :NMR
|
||||
:name "Numeraire"}
|
||||
{:address "0x8E870D67F660D95d5be530380D0eC0bd388289E1"
|
||||
:decimals 18
|
||||
:symbol :USDP
|
||||
:name "Pax Dollar"}
|
||||
{:address "0xEA26c4aC16D4a5A106820BC8AEE85fd0b7b2b664"
|
||||
:decimals 18
|
||||
:symbol :QKC
|
||||
:name "QuarkChain Token"}
|
||||
{:address "0x45804880De22913dAFE09f4980848ECE6EcbAf78"
|
||||
:decimals 18
|
||||
:symbol :PAXG
|
||||
:name "Paxos Gold"}
|
||||
{:address "0x865ec58b06bF6305B886793AA20A2da31D034E68"
|
||||
:decimals 18
|
||||
:symbol :MOC
|
||||
:name "Moss Coin"}
|
||||
{:address "0x408e41876cCCDC0F92210600ef50372656052a38"
|
||||
:decimals 18
|
||||
:symbol :REN
|
||||
:name "Republic Token"}
|
||||
{:address "0x607F4C5BB672230e8672085532f7e901544a7375"
|
||||
:decimals 9
|
||||
:symbol :RLC
|
||||
:name "iEx.ec Network Token"}
|
||||
{:address "0x8400D94A5cb0fa0D041a3788e395285d61c9ee5e"
|
||||
:decimals 8
|
||||
:symbol :UBT
|
||||
:name "UniBright"}
|
||||
{:address "0x4f3AfEC4E5a3F2A6a1A411DEF7D7dFe50eE057bF"
|
||||
:decimals 9
|
||||
:symbol :DGX
|
||||
:name "Digix Gold Token"}
|
||||
{:address "0xEA38eAa3C86c8F9B751533Ba2E562deb9acDED40"
|
||||
:decimals 18
|
||||
:symbol :FUEL
|
||||
:name "Fuel Token"}
|
||||
{:address "0x00000100F2A2bd000715001920eB70D229700085"
|
||||
:decimals 18
|
||||
:symbol :TCAD
|
||||
:name "TrueCAD"}
|
||||
{:address "0x6710c63432A2De02954fc0f851db07146a6c0312"
|
||||
:decimals 18
|
||||
:symbol :MFG
|
||||
:name "SyncFab Smart Manufacturing Blockchain"}
|
||||
{:address "0x543Ff227F64Aa17eA132Bf9886cAb5DB55DCAddf"
|
||||
:decimals 18
|
||||
:symbol :GEN
|
||||
:name "DAOstack"}
|
||||
{:address "0x0E8d6b471e332F140e7d9dbB99E5E3822F728DA6"
|
||||
:decimals 18
|
||||
:symbol :ABYSS
|
||||
:name "ABYSS"}
|
||||
{:address "0xB62132e35a6c13ee1EE0f84dC5d40bad8d815206"
|
||||
:decimals 18
|
||||
:symbol :NEXO
|
||||
:name "Nexo"}
|
||||
{:address "0x0000000000085d4780B73119b644AE5ecd22b376"
|
||||
:decimals 18
|
||||
:symbol :TUSD
|
||||
:name "TrueUSD"}
|
||||
{:address "0xD0a4b8946Cb52f0661273bfbC6fD0E0C75Fc6433"
|
||||
:decimals 18
|
||||
:symbol :STORM
|
||||
:name "Storm Token"}
|
||||
{:address "0xaF4DcE16Da2877f8c9e00544c93B62Ac40631F16"
|
||||
:decimals 5
|
||||
:symbol :MTH
|
||||
:name "Monetha"}
|
||||
{:address "0x00000000441378008EA67F4284A57932B1c000a5"
|
||||
:decimals 18
|
||||
:symbol :TGBP
|
||||
:name "TrueGBP"}
|
||||
{:address "0xbf2179859fc6D5BEE9Bf9158632Dc51678a4100e"
|
||||
:decimals 18
|
||||
:symbol :ELF
|
||||
:name "ELF Token"}
|
||||
{:address "0x9992eC3cF6A55b00978cdDF2b27BC6882d88D1eC"
|
||||
:decimals 18
|
||||
:symbol :POLY
|
||||
:name "Polymath"}
|
||||
{:address "0x20F7A3DdF244dc9299975b4Da1C39F8D5D75f05A"
|
||||
:decimals 6
|
||||
:symbol :SPN
|
||||
:name "Sapien Network"}
|
||||
{:address "0x1a7a8BD9106F2B8D977E08582DC7d24c723ab0DB"
|
||||
:decimals 18
|
||||
:symbol :APPC
|
||||
:name "AppCoins"}
|
||||
{:address "0xdAC17F958D2ee523a2206206994597C13D831ec7"
|
||||
:decimals 6
|
||||
:symbol :USDT
|
||||
:name "Tether USD"}
|
||||
{:address "0xa3d58c4E56fedCae3a7c43A725aeE9A71F0ece4e"
|
||||
:decimals 18
|
||||
:symbol :MET
|
||||
:name "Metronome"}
|
||||
{:address "0x6f259637dcD74C767781E37Bc6133cd6A68aa161"
|
||||
:decimals 18
|
||||
:symbol :HT
|
||||
:name "HuobiToken"}
|
||||
{:address "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
|
||||
:decimals 18
|
||||
:symbol :WETH
|
||||
:name "Wrapped Ether"}
|
||||
{:address "0x8f3470A7388c05eE4e7AF3d01D8C722b0FF52374"
|
||||
:decimals 18
|
||||
:symbol :VERI
|
||||
:name "Veritaseum"}
|
||||
{:address "0x00006100F7090010005F1bd7aE6122c3C2CF0090"
|
||||
:decimals 18
|
||||
:symbol :TAUD
|
||||
:name "TrueAUD"}
|
||||
{:address "0x66497A283E0a007bA3974e837784C6AE323447de"
|
||||
:decimals 18
|
||||
:symbol :PT
|
||||
:name "PornToken"}
|
||||
{:address "0xB24754bE79281553dc1adC160ddF5Cd9b74361a4"
|
||||
:decimals 9
|
||||
:symbol :XRL
|
||||
:name "RIALTO"}
|
||||
{:address "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F"
|
||||
:decimals 18
|
||||
:symbol :SNX
|
||||
:name "Synthetix Network Token"}
|
||||
{:address "0x07e3c70653548B04f0A75970C1F81B4CBbFB606f"
|
||||
:decimals 18
|
||||
:symbol :DLT
|
||||
:name "Delta"}
|
||||
{:address "0x8207c1FfC5B6804F6024322CcF34F29c3541Ae26"
|
||||
:decimals 18
|
||||
:symbol :OGN
|
||||
:name "OriginToken"}
|
||||
{:address "0x554C20B7c486beeE439277b4540A434566dC4C02"
|
||||
:decimals 18
|
||||
:symbol :HST
|
||||
:name "Decision Token"}
|
||||
{:address "0x286BDA1413a2Df81731D4930ce2F862a35A609fE"
|
||||
:decimals 18
|
||||
:symbol :WaBi
|
||||
:name "WaBi"}
|
||||
{:address "0xE5a3229CCb22b6484594973A03a3851dCd948756"
|
||||
:decimals 18
|
||||
:symbol :RAE
|
||||
:name "RAE Token"}
|
||||
{:address "0x24692791Bc444c5Cd0b81e3CBCaba4b04Acd1F3B"
|
||||
:decimals 18
|
||||
:symbol :UKG
|
||||
:name "UnikoinGold"}
|
||||
{:address "0xD46bA6D942050d489DBd938a2C909A5d5039A161"
|
||||
:decimals 9
|
||||
:symbol :AMPL
|
||||
:name "Ampleforth"}
|
||||
{:address "0xA4Bdb11dc0a2bEC88d24A3aa1E6Bb17201112eBe"
|
||||
:decimals 6
|
||||
:symbol :USDS
|
||||
:name "StableUSD"}
|
||||
{:address "0xB98d4C97425d9908E66E53A6fDf673ACcA0BE986"
|
||||
:decimals 18
|
||||
:symbol :ABT
|
||||
:name "ArcBlock"}
|
||||
{:address "0x81c9151de0C8bafCd325a57E3dB5a5dF1CEBf79c"
|
||||
:decimals 18
|
||||
:symbol :DAT
|
||||
:name "Datum Token"}
|
||||
{:address "0xa6a840E50bCaa50dA017b91A0D86B8b2d41156EE"
|
||||
:decimals 18
|
||||
:symbol :EKO
|
||||
:name "EchoLink"}
|
||||
{:address "0x4a57E687b9126435a9B19E4A802113e266AdeBde"
|
||||
:decimals 18
|
||||
:symbol :FXC
|
||||
:name "Flexacoin"}
|
||||
{:address "0xC86D054809623432210c107af2e3F619DcFbf652"
|
||||
:decimals 18
|
||||
:symbol :UPP
|
||||
:name "SENTINEL PROTOCOL"}
|
||||
{:address "0x5Af2Be193a6ABCa9c8817001F45744777Db30756"
|
||||
:decimals 8
|
||||
:symbol :VGX
|
||||
:name "Voyager"}
|
||||
{:address "0x69b148395ce0015c13e36bffbad63f49ef874e03"
|
||||
:symbol :DTA
|
||||
:name "Data Token"
|
||||
:decimals 18}
|
||||
{:address "0x57Ab1ec28D129707052df4dF418D58a2D46d5f51"
|
||||
:symbol :sUSD
|
||||
:name "Synth sUSD"
|
||||
:decimals 18}
|
||||
{:address "0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643"
|
||||
:symbol :cDAI
|
||||
:name "Compound Dai"
|
||||
:decimals 8}
|
||||
{:address "0xba11d00c5f74255f56a5e366f4f77f5a186d7f55"
|
||||
:symbol :BAND
|
||||
:name "BandToken"
|
||||
:decimals 18}
|
||||
{:address "0xa7fc5d2453e3f68af0cc1b78bcfee94a1b293650"
|
||||
:symbol :SPIKE
|
||||
:name "Spiking"
|
||||
:decimals 10}
|
||||
{:address "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984"
|
||||
:symbol :UNI
|
||||
:name "Uniswap"
|
||||
:decimals 18}
|
||||
{:address "0xc00e94cb662c3520282e6f5717214004a7f26888"
|
||||
:symbol :COMP
|
||||
:name "Compound"
|
||||
:decimals 18}
|
||||
{:address "0xba100000625a3754423978a60c9317c58a424e3d"
|
||||
:symbol :BAL
|
||||
:name "Balancer"
|
||||
:decimals 18}
|
||||
{:address "0x8ab7404063ec4dbcfd4598215992dc3f8ec853d7"
|
||||
:symbol :AKRO
|
||||
:name "Akropolis"
|
||||
:decimals 18}
|
||||
{:address "0x9ba00d6856a4edf4665bca2c2309936572473b7e"
|
||||
:symbol :aUSDC
|
||||
:name "Aave Interest bearing USDC"
|
||||
:decimals 6}
|
||||
{:address "0xc944e90c64b2c07662a292be6244bdf05cda44a7"
|
||||
:symbol :GRT
|
||||
:name "Graph Token"
|
||||
:decimals 18}
|
||||
{:address "0x7DD9c5Cba05E151C895FDe1CF355C9A1D5DA6429"
|
||||
:symbol :GLM
|
||||
:name "Golem Network Token"
|
||||
:decimals 18}
|
||||
{:address "0x23b608675a2b2fb1890d3abbd85c5775c51691d5"
|
||||
:symbol :SOCKS
|
||||
:name "Unisocks Edition 0"
|
||||
:decimals 18}
|
||||
{:address "0xEEF9f339514298C6A857EfCfC1A762aF84438dEE"
|
||||
:symbol :HEZ
|
||||
:name "Hermez Network Token"
|
||||
:decimals 18}
|
||||
{:address "0xaa6e8127831c9de45ae56bb1b0d4d4da6e5665bd"
|
||||
:symbol :ETH2x-FLI
|
||||
:name "ETH 2x Flexible Leverage Index"
|
||||
:decimals 18}
|
||||
{:address "0xba5BDe662c17e2aDFF1075610382B9B691296350"
|
||||
:symbol :RARE
|
||||
:name "SuperRare"
|
||||
:decimals 18}
|
||||
{:address "0xC18360217D8F7Ab5e7c516566761Ea12Ce7F9D72"
|
||||
:symbol :ENS
|
||||
:name "Ethereum Name Service"
|
||||
:decimals 18}])
|
||||
:testnet
|
||||
(resolve-icons :testnet
|
||||
[{:name "Status Test Token"
|
||||
:symbol :STT
|
||||
:decimals 18
|
||||
;;NOTE(goranjovic): intentionally checksummed for purposes of testing
|
||||
:address "0xc55cf4b03948d7ebc8b9e8bad92643703811d162"}
|
||||
{:name "Handy Test Token"
|
||||
:symbol :HND
|
||||
:decimals 0
|
||||
:address "0xdee43a267e8726efd60c2e7d5b81552dcd4fa35c"}
|
||||
{:name "Lucky Test Token"
|
||||
:symbol :LXS
|
||||
:decimals 2
|
||||
:address "0x703d7dc0bc8e314d65436adf985dda51e09ad43b"}
|
||||
{:name "Adi Test Token"
|
||||
:symbol :ADI
|
||||
:decimals 7
|
||||
:address "0xe639e24346d646e927f323558e6e0031bfc93581"}
|
||||
{:name "Wagner Test Token"
|
||||
:symbol :WGN
|
||||
:decimals 10
|
||||
:address "0x2e7cd05f437eb256f363417fd8f920e2efa77540"}
|
||||
{:name "Modest Test Token"
|
||||
:symbol :MDS
|
||||
:decimals 18
|
||||
:address "0x57cc9b83730e6d22b224e9dc3e370967b44a2de0"}])
|
||||
|
||||
:rinkeby
|
||||
(resolve-icons :rinkeby
|
||||
[{:name "Moksha Coin"
|
||||
:symbol :MOKSHA
|
||||
:decimals 18
|
||||
:address "0x6ba7dc8dd10880ab83041e60c4ede52bb607864b"}
|
||||
{:symbol :KDO
|
||||
:nft? true
|
||||
:name "KudosToken"
|
||||
:address "0x93bb0afbd0627bbd3a6c72bc318341d3a22e254a"}
|
||||
{:symbol :WIBB
|
||||
:name "WIBB"
|
||||
:address "0x7d4ccf6af2f0fdad48ee7958bcc28bdef7b732c7"
|
||||
:decimals 18}
|
||||
{:name "Status Test Token"
|
||||
:symbol :STT
|
||||
:decimals 18
|
||||
:address "0xc55cf4b03948d7ebc8b9e8bad92643703811d162"}])
|
||||
|
||||
:xdai
|
||||
(resolve-icons :xdai
|
||||
[{:name "buffiDai"
|
||||
:symbol :BUFF
|
||||
:decimals 18
|
||||
:address "0x3e50bf6703fc132a94e4baff068db2055655f11b"}])
|
||||
|
||||
(def token-icons
|
||||
{:mainnet (resolve-icons :mainnet)
|
||||
:testnet (resolve-icons :testnet)
|
||||
:rinkeby (resolve-icons :rinkeby)
|
||||
:xdai (resolve-icons :xdai)
|
||||
:custom []})
|
||||
|
||||
(defn normalize-chain [tokens]
|
||||
(reduce (fn [acc {:keys [address] :as token}]
|
||||
(assoc acc address token))
|
||||
{}
|
||||
tokens))
|
||||
(def default-token (js/require "../resources/images/tokens/default-token.png"))
|
||||
|
||||
(def all-tokens-normalized
|
||||
(reduce-kv (fn [m k v]
|
||||
(assoc m k (normalize-chain v)))
|
||||
{}
|
||||
all-default-tokens))
|
||||
(defn update-icon
|
||||
[network token]
|
||||
(-> token
|
||||
(assoc-in [:icon :source] (get-in token-icons [network (name (:symbol token))] default-token))
|
||||
(update :address string/lower-case)))
|
||||
|
||||
(defn nfts-for [all-tokens]
|
||||
(filter :nft? (vals all-tokens)))
|
||||
@@ -867,8 +87,4 @@
|
||||
(if (or (= (:symbol-display native-coin) symbol)
|
||||
(= (:symbol native-coin) symbol))
|
||||
native-coin
|
||||
(symbol->token all-tokens symbol))))
|
||||
|
||||
(defn symbol->icon [sym]
|
||||
(:icon (first (filter #(= sym (:symbol %))
|
||||
(:mainnet all-default-tokens)))))
|
||||
(symbol->token all-tokens symbol))))
|
||||
@@ -38,7 +38,7 @@
|
||||
[status-im.navigation :as navigation]
|
||||
status-im.notifications-center.core
|
||||
status-im.pairing.core
|
||||
status-im.popover.core
|
||||
[status-im.popover.core :as popover]
|
||||
status-im.profile.core
|
||||
status-im.search.core
|
||||
status-im.signals.core
|
||||
@@ -52,7 +52,7 @@
|
||||
status-im.utils.logging.core
|
||||
[status-im.utils.universal-links.core :as universal-links]
|
||||
[status-im.utils.utils :as utils]
|
||||
status-im.visibility-status-popover.core
|
||||
[status-im.visibility-status-popover.core :as visibility-status-popover]
|
||||
status-im.visibility-status-updates.core
|
||||
status-im.waku.core
|
||||
status-im.wallet.accounts.core
|
||||
@@ -60,7 +60,9 @@
|
||||
[status-im.wallet.core :as wallet]
|
||||
status-im.wallet.custom-tokens.core
|
||||
[status-im.navigation.core :as navigation.core]
|
||||
[status-im.multiaccounts.login.core :as login.core]))
|
||||
[status-im.multiaccounts.login.core :as login.core]
|
||||
[status-im.signing.core :as signing]
|
||||
status-im.wallet-connect.core))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:dismiss-keyboard
|
||||
@@ -115,31 +117,47 @@
|
||||
(fx/defn system-theme-mode-changed
|
||||
{:events [:system-theme-mode-changed]}
|
||||
[{:keys [db] :as cofx} theme]
|
||||
(let [cur-theme (get-in db [:multiaccount :appearance])
|
||||
current-tab (get db :current-tab :chat)
|
||||
view-id (:view-id db)
|
||||
screen-params (get-in db [:navigation/screen-params view-id])
|
||||
root-id @navigation.core/root-id]
|
||||
(let [cur-theme (get-in db [:multiaccount :appearance])
|
||||
current-tab (get db :current-tab :chat)
|
||||
view-id (:view-id db)
|
||||
screen-params (get-in db [:navigation/screen-params view-id])
|
||||
root-id @navigation.core/root-id
|
||||
dispatch-later (cond-> []
|
||||
(= view-id :chat)
|
||||
(conj {:ms 1000
|
||||
:dispatch [:chat.ui/navigate-to-chat (:current-chat-id db)]})
|
||||
|
||||
(and
|
||||
(= root-id :chat-stack)
|
||||
(not-any? #(= view-id %) '(:home :empty-tab :wallet :status :my-profile :chat)))
|
||||
(conj {:ms 1000
|
||||
:dispatch [:navigate-to view-id screen-params]})
|
||||
|
||||
(some #(= view-id %) navigation.core/community-screens)
|
||||
(conj {:ms 800 :dispatch
|
||||
[:navigate-to :community
|
||||
(get-in db [:navigation/screen-params :community])]})
|
||||
|
||||
(= view-id :community-emoji-thumbnail-picker)
|
||||
(conj {:ms 900 :dispatch
|
||||
[:navigate-to :create-community-channel
|
||||
(get-in db [:navigation/screen-params :create-community-channel])]}))]
|
||||
|
||||
(navigation.core/dismiss-all-modals)
|
||||
(when (or (nil? cur-theme) (zero? cur-theme))
|
||||
(fx/merge cofx
|
||||
{::multiaccounts/switch-theme (if (= :dark theme) 2 1)
|
||||
:utils/dispatch-later
|
||||
(cond-> [{:ms 2000 :dispatch
|
||||
(if (= view-id :chat)
|
||||
[:chat.ui/navigate-to-chat (:current-chat-id db)]
|
||||
[:navigate-to view-id screen-params])}]
|
||||
|
||||
(some #(= view-id %) navigation.core/community-screens)
|
||||
(conj {:ms 1000 :dispatch
|
||||
[:navigate-to :community
|
||||
(get-in db [:navigation/screen-params :community])]})
|
||||
|
||||
(= view-id :community-emoji-thumbnail-picker)
|
||||
(conj {:ms 1500 :dispatch
|
||||
[:navigate-to :create-community-channel
|
||||
(get-in db [:navigation/screen-params :create-community-channel])]}))}
|
||||
(bottom-sheet/hide-bottom-sheet)
|
||||
(merge
|
||||
{::multiaccounts/switch-theme (if (= :dark theme) 2 1)}
|
||||
(when (seq dispatch-later)
|
||||
{:utils/dispatch-later dispatch-later}))
|
||||
(when (get-in db [:bottom-sheet/show?])
|
||||
(bottom-sheet/hide-bottom-sheet))
|
||||
(when (get-in db [:popover/popover])
|
||||
(popover/hide-popover))
|
||||
(when (get-in db [:visibility-status-popover/popover])
|
||||
(visibility-status-popover/hide-visibility-status-popover))
|
||||
(when (get-in db [:signing/tx])
|
||||
(signing/discard))
|
||||
(navigation/init-root root-id)
|
||||
(when (= root-id :chat-stack)
|
||||
(navigation/change-tab current-tab))))))
|
||||
|
||||
@@ -677,7 +677,7 @@
|
||||
:open-dapp
|
||||
:open-dapp-store
|
||||
:open-nfc-settings
|
||||
:open-on-etherscan
|
||||
:open-on-block-explorer
|
||||
:optional
|
||||
:outgoing
|
||||
:pair
|
||||
|
||||