Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
166de36195 | ||
|
|
b83fe64b0f | ||
|
|
4909ec9854 | ||
|
|
09d393dabe | ||
|
|
8d62680abe | ||
|
|
6448c24e14 | ||
|
|
1f164c811d | ||
|
|
b1606704f7 |
@@ -41,6 +41,7 @@ local.properties
|
||||
# VS Code
|
||||
.vscode/ipch/
|
||||
.vscode/settings.json
|
||||
workspace.code-workspace
|
||||
|
||||
# node.js
|
||||
#
|
||||
|
||||
@@ -125,13 +125,15 @@ public class MainActivity extends NavigationActivity
|
||||
switch (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
|
||||
case Configuration.UI_MODE_NIGHT_YES:
|
||||
setTheme(R.style.DarkTheme);
|
||||
|
||||
SplashScreen.show(this, R.style.DarkTheme, false);
|
||||
break;
|
||||
case Configuration.UI_MODE_NIGHT_NO:
|
||||
setTheme(R.style.LightTheme);
|
||||
SplashScreen.show(this, R.style.LightTheme, false);
|
||||
break;
|
||||
default:
|
||||
setTheme(R.style.LightTheme);
|
||||
SplashScreen.show(this, R.style.LightTheme, false);
|
||||
}
|
||||
// Make sure we get an Alert for every uncaught exceptions
|
||||
registerUncaughtExceptionHandler(MainActivity.this);
|
||||
@@ -141,7 +143,7 @@ public class MainActivity extends NavigationActivity
|
||||
Log.v("RNBootstrap", "Available system memory "+getAvailableMemory(activityManager).availMem + ", maximum usable application memory " + activityManager.getLargeMemoryClass()+"M");
|
||||
|
||||
setSecureFlag();
|
||||
SplashScreen.show(this, true);
|
||||
|
||||
// NOTE: Try to not restore the state https://github.com/software-mansion/react-native-screens/issues/17
|
||||
super.onCreate(null);
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
library 'status-jenkins-lib@v1.4.1'
|
||||
library 'status-jenkins-lib@v1.4.2'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux && x86_64 && nix-2.8' }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
library 'status-jenkins-lib@v1.4.1'
|
||||
library 'status-jenkins-lib@v1.4.2'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux' }
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
library 'status-jenkins-lib@v1.4.1'
|
||||
library 'status-jenkins-lib@v1.4.2'
|
||||
|
||||
pipeline {
|
||||
agent { label 'macos && x86_64 && nix-2.8 && xcode-13.3' }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
library 'status-jenkins-lib@v1.4.1'
|
||||
library 'status-jenkins-lib@v1.4.2'
|
||||
|
||||
pipeline {
|
||||
agent { label params.AGENT_LABEL }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
library 'status-jenkins-lib@v1.4.1'
|
||||
library 'status-jenkins-lib@v1.4.2'
|
||||
|
||||
pipeline {
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
library 'status-jenkins-lib@v1.4.1'
|
||||
library 'status-jenkins-lib@v1.4.2'
|
||||
|
||||
pipeline {
|
||||
agent { label 'macos' }
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
library 'status-jenkins-lib@v1.4.1'
|
||||
library 'status-jenkins-lib@v1.4.2'
|
||||
|
||||
pipeline {
|
||||
agent { label 'linux' }
|
||||
|
||||
+12
-7
@@ -22,6 +22,7 @@ PODS:
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- glog (0.3.5)
|
||||
- HMSegmentedControl (1.5.6)
|
||||
- Keycard (3.0.5):
|
||||
- CryptoSwift
|
||||
- secp256k1
|
||||
@@ -235,8 +236,8 @@ PODS:
|
||||
- React
|
||||
- react-native-slider (3.0.0):
|
||||
- React
|
||||
- react-native-splash-screen (3.2.0):
|
||||
- React
|
||||
- react-native-splash-screen (3.3.0):
|
||||
- React-Core
|
||||
- react-native-status (1.0.0):
|
||||
- React
|
||||
- react-native-status-keycard (2.5.37):
|
||||
@@ -306,12 +307,14 @@ PODS:
|
||||
- React-jsi (= 0.63.4)
|
||||
- ReactNativeAudioToolkit (2.0.3):
|
||||
- React
|
||||
- ReactNativeNavigation (7.13.0):
|
||||
- ReactNativeNavigation (7.27.1):
|
||||
- HMSegmentedControl
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- React-RCTText
|
||||
- ReactNativeNavigation/Core (= 7.13.0)
|
||||
- ReactNativeNavigation/Core (7.13.0):
|
||||
- ReactNativeNavigation/Core (= 7.27.1)
|
||||
- ReactNativeNavigation/Core (7.27.1):
|
||||
- HMSegmentedControl
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- React-RCTText
|
||||
@@ -480,6 +483,7 @@ SPEC REPOS:
|
||||
trunk:
|
||||
- boost-for-react-native
|
||||
- CryptoSwift
|
||||
- HMSegmentedControl
|
||||
- libwebp
|
||||
- SDWebImage
|
||||
- SDWebImageWebPCoder
|
||||
@@ -645,6 +649,7 @@ SPEC CHECKSUMS:
|
||||
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
|
||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
||||
glog: 61334f8bdb4deea07543d4fbac3fb5948e78a7a5
|
||||
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
|
||||
Keycard: 07f1b4d4fadcf1218084cb3e1bb3a8bac3870c5a
|
||||
libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc
|
||||
Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b
|
||||
@@ -673,7 +678,7 @@ SPEC CHECKSUMS:
|
||||
react-native-safe-area-context: 60f654e00b6cc416573f6d5dbfce3839958eb57a
|
||||
react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c
|
||||
react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4
|
||||
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
||||
react-native-splash-screen: 4312f786b13a81b5169ef346d76d33bc0c6dc457
|
||||
react-native-status: 45dbf1302ce3c258b459dfab137cd1c2c68c295d
|
||||
react-native-status-keycard: 961d01ca190889ddf220206822fd752f8f4f3f7a
|
||||
react-native-webview: 28a8636d97ee641f2ee8f20492d7a6c269c1d703
|
||||
@@ -688,7 +693,7 @@ SPEC CHECKSUMS:
|
||||
React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d
|
||||
ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b
|
||||
ReactNativeAudioToolkit: de9610f323e855ac6574be8c99621f3d57c5df06
|
||||
ReactNativeNavigation: 4c4ca87edc0da4ee818158a62cb6188088454e5c
|
||||
ReactNativeNavigation: 94979dd1572a3f093fc85d4599360530a1bed8c8
|
||||
RNCAsyncStorage: d059c3ee71738c39834a627476322a5a8cd5bf36
|
||||
RNCClipboard: 8148e21ac347c51fd6cd4b683389094c216bb543
|
||||
RNCMaskedView: 71fc32d971f03b7f03d6ab6b86b730c4ee64f5b6
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Lsa-QA-3zn">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Lsa-QA-3zn">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
@@ -19,11 +20,11 @@
|
||||
<imageView userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" image="launch_image" translatesAutoresizingMaskIntoConstraints="NO" id="cqW-9w-FC0">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES" flexibleMaxY="YES"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
|
||||
<viewLayoutGuide key="safeArea" id="2aN-f8-qiu"/>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="hOp-FG-FML" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
@@ -33,5 +34,8 @@
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="launch_image" width="90" height="101"/>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
+303
-445
File diff suppressed because it is too large
Load Diff
+23
-31
@@ -1,15 +1,18 @@
|
||||
androidx.activity:activity:1.0.0
|
||||
androidx.annotation:annotation-experimental:1.0.0
|
||||
androidx.activity:activity:1.2.4
|
||||
androidx.annotation:annotation-experimental:1.1.0
|
||||
androidx.annotation:annotation:1.0.0
|
||||
androidx.annotation:annotation:1.1.0
|
||||
androidx.annotation:annotation:1.2.0
|
||||
androidx.appcompat:appcompat-resources:1.1.0
|
||||
androidx.appcompat:appcompat-resources:1.2.0
|
||||
androidx.appcompat:appcompat-resources:1.3.1
|
||||
androidx.appcompat:appcompat:1.0.2
|
||||
androidx.appcompat:appcompat:1.1.0
|
||||
androidx.appcompat:appcompat:1.2.0
|
||||
androidx.appcompat:appcompat:1.3.1
|
||||
androidx.arch.core:core-common:2.0.0
|
||||
androidx.arch.core:core-common:2.1.0
|
||||
androidx.arch.core:core-runtime:2.0.0
|
||||
androidx.arch.core:core-runtime:2.1.0
|
||||
androidx.asynclayoutinflater:asynclayoutinflater:1.0.0
|
||||
androidx.cardview:cardview:1.0.0
|
||||
androidx.collection:collection:1.0.0
|
||||
@@ -18,10 +21,10 @@ androidx.constraintlayout:constraintlayout-solver:2.0.4
|
||||
androidx.constraintlayout:constraintlayout:2.0.4
|
||||
androidx.coordinatorlayout:coordinatorlayout:1.0.0
|
||||
androidx.coordinatorlayout:coordinatorlayout:1.1.0
|
||||
androidx.core:core-ktx:1.3.2
|
||||
androidx.core:core-ktx:1.6.0
|
||||
androidx.core:core:1.0.1
|
||||
androidx.core:core:1.1.0
|
||||
androidx.core:core:1.3.2
|
||||
androidx.core:core:1.6.0
|
||||
androidx.cursoradapter:cursoradapter:1.0.0
|
||||
androidx.customview:customview:1.0.0
|
||||
androidx.databinding:databinding-common:3.2.1
|
||||
@@ -37,18 +40,24 @@ androidx.exifinterface:exifinterface:1.1.0-rc01
|
||||
androidx.exifinterface:exifinterface:1.2.0
|
||||
androidx.fragment:fragment:1.0.0
|
||||
androidx.fragment:fragment:1.1.0
|
||||
androidx.fragment:fragment:1.3.6
|
||||
androidx.interpolator:interpolator:1.0.0
|
||||
androidx.legacy:legacy-support-core-ui:1.0.0
|
||||
androidx.legacy:legacy-support-core-utils:1.0.0
|
||||
androidx.legacy:legacy-support-v4:1.0.0
|
||||
androidx.lifecycle:lifecycle-common:2.0.0
|
||||
androidx.lifecycle:lifecycle-common:2.1.0
|
||||
androidx.lifecycle:lifecycle-common:2.3.1
|
||||
androidx.lifecycle:lifecycle-livedata-core:2.0.0
|
||||
androidx.lifecycle:lifecycle-livedata-core:2.3.1
|
||||
androidx.lifecycle:lifecycle-livedata:2.0.0
|
||||
androidx.lifecycle:lifecycle-runtime:2.0.0
|
||||
androidx.lifecycle:lifecycle-runtime:2.1.0
|
||||
androidx.lifecycle:lifecycle-runtime:2.3.1
|
||||
androidx.lifecycle:lifecycle-viewmodel-savedstate:2.3.1
|
||||
androidx.lifecycle:lifecycle-viewmodel:2.0.0
|
||||
androidx.lifecycle:lifecycle-viewmodel:2.1.0
|
||||
androidx.lifecycle:lifecycle-viewmodel:2.3.1
|
||||
androidx.loader:loader:1.0.0
|
||||
androidx.localbroadcastmanager:localbroadcastmanager:1.0.0
|
||||
androidx.media:media:1.0.0
|
||||
@@ -57,11 +66,12 @@ androidx.print:print:1.0.0
|
||||
androidx.recyclerview:recyclerview:1.0.0
|
||||
androidx.recyclerview:recyclerview:1.1.0
|
||||
androidx.savedstate:savedstate:1.0.0
|
||||
androidx.savedstate:savedstate:1.1.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.tracing:tracing:1.0.0
|
||||
androidx.transition:transition:1.2.0
|
||||
androidx.transition:transition:1.2.0-rc01
|
||||
androidx.vectordrawable:vectordrawable-animated:1.0.0
|
||||
@@ -70,6 +80,7 @@ androidx.vectordrawable:vectordrawable:1.0.1
|
||||
androidx.vectordrawable:vectordrawable:1.1.0
|
||||
androidx.versionedparcelable:versionedparcelable:1.0.0
|
||||
androidx.versionedparcelable:versionedparcelable:1.1.0
|
||||
androidx.versionedparcelable:versionedparcelable:1.1.1
|
||||
androidx.viewpager2:viewpager2:1.0.0
|
||||
androidx.viewpager:viewpager:1.0.0
|
||||
androidx.webkit:webkit:1.4.0
|
||||
@@ -371,7 +382,6 @@ 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
|
||||
@@ -424,7 +434,6 @@ com.google.protobuf:protobuf-java:3.4.0
|
||||
com.google.zxing:core:3.3.0
|
||||
com.ibm.icu:icu4j:53.1
|
||||
com.intellij:annotations:12.0
|
||||
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
|
||||
@@ -511,7 +520,6 @@ 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
|
||||
org.checkerframework:checker-qual:2.5.2
|
||||
org.codehaus.groovy:groovy-all:2.4.15
|
||||
org.codehaus.mojo:animal-sniffer-annotations:1.14
|
||||
@@ -532,8 +540,8 @@ org.jacoco:org.jacoco.core:0.7.4.201502262128
|
||||
org.jacoco:org.jacoco.report:0.7.4.201502262128
|
||||
org.jdom:jdom2:2.0.6
|
||||
org.jetbrains.intellij.deps:trove4j:1.0.20181211
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.4.3
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:1.5.2
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1
|
||||
org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8
|
||||
org.jetbrains.kotlin:kotlin-android-extensions-runtime:1.4.31
|
||||
@@ -578,16 +586,17 @@ org.jetbrains.kotlin:kotlin-stdlib-common:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-stdlib-common:1.5.30
|
||||
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-jdk7:1.5.30
|
||||
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-jdk8:1.5.30
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jre7:1.2.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib-jre8:1.2.0
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.1.3-2
|
||||
@@ -596,8 +605,7 @@ org.jetbrains.kotlin:kotlin-stdlib:1.2.71
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.3.20
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-test-common:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-test:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-stdlib:1.5.30
|
||||
org.jetbrains.kotlin:kotlin-util-io:1.3.50
|
||||
org.jetbrains.kotlin:kotlin-util-io:1.4.31
|
||||
org.jetbrains.kotlin:kotlin-util-klib:1.4.31
|
||||
@@ -615,45 +623,29 @@ 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
|
||||
|
||||
+30
-41
@@ -1,19 +1,25 @@
|
||||
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/activity-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.2.4/activity-1.2.4.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.0.0/annotation-experimental-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation-experimental/1.1.0/annotation-experimental-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.0/annotation-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.1/annotation-1.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.2/annotation-1.0.2.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0/annotation-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.2.0/annotation-1.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.1.0/appcompat-resources-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.2.0/appcompat-resources-1.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.3.1/appcompat-resources-1.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.0.0/appcompat-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.0.2/appcompat-1.0.2.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0/appcompat-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.2.0/appcompat-1.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.3.1/appcompat-1.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.0.0/core-common-2.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.0.1/core-common-2.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.0/core-common-2.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.0.0/core-runtime-2.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.1.0/core-runtime-2.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/asynclayoutinflater/asynclayoutinflater/1.0.0/asynclayoutinflater-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/cardview/cardview/1.0.0/cardview-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.0.0/collection-1.0.0.pom
|
||||
@@ -22,13 +28,15 @@ https://dl.google.com/dl/android/maven2/androidx/constraintlayout/constraintlayo
|
||||
https://dl.google.com/dl/android/maven2/androidx/constraintlayout/constraintlayout/2.0.4/constraintlayout-2.0.4.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.0.0/coordinatorlayout-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.1.0/coordinatorlayout-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.3.2/core-ktx-1.3.2.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core-ktx/1.6.0/core-ktx-1.6.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.0/core-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.1/core-1.0.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.1.0/core-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.2.0/core-1.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.0/core-1.3.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.1/core-1.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.3.2/core-1.3.2.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.5.0/core-1.5.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.6.0/core-1.6.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0.0/cursoradapter-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.2.1/databinding-common-3.2.1.pom
|
||||
@@ -44,18 +52,24 @@ https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.1
|
||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.2.0/exifinterface-1.2.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.0.0/fragment-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fragment-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.3.6/fragment-1.3.6.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/interpolator/interpolator/1.0.0/interpolator-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/legacy/legacy-support-core-ui/1.0.0/legacy-support-core-ui-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/legacy/legacy-support-core-utils/1.0.0/legacy-support-core-utils-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/legacy/legacy-support-v4/1.0.0/legacy-support-v4-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.0.0/lifecycle-common-2.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.1.0/lifecycle-common-2.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.3.1/lifecycle-common-2.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.0.0/lifecycle-livedata-core-2.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.3.1/lifecycle-livedata-core-2.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata/2.0.0/lifecycle-livedata-2.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.0.0/lifecycle-runtime-2.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.1.0/lifecycle-runtime-2.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.3.1/lifecycle-runtime-2.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel-savedstate/2.3.1/lifecycle-viewmodel-savedstate-2.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.0.0/lifecycle-viewmodel-2.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.3.1/lifecycle-viewmodel-2.3.1.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/localbroadcastmanager/localbroadcastmanager/1.0.0/localbroadcastmanager-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/media/media/1.0.0/media-1.0.0.pom
|
||||
@@ -64,11 +78,12 @@ https://dl.google.com/dl/android/maven2/androidx/print/print/1.0.0/print-1.0.0.p
|
||||
https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/1.0.0/recyclerview-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/1.1.0/recyclerview-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.1.0/savedstate-1.1.0.pom
|
||||
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/tracing/tracing/1.0.0/tracing-1.0.0.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
|
||||
https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.2.0/transition-1.2.0.pom
|
||||
@@ -79,6 +94,7 @@ https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1
|
||||
https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.1.0/vectordrawable-1.1.0.pom
|
||||
https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.0.0/versionedparcelable-1.0.0.pom
|
||||
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/versionedparcelable/versionedparcelable/1.1.1/versionedparcelable-1.1.1.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
|
||||
@@ -449,11 +465,8 @@ https://repo.maven.apache.org/maven2/com/google/android/apps/common/testing/acce
|
||||
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.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.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
|
||||
@@ -520,7 +533,6 @@ https://repo.maven.apache.org/maven2/com/google/zxing/core/3.3.0/core-3.3.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/google/zxing/zxing-parent/3.3.0/zxing-parent-3.3.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/ibm/icu/icu4j/53.1/icu4j-53.1.pom
|
||||
https://repo.maven.apache.org/maven2/com/intellij/annotations/12.0/annotations-12.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/nhaarman/mockitokotlin2/mockito-kotlin/2.2.0/mockito-kotlin-2.2.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-applinks/1.4.0/bolts-applinks-1.4.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/parse/bolts/bolts-tasks/1.4.0/bolts-tasks-1.4.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/assertj/assertj-android/1.1.1/assertj-android-1.1.1.pom
|
||||
@@ -531,13 +543,12 @@ https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp-urlconnection/3
|
||||
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.6/okhttp-5.0.0-alpha.6.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/5.0.0-alpha.7/okhttp-5.0.0-alpha.7.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/3.0.0/okio-3.0.0.pom
|
||||
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/3.1.0/okio-3.1.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/javax.activation/1.2.0/javax.activation-1.2.0.pom
|
||||
@@ -588,13 +599,10 @@ 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
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.9.0/byte-buddy-parent-1.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.9.10/byte-buddy-parent-1.9.10.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy-parent/1.10.18/byte-buddy-parent-1.10.18.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.9.0/byte-buddy-1.9.0.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.9.10/byte-buddy-1.9.10.pom
|
||||
https://repo.maven.apache.org/maven2/net/bytebuddy/byte-buddy/1.10.18/byte-buddy-1.10.18.pom
|
||||
https://repo.maven.apache.org/maven2/net/java/jvnet-parent/1/jvnet-parent-1.pom
|
||||
@@ -766,10 +774,9 @@ https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.48/bcprov
|
||||
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.21.4/checker-qual-3.21.4.pom
|
||||
https://repo.maven.apache.org/maven2/org/checkerframework/checker-qual/3.22.0/checker-qual-3.22.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
|
||||
https://repo.maven.apache.org/maven2/org/codehaus/groovy/groovy-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
|
||||
@@ -857,9 +864,9 @@ https://repo.maven.apache.org/maven2/org/jboss/weld/weld-parent/36/weld-parent-3
|
||||
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
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-android/1.4.3/kotlinx-coroutines-android-1.4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-android/1.5.2/kotlinx-coroutines-android-1.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-common/1.1.1/kotlinx-coroutines-core-common-1.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.4.3/kotlinx-coroutines-core-jvm-1.4.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core-jvm/1.5.2/kotlinx-coroutines-core-jvm-1.5.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.1.1/kotlinx-coroutines-core-1.1.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-coroutines-core/1.3.8/kotlinx-coroutines-core-1.3.8.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlinx/kotlinx-metadata-jvm/0.1.0/kotlinx-metadata-jvm-0.1.0.pom
|
||||
@@ -908,21 +915,21 @@ 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.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-common/1.5.10/kotlin-stdlib-common-1.5.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.5.30/kotlin-stdlib-common-1.5.30.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.20/kotlin-stdlib-common-1.6.20.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.6.21/kotlin-stdlib-common-1.6.21.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-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-jdk7/1.5.30/kotlin-stdlib-jdk7-1.5.30.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-jdk8/1.5.30/kotlin-stdlib-jdk8-1.5.30.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
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.1.3-2/kotlin-stdlib-1.1.3-2.pom
|
||||
@@ -935,10 +942,9 @@ 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.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
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-test/1.4.31/kotlin-test-1.4.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.10/kotlin-stdlib-1.5.10.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.5.30/kotlin-stdlib-1.5.30.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.3.50/kotlin-util-io-1.3.50.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-io/1.4.31/kotlin-util-io-1.4.31.pom
|
||||
https://repo.maven.apache.org/maven2/org/jetbrains/kotlin/kotlin-util-klib/1.4.31/kotlin-util-klib-1.4.31.pom
|
||||
@@ -951,7 +957,6 @@ https://repo.maven.apache.org/maven2/org/junit/jupiter/junit-jupiter-api/5.7.0/j
|
||||
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
|
||||
https://repo.maven.apache.org/maven2/org/jvnet/staxex/stax-ex/2.1.0/stax-ex-2.1.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/2.23.0/mockito-core-2.23.0.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/2.28.2/mockito-core-2.28.2.pom
|
||||
https://repo.maven.apache.org/maven2/org/mockito/mockito-core/3.6.28/mockito-core-3.6.28.pom
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/2.6/objenesis-parent-2.6.pom
|
||||
@@ -965,12 +970,10 @@ https://repo.maven.apache.org/maven2/org/ow2/asm/asm-analysis/5.0.3/asm-analysis
|
||||
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.3/asm-analysis-9.3.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.3/asm-commons-9.3.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.pom
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-debug-all/6.0_BETA/asm-debug-all-6.0_BETA.pom
|
||||
@@ -983,42 +986,28 @@ https://repo.maven.apache.org/maven2/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.p
|
||||
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.3/asm-tree-9.3.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.3/asm-9.3.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-alpha7/jcl-over-slf4j-2.0.0-alpha7.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/jul-to-slf4j/2.0.0-alpha7/jul-to-slf4j-2.0.0-alpha7.pom
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha7/slf4j-api-2.0.0-alpha7.pom
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@
|
||||
"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-navigation": "^7.27.1",
|
||||
"react-native-notifications": "^4.1.3",
|
||||
"react-native-permissions": "^2.1.5",
|
||||
"react-native-randombytes": "^3.6.1",
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
network (ethereum/chain-keyword db)]
|
||||
{:db (assoc-in db [:acquisition :network-status]
|
||||
(get network-statuses :initiated))
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "signMessageWithChatKey")
|
||||
::json-rpc/call [{:method "wakuext_signMessageWithChatKey"
|
||||
:params [msg]
|
||||
:on-error #(re-frame/dispatch [::on-error (i18n/label :t/sign-request-failed)])
|
||||
:on-success #(re-frame/dispatch [::call-acquisition-gateway
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
(fx/defn qr-code-handled
|
||||
{:events [::qr-code-handled]}
|
||||
[{:keys [db] :as cofx} {:keys [type public-key chat-id data ens-name]} {:keys [new-contact?] :as opts}]
|
||||
[{:keys [db] :as cofx} {:keys [type public-key chat-id data ens-name]} {:keys [new-contact? nickname] :as opts}]
|
||||
(let [public-key? (and (string? data)
|
||||
(string/starts-with? data "0x"))
|
||||
chat-key (cond
|
||||
@@ -80,7 +80,7 @@
|
||||
(if-not validation-result
|
||||
(if new-contact?
|
||||
(fx/merge cofx
|
||||
(contact/add-contact chat-key nil ens-name)
|
||||
(contact/add-contact chat-key nickname ens-name)
|
||||
(navigation/navigate-to-cofx :contacts-list {}))
|
||||
(chat/start-chat cofx chat-key ens-name))
|
||||
{:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code)
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
{:events [:multiaccounts.ui/perform-backup-pressed]}
|
||||
[{:keys [db]}]
|
||||
{:db (assoc db :backup/performing-backup true)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "backupData")
|
||||
::json-rpc/call [{:method "wakuext_backupData"
|
||||
:params []
|
||||
:on-error #(do
|
||||
(log/error "failed to perfom backup" %)
|
||||
|
||||
@@ -393,9 +393,9 @@
|
||||
(fx/defn mute-chat
|
||||
{:events [::mute-chat-toggled]}
|
||||
[{:keys [db] :as cofx} chat-id muted?]
|
||||
(let [method (if muted? "muteChat" "unmuteChat")]
|
||||
(let [method (if muted? "wakuext_muteChat" "wakuext_unmuteChat")]
|
||||
{:db (assoc-in db [:chats chat-id :muted] muted?)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method method)
|
||||
::json-rpc/call [{:method method
|
||||
:params [chat-id]
|
||||
:on-error #(re-frame/dispatch [::mute-chat-failed chat-id muted? %])
|
||||
:on-success #(log/debug "muted chat successfully")}]}))
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
{:events [::resolve-community-info]}
|
||||
[{:keys [db]} community-id]
|
||||
{:db (community-resolving db community-id)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "requestCommunityInfoFromMailserver")
|
||||
::json-rpc/call [{:method "wakuext_requestCommunityInfoFromMailserver"
|
||||
:params [community-id]
|
||||
:on-success #(re-frame/dispatch [::community-resolved community-id %])
|
||||
:on-error #(do
|
||||
@@ -69,7 +69,7 @@
|
||||
(fx/defn load-link-preview-data
|
||||
{:events [::load-link-preview-data]}
|
||||
[cofx link]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "getLinkPreviewData")
|
||||
{::json-rpc/call [{:method "wakuext_getLinkPreviewData"
|
||||
:params [link]
|
||||
:on-success #(re-frame/dispatch [::cache-link-preview-data link %])
|
||||
:on-error #(re-frame/dispatch [::cache-link-preview-data
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
(fx/defn request-link-preview-whitelist
|
||||
[_]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "getLinkPreviewWhitelist")
|
||||
{::json-rpc/call [{:method "wakuext_getLinkPreviewWhitelist"
|
||||
:params []
|
||||
:on-success #(re-frame/dispatch [::link-preview-whitelist-received %])
|
||||
:on-error #(log/error "Failed to get link preview whitelist")}]})
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
|
||||
(fx/defn load-chat
|
||||
[_ chat-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "chat")
|
||||
{::json-rpc/call [{:method "wakuext_chat"
|
||||
:params [chat-id]
|
||||
:on-success #(re-frame/dispatch [:chats-list/load-chat-success %])
|
||||
:on-failure #(log/error "failed to fetch chats" 0 -1 %)}]})
|
||||
@@ -84,7 +84,7 @@
|
||||
[{db :db} chat-id]
|
||||
{:clear-message-notifications [[chat-id]
|
||||
(get-in db [:multiaccount :remote-push-notifications-enabled?])]
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "markAllRead")
|
||||
::json-rpc/call [{:method "wakuext_markAllRead"
|
||||
:params [chat-id]
|
||||
:on-success #(re-frame/dispatch [::mark-all-read-successful chat-id])}]})
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
(keys (get-in db [:communities community-id :chats])))]
|
||||
{:clear-message-notifications [community-chat-ids
|
||||
(get-in db [:multiaccount :remote-push-notifications-enabled?])]
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "markAllReadInCommunity")
|
||||
::json-rpc/call [{:method "wakuext_markAllReadInCommunity"
|
||||
:params [community-id]
|
||||
:on-success #(re-frame/dispatch [::mark-all-read-in-community-successful %])}]}))
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
(fx/defn resend-message
|
||||
[{:keys [db] :as cofx} chat-id message-id]
|
||||
(fx/merge cofx
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "reSendChatMessage")
|
||||
{::json-rpc/call [{:method "wakuext_reSendChatMessage"
|
||||
:params [message-id]
|
||||
:on-success #(log/debug "re-sent message successfully")
|
||||
:on-error #(log/error "failed to re-send message" %)}]}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
{:events [::accept-request-address-for-transaction]}
|
||||
[{:keys [db]} message-id address]
|
||||
{:db (dissoc db :commands/select-account)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "acceptRequestAddressForTransaction")
|
||||
::json-rpc/call [{:method "wakuext_acceptRequestAddressForTransaction"
|
||||
:params [message-id address]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:transport/message-sent %])}]})
|
||||
@@ -31,7 +31,7 @@
|
||||
(fx/defn handle-decline-request-address-for-transaction
|
||||
{:events [::decline-request-address-for-transaction]}
|
||||
[_ message-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "declineRequestAddressForTransaction")
|
||||
{::json-rpc/call [{:method "wakuext_declineRequestAddressForTransaction"
|
||||
:params [message-id]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:transport/message-sent %])}]})
|
||||
@@ -39,7 +39,7 @@
|
||||
(fx/defn handle-decline-request-transaction
|
||||
{:events [::decline-request-transaction]}
|
||||
[cofx message-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "declineRequestTransaction")
|
||||
{::json-rpc/call [{:method "wakuext_declineRequestTransaction"
|
||||
:params [message-id]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:transport/message-sent %])}]})
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
{:events [::send-contact-request]}
|
||||
[{:keys [db] :as cofx} public-key]
|
||||
(let [{:keys [name profile-image]} (own-info db)]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendContactUpdate")
|
||||
{::json-rpc/call [{:method "wakuext_sendContactUpdate"
|
||||
:params [public-key name profile-image]
|
||||
:on-success #(log/debug "contact request sent" public-key)}]}))
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
unmarshal-members))
|
||||
|
||||
(fx/defn fetch-chats-rpc [_ {:keys [on-success]}]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "chatsPreview")
|
||||
{::json-rpc/call [{:method "wakuext_chatsPreview"
|
||||
:params []
|
||||
:js-response true
|
||||
:on-success #(on-success ^js %)
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
(fx/defn fetch-contacts-rpc
|
||||
[_ on-success]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "contacts")
|
||||
{::json-rpc/call [{:method "wakuext_contacts"
|
||||
:params []
|
||||
:on-success #(on-success (map <-rpc %))
|
||||
:on-failure #(log/error "failed to fetch contacts" %)}]})
|
||||
|
||||
(fx/defn add
|
||||
[_ public-key nickname ens-name on-success]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addContact")
|
||||
{::json-rpc/call [{:method "wakuext_addContact"
|
||||
:params [{:id public-key :nickname nickname :ensName ens-name}]
|
||||
:js-response true
|
||||
:on-success #(do
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
(fx/defn set-nickname
|
||||
[_ public-key nickname on-success]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "setContactLocalNickname")
|
||||
{::json-rpc/call [{:method "wakuext_setContactLocalNickname"
|
||||
:params [{:id public-key :nickname nickname}]
|
||||
:js-response true
|
||||
:on-success #(do
|
||||
@@ -43,14 +43,14 @@
|
||||
:on-failure #(log/error "failed to set contact nickname " public-key nickname %)}]})
|
||||
|
||||
(fx/defn block [_ contact-id on-success]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "blockContact")
|
||||
{::json-rpc/call [{:method "wakuext_blockContact"
|
||||
:params [contact-id]
|
||||
:js-response true
|
||||
:on-success on-success
|
||||
:on-failure #(log/error "failed to block contact" % contact-id)}]})
|
||||
|
||||
(fx/defn unblock [_ contact-id on-success]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "unblockContact")
|
||||
{::json-rpc/call [{:method "wakuext_unblockContact"
|
||||
:params [contact-id]
|
||||
:on-success on-success
|
||||
:js-response true
|
||||
|
||||
@@ -54,14 +54,14 @@
|
||||
limit
|
||||
on-success
|
||||
on-failure]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "chatMessages")
|
||||
{::json-rpc/call [{:method "wakuext_chatMessages"
|
||||
:params [chat-id cursor limit]
|
||||
:on-success (fn [result]
|
||||
(on-success (update result :messages #(map <-rpc %))))
|
||||
:on-failure on-failure}]})
|
||||
|
||||
(defn mark-seen-rpc [chat-id ids on-success]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "markMessagesSeen")
|
||||
{::json-rpc/call [{:method "wakuext_markMessagesSeen"
|
||||
:params [chat-id ids]
|
||||
:on-success #(do
|
||||
(log/debug "successfully marked as seen" %)
|
||||
@@ -69,19 +69,19 @@
|
||||
:on-failure #(log/error "failed to get messages" %)}]})
|
||||
|
||||
(defn delete-message-rpc [id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "deleteMessage")
|
||||
{::json-rpc/call [{:method "wakuext_deleteMessage"
|
||||
:params [id]
|
||||
:on-success #(log/debug "successfully deleted message" id)
|
||||
:on-failure #(log/error "failed to delete message" % id)}]})
|
||||
|
||||
(defn delete-messages-from-rpc [author]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "deleteMessagesFrom")
|
||||
{::json-rpc/call [{:method "wakuext_deleteMessagesFrom"
|
||||
:params [author]
|
||||
:on-success #(log/debug "successfully deleted messages from" author)
|
||||
:on-failure #(log/error "failed to delete messages from" % author)}]})
|
||||
|
||||
(defn delete-messages-by-chat-id-rpc [chat-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "deleteMessagesByChatID")
|
||||
{::json-rpc/call [{:method "wakuext_deleteMessagesByChatID"
|
||||
:params [chat-id]
|
||||
:on-success #(log/debug "successfully deleted messages by chat-id" chat-id)
|
||||
:on-failure #(log/error "failed to delete messages by chat-id" % chat-id)}]})
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
limit
|
||||
on-success
|
||||
on-failure]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "chatPinnedMessages")
|
||||
{::json-rpc/call [{:method "wakuext_chatPinnedMessages"
|
||||
:params [chat-id cursor limit]
|
||||
:on-success (fn [result]
|
||||
(let [result (clojure.set/rename-keys result {:pinnedMessages :pinned-messages})]
|
||||
@@ -25,7 +25,7 @@
|
||||
:on-failure on-failure}]})
|
||||
|
||||
(fx/defn send-pin-message [cofx pin-message]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendPinMessage")
|
||||
{::json-rpc/call [{:method "wakuext_sendPinMessage"
|
||||
:params [(messages/->rpc pin-message)]
|
||||
:on-success #(log/debug "successfully pinned message" pin-message)
|
||||
:on-failure #(log/error "failed to pin message" % pin-message)}]})
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
limit
|
||||
on-success
|
||||
on-failure]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "emojiReactionsByChatID")
|
||||
{::json-rpc/call [{:method "wakuext_emojiReactionsByChatID"
|
||||
:params [chat-id cursor limit]
|
||||
:on-success (fn [result]
|
||||
(on-success (map <-rpc result)))
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
(ns status-im.ethereum.eip165
|
||||
"Utility function related to [EIP165](https://eips.ethereum.org/EIPS/eip-165)"
|
||||
(:require [status-im.ethereum.abi-spec :as abi-spec]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]))
|
||||
|
||||
(def supports-interface-hash "0x01ffc9a7")
|
||||
(def marker-hash "0xffffffff")
|
||||
|
||||
(defn supports-interface?
|
||||
[contract hash cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract contract
|
||||
:method "supportsInterface(bytes4)"
|
||||
:params [hash]
|
||||
:on-success cb}))
|
||||
|
||||
(defn supports?
|
||||
"Calls cb with true if `supportsInterface` is supported by this contract.
|
||||
See EIP for details."
|
||||
[contract cb]
|
||||
(supports-interface?
|
||||
contract
|
||||
supports-interface-hash
|
||||
#(if (true? (abi-spec/hex-to-boolean %))
|
||||
(supports-interface? contract
|
||||
marker-hash
|
||||
(fn [response]
|
||||
(cb (false? (abi-spec/hex-to-boolean response)))))
|
||||
(cb false))))
|
||||
@@ -1,23 +0,0 @@
|
||||
(ns status-im.ethereum.erc721
|
||||
"
|
||||
Helper functions to interact with [ERC721](https://eips.ethereum.org/EIPS/eip-721) smart contract
|
||||
"
|
||||
(:require [status-im.ethereum.json-rpc :as json-rpc]))
|
||||
|
||||
(defn token-of-owner-by-index
|
||||
[contract address index cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract contract
|
||||
:method "tokenOfOwnerByIndex(address,uint256)"
|
||||
:params [address index]
|
||||
:outputs ["uint256"]
|
||||
:on-success (fn [[token]] (cb token))}))
|
||||
|
||||
(defn token-uri
|
||||
[contract tokenId cb]
|
||||
(json-rpc/eth-call
|
||||
{:contract contract
|
||||
:method "tokenURI(uint256)"
|
||||
:params [tokenId]
|
||||
:outputs ["string"]
|
||||
:on-success (fn [[uri]] (cb uri))}))
|
||||
@@ -2,257 +2,11 @@
|
||||
(:require [clojure.string :as string]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.ethereum.abi-spec :as abi-spec]
|
||||
[status-im.ethereum.decode :as decode]
|
||||
[status-im.native-module.core :as status]
|
||||
[status-im.utils.money :as money]
|
||||
[status-im.utils.types :as types]
|
||||
[status-im.utils.utils :as utils]
|
||||
[taoensso.timbre :as log]))
|
||||
|
||||
(def json-rpc-api
|
||||
{"eth_call" {}
|
||||
"eth_getBalance"
|
||||
{:on-result money/bignumber}
|
||||
"eth_estimateGas"
|
||||
{:on-result #(money/bignumber (if (= (int %) 21000) % (int (* % 1.2))))}
|
||||
"eth_gasPrice"
|
||||
{:on-result money/bignumber}
|
||||
"eth_getBlockByHash"
|
||||
{:on-result #(-> (update % :number decode/uint)
|
||||
(update :timestamp decode/uint))}
|
||||
"eth_getTransactionByHash" {}
|
||||
"eth_getTransactionReceipt" {}
|
||||
"eth_getBlockByNumber" {}
|
||||
"eth_maxPriorityFeePerGas" {}
|
||||
"eth_newBlockFilter" {:subscription? true}
|
||||
"eth_newFilter" {:subscription? true}
|
||||
"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" {}
|
||||
"shh_getSymKey" {}
|
||||
"shh_markTrustedPeer" {}
|
||||
"waku_generateSymKeyFromPassword" {}
|
||||
"waku_getSymKey" {}
|
||||
"waku_markTrustedPeer" {}
|
||||
"wakuext_post" {}
|
||||
"wakuext_requestAllHistoricMessagesWithRetries" {}
|
||||
"wakuext_toggleUseMailservers" {}
|
||||
"wakuext_editMessage" {}
|
||||
"wakuext_deleteMessageAndSend" {}
|
||||
"wakuext_fillGaps" {}
|
||||
"wakuext_syncChatFromSyncedFrom" {}
|
||||
"wakuext_createPublicChat" {}
|
||||
"wakuext_createOneToOneChat" {}
|
||||
"wakuext_createProfileChat" {}
|
||||
"wakuext_startMessenger" {}
|
||||
"wakuext_sendPairInstallation" {}
|
||||
"wakuext_syncDevices" {}
|
||||
"wakuext_syncBookmark" {}
|
||||
"wakuext_requestMessages" {}
|
||||
"wakuext_sendDirectMessage" {}
|
||||
"wakuext_sendPublicMessage" {}
|
||||
"wakuext_enableInstallation" {}
|
||||
"wakuext_disableInstallation" {}
|
||||
"wakuext_sendChatMessage" {}
|
||||
"wakuext_sendChatMessages" {}
|
||||
"wakuext_backupData" {}
|
||||
"wakuext_confirmJoiningGroup" {}
|
||||
"wakuext_addAdminsToGroupChat" {}
|
||||
"wakuext_addMembersToGroupChat" {}
|
||||
"wakuext_removeMemberFromGroupChat" {}
|
||||
"wakuext_leaveGroupChat" {}
|
||||
"wakuext_changeGroupChatName" {}
|
||||
"wakuext_createGroupChatWithMembers" {}
|
||||
"wakuext_createGroupChatFromInvitation" {}
|
||||
"wakuext_reSendChatMessage" {}
|
||||
"wakuext_getOurInstallations" {}
|
||||
"wakuext_setInstallationMetadata" {}
|
||||
"wakuext_loadFilters" {}
|
||||
"wakuext_loadFilter" {}
|
||||
"wakuext_removeFilters" {}
|
||||
"wakuext_sendContactUpdate" {}
|
||||
"wakuext_sendContactUpdates" {}
|
||||
"wakuext_chatsPreview" {}
|
||||
"wakuext_activeChats" {}
|
||||
"wakuext_chat" {}
|
||||
"wakuext_addSystemMessages" {}
|
||||
"wakuext_deleteMessagesFrom" {}
|
||||
"wakuext_deleteMessagesByChatID" {}
|
||||
"wakuext_deleteMessage" {}
|
||||
"wakuext_markMessagesSeen" {}
|
||||
"wakuext_markAllRead" {}
|
||||
"wakuext_markAllReadInCommunity" {}
|
||||
"wakuext_confirmMessagesProcessedByID" {}
|
||||
"wakuext_chatMessages" {}
|
||||
"wakuext_saveChat" {}
|
||||
"wakuext_muteChat" {}
|
||||
"wakuext_unmuteChat" {}
|
||||
"wakuext_contacts" {}
|
||||
"wakuext_removeContact" {}
|
||||
"wakuext_setContactLocalNickname" {}
|
||||
"wakuext_clearHistory" {}
|
||||
"wakuext_prepareContent" {}
|
||||
"wakuext_blockContact" {}
|
||||
"wakuext_unblockContact" {}
|
||||
"wakuext_addContact" {}
|
||||
"wakuext_updateMailservers" {}
|
||||
"wakuext_sendEmojiReaction" {}
|
||||
"wakuext_disconnectActiveMailserver" {}
|
||||
"wakuext_sendEmojiReactionRetraction" {}
|
||||
"wakuext_emojiReactionsByChatID" {}
|
||||
"wakuext_getLinkPreviewWhitelist" {}
|
||||
"wakuext_getLinkPreviewData" {}
|
||||
"wakuext_requestCommunityInfoFromMailserver" {}
|
||||
"wakuext_deactivateChat" {}
|
||||
"wakuext_sendPinMessage" {}
|
||||
"wakuext_setPinnedMailservers" {}
|
||||
"wakuext_chatPinnedMessages" {}
|
||||
;;TODO not used anywhere?
|
||||
"wakuext_deleteChat" {}
|
||||
"wakuext_saveContact" {}
|
||||
"wakuext_verifyENSNames" {}
|
||||
"wakuext_requestAddressForTransaction" {}
|
||||
"wakuext_requestTransaction" {}
|
||||
"wakuext_acceptRequestAddressForTransaction" {}
|
||||
"wakuext_declineRequestAddressForTransaction" {}
|
||||
"wakuext_declineRequestTransaction" {}
|
||||
"wakuext_sendTransaction" {}
|
||||
"wakuext_acceptRequestTransaction" {}
|
||||
"wakuext_signMessageWithChatKey" {}
|
||||
"wakuext_sendGroupChatInvitationRequest" {}
|
||||
"wakuext_sendGroupChatInvitationRejection" {}
|
||||
"wakuext_getGroupChatInvitations" {}
|
||||
"wakuext_registerForPushNotifications" {}
|
||||
"wakuext_unregisterFromPushNotifications" {}
|
||||
"wakuext_enablePushNotificationsFromContactsOnly" {}
|
||||
"wakuext_disablePushNotificationsFromContactsOnly" {}
|
||||
"wakuext_startPushNotificationsServer" {}
|
||||
"wakuext_stopPushNotificationsServer" {}
|
||||
"wakuext_disableSendingNotifications" {}
|
||||
"wakuext_enableSendingNotifications" {}
|
||||
"wakuext_addPushNotificationsServer" {}
|
||||
"wakuext_getPushNotificationsServers" {}
|
||||
"wakuext_enablePushNotificationsBlockMentions" {}
|
||||
"wakuext_disablePushNotificationsBlockMentions" {}
|
||||
"wakuext_unreadActivityCenterNotificationsCount" {}
|
||||
"wakuext_setUserStatus" {}
|
||||
"wakuext_statusUpdates" {}
|
||||
"multiaccounts_getIdentityImages" {}
|
||||
"multiaccounts_getIdentityImage" {}
|
||||
"multiaccounts_storeIdentityImage" {}
|
||||
"multiaccounts_storeIdentityImageFromURL" {}
|
||||
"multiaccounts_deleteIdentityImage" {}
|
||||
"wakuext_changeIdentityImageShowTo" {}
|
||||
"wakuext_createCommunity" {}
|
||||
"wakuext_editCommunity" {}
|
||||
"wakuext_createCommunityChat" {}
|
||||
"wakuext_editCommunityChat" {}
|
||||
"wakuext_inviteUsersToCommunity" {}
|
||||
"wakuext_shareCommunity" {}
|
||||
"wakuext_removeUserFromCommunity" {}
|
||||
"wakuext_banUserFromCommunity" {}
|
||||
"wakuext_requestToJoinCommunity" {}
|
||||
"wakuext_acceptRequestToJoinCommunity" {}
|
||||
"wakuext_declineRequestToJoinCommunity" {}
|
||||
"wakuext_pendingRequestsToJoinForCommunity" {}
|
||||
"wakuext_joinCommunity" {}
|
||||
"wakuext_leaveCommunity" {}
|
||||
"wakuext_communities" {}
|
||||
"wakuext_importCommunity" {}
|
||||
"wakuext_exportCommunity" {}
|
||||
"wakuext_createCommunityCategory" {}
|
||||
"wakuext_reorderCommunityCategories" {}
|
||||
"wakuext_reorderCommunityChat" {}
|
||||
"wakuext_editCommunityCategory" {}
|
||||
"wakuext_deleteCommunityCategory" {}
|
||||
"wakuext_deleteCommunityChat" {}
|
||||
"wakuext_ensVerified" {}
|
||||
"wakuext_dismissActivityCenterNotifications" {}
|
||||
"wakuext_acceptActivityCenterNotifications" {}
|
||||
"wakuext_dismissAllActivityCenterNotifications" {}
|
||||
"wakuext_acceptAllActivityCenterNotifications" {}
|
||||
"wakuext_markAllActivityCenterNotificationsRead" {}
|
||||
"wakuext_activityCenterNotifications" {}
|
||||
"status_chats" {}
|
||||
"rpcstats_getStats" {}
|
||||
"rpcstats_reset" {}
|
||||
"localnotifications_switchWalletNotifications" {}
|
||||
"localnotifications_notificationPreferences" {}
|
||||
"wallet_setInitialBlocksRange" {}
|
||||
"wallet_getTransfersByAddress" {}
|
||||
"wallet_watchTransaction" {}
|
||||
"wallet_checkRecentHistory" {}
|
||||
"wallet_getCachedBalances" {}
|
||||
"wallet_storePendingTransaction" {}
|
||||
"wallet_deletePendingTransaction" {}
|
||||
"wallet_getPendingTransactions" {}
|
||||
"wallet_getTokensBalances" {}
|
||||
"wallet_getCustomTokens" {}
|
||||
"wallet_addCustomToken" {}
|
||||
"wallet_addFavourite" {}
|
||||
"wallet_getFavourites" {}
|
||||
"wallet_deleteCustomToken" {}
|
||||
"wallet_getCryptoOnRamps" {}
|
||||
"wallet_getOpenseaCollectionsByOwner" {}
|
||||
"wallet_getOpenseaAssetsByOwnerAndCollection" {}
|
||||
"wallet_loadTransferByHash" {}
|
||||
"wallet_getTokens" {};, %* [chainId]}
|
||||
"wallet_getTokensBalancesForChainIDs" {};, %* [@[chainId], accounts, tokens]
|
||||
"wallet_fetchPrices" {}
|
||||
"browsers_getBrowsers" {}
|
||||
"browsers_addBrowser" {}
|
||||
"browsers_deleteBrowser" {}
|
||||
"browsers_getBookmarks" {}
|
||||
"browsers_storeBookmark" {}
|
||||
"browsers_updateBookmark" {}
|
||||
"browsers_removeBookmark" {}
|
||||
"mailservers_getMailserverRequestGaps" {}
|
||||
"mailservers_addMailserverRequestGaps" {}
|
||||
"mailservers_deleteMailserverRequestGaps" {}
|
||||
"mailservers_deleteMailserverRequestGapsByChatID" {}
|
||||
"permissions_addDappPermissions" {}
|
||||
"permissions_getDappPermissions" {}
|
||||
"permissions_deleteDappPermissions" {}
|
||||
"settings_saveSetting" {}
|
||||
"settings_getSettings" {}
|
||||
"accounts_getAccounts" {}
|
||||
"accounts_saveAccounts" {}
|
||||
"accounts_deleteAccount" {}
|
||||
"mailservers_ping" {}
|
||||
"mailservers_addMailserver" {}
|
||||
"mailservers_getMailservers" {}
|
||||
"mailservers_deleteMailserver" {}
|
||||
"mailservers_addMailserverTopic" {}
|
||||
"mailservers_addMailserverTopics" {}
|
||||
"mailservers_getMailserverTopics" {}
|
||||
"mailservers_deleteMailserverTopic" {}
|
||||
"mailservers_addChatRequestRange" {}
|
||||
"mailservers_addChatRequestRanges" {}
|
||||
"mailservers_getChatRequestRanges" {}
|
||||
"mailservers_deleteChatRequestRange" {}
|
||||
"appmetrics_saveAppMetrics" {}
|
||||
"appmetrics_getAppMetrics" {}
|
||||
"stickers_market" {}
|
||||
"stickers_installed" {}
|
||||
"stickers_install" {}
|
||||
"stickers_addRecent" {}
|
||||
"stickers_recent" {}
|
||||
"stickers_buyPrepareTx" {}
|
||||
"stickers_processPending" {}
|
||||
"stickers_addPending" {}
|
||||
"stickers_pending" {}})
|
||||
|
||||
(defn on-error-retry
|
||||
[call-method {:keys [method number-of-retries delay on-error] :as arg}]
|
||||
(if (pos? number-of-retries)
|
||||
@@ -260,62 +14,35 @@
|
||||
(let [updated-delay (if delay
|
||||
(min 2000 (* 2 delay))
|
||||
50)]
|
||||
(log/debug "[on-error-retry]" method
|
||||
"number-of-retries" number-of-retries
|
||||
"delay" delay
|
||||
"error" error)
|
||||
(log/debug "[on-error-retry]" method "number-of-retries" number-of-retries "delay" delay "error" error)
|
||||
(utils/set-timeout #(call-method (-> arg
|
||||
(update :number-of-retries dec)
|
||||
(assoc :delay updated-delay)))
|
||||
updated-delay)))
|
||||
on-error))
|
||||
|
||||
(defn call-ext-method [method]
|
||||
(str "wakuext_" method))
|
||||
|
||||
(defn call
|
||||
[{:keys [method params on-success on-error js-response] :as arg}]
|
||||
(if-let [method-options (json-rpc-api method)]
|
||||
(let [params (or params [])
|
||||
{:keys [id on-result subscription?]
|
||||
:or {on-result identity
|
||||
id 1}} method-options
|
||||
on-error (or
|
||||
on-error
|
||||
(on-error-retry call arg)
|
||||
#(log/warn :json-rpc/error method :error % :params params))]
|
||||
(if (nil? method)
|
||||
(do
|
||||
(log/error :json-rpc/method-not-found method)
|
||||
(on-error :json-rpc/method-not-found))
|
||||
(status/call-private-rpc
|
||||
(types/clj->json {:jsonrpc "2.0"
|
||||
:id id
|
||||
:method (if subscription?
|
||||
"eth_subscribeSignal"
|
||||
method)
|
||||
:params (if subscription?
|
||||
[method params]
|
||||
params)})
|
||||
(fn [response]
|
||||
(if (string/blank? response)
|
||||
(on-error {:message "Blank response"})
|
||||
(let [response-js (types/json->js response)]
|
||||
(if (.-error response-js)
|
||||
(on-error (types/js->clj (.-error response-js)))
|
||||
(if subscription?
|
||||
(re-frame/dispatch
|
||||
[:ethereum.callback/subscription-success
|
||||
(types/js->clj (.-result response-js)) on-success])
|
||||
(on-success (on-result (if js-response
|
||||
(.-result response-js)
|
||||
(types/js->clj (.-result response-js)))))))))))))
|
||||
(log/warn "method" method "not found" arg)))
|
||||
(let [params (or params [])
|
||||
on-error (or on-error (on-error-retry call arg) #(log/warn :json-rpc/error method :error % :params params))]
|
||||
(status/call-private-rpc
|
||||
(types/clj->json {:jsonrpc "2.0"
|
||||
:id 1
|
||||
:method method
|
||||
:params params})
|
||||
(fn [response]
|
||||
(if (string/blank? response)
|
||||
(on-error {:message "Blank response"})
|
||||
(let [response-js (types/json->js response)]
|
||||
(if (.-error response-js)
|
||||
(on-error (types/js->clj (.-error response-js)))
|
||||
(on-success (if js-response
|
||||
(.-result response-js)
|
||||
(types/js->clj (.-result response-js)))))))))))
|
||||
|
||||
(defn eth-call
|
||||
[{:keys [contract method params outputs on-success block]
|
||||
:or {block "latest"
|
||||
params []}
|
||||
:or {block "latest" params []}
|
||||
:as arg}]
|
||||
(call {:method "eth_call"
|
||||
:params [{:to contract
|
||||
@@ -330,15 +57,8 @@
|
||||
:on-error
|
||||
(on-error-retry eth-call arg)}))
|
||||
|
||||
;; effects
|
||||
(re-frame/reg-fx
|
||||
::call
|
||||
(fn [params]
|
||||
(doseq [param params]
|
||||
(call param))))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::eth-call
|
||||
(fn [params]
|
||||
(doseq [param params]
|
||||
(eth-call param))))
|
||||
(call param))))
|
||||
@@ -6,23 +6,8 @@
|
||||
[status-im.utils.fx :as fx]
|
||||
[taoensso.timbre :as log]))
|
||||
|
||||
(fx/defn handle-signal
|
||||
[cofx {:keys [subscription_id data] :as event}]
|
||||
(if-let [handler (get-in cofx [:db :ethereum/subscriptions subscription_id])]
|
||||
(handler data)
|
||||
(log/warn ::unknown-subscription :event event)))
|
||||
|
||||
(fx/defn handle-error
|
||||
[cofx {:keys [subscription_id data] :as event}]
|
||||
(log/error ::error event))
|
||||
|
||||
(fx/defn register-subscription
|
||||
{:events [:ethereum.callback/subscription-success]}
|
||||
[{:keys [db]} id handler]
|
||||
{:db (assoc-in db [:ethereum/subscriptions id] handler)})
|
||||
|
||||
(fx/defn new-transfers
|
||||
[{:keys [db] :as cofx} block-number accounts]
|
||||
[cofx block-number accounts]
|
||||
(log/debug "[wallet-subs] new-transfers"
|
||||
"accounts" accounts
|
||||
"block" block-number)
|
||||
@@ -41,7 +26,7 @@
|
||||
(assoc :dispatch event))))
|
||||
|
||||
(fx/defn recent-history-fetching-ended
|
||||
[{:keys [db] :as cofx} {:keys [accounts blockNumber]}]
|
||||
[{:keys [db]} {:keys [accounts blockNumber]}]
|
||||
(log/debug "[wallet-subs] recent-history-fetching-ended"
|
||||
"accounts" accounts
|
||||
"block" blockNumber)
|
||||
@@ -76,11 +61,11 @@
|
||||
(wallet.core/after-checking-history)))
|
||||
|
||||
(fx/defn non-archival-node-detected
|
||||
[{:keys [db] :as cofx} _]
|
||||
[{:keys [db]} _]
|
||||
{:db (assoc db :wallet/non-archival-node true)})
|
||||
|
||||
(fx/defn new-wallet-event
|
||||
[cofx {:keys [type blockNumber accounts newTransactions] :as event}]
|
||||
[cofx {:keys [type blockNumber accounts] :as event}]
|
||||
(log/info "[wallet-subs] new-wallet-event"
|
||||
"event-type" type
|
||||
"blockNumber" blockNumber
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
"Format group update message and sign membership"
|
||||
{:events [:group-chats.ui/remove-member-pressed]}
|
||||
[_ chat-id member]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "removeMemberFromGroupChat")
|
||||
{::json-rpc/call [{:method "wakuext_removeMemberFromGroupChat"
|
||||
:params [nil chat-id member]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]})
|
||||
@@ -45,7 +45,7 @@
|
||||
(fx/defn join-chat
|
||||
{:events [:group-chats.ui/join-pressed]}
|
||||
[_ chat-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "confirmJoiningGroup")
|
||||
{::json-rpc/call [{:method "wakuext_confirmJoiningGroup"
|
||||
:params [chat-id]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]})
|
||||
@@ -55,7 +55,7 @@
|
||||
:interceptors [(re-frame/inject-cofx :random-guid-generator)]}
|
||||
[{:keys [db] :as cofx} group-name]
|
||||
(let [selected-contacts (:group/selected-contacts db)]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "createGroupChatWithMembers")
|
||||
{::json-rpc/call [{:method "wakuext_createGroupChatWithMembers"
|
||||
:params [nil group-name (into [] selected-contacts)]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]}))
|
||||
@@ -65,7 +65,7 @@
|
||||
(if (get-in cofx [:db :chats chat-id])
|
||||
{:dispatch-n [[:accept-all-activity-center-notifications-from-chat chat-id]
|
||||
[:chat.ui/navigate-to-chat chat-id]]}
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "createGroupChatFromInvitation")
|
||||
{::json-rpc/call [{:method "wakuext_createGroupChatFromInvitation"
|
||||
:params [chat-name chat-id invitation-admin]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]}))
|
||||
@@ -73,7 +73,7 @@
|
||||
(fx/defn make-admin
|
||||
{:events [:group-chats.ui/make-admin-pressed]}
|
||||
[_ chat-id member]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addAdminsToGroupChat")
|
||||
{::json-rpc/call [{:method "wakuext_addAdminsToGroupChat"
|
||||
:params [nil chat-id [member]]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]})
|
||||
@@ -82,7 +82,7 @@
|
||||
"Add members to a group chat"
|
||||
{:events [:group-chats.ui/add-members-pressed]}
|
||||
[{{:keys [current-chat-id selected-participants]} :db :as cofx}]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addMembersToGroupChat")
|
||||
{::json-rpc/call [{:method "wakuext_addMembersToGroupChat"
|
||||
:params [nil current-chat-id selected-participants]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]})
|
||||
@@ -92,7 +92,7 @@
|
||||
{:events [:group-chats.ui/add-members-from-invitation]}
|
||||
[{{:keys [current-chat-id] :as db} :db :as cofx} id participant]
|
||||
{:db (assoc-in db [:group-chat/invitations id :state] constants/invitation-state-approved)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "addMembersToGroupChat")
|
||||
::json-rpc/call [{:method "wakuext_addMembersToGroupChat"
|
||||
:params [nil current-chat-id [participant]]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]})
|
||||
@@ -101,7 +101,7 @@
|
||||
"Leave chat"
|
||||
{:events [:group-chats.ui/leave-chat-confirmed]}
|
||||
[{:keys [db] :as cofx} chat-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "leaveGroupChat")
|
||||
{::json-rpc/call [{:method "wakuext_leaveGroupChat"
|
||||
:params [nil chat-id true]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-removed %])}]})
|
||||
@@ -126,7 +126,7 @@
|
||||
[{:keys [db] :as cofx} chat-id new-name]
|
||||
(when (valid-name? new-name)
|
||||
{:db (assoc-in db [:chats chat-id :name] new-name)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "changeGroupChatName")
|
||||
::json-rpc/call [{:method "wakuext_changeGroupChatName"
|
||||
:params [nil chat-id new-name]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:chat-updated %])}]}))
|
||||
@@ -148,7 +148,7 @@
|
||||
(let [{:keys [invitation-admin]} (get chats current-chat-id)
|
||||
message (get-in db [:chat/memberships current-chat-id :message])]
|
||||
{:db (assoc-in db [:chat/memberships current-chat-id] nil)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRequest")
|
||||
::json-rpc/call [{:method "wakuext_sendGroupChatInvitationRequest"
|
||||
:params [nil current-chat-id invitation-admin message]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])}]}))
|
||||
@@ -157,7 +157,7 @@
|
||||
"Send group chat membership rejection"
|
||||
{:events [:send-group-chat-membership-rejection]}
|
||||
[cofx invitation-id]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendGroupChatInvitationRejection")
|
||||
{::json-rpc/call [{:method "wakuext_sendGroupChatInvitationRejection"
|
||||
:params [nil invitation-id]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])}]})
|
||||
|
||||
@@ -346,7 +346,7 @@
|
||||
|
||||
(fx/defn get-group-chat-invitations [_]
|
||||
{::json-rpc/call
|
||||
[{:method (json-rpc/call-ext-method "getGroupChatInvitations")
|
||||
[{:method "wakuext_getGroupChatInvitations"
|
||||
:on-success #(re-frame/dispatch [::initialize-invitations %])}]})
|
||||
|
||||
(fx/defn initialize-communities-enabled
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
(ns status-im.multiaccounts.update.core
|
||||
(:require [status-im.ethereum.json-rpc :as json-rpc]
|
||||
(:require [status-im.constants :as constants]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.utils.fx :as fx]
|
||||
[taoensso.timbre :as log]))
|
||||
|
||||
(fx/defn send-multiaccount-update [{:keys [db] :as cofx}]
|
||||
(let [multiaccount (:multiaccount db)
|
||||
{:keys [name preferred-name address]} multiaccount]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendContactUpdates")
|
||||
{::json-rpc/call [{:method "wakuext_sendContactUpdates"
|
||||
:params [(or preferred-name name) ""]
|
||||
:on-success #(log/debug "sent contact update")}]}))
|
||||
|
||||
@@ -42,7 +43,15 @@
|
||||
|
||||
(fx/defn optimistic
|
||||
[{:keys [db] :as cofx} setting setting-value]
|
||||
(let [current-multiaccount (:multiaccount db)]
|
||||
(let [current-multiaccount (:multiaccount db)
|
||||
setting-value (if (= :currency setting)
|
||||
(keyword setting-value)
|
||||
setting-value)
|
||||
db (if (= :stickers/packs-installed setting)
|
||||
;;updating :stickers/packs for installed stickers
|
||||
(let [packs-installed-keys (keys (js->clj setting-value))]
|
||||
(reduce #(assoc-in %1 [:stickers/packs %2 :status] constants/sticker-pack-status-installed) db packs-installed-keys))
|
||||
db)]
|
||||
{:db (if setting-value
|
||||
(assoc-in db [:multiaccount setting] setting-value)
|
||||
(update db :multiaccount dissoc setting))}))
|
||||
|
||||
@@ -305,7 +305,7 @@
|
||||
:id comp
|
||||
:options (merge (cond-> (roots/status-bar-options)
|
||||
(and platform/android? (not (quo.colors/dark?)))
|
||||
(assoc-in [:statusBar :translucent] true))
|
||||
(assoc-in [:statusBar :backgroundColor] "#99999A"))
|
||||
{:layout {:componentBackgroundColor (if platform/android?
|
||||
(:backdrop @quo.colors/theme)
|
||||
"transparent")}
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
|
||||
(defn topbar-options []
|
||||
{:noBorder true
|
||||
:scrollEdgeAppearance {:active false
|
||||
:noBorder true}
|
||||
:elevation 0
|
||||
:title {:color colors/black}
|
||||
:rightButtonColor colors/black
|
||||
@@ -114,6 +116,7 @@
|
||||
:id :intro
|
||||
:options (status-bar-options)}}]
|
||||
:options (merge (default-root)
|
||||
(status-bar-options)
|
||||
{:topBar (assoc (topbar-options) :visible false)})}}}
|
||||
|
||||
;; ONBOARDING
|
||||
@@ -123,6 +126,7 @@
|
||||
:id :get-your-keys
|
||||
:options (status-bar-options)}}]
|
||||
:options (merge (default-root)
|
||||
(status-bar-options)
|
||||
{:topBar (assoc (topbar-options) :elevation 0 :noBorder true :animate false)})}}}
|
||||
|
||||
;;PROGRESS
|
||||
@@ -143,6 +147,7 @@
|
||||
:id :login
|
||||
:options (get-screen-options :login)}}]
|
||||
:options (merge (default-root)
|
||||
(status-bar-options)
|
||||
{:topBar (topbar-options)})}}}
|
||||
|
||||
:multiaccounts-keycard
|
||||
@@ -154,6 +159,7 @@
|
||||
:id :keycard-login-pin
|
||||
:options (get-screen-options :keycard-login-pin)}}]
|
||||
:options (merge (default-root)
|
||||
(status-bar-options)
|
||||
{:topBar (topbar-options)})}}}
|
||||
|
||||
;;WELCOME
|
||||
@@ -162,6 +168,7 @@
|
||||
:id :welcome
|
||||
:options (status-bar-options)}}]
|
||||
:options (merge (default-root)
|
||||
(status-bar-options)
|
||||
{:topBar (assoc (topbar-options) :visible false)})}}}
|
||||
|
||||
;;NOTIFICATIONS
|
||||
@@ -170,6 +177,7 @@
|
||||
:id :onboarding-notification
|
||||
:options (status-bar-options)}}]
|
||||
:options (merge (default-root)
|
||||
(status-bar-options)
|
||||
{:topBar (assoc (topbar-options) :visible false)})}}}
|
||||
|
||||
;; TERMS OF SERVICE
|
||||
@@ -178,4 +186,5 @@
|
||||
:id :force-accept-tos
|
||||
:options (get-screen-options :force-accept-tos)}}]
|
||||
:options (merge (default-root)
|
||||
(status-bar-options)
|
||||
{:topBar (assoc (topbar-options) :visible false)})}}}})
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
(fx/defn handle-enable-notifications-event
|
||||
{:events [:notifications/registered-for-push-notifications]}
|
||||
[cofx token]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "registerForPushNotifications")
|
||||
{::json-rpc/call [{:method "wakuext_registerForPushNotifications"
|
||||
:params [token (if platform/ios? config/apn-topic) (if platform/ios? apn-token-type firebase-token-type)]
|
||||
:on-success #(log/info "[push-notifications] register-success" %)
|
||||
:on-error #(re-frame/dispatch [:notifications/switch-error true %])}]})
|
||||
@@ -127,7 +127,7 @@
|
||||
(fx/defn handle-disable-notifications-event
|
||||
{:events [:notifications/unregistered-from-push-notifications]}
|
||||
[cofx]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "unregisterFromPushNotifications")
|
||||
{::json-rpc/call [{:method "wakuext_unregisterFromPushNotifications"
|
||||
:params []
|
||||
:on-success #(log/info "[push-notifications] unregister-success" %)
|
||||
:on-error #(re-frame/dispatch [:notifications/switch-error false %])}]})
|
||||
@@ -135,7 +135,7 @@
|
||||
(fx/defn logout-disable
|
||||
[cofx]
|
||||
(merge {::logout-disable nil}
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "unregisterFromPushNotifications")
|
||||
{::json-rpc/call [{:method "wakuext_unregisterFromPushNotifications"
|
||||
:params []
|
||||
:on-success #(log/info "[push-notifications] unregister-success" %)
|
||||
:on-error #(log/info "[push-notifications] unregister-error" %)}]}))
|
||||
@@ -172,10 +172,10 @@
|
||||
{:events [::switch-non-contacts]}
|
||||
[{:keys [db] :as cofx} enabled?]
|
||||
(let [method (if enabled?
|
||||
"enablePushNotificationsFromContactsOnly"
|
||||
"disablePushNotificationsFromContactsOnly")]
|
||||
"wakuext_enablePushNotificationsFromContactsOnly"
|
||||
"wakuext_disablePushNotificationsFromContactsOnly")]
|
||||
(fx/merge cofx
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method method)
|
||||
{::json-rpc/call [{:method method
|
||||
:params []
|
||||
:on-success #(log/info "[push-notifications] contacts-notification-success" %)
|
||||
:on-error #(re-frame/dispatch [::non-contacts-update-error enabled? %])}]}
|
||||
@@ -186,11 +186,11 @@
|
||||
{:events [::switch-block-mentions]}
|
||||
[{:keys [db] :as cofx} enabled?]
|
||||
(let [method (if enabled?
|
||||
"enablePushNotificationsBlockMentions"
|
||||
"disablePushNotificationsBlockMentions")]
|
||||
"wakuext_enablePushNotificationsBlockMentions"
|
||||
"wakuext_disablePushNotificationsBlockMentions")]
|
||||
(log/info "USING METHOD" method enabled?)
|
||||
(fx/merge cofx
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method method)
|
||||
{::json-rpc/call [{:method method
|
||||
:params []
|
||||
:on-success #(log/info "[push-notifications] block-mentions-success" %)
|
||||
:on-error #(re-frame/dispatch [::block-mentions-update-error enabled? %])}]}
|
||||
@@ -201,10 +201,10 @@
|
||||
{:events [::switch-push-notifications-server-enabled]}
|
||||
[{:keys [db] :as cofx} enabled?]
|
||||
(let [method (if enabled?
|
||||
"startPushNotificationsServer"
|
||||
"stopPushNotificationsServer")]
|
||||
"wakuext_startPushNotificationsServer"
|
||||
"wakuext_stopPushNotificationsServer")]
|
||||
(fx/merge cofx
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method method)
|
||||
{::json-rpc/call [{:method method
|
||||
:params []
|
||||
:on-success #(log/info "[push-notifications] switch-server-enabled successful" %)
|
||||
:on-error #(re-frame/dispatch [::push-notifications-server-update-error enabled? %])}]}
|
||||
@@ -215,10 +215,10 @@
|
||||
{:events [::switch-send-push-notifications]}
|
||||
[{:keys [db] :as cofx} enabled?]
|
||||
(let [method (if enabled?
|
||||
"enableSendingNotifications"
|
||||
"disableSendingNotifications")]
|
||||
"wakuext_enableSendingNotifications"
|
||||
"wakuext_disableSendingNotifications")]
|
||||
(fx/merge cofx
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method method)
|
||||
{::json-rpc/call [{:method method
|
||||
:params []
|
||||
:on-success #(log/info "[push-notifications] switch-send-notifications successful" %)
|
||||
:on-error #(re-frame/dispatch [::push-notifications-send-update-error enabled? %])}]}
|
||||
@@ -234,7 +234,7 @@
|
||||
{:events [::add-server]}
|
||||
[{:keys [db] :as cofx} public-key]
|
||||
(fx/merge cofx
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "addPushNotificationsServer")
|
||||
{::json-rpc/call [{:method "wakuext_addPushNotificationsServer"
|
||||
:params [public-key]
|
||||
:on-success #(do
|
||||
(log/info "[push-notifications] switch-send-notifications successful" %)
|
||||
@@ -249,7 +249,7 @@
|
||||
(fx/defn fetch-push-notifications-servers
|
||||
{:events [::fetch-servers]}
|
||||
[cofx]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "getPushNotificationsServers")
|
||||
{::json-rpc/call [{:method "wakuext_getPushNotificationsServers"
|
||||
:params []
|
||||
:on-success #(do
|
||||
(log/info "[push-notifications] servers fetched" %)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
(fx/defn get-activity-center-notifications-count
|
||||
{:events [:get-activity-center-notifications-count]}
|
||||
[_]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "unreadActivityCenterNotificationsCount")
|
||||
{::json-rpc/call [{:method "wakuext_unreadActivityCenterNotificationsCount"
|
||||
:params []
|
||||
:on-success #(re-frame/dispatch [:get-activity-center-notifications-count-success %])
|
||||
:on-error #()}]})
|
||||
@@ -48,7 +48,7 @@
|
||||
[{:keys [db]} ids]
|
||||
{:db (update-in db [:activity.center/notifications :notifications]
|
||||
(fn [items] (remove #(get ids (:id %)) items)))
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "dismissActivityCenterNotifications")
|
||||
::json-rpc/call [{:method "wakuext_dismissActivityCenterNotifications"
|
||||
:params [ids]
|
||||
:on-success #()
|
||||
:on-error #()}]})
|
||||
@@ -59,7 +59,7 @@
|
||||
(when (seq ids)
|
||||
{:db (update-in db [:activity.center/notifications :notifications]
|
||||
(fn [items] (remove #(get ids (:id %)) items)))
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "acceptActivityCenterNotifications")
|
||||
::json-rpc/call [{:method "wakuext_acceptActivityCenterNotifications"
|
||||
:params [ids]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
|
||||
@@ -78,7 +78,7 @@
|
||||
(update-in [:activity.center/notifications :notifications]
|
||||
(fn [items] (filter #(not (= chat-id (:chat-id %))) items)))
|
||||
(update :activity.center/notifications-count - (min (db :activity.center/notifications-count) (count notifications-from-chat-not-read))))
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "acceptActivityCenterNotifications")
|
||||
::json-rpc/call [{:method "wakuext_acceptActivityCenterNotifications"
|
||||
:params [ids]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
|
||||
@@ -89,7 +89,7 @@
|
||||
[{:keys [db]} id]
|
||||
{:db (update-in db [:activity.center/notifications :notifications]
|
||||
(fn [items] (remove #(= id (:id %)) items)))
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "acceptActivityCenterNotifications")
|
||||
::json-rpc/call [{:method "wakuext_acceptActivityCenterNotifications"
|
||||
:params [[id]]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:ensure-and-open-chat %])
|
||||
@@ -105,7 +105,7 @@
|
||||
{:events [:dismiss-all-activity-center-notifications]}
|
||||
[{:keys [db]}]
|
||||
{:db (assoc-in db [:activity.center/notifications :notifications] [])
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "dismissAllActivityCenterNotifications")
|
||||
::json-rpc/call [{:method "wakuext_dismissAllActivityCenterNotifications"
|
||||
:params []
|
||||
:on-success #()
|
||||
:on-error #()}]})
|
||||
@@ -114,7 +114,7 @@
|
||||
{:events [:accept-all-activity-center-notifications]}
|
||||
[{:keys [db]}]
|
||||
{:db (assoc-in db [:activity.center/notifications :notifications] [])
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "acceptAllActivityCenterNotifications")
|
||||
::json-rpc/call [{:method "wakuext_acceptAllActivityCenterNotifications"
|
||||
:params []
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
|
||||
@@ -124,7 +124,7 @@
|
||||
{:events [:mark-all-activity-center-notifications-as-read]}
|
||||
[{:keys [db]}]
|
||||
{:db (assoc db :activity.center/notifications-count 0)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "markAllActivityCenterNotificationsRead")
|
||||
::json-rpc/call [{:method "wakuext_markAllActivityCenterNotificationsRead"
|
||||
:params []
|
||||
:on-success #()
|
||||
:on-error #()}]})
|
||||
@@ -132,7 +132,7 @@
|
||||
(fx/defn load-notifications [{:keys [db]} cursor]
|
||||
(when-not (:activity.center/loading? db)
|
||||
{:db (assoc db :activity.center/loading? true)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "activityCenterNotifications")
|
||||
::json-rpc/call [{:method "wakuext_activityCenterNotifications"
|
||||
:params [cursor 20]
|
||||
:on-success #(re-frame/dispatch [:activity-center-notifications-success %])
|
||||
:on-error #(re-frame/dispatch [:activity-center-notifications-error %])}]}))
|
||||
|
||||
@@ -10,25 +10,25 @@
|
||||
[status-im.multiaccounts.update.core :as multiaccounts.update]))
|
||||
|
||||
(defn enable-installation-rpc [installation-id on-success on-failure]
|
||||
(json-rpc/call {:method (json-rpc/call-ext-method "enableInstallation")
|
||||
(json-rpc/call {:method "wakuext_enableInstallation"
|
||||
:params [installation-id]
|
||||
:on-success on-success
|
||||
:on-failure on-failure}))
|
||||
|
||||
(defn disable-installation-rpc [installation-id on-success on-failure]
|
||||
(json-rpc/call {:method (json-rpc/call-ext-method "disableInstallation")
|
||||
(json-rpc/call {:method "wakuext_disableInstallation"
|
||||
:params [installation-id]
|
||||
:on-success on-success
|
||||
:on-failure on-failure}))
|
||||
|
||||
(defn set-installation-metadata-rpc [installation-id metadata on-success on-failure]
|
||||
(json-rpc/call {:method (json-rpc/call-ext-method "setInstallationMetadata")
|
||||
(json-rpc/call {:method "wakuext_setInstallationMetadata"
|
||||
:params [installation-id metadata]
|
||||
:on-success on-success
|
||||
:on-failure on-failure}))
|
||||
|
||||
(defn get-our-installations-rpc [on-success on-failure]
|
||||
(json-rpc/call {:method (json-rpc/call-ext-method "getOurInstallations")
|
||||
(json-rpc/call {:method "wakuext_getOurInstallations"
|
||||
:params []
|
||||
:on-success on-success
|
||||
:on-failure on-failure}))
|
||||
@@ -55,7 +55,7 @@
|
||||
(fx/defn send-pair-installation
|
||||
{:events [:pairing.ui/pair-devices-pressed]}
|
||||
[_]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendPairInstallation")
|
||||
{::json-rpc/call [{:method "wakuext_sendPairInstallation"
|
||||
:params []
|
||||
:on-success #(log/info "sent pair installation message")}]})
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
[{:keys [db]}]
|
||||
(let [multiaccount (:multiaccount db)
|
||||
{:keys [name preferred-name identicon]} multiaccount]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "syncDevices")
|
||||
{::json-rpc/call [{:method "wakuext_syncDevices"
|
||||
:params [(or preferred-name name) identicon]
|
||||
:on-success #(log/debug "successfully synced devices")}]}))
|
||||
|
||||
|
||||
@@ -71,8 +71,6 @@
|
||||
"mailserver.not.working" (mailserver/handle-mailserver-not-working cofx)
|
||||
"discovery.summary" (summary cofx (js->clj event-js :keywordize-keys true))
|
||||
"wakuv2.peerstats" (wakuv2-peer-stats cofx (js->clj event-js :keywordize-keys true))
|
||||
"subscriptions.data" (ethereum.subscriptions/handle-signal cofx (js->clj event-js :keywordize-keys true))
|
||||
"subscriptions.error" (ethereum.subscriptions/handle-error cofx (js->clj event-js :keywordize-keys true))
|
||||
"messages.new" (transport.message/sanitize-messages-and-process-response cofx event-js true)
|
||||
"wallet" (ethereum.subscriptions/new-wallet-event cofx (js->clj event-js :keywordize-keys true))
|
||||
"local-notifications" (local-notifications/process cofx (js->clj event-js :keywordize-keys true))
|
||||
|
||||
@@ -288,7 +288,7 @@
|
||||
(fx/defn send-transaction-message
|
||||
{:events [:sign/send-transaction-message]}
|
||||
[cofx chat-id value contract transaction-hash signature]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendTransaction")
|
||||
{::json-rpc/call [{:method "wakuext_sendTransaction"
|
||||
;; We make sure `value` is serialized as string, and not
|
||||
;; as an integer or big-int
|
||||
:params [chat-id (str value) contract transaction-hash
|
||||
@@ -301,7 +301,7 @@
|
||||
(fx/defn send-accept-request-transaction-message
|
||||
{:events [:sign/send-accept-transaction-message]}
|
||||
[cofx message-id transaction-hash signature]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "acceptRequestTransaction")
|
||||
{::json-rpc/call [{:method "wakuext_acceptRequestTransaction"
|
||||
:params [transaction-hash message-id
|
||||
(or (:result (types/json->clj signature))
|
||||
(ethereum/normalized-hex signature))]
|
||||
@@ -482,7 +482,7 @@
|
||||
[to-norm amount-hex])})}))
|
||||
{:db db
|
||||
::json-rpc/call
|
||||
[{:method (json-rpc/call-ext-method "requestAddressForTransaction")
|
||||
[{:method "wakuext_requestAddressForTransaction"
|
||||
:params [(:current-chat-id db)
|
||||
from-address
|
||||
amount
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
(fn []
|
||||
(json-rpc/call
|
||||
{:method "eth_gasPrice"
|
||||
:on-success success-callback
|
||||
:on-success #(success-callback (money/bignumber %))
|
||||
:on-error (or error-callback #(log/warn "eth_gasPrice error" %))})))))
|
||||
|
||||
(def london-block-gas-limit (money/bignumber 30000000))
|
||||
@@ -378,7 +378,7 @@
|
||||
:testnet? (ethereum/testnet?
|
||||
(get-in networks [current-network :config :NetworkId]))))]
|
||||
(merge {:max-priority-fee
|
||||
(max-priority-fee-hex % current-base-fee)}
|
||||
(max-priority-fee-hex (money/bignumber %) current-base-fee)}
|
||||
base-fees)))
|
||||
:on-error (if error-callback
|
||||
#(error-callback %)
|
||||
@@ -387,7 +387,8 @@
|
||||
(re-frame/reg-fx
|
||||
:signing/update-estimated-gas
|
||||
(fn [{:keys [obj success-event error-event]}]
|
||||
(json-rpc/call {:method "eth_estimateGas"
|
||||
:params [obj]
|
||||
:on-success #(re-frame/dispatch [success-event %])
|
||||
:on-error #(re-frame/dispatch [error-event %])})))
|
||||
(json-rpc/call
|
||||
{:method "eth_estimateGas"
|
||||
:params [obj]
|
||||
:on-success #(re-frame/dispatch [success-event (money/bignumber (if (= (int %) 21000) % (int (* % 1.2))))])
|
||||
:on-error #(re-frame/dispatch [error-event %])})))
|
||||
|
||||
@@ -2,10 +2,8 @@
|
||||
status-im.transport.core
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.ethereum.json-rpc :as json-rpc]
|
||||
[status-im.native-module.core :as status]
|
||||
[status-im.pairing.core :as pairing]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.utils.handlers :as handlers]
|
||||
status-im.transport.shh
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.utils.universal-links.core :as universal-links]
|
||||
@@ -16,22 +14,10 @@
|
||||
[{:keys [db]} node-info]
|
||||
{:db (assoc db :node-info node-info)})
|
||||
|
||||
(defn fetch-node-info []
|
||||
(let [args {:jsonrpc "2.0"
|
||||
:id 2
|
||||
:method "admin_nodeInfo"}
|
||||
payload (.stringify js/JSON (clj->js args))]
|
||||
(status/call-private-rpc payload
|
||||
(handlers/response-handler #(re-frame/dispatch [:transport.callback/node-info-fetched %])
|
||||
#(log/error "node-info: failed error" %)))))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::fetch-node-info
|
||||
(fn []
|
||||
(fetch-node-info)))
|
||||
|
||||
(fx/defn fetch-node-info-fx [cofx]
|
||||
{::fetch-node-info []})
|
||||
(fx/defn fetch-node-info-fx [_]
|
||||
{::json-rpc/call [{:method "admin_nodeInfo"
|
||||
:on-success #(re-frame/dispatch [:transport.callback/node-info-fetched %])
|
||||
:on-error #(log/error "node-info: failed error" %)}]})
|
||||
|
||||
(defn add-mailservers
|
||||
[db mailservers]
|
||||
@@ -52,7 +38,7 @@
|
||||
initializiation is completed, otherwise we might receive messages/topics
|
||||
when the state has not been properly initialized."
|
||||
[_]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "startMessenger")
|
||||
{::json-rpc/call [{:method "wakuext_startMessenger"
|
||||
:on-success #(re-frame/dispatch [::messenger-started %])
|
||||
:on-failure #(log/error "failed to start messenger")}]})
|
||||
|
||||
|
||||
@@ -27,23 +27,21 @@
|
||||
:contentType content-type})
|
||||
|
||||
(fx/defn send-chat-messages [_ messages]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method "sendChatMessages")
|
||||
{::json-rpc/call [{:method "wakuext_sendChatMessages"
|
||||
:params [(mapv build-message messages)]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:transport/message-sent %])
|
||||
:on-failure #(log/error "failed to send a message" %)}]})
|
||||
|
||||
(fx/defn send-reaction [_ {:keys [message-id chat-id emoji-id]}]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method
|
||||
"sendEmojiReaction")
|
||||
{::json-rpc/call [{:method "wakuext_sendEmojiReaction"
|
||||
:params [chat-id message-id emoji-id]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
|
||||
:on-failure #(log/error "failed to send a reaction" %)}]})
|
||||
|
||||
(fx/defn send-retract-reaction [_ {:keys [emoji-reaction-id] :as reaction}]
|
||||
{::json-rpc/call [{:method (json-rpc/call-ext-method
|
||||
"sendEmojiReactionRetraction")
|
||||
(fx/defn send-retract-reaction [_ {:keys [emoji-reaction-id]}]
|
||||
{::json-rpc/call [{:method "wakuext_sendEmojiReactionRetraction"
|
||||
:params [emoji-reaction-id]
|
||||
:js-response true
|
||||
:on-success #(re-frame/dispatch [:sanitize-messages-and-process-response %])
|
||||
|
||||
@@ -254,58 +254,59 @@
|
||||
:auto-correct false}])
|
||||
|
||||
(defn new-contact []
|
||||
(let [{:keys [state ens-name public-key error]} @(re-frame/subscribe [:contacts/new-identity])
|
||||
entered-nickname (reagent/atom "")
|
||||
blocked? (and
|
||||
(utils.db/valid-public-key? (or public-key ""))
|
||||
@(re-frame/subscribe [:contacts/contact-blocked? public-key]))]
|
||||
[react/view {:style {:flex 1}}
|
||||
[topbar/topbar
|
||||
{:title (i18n/label :t/new-contact)
|
||||
:modal? true
|
||||
:right-accessories
|
||||
[{:icon :qr
|
||||
:accessibility-label :scan-contact-code-button
|
||||
:on-press #(re-frame/dispatch [::qr-scanner/scan-code
|
||||
{:title (i18n/label :t/new-contact)
|
||||
:handler :contact/qr-code-scanned
|
||||
:new-contact? true}])}]}]
|
||||
[react/view {:flex-direction :row
|
||||
:padding 16}
|
||||
[react/view {:flex 1
|
||||
:padding-right 16}
|
||||
[quo/text-input
|
||||
{:on-change-text
|
||||
#(do
|
||||
(re-frame/dispatch [:set-in [:contacts/new-identity :state] :searching])
|
||||
(debounce/debounce-and-dispatch [:new-chat/set-new-identity %] 600))
|
||||
:on-submit-editing
|
||||
#(when (= state :valid)
|
||||
(debounce/dispatch-and-chill [:contact.ui/contact-code-submitted true @entered-nickname] 3000))
|
||||
:placeholder (i18n/label :t/enter-contact-code)
|
||||
:show-cancel false
|
||||
:accessibility-label :enter-contact-code-input
|
||||
:auto-capitalize :none
|
||||
:return-key-type :go}]]
|
||||
[react/view {:justify-content :center
|
||||
:align-items :center}
|
||||
[input-icon state true @entered-nickname blocked?]]]
|
||||
[react/view {:min-height 30 :justify-content :flex-end :margin-bottom 16}
|
||||
[quo/text {:style {:margin-horizontal 16}
|
||||
:size :small
|
||||
:align :center
|
||||
:color :secondary}
|
||||
(cond (= state :error)
|
||||
(get-validation-label error)
|
||||
(= state :valid)
|
||||
(str (when ens-name (str ens-name " • "))
|
||||
(utils/get-shortened-address public-key))
|
||||
:else "")]]
|
||||
[react/text {:style {:margin-horizontal 16 :color colors/gray}}
|
||||
(i18n/label :t/nickname-description)]
|
||||
[react/view {:padding 16}
|
||||
|
||||
[nickname-input entered-nickname]
|
||||
[react/text {:style {:align-self :flex-end :margin-top 16
|
||||
:color colors/gray}}
|
||||
(str (count @entered-nickname) " / 32")]]]))
|
||||
(let [entered-nickname (reagent/atom "")]
|
||||
(fn []
|
||||
(let [{:keys [state ens-name public-key error]} @(re-frame/subscribe [:contacts/new-identity])
|
||||
blocked? (and
|
||||
(utils.db/valid-public-key? (or public-key ""))
|
||||
@(re-frame/subscribe [:contacts/contact-blocked? public-key]))]
|
||||
[react/view {:style {:flex 1}}
|
||||
[topbar/topbar
|
||||
{:title (i18n/label :t/new-contact)
|
||||
:modal? true
|
||||
:right-accessories
|
||||
[{:icon :qr
|
||||
:accessibility-label :scan-contact-code-button
|
||||
:on-press #(re-frame/dispatch [::qr-scanner/scan-code
|
||||
{:title (i18n/label :t/new-contact)
|
||||
:handler :contact/qr-code-scanned
|
||||
:new-contact? true
|
||||
:nickname @entered-nickname}])}]}]
|
||||
[react/view {:flex-direction :row
|
||||
:padding 16}
|
||||
[react/view {:flex 1
|
||||
:padding-right 16}
|
||||
[quo/text-input
|
||||
{:on-change-text
|
||||
#(do
|
||||
(re-frame/dispatch [:set-in [:contacts/new-identity :state] :searching])
|
||||
(debounce/debounce-and-dispatch [:new-chat/set-new-identity %] 600))
|
||||
:on-submit-editing
|
||||
#(when (= state :valid)
|
||||
(debounce/dispatch-and-chill [:contact.ui/contact-code-submitted true @entered-nickname] 3000))
|
||||
:placeholder (i18n/label :t/enter-contact-code)
|
||||
:show-cancel false
|
||||
:accessibility-label :enter-contact-code-input
|
||||
:auto-capitalize :none
|
||||
:return-key-type :go}]]
|
||||
[react/view {:justify-content :center
|
||||
:align-items :center}
|
||||
[input-icon state true @entered-nickname blocked?]]]
|
||||
[react/view {:min-height 30 :justify-content :flex-end :margin-bottom 16}
|
||||
[quo/text {:style {:margin-horizontal 16}
|
||||
:size :small
|
||||
:align :center
|
||||
:color :secondary}
|
||||
(cond (= state :error)
|
||||
(get-validation-label error)
|
||||
(= state :valid)
|
||||
(str (when ens-name (str ens-name " • "))
|
||||
(utils/get-shortened-address public-key))
|
||||
:else "")]]
|
||||
[react/text {:style {:margin-horizontal 16 :color colors/gray}}
|
||||
(i18n/label :t/nickname-description)]
|
||||
[react/view {:padding 16}
|
||||
[nickname-input entered-nickname]
|
||||
[react/text {:style {:align-self :flex-end :margin-top 16
|
||||
:color colors/gray}}
|
||||
(str (count @entered-nickname) " / 32")]]]))))
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
(json-rpc/call
|
||||
{:method "eth_getBalance"
|
||||
:params [address "latest"]
|
||||
:on-success on-success
|
||||
:on-success #(on-success (money/bignumber %))
|
||||
:number-of-retries 50
|
||||
:on-error on-error}))
|
||||
|
||||
@@ -489,7 +489,7 @@
|
||||
identity (:current-chat-id db)]
|
||||
(fx/merge cofx
|
||||
{:db (dissoc db :wallet/prepare-transaction)
|
||||
::json-rpc/call [{:method (json-rpc/call-ext-method "requestTransaction")
|
||||
::json-rpc/call [{:method "wakuext_requestTransaction"
|
||||
:params [(:public-key to)
|
||||
amount
|
||||
(when-not (= symbol :ETH)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"_comment": "Instead use: scripts/update-status-go.sh <rev>",
|
||||
"owner": "status-im",
|
||||
"repo": "status-go",
|
||||
"version": "v0.98.6",
|
||||
"commit-sha1": "0048aaebcc7859a6f0dd7cdf0266fe029f3066fc",
|
||||
"src-sha256": "1px3ddfbpnlqyzkbp8v4bb8dh5f69cx4lwif8vspw60rr4gpppys"
|
||||
"version": "feat/mixedcase-address",
|
||||
"commit-sha1": "387a2ecde9dad94ef8fd863e65a425e134cd6b87",
|
||||
"src-sha256": "12y8hbp4ck4vz3whag203nafzjmzbml3l08zlxnpgbm2wv0hypqc"
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ from views.sign_in_view import SignInView
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="commands_2")
|
||||
@pytest.mark.xdist_group(name="four_2")
|
||||
@marks.critical
|
||||
class TestCommandsMultipleDevicesMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
@@ -208,7 +208,7 @@ class TestCommandsMultipleDevicesMerged(MultipleSharedDeviceTestCase):
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="1_1_chat_2")
|
||||
@pytest.mark.xdist_group(name="one_2")
|
||||
@marks.critical
|
||||
class TestOneToOneChatMultipleSharedDevices(MultipleSharedDeviceTestCase):
|
||||
|
||||
@@ -219,62 +219,14 @@ class TestOneToOneChatMultipleSharedDevices(MultipleSharedDeviceTestCase):
|
||||
cls.home_1 = cls.device_1.create_user(enable_notifications=True)
|
||||
cls.home_2 = cls.device_2.create_user(enable_notifications=True)
|
||||
cls.profile_1 = cls.home_1.profile_button.click()
|
||||
cls.public_key_1, cls.default_username_1 = cls.profile_1.get_public_key_and_username(return_username=True)
|
||||
cls.default_username_1 = cls.profile_1.default_username_text.text
|
||||
cls.profile_1.home_button.click()
|
||||
cls.profile_2 = cls.home_2.profile_button.click()
|
||||
cls.default_username_2 = cls.profile_2.default_username_text.text
|
||||
cls.profile_2.home_button.click()
|
||||
cls.public_key_2, cls.default_username_2 = cls.home_2.get_public_key_and_username(return_username=True)
|
||||
cls.chat_1 = cls.home_1.add_contact(cls.public_key_2)
|
||||
cls.chat_1.send_message('hey')
|
||||
cls.home_2.home_button.double_click()
|
||||
cls.chat_2 = cls.home_2.get_chat(cls.default_username_1).click()
|
||||
|
||||
@marks.testrail_id(702267)
|
||||
def test_1_1_chat_unread_counter_preview_highlited(self):
|
||||
self.chat_2.get_back_to_home_view()
|
||||
|
||||
message_1, message_2 = 'test message2', 'test'
|
||||
chat_element = self.home_2.get_chat(self.default_username_1)
|
||||
self.home_2.dapp_tab_button.click()
|
||||
self.chat_1.send_message(message_1)
|
||||
|
||||
if self.home_2.home_button.counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on Home button')
|
||||
self.device_2.home_button.click()
|
||||
if chat_element.new_messages_counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on chat element')
|
||||
chat_2 = chat_element.click()
|
||||
chat_2.add_to_contacts.click()
|
||||
|
||||
self.home_2.home_button.double_click()
|
||||
|
||||
if self.home_2.home_button.counter.is_element_displayed():
|
||||
self.errors.append('New messages counter is shown on Home button for already seen message')
|
||||
if chat_element.new_messages_counter.text == '1':
|
||||
self.errors.append('New messages counter is shown on chat element for already seen message')
|
||||
self.home_2.delete_chat_long_press(self.default_username_1)
|
||||
|
||||
self.home_2.just_fyi("Checking preview of message and chat highlighting")
|
||||
self.chat_1.send_message(message_2)
|
||||
chat_2_element = self.home_2.get_chat(self.default_username_1)
|
||||
if chat_2_element.chat_preview.is_element_differs_from_template('highligted_preview.png', 0):
|
||||
self.errors.append("Preview message is not hightligted or text is not shown! ")
|
||||
self.home_2.get_chat(self.default_username_1).click()
|
||||
self.home_2.home_button.double_click()
|
||||
if not self.home_2.get_chat(self.default_username_1).chat_preview.is_element_differs_from_template(
|
||||
'highligted_preview.png', 0):
|
||||
self.errors.append("Preview message is still highlighted after opening ")
|
||||
|
||||
self.home_2.just_fyi("Removing user from contacts for the case 5315")
|
||||
chat_element.click()
|
||||
chat_2.chat_options.click()
|
||||
chat_2.view_profile_button.click()
|
||||
chat_2.remove_from_contacts.click()
|
||||
chat_2.get_back_to_home_view()
|
||||
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(6315)
|
||||
def test_1_1_chat_message_reaction(self):
|
||||
message_from_sender = "Message sender"
|
||||
@@ -286,7 +238,6 @@ class TestOneToOneChatMultipleSharedDevices(MultipleSharedDeviceTestCase):
|
||||
self.errors.append("Counter of reaction is not updated on your own message!")
|
||||
|
||||
self.device_2.just_fyi("Receiver set own emoji and verifies counter on received message in 1-1 chat")
|
||||
self.home_2.get_chat(self.default_username_1).click()
|
||||
message_receiver = self.chat_2.chat_element_by_text(message_from_sender)
|
||||
if message_receiver.emojis_below_message(own=False) != 1:
|
||||
self.errors.append("Counter of reaction is not updated on received message!")
|
||||
@@ -649,7 +600,7 @@ class TestOneToOneChatMultipleSharedDevices(MultipleSharedDeviceTestCase):
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="chats_contacts_keycard_2")
|
||||
@pytest.mark.xdist_group(name="two_2")
|
||||
@marks.critical
|
||||
class TestContactBlockMigrateKeycardMultipleSharedDevices(MultipleSharedDeviceTestCase):
|
||||
|
||||
@@ -989,7 +940,7 @@ class TestContactBlockMigrateKeycardMultipleSharedDevices(MultipleSharedDeviceTe
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="ens_stickers_mention_2")
|
||||
@pytest.mark.xdist_group(name="three_2")
|
||||
@marks.critical
|
||||
class TestEnsStickersMultipleDevicesMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ from views.sign_in_view import SignInView
|
||||
from views.chat_view import ChatView
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="group_chat_3")
|
||||
@pytest.mark.xdist_group(name="one_3")
|
||||
@marks.critical
|
||||
class TestGroupChatMultipleDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ from views.sign_in_view import SignInView
|
||||
from tests.users import basic_user, transaction_senders
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="onboarding_1")
|
||||
@pytest.mark.xdist_group(name="one_1")
|
||||
@marks.critical
|
||||
class TestOnboardingOneDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
@@ -223,7 +223,7 @@ class TestOnboardingOneDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="restore_1")
|
||||
@pytest.mark.xdist_group(name="two_1")
|
||||
@marks.critical
|
||||
class TestRestoreOneDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
@classmethod
|
||||
|
||||
@@ -88,7 +88,7 @@ class TestPairingMultipleDevicesMerged(MultipleSharedDeviceTestCase):
|
||||
self.profile_2.get_back_to_home_view()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="sync_2")
|
||||
@pytest.mark.xdist_group(name="five_2")
|
||||
@marks.critical
|
||||
class TestPairingSyncMultipleDevicesMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ from views.sign_in_view import SignInView
|
||||
from selenium.common.exceptions import NoSuchElementException
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="public_chat_2")
|
||||
@pytest.mark.xdist_group(name="one_2")
|
||||
@marks.critical
|
||||
class TestPublicChatMultipleDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
@@ -225,7 +225,7 @@ class TestPublicChatMultipleDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="public_chat_browser_1")
|
||||
@pytest.mark.xdist_group(name="three_1")
|
||||
@marks.critical
|
||||
class TestPublicChatBrowserOneDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
|
||||
@@ -9,13 +9,13 @@ from tests.users import transaction_senders, basic_user, wallet_users, ens_user_
|
||||
from views.sign_in_view import SignInView
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="send_tx_1")
|
||||
@pytest.mark.xdist_group(name="one_1")
|
||||
@marks.critical
|
||||
class TestSendTxDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
@classmethod
|
||||
def setup_class(cls):
|
||||
cls.user = transaction_senders['ETH_ADI_STT_3']
|
||||
cls.recipient_address = '0x%s' % transaction_senders['ETH_7']['address']
|
||||
cls.user = transaction_senders['ETH_STT_4']
|
||||
cls.recipient_address = '0x%s' % transaction_senders['ETH_ADI_STT_3']['address']
|
||||
cls.drivers, cls.loop = create_shared_drivers(1)
|
||||
[cls.amount_adi, cls.amount_eth, cls.amount_stt] = ['0.000%s' % str(random.randint(100, 999)) + '1' for _ in range(3)]
|
||||
cls.sign_in = SignInView(cls.drivers[0])
|
||||
@@ -264,7 +264,7 @@ class TestSendTxDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="keycard_tx_1")
|
||||
@pytest.mark.xdist_group(name="two_1")
|
||||
@marks.critical
|
||||
class TestKeycardTxOneDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
@classmethod
|
||||
|
||||
@@ -9,7 +9,7 @@ from views.sign_in_view import SignInView
|
||||
from support.utilities import get_merged_txs_list
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="wallet_management_1")
|
||||
@pytest.mark.xdist_group(name="three_1")
|
||||
@marks.critical
|
||||
class TestWalletManagementDeviceMerged(MultipleSharedDeviceTestCase):
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import random
|
||||
import time
|
||||
from time import sleep
|
||||
import emoji
|
||||
import pytest
|
||||
@@ -10,7 +9,7 @@ from tests.base_test_case import create_shared_drivers, MultipleSharedDeviceTest
|
||||
from views.sign_in_view import SignInView
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="public_chat_medium_2")
|
||||
@pytest.mark.xdist_group(name="two_2")
|
||||
@marks.medium
|
||||
class TestPublicChatMultipleDeviceMergedMedium(MultipleSharedDeviceTestCase):
|
||||
@classmethod
|
||||
@@ -135,7 +134,7 @@ class TestPublicChatMultipleDeviceMergedMedium(MultipleSharedDeviceTestCase):
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="chat_medium_2")
|
||||
@pytest.mark.xdist_group(name="three_2")
|
||||
@marks.medium
|
||||
class TestChatMultipleDevice(MultipleSharedDeviceTestCase):
|
||||
|
||||
@@ -175,76 +174,9 @@ class TestChatMultipleDevice(MultipleSharedDeviceTestCase):
|
||||
|
||||
cls.message_1, cls.message_2, cls.message_3, cls.message_4 = "Message1", "Message2", "Message3", "Message4"
|
||||
|
||||
@marks.testrail_id(702268)
|
||||
def test_chat_gap_in_public_and_no_gap_in_1_1_and_group(self):
|
||||
self.home_2.get_back_to_home_view()
|
||||
message_1 = "testing gap"
|
||||
message_2 = "testing no gap"
|
||||
profile_1 = self.home_1.profile_button.click()
|
||||
profile_1.sync_settings_button.click()
|
||||
profile_1.sync_history_for_button.click()
|
||||
profile_1.element_by_translation_id("two-minutes").click()
|
||||
[home.home_button.click() for home in (self.home_1, self.home_2)]
|
||||
|
||||
self.home_1.just_fyi("Creating 1-1 chat and sending message from device 1")
|
||||
self.chat_1.send_message("HI")
|
||||
self.home_1.get_back_to_home_view()
|
||||
|
||||
self.home_1.just_fyi("Creating group chat and sending message from device 1")
|
||||
group_chat_1 = self.home_1.get_chat(self.initial_group_chat_name).click()
|
||||
group_chat_1.send_message("HI")
|
||||
self.home_1.get_back_to_home_view()
|
||||
|
||||
self.home_1.just_fyi("Creating public chat and sending message from device 1")
|
||||
pub_chat_1 = self.home_1.get_chat('#' + self.public_chat_name).click()
|
||||
pub_chat_1.send_message("HI")
|
||||
self.device_1.toggle_airplane_mode()
|
||||
|
||||
self.home_2.just_fyi("Joining public chat by device 2 and sending message")
|
||||
pub_chat_2 = self.home_2.get_chat('#' + self.public_chat_name).click()
|
||||
pub_chat_2.send_message(message_1)
|
||||
self.home_2.get_back_to_home_view()
|
||||
|
||||
self.home_2.just_fyi("Joining 1-1 chat by device 2 and sending message")
|
||||
one_to_one_chat_2 = self.home_2.get_chat(self.default_username_1).click()
|
||||
one_to_one_chat_2.send_message(message_2)
|
||||
self.home_2.get_back_to_home_view()
|
||||
|
||||
self.home_2.just_fyi("Joining Group chat by device 2 and sending message")
|
||||
group_chat_2 = self.home_2.get_chat(self.initial_group_chat_name).click()
|
||||
group_chat_2.send_message(message_2)
|
||||
group_chat_2.get_back_to_home_view()
|
||||
|
||||
# Waiting for 3 minutes and then going back online
|
||||
time.sleep(180)
|
||||
self.device_1.toggle_airplane_mode()
|
||||
|
||||
self.home_1.just_fyi("Checking gap in public chat and fetching messages")
|
||||
if pub_chat_1.chat_element_by_text(message_1).is_element_displayed(10):
|
||||
self.errors.append("Test message has been fetched automatically")
|
||||
pub_chat_1.element_by_translation_id("fetch-messages").wait_and_click(60)
|
||||
if not pub_chat_1.chat_element_by_text(message_1).is_element_displayed(10):
|
||||
self.errors.append("Test message has not been fetched")
|
||||
self.home_1.get_back_to_home_view()
|
||||
|
||||
self.home_1.just_fyi("Checking that there is no gap in 1-1/group chat and messages fetched automatically")
|
||||
for chat in [self.home_1.get_chat(self.default_username_2), self.home_1.get_chat(self.initial_group_chat_name)]:
|
||||
chat_view = chat.click()
|
||||
if chat_view.element_by_translation_id("fetch-messages").is_element_displayed(10):
|
||||
self.errors.append("Fetch messages button is displayed in {}} chat".format(chat.user_name_text.text))
|
||||
if not chat_view.chat_element_by_text(message_2).is_element_displayed(10):
|
||||
self.errors.append(
|
||||
"Message in {} chat has not been fetched automatically".format(chat.user_name_text.text))
|
||||
chat_view.back_button.click()
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(702066)
|
||||
def test_chat_1_1_push_and_reaction_for_messages_sticker_audio_image(self):
|
||||
|
||||
self.home_1.get_chat(self.default_username_2).click()
|
||||
self.home_2.get_chat(self.default_username_1).click()
|
||||
|
||||
|
||||
# methods with steps to use later in loop
|
||||
def navigate_to_start_state_of_both_devices():
|
||||
self.chat_1.put_app_to_background()
|
||||
@@ -608,7 +540,7 @@ class TestChatMultipleDevice(MultipleSharedDeviceTestCase):
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="group_chat_medium_3")
|
||||
@pytest.mark.xdist_group(name="one_3")
|
||||
@marks.medium
|
||||
class TestGroupChatMultipleDevice(MultipleSharedDeviceTestCase):
|
||||
@classmethod
|
||||
|
||||
@@ -6,7 +6,7 @@ from views.sign_in_view import SignInView
|
||||
from tests.users import basic_user, ens_user, ens_user_ropsten, transaction_senders, chat_users
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="browser_profile_medium_1")
|
||||
@pytest.mark.xdist_group(name="one_1")
|
||||
@marks.medium
|
||||
class TestBrowserProfileOneDevice(MultipleSharedDeviceTestCase):
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ from views.chat_view import ChatView
|
||||
from views.sign_in_view import SignInView
|
||||
|
||||
|
||||
@pytest.mark.xdist_group(name="deeplink_chat_profile_medium_1")
|
||||
@pytest.mark.xdist_group(name="two_1")
|
||||
@marks.medium
|
||||
class TestDeeplinkChatProfileOneDevice(MultipleSharedDeviceTestCase):
|
||||
|
||||
|
||||
@@ -292,6 +292,121 @@ class TestChatManagementMultipleDevice(MultipleDeviceTestCase):
|
||||
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(5362)
|
||||
# TODO: can be moved to TestOneToOneChatMultipleSharedDevices - should be quick e2e
|
||||
def test_1_1_chat_unread_counter_preview_highlited(self):
|
||||
self.create_drivers(2)
|
||||
device_1, device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||
home_1, home_2 = device_1.create_user(), device_2.create_user()
|
||||
profile_2 = home_2.profile_button.click()
|
||||
default_username_2 = profile_2.default_username_text.text
|
||||
home_2 = profile_2.home_button.click()
|
||||
public_key_1 = home_1.get_public_key_and_username()
|
||||
home_1.home_button.click()
|
||||
chat_2 = home_2.add_contact(public_key_1)
|
||||
|
||||
message, message_2, message_3 = 'test message', 'test message2', 'test'
|
||||
chat_2.send_message(message)
|
||||
chat_element = home_1.get_chat(default_username_2)
|
||||
home_1.dapp_tab_button.click()
|
||||
chat_2.send_message(message_2)
|
||||
|
||||
if home_1.home_button.counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on Home button')
|
||||
device_1.home_button.click()
|
||||
if chat_element.new_messages_counter.text != '1':
|
||||
self.errors.append('New messages counter is not shown on chat element')
|
||||
chat_1 = chat_element.click()
|
||||
chat_1.add_to_contacts.click()
|
||||
|
||||
home_1.home_button.double_click()
|
||||
|
||||
if home_1.home_button.counter.is_element_displayed():
|
||||
self.errors.append('New messages counter is shown on Home button for already seen message')
|
||||
if chat_element.new_messages_counter.text == '1':
|
||||
self.errors.append('New messages counter is shown on chat element for already seen message')
|
||||
home_1.delete_chat_long_press(default_username_2)
|
||||
|
||||
home_1.just_fyi("Checking preview of message and chat highlighting")
|
||||
chat_2.send_message(message_3)
|
||||
chat_1_element = home_1.get_chat(default_username_2)
|
||||
if chat_1_element.chat_preview.is_element_differs_from_template('highligted_preview.png', 0):
|
||||
self.errors.append("Preview message is not hightligted or text is not shown! ")
|
||||
home_1.get_chat(default_username_2).click()
|
||||
home_1.home_button.double_click()
|
||||
if not home_1.get_chat(default_username_2).chat_preview.is_element_differs_from_template('highligted_preview.png', 0):
|
||||
self.errors.append("Preview message is still highlighted after opening ")
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(700727)
|
||||
# TODO: merge with any medium group that contains 3 types of chats
|
||||
def test_chat_gap_in_public_and_no_gap_in_1_1_and_group(self):
|
||||
self.create_drivers(2)
|
||||
device_1, device_2 = SignInView(self.drivers[0]), SignInView(self.drivers[1])
|
||||
home_1, home_2 = device_1.create_user(), device_2.create_user()
|
||||
message_1 = "testing gap"
|
||||
message_2 = "testing no gap"
|
||||
pub_chat_name = home_1.get_random_chat_name()
|
||||
group_chat_name = home_1.get_random_chat_name()
|
||||
public_key_1, username_1 = home_1.get_public_key_and_username(True)
|
||||
public_key_2, username_2 = home_2.get_public_key_and_username(True)
|
||||
profile_1 = home_1.profile_button.click()
|
||||
profile_1.sync_settings_button.click()
|
||||
profile_1.sync_history_for_button.click()
|
||||
profile_1.element_by_translation_id("two-minutes").click()
|
||||
[home.home_button.click() for home in (home_1, home_2)]
|
||||
|
||||
home_1.just_fyi("Creating 1-1 chat and sending message from device 1")
|
||||
one_to_one_chat_1 = home_1.add_contact(public_key_2)
|
||||
one_to_one_chat_1.send_message("HI")
|
||||
home_1.get_back_to_home_view()
|
||||
|
||||
home_1.just_fyi("Creating group chat and sending message from device 1")
|
||||
group_chat_1 = home_1.create_group_chat([username_2], group_chat_name)
|
||||
group_chat_1.send_message("HI")
|
||||
home_1.get_back_to_home_view()
|
||||
|
||||
home_1.just_fyi("Creating public chat and sending message from device 1")
|
||||
pub_chat_1, pub_chat_2 = home_1.join_public_chat(pub_chat_name), home_2.join_public_chat(pub_chat_name)
|
||||
pub_chat_1.send_message("HI")
|
||||
device_1.toggle_airplane_mode()
|
||||
|
||||
home_2.just_fyi("Joining public chat by device 2 and sending message")
|
||||
pub_chat_2.send_message(message_1)
|
||||
home_2.get_back_to_home_view()
|
||||
|
||||
home_2.just_fyi("Joining 1-1 chat by device 2 and sending message")
|
||||
one_to_one_chat_2 = home_2.add_contact(public_key_1)
|
||||
one_to_one_chat_2.send_message(message_2)
|
||||
home_2.get_back_to_home_view()
|
||||
|
||||
home_2.just_fyi("Joining Group chat by device 2 and sending message")
|
||||
group_chat_2 = home_2.get_chat(group_chat_name).click()
|
||||
group_chat_2.join_chat_button.click()
|
||||
group_chat_2.send_message(message_2)
|
||||
|
||||
# Waiting for 3 minutes and then going back online
|
||||
time.sleep(180)
|
||||
device_1.toggle_airplane_mode()
|
||||
|
||||
home_1.just_fyi("Checking gap in public chat and fetching messages")
|
||||
if pub_chat_1.chat_element_by_text(message_1).is_element_displayed(10):
|
||||
self.errors.append("Test message has been fetched automatically")
|
||||
pub_chat_1.element_by_translation_id("fetch-messages").wait_and_click(60)
|
||||
if not pub_chat_1.chat_element_by_text(message_1).is_element_displayed(10):
|
||||
self.errors.append("Test message has not been fetched")
|
||||
home_1.get_back_to_home_view()
|
||||
|
||||
home_1.just_fyi("Checking that there is no gap in 1-1/group chat and messages fetched automatically")
|
||||
for chat in [home_1.get_chat(username_2), home_1.get_chat(group_chat_name)]:
|
||||
chat_view = chat.click()
|
||||
if chat_view.element_by_translation_id("fetch-messages").is_element_displayed(10):
|
||||
self.errors.append("Fetch messages button is displayed in {}} chat".format(chat.user_name_text.text))
|
||||
if not chat_view.chat_element_by_text(message_2).is_element_displayed(10):
|
||||
self.errors.append("Message in {} chat has not been fetched automatically".format(chat.user_name_text.text))
|
||||
chat_view.back_button.click()
|
||||
self.errors.verify_no_errors()
|
||||
|
||||
@marks.testrail_id(695842)
|
||||
@marks.flaky
|
||||
def test_community_creating_accept_membership(self):
|
||||
@@ -600,6 +715,7 @@ class TestChatManagementMultipleDevice(MultipleDeviceTestCase):
|
||||
|
||||
device_1.just_fyi('Grab user data for transactions and public chat, set up wallets')
|
||||
home_1 = device_1.create_user(keycard=True)
|
||||
device_2.put_app_to_background_and_back()
|
||||
recipient_public_key, recipient_username = home_1.get_public_key_and_username(return_username=True)
|
||||
amount = device_1.get_unique_amount()
|
||||
asset_name = 'STT'
|
||||
|
||||
@@ -517,8 +517,8 @@ class TestChatManagement(SingleDeviceTestCase):
|
||||
# TODO: can be added to any group where kk multiaccount with money is restored as additional check
|
||||
def test_keycard_same_seed_added_inside_multiaccount(self):
|
||||
sign_in = SignInView(self.driver)
|
||||
recipient = "0x" + transaction_senders['ETH_7']['address']
|
||||
user = transaction_senders['ETH_ADI_STT_3']
|
||||
recipient = "0x" + transaction_senders['ETH_1']['address']
|
||||
user = transaction_senders['ETH_STT_4']
|
||||
|
||||
sign_in.just_fyi('Restore keycard multiaccount and logout')
|
||||
sign_in.recover_access(passphrase=user['passphrase'], keycard=True)
|
||||
|
||||
@@ -7426,10 +7426,10 @@ react-native-mail@^6.1.1:
|
||||
resolved "https://registry.yarnpkg.com/react-native-mail/-/react-native-mail-6.1.1.tgz#f1b1f8034c84d2510a93e4a2a795f0db5a13595e"
|
||||
integrity sha512-pTs180wwyh7hN/iyTC9SfOX579U4YhDlHOLxi47IGvhPJENqO/QFdBq+wWKxyhNqdQuVSy+LoeIxLreWnIeYmg==
|
||||
|
||||
react-native-navigation@^7.13.0:
|
||||
version "7.13.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-navigation/-/react-native-navigation-7.13.0.tgz#3d3d97be1825034effab2a1deb5402a1fe1ba33e"
|
||||
integrity sha512-/mdNuTlz9YVplJRB7Rv3g5cDgHCtw4RyG6ATdvrIJvMJOCU57ivCHuZkZDI/YQv7Txm48XD/EUkNahFFUATFZg==
|
||||
react-native-navigation@^7.27.1:
|
||||
version "7.27.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-navigation/-/react-native-navigation-7.27.1.tgz#90bfac2a400109cc036394b4ee807a997da6a7b4"
|
||||
integrity sha512-rKgIiekZfAMZTF+OhLINJeB81tpqWH+wJDUbJmcF5A/aZj5cmetglWrDiYnX+2eUHOhGBpYk4elCX4zAC84drg==
|
||||
dependencies:
|
||||
hoist-non-react-statics "3.x.x"
|
||||
lodash "4.17.x"
|
||||
|
||||
Reference in New Issue
Block a user