[8069] feature - [Profile] My profile edit and share screens
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
This commit is contained in:
parent
11ed6f481f
commit
39e095e1ed
1
deps.edn
1
deps.edn
|
@ -11,6 +11,7 @@
|
|||
status-im/timbre {:mvn/version "4.10.0-2-status"}
|
||||
com.taoensso/encore {:mvn/version "2.94.0"}
|
||||
hickory {:mvn/version "0.7.1"}
|
||||
cljs-bean {:mvn/version "1.3.0"}
|
||||
com.cognitect/transit-cljs {:mvn/version "0.8.248"}
|
||||
status-im/pluto {:mvn/version "iteration-4-9"}
|
||||
mvxcvi/alphabase {:mvn/version "1.0.0"}
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
https://repo.clojars.org/binaryage/devtools/0.9.10/devtools-0.9.10
|
||||
https://repo.clojars.org/binaryage/env-config/0.2.2/env-config-0.2.2
|
||||
https://repo.clojars.org/cheshire/cheshire/5.4.0/cheshire-5.4.0
|
||||
https://repo.clojars.org/clj-http/clj-http/1.1.0/clj-http-1.1.0
|
||||
https://repo.clojars.org/clj-http/clj-http/3.7.0/clj-http-3.7.0
|
||||
https://repo.clojars.org/clj-stacktrace/clj-stacktrace/0.2.5/clj-stacktrace-0.2.5
|
||||
https://repo.clojars.org/clj-time/clj-time/0.11.0/clj-time-0.11.0
|
||||
https://repo.clojars.org/clj-time/clj-time/0.6.0/clj-time-0.6.0
|
||||
https://repo.clojars.org/clj-time/clj-time/0.9.0/clj-time-0.9.0
|
||||
https://repo.clojars.org/clj-tuple/clj-tuple/0.1.7/clj-tuple-0.1.7
|
||||
https://repo.clojars.org/clj-tuple/clj-tuple/0.2.2/clj-tuple-0.2.2
|
||||
https://repo.clojars.org/cljfmt/cljfmt/0.5.7/cljfmt-0.5.7
|
||||
https://repo.clojars.org/cljs-bean/cljs-bean/1.3.0/cljs-bean-1.3.0
|
||||
https://repo.clojars.org/cljsbuild/cljsbuild/1.1.7/cljsbuild-1.1.7
|
||||
https://repo.clojars.org/cljsjs/create-react-class/15.5.3-0/create-react-class-15.5.3-0
|
||||
https://repo.clojars.org/cljsjs/create-react-class/15.6.3-0/create-react-class-15.6.3-0
|
||||
|
@ -25,6 +31,7 @@ https://repo.clojars.org/cljsjs/react/16.3.2-0/react-16.3.2-0
|
|||
https://repo.clojars.org/clout/clout/2.1.2/clout-2.1.2
|
||||
https://repo.clojars.org/com/andrewmcveigh/cljs-time/0.4.0/cljs-time-0.4.0
|
||||
https://repo.clojars.org/com/andrewmcveigh/cljs-time/0.5.2/cljs-time-0.5.2
|
||||
https://repo.clojars.org/com/jakemccrary/lein-test-refresh/0.21.1/lein-test-refresh-0.21.1
|
||||
https://repo.clojars.org/com/taoensso/encore/2.79.1/encore-2.79.1
|
||||
https://repo.clojars.org/com/taoensso/encore/2.84.2/encore-2.84.2
|
||||
https://repo.clojars.org/com/taoensso/encore/2.91.0/encore-2.91.0
|
||||
|
@ -35,23 +42,36 @@ https://repo.clojars.org/com/taoensso/truss/1.3.5/truss-1.3.5
|
|||
https://repo.clojars.org/com/taoensso/truss/1.3.6/truss-1.3.6
|
||||
https://repo.clojars.org/com/taoensso/truss/1.5.0/truss-1.5.0
|
||||
https://repo.clojars.org/compojure/compojure/1.5.2/compojure-1.5.2
|
||||
https://repo.clojars.org/crouton/crouton/0.1.2/crouton-0.1.2
|
||||
https://repo.clojars.org/crypto-equality/crypto-equality/1.0.0/crypto-equality-1.0.0
|
||||
https://repo.clojars.org/crypto-random/crypto-random/1.2.0/crypto-random-1.2.0
|
||||
https://repo.clojars.org/day8/re-frame/re-frame-10x/0.3.2/re-frame-10x-0.3.2
|
||||
https://repo.clojars.org/doric/doric/0.9.0/doric-0.9.0
|
||||
https://repo.clojars.org/fs/fs/1.1.2/fs-1.1.2
|
||||
https://repo.clojars.org/gntp/gntp/0.6.0/gntp-0.6.0
|
||||
https://repo.clojars.org/hiccup/hiccup/1.0.5/hiccup-1.0.5
|
||||
https://repo.clojars.org/hickory/hickory/0.7.1/hickory-0.7.1
|
||||
https://repo.clojars.org/http-kit/http-kit/2.2.0/http-kit-2.2.0
|
||||
https://repo.clojars.org/instaparse/instaparse/1.4.0/instaparse-1.4.0
|
||||
https://repo.clojars.org/io/aviso/pretty/0.1.30/pretty-0.1.30
|
||||
https://repo.clojars.org/io/aviso/pretty/0.1.33/pretty-0.1.33
|
||||
https://repo.clojars.org/jakemcc/clojure-gntp/0.1.1/clojure-gntp-0.1.1
|
||||
https://repo.clojars.org/lein-ancient/lein-ancient/0.6.14/lein-ancient-0.6.14
|
||||
https://repo.clojars.org/lein-autoexpect/lein-autoexpect/1.9.0/lein-autoexpect-1.9.0
|
||||
https://repo.clojars.org/lein-cljfmt/lein-cljfmt/0.5.7/lein-cljfmt-0.5.7
|
||||
https://repo.clojars.org/lein-cljsbuild/lein-cljsbuild/1.1.7/lein-cljsbuild-1.1.7
|
||||
https://repo.clojars.org/lein-count/lein-count/1.0.3/lein-count-1.0.3
|
||||
https://repo.clojars.org/lein-plz/lein-plz/0.4.0-SNAPSHOT/lein-plz-0.4.0-20150409.161059-1
|
||||
https://repo.clojars.org/lein-pprint/lein-pprint/1.1.2/lein-pprint-1.1.2
|
||||
https://repo.clojars.org/lein-re-frisk/lein-re-frisk/0.5.8/lein-re-frisk-0.5.8
|
||||
https://repo.clojars.org/leinjacker/leinjacker/0.4.2/leinjacker-0.4.2
|
||||
https://repo.clojars.org/medley/medley/0.8.2/medley-0.8.2
|
||||
https://repo.clojars.org/meta-merge/meta-merge/1.0.0/meta-merge-1.0.0
|
||||
https://repo.clojars.org/mvxcvi/alphabase/1.0.0/alphabase-1.0.0
|
||||
https://repo.clojars.org/net/cgrand/macrovich/0.2.0/macrovich-0.2.0
|
||||
https://repo.clojars.org/org/clojars/jgrocho/digest/1.5.0/digest-1.5.0
|
||||
https://repo.clojars.org/potemkin/potemkin/0.3.12/potemkin-0.3.12
|
||||
https://repo.clojars.org/potemkin/potemkin/0.4.3/potemkin-0.4.3
|
||||
https://repo.clojars.org/quoin/quoin/0.1.2/quoin-0.1.2
|
||||
https://repo.clojars.org/rasom/cljs-react-navigation/0.1.4/cljs-react-navigation-0.1.4
|
||||
https://repo.clojars.org/rasom/lein-githooks/0.1.5/lein-githooks-0.1.5
|
||||
|
@ -69,6 +89,8 @@ https://repo.clojars.org/rewrite-clj/rewrite-clj/0.5.2/rewrite-clj-0.5.2
|
|||
https://repo.clojars.org/rewrite-clj/rewrite-clj/0.6.0/rewrite-clj-0.6.0
|
||||
https://repo.clojars.org/rewrite-cljs/rewrite-cljs/0.4.3/rewrite-cljs-0.4.3
|
||||
https://repo.clojars.org/rewrite-cljs/rewrite-cljs/0.4.4/rewrite-cljs-0.4.4
|
||||
https://repo.clojars.org/riddley/riddley/0.1.12/riddley-0.1.12
|
||||
https://repo.clojars.org/riddley/riddley/0.1.7/riddley-0.1.7
|
||||
https://repo.clojars.org/ring-cors/ring-cors/0.1.8/ring-cors-0.1.8
|
||||
https://repo.clojars.org/ring/ring-anti-forgery/1.0.0/ring-anti-forgery-1.0.0
|
||||
https://repo.clojars.org/ring/ring-codec/1.0.0/ring-codec-1.0.0
|
||||
|
@ -80,28 +102,62 @@ https://repo.clojars.org/ring/ring-core/1.5.1/ring-core-1.5.1
|
|||
https://repo.clojars.org/ring/ring-defaults/0.1.5/ring-defaults-0.1.5
|
||||
https://repo.clojars.org/ring/ring-headers/0.1.3/ring-headers-0.1.3
|
||||
https://repo.clojars.org/ring/ring-ssl/0.2.1/ring-ssl-0.2.1
|
||||
https://repo.clojars.org/slingshot/slingshot/0.12.2/slingshot-0.12.2
|
||||
https://repo.clojars.org/status-im/pluto/iteration-4-9/pluto-iteration-4-9
|
||||
https://repo.clojars.org/status-im/re-frame/0.10.5/re-frame-0.10.5
|
||||
https://repo.clojars.org/status-im/timbre/4.10.0-2-status/timbre-4.10.0-2-status
|
||||
https://repo.clojars.org/table/table/0.4.0/table-0.4.0
|
||||
https://repo.clojars.org/tigris/tigris/0.1.1/tigris-0.1.1
|
||||
https://repo.clojars.org/viebel/codox-klipse-theme/0.0.1/codox-klipse-theme-0.0.1
|
||||
https://repo.clojars.org/zprint/zprint/0.4.7/zprint-0.4.7
|
||||
https://repo1.maven.org/maven2/args4j/args4j-site/2.0.26/args4j-site-2.0.26
|
||||
https://repo1.maven.org/maven2/args4j/args4j-site/2.33/args4j-site-2.33
|
||||
https://repo1.maven.org/maven2/args4j/args4j/2.0.26/args4j-2.0.26
|
||||
https://repo1.maven.org/maven2/args4j/args4j/2.33/args4j-2.33
|
||||
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-core/1.11.28/aws-java-sdk-core-1.11.28
|
||||
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-core/1.9.0/aws-java-sdk-core-1.9.0
|
||||
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-kms/1.11.28/aws-java-sdk-kms-1.11.28
|
||||
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-pom/1.11.28/aws-java-sdk-pom-1.11.28
|
||||
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-pom/1.9.0/aws-java-sdk-pom-1.9.0
|
||||
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-s3/1.11.28/aws-java-sdk-s3-1.11.28
|
||||
https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-s3/1.9.0/aws-java-sdk-s3-1.9.0
|
||||
https://repo1.maven.org/maven2/com/amazonaws/jmespath-java/1.0/jmespath-java-1.0
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-clj/0.8.269/transit-clj-0.8.269
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-clj/0.8.290/transit-clj-0.8.290
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-clj/0.8.309/transit-clj-0.8.309
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-cljs/0.8.239/transit-cljs-0.8.239
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-cljs/0.8.243/transit-cljs-0.8.243
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-cljs/0.8.248/transit-cljs-0.8.248
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-java/0.8.276/transit-java-0.8.276
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-java/0.8.316/transit-java-0.8.316
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-java/0.8.332/transit-java-0.8.332
|
||||
https://repo1.maven.org/maven2/com/cognitect/transit-js/0.8.846/transit-js-0.8.846
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.1.1/jackson-annotations-2.1.1
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.6.0/jackson-annotations-2.6.0
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.1.1/jackson-core-2.1.1
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.3.2/jackson-core-2.3.2
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.4.4/jackson-core-2.4.4
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.6.6/jackson-core-2.6.6
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-core/2.8.7/jackson-core-2.8.7
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.1.1/jackson-databind-2.1.1
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.3.2/jackson-databind-2.3.2
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.6.6/jackson-databind-2.6.6
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.4.4/jackson-dataformat-cbor-2.4.4
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.6.6/jackson-dataformat-cbor-2.6.6
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.4.4/jackson-dataformat-smile-2.4.4
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-json-org/2.3.2/jackson-datatype-json-org-2.3.2
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-parent/2.4/jackson-parent-2.4
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-parent/2.6.1/jackson-parent-2.6.1
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-parent/2.6.2/jackson-parent-2.6.2
|
||||
https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-parent/2.8/jackson-parent-2.8
|
||||
https://repo1.maven.org/maven2/com/fasterxml/oss-parent/11/oss-parent-11
|
||||
https://repo1.maven.org/maven2/com/fasterxml/oss-parent/12/oss-parent-12
|
||||
https://repo1.maven.org/maven2/com/fasterxml/oss-parent/16/oss-parent-16
|
||||
https://repo1.maven.org/maven2/com/fasterxml/oss-parent/23/oss-parent-23
|
||||
https://repo1.maven.org/maven2/com/fasterxml/oss-parent/24/oss-parent-24
|
||||
https://repo1.maven.org/maven2/com/fasterxml/oss-parent/27/oss-parent-27
|
||||
https://repo1.maven.org/maven2/com/fasterxml/oss-parent/4/oss-parent-4
|
||||
https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9
|
||||
https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.1/jsr305-3.0.1
|
||||
https://repo1.maven.org/maven2/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2
|
||||
|
@ -176,19 +232,25 @@ https://repo1.maven.org/maven2/com/googlecode/json-simple/json-simple/1.1.1/json
|
|||
https://repo1.maven.org/maven2/com/yahoo/platform/yui/yuicompressor/2.4.8/yuicompressor-2.4.8
|
||||
https://repo1.maven.org/maven2/commons-codec/commons-codec/1.10/commons-codec-1.10
|
||||
https://repo1.maven.org/maven2/commons-codec/commons-codec/1.6/commons-codec-1.6
|
||||
https://repo1.maven.org/maven2/commons-codec/commons-codec/1.8/commons-codec-1.8
|
||||
https://repo1.maven.org/maven2/commons-codec/commons-codec/1.9/commons-codec-1.9
|
||||
https://repo1.maven.org/maven2/commons-fileupload/commons-fileupload/1.3.1/commons-fileupload-1.3.1
|
||||
https://repo1.maven.org/maven2/commons-fileupload/commons-fileupload/1.3/commons-fileupload-1.3
|
||||
https://repo1.maven.org/maven2/commons-io/commons-io/2.2/commons-io-2.2
|
||||
https://repo1.maven.org/maven2/commons-io/commons-io/2.4/commons-io-2.4
|
||||
https://repo1.maven.org/maven2/commons-io/commons-io/2.5/commons-io-2.5
|
||||
https://repo1.maven.org/maven2/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1
|
||||
https://repo1.maven.org/maven2/commons-logging/commons-logging/1.2/commons-logging-1.2
|
||||
https://repo1.maven.org/maven2/javax/servlet/servlet-api/2.5/servlet-api-2.5
|
||||
https://repo1.maven.org/maven2/joda-time/joda-time/2.2/joda-time-2.2
|
||||
https://repo1.maven.org/maven2/joda-time/joda-time/2.6/joda-time-2.6
|
||||
https://repo1.maven.org/maven2/joda-time/joda-time/2.8.2/joda-time-2.8.2
|
||||
https://repo1.maven.org/maven2/junit/junit/4.10/junit-4.10
|
||||
https://repo1.maven.org/maven2/org/apache/apache/11/apache-11
|
||||
https://repo1.maven.org/maven2/org/apache/apache/13/apache-13
|
||||
https://repo1.maven.org/maven2/org/apache/apache/15/apache-15
|
||||
https://repo1.maven.org/maven2/org/apache/apache/16/apache-16
|
||||
https://repo1.maven.org/maven2/org/apache/apache/4/apache-4
|
||||
https://repo1.maven.org/maven2/org/apache/apache/9/apache-9
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.3/commons-compress-1.3
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/22/commons-parent-22
|
||||
|
@ -196,8 +258,39 @@ https://repo1.maven.org/maven2/org/apache/commons/commons-parent/24/commons-pare
|
|||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/25/commons-parent-25
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/28/commons-parent-28
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/32/commons-parent-32
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/34/commons-parent-34
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/35/commons-parent-35
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/39/commons-parent-39
|
||||
https://repo1.maven.org/maven2/org/apache/commons/commons-parent/5/commons-parent-5
|
||||
https://repo1.maven.org/maven2/org/apache/directory/project/project/31/project-31
|
||||
https://repo1.maven.org/maven2/org/apache/directory/studio/org.apache.commons.codec/1.8/org.apache.commons.codec-1.8
|
||||
https://repo1.maven.org/maven2/org/apache/directory/studio/parent-libraries/2.0.0.v20130628/parent-libraries-2.0.0.v20130628
|
||||
https://repo1.maven.org/maven2/org/apache/directory/studio/parent/2.0.0.v20130628/parent-2.0.0.v20130628
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpasyncclient/4.1.3/httpasyncclient-4.1.3
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.2/httpclient-4.2
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.4/httpclient-4.4
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.5.2/httpclient-4.5.2
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.5.3/httpclient-4.5.3
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-asyncclient/4.1.3/httpcomponents-asyncclient-4.1.3
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-client/4.2/httpcomponents-client-4.2
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-client/4.4/httpcomponents-client-4.4
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-client/4.5.2/httpcomponents-client-4.5.2
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-client/4.5.3/httpcomponents-client-4.5.3
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.2/httpcomponents-core-4.2
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.1/httpcomponents-core-4.4.1
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.4/httpcomponents-core-4.4.4
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4.6/httpcomponents-core-4.4.6
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcomponents-core/4.4/httpcomponents-core-4.4
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore-nio/4.4.6/httpcore-nio-4.4.6
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.2/httpcore-4.2
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.1/httpcore-4.4.1
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4.4/httpcore-4.4.4
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpcore/4.4/httpcore-4.4
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpmime/4.4/httpmime-4.4
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/httpmime/4.5.3/httpmime-4.5.3
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/project/5/project-5
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/project/6/project-6
|
||||
https://repo1.maven.org/maven2/org/apache/httpcomponents/project/7/project-7
|
||||
https://repo1.maven.org/maven2/org/checkerframework/checker-qual/2.0.0/checker-qual-2.0.0
|
||||
https://repo1.maven.org/maven2/org/clojure/clojure/1.10.0/clojure-1.10.0
|
||||
https://repo1.maven.org/maven2/org/clojure/clojure/1.2.1/clojure-1.2.1
|
||||
|
@ -226,9 +319,11 @@ https://repo1.maven.org/maven2/org/clojure/clojurescript/1.9.946/clojurescript-1
|
|||
https://repo1.maven.org/maven2/org/clojure/core.async/0.2.395/core.async-0.2.395
|
||||
https://repo1.maven.org/maven2/org/clojure/core.async/0.4.474/core.async-0.4.474
|
||||
https://repo1.maven.org/maven2/org/clojure/core.cache/0.6.5/core.cache-0.6.5
|
||||
https://repo1.maven.org/maven2/org/clojure/core.contracts/0.0.1/core.contracts-0.0.1
|
||||
https://repo1.maven.org/maven2/org/clojure/core.memoize/0.5.9/core.memoize-0.5.9
|
||||
https://repo1.maven.org/maven2/org/clojure/core.specs.alpha/0.1.24/core.specs.alpha-0.1.24
|
||||
https://repo1.maven.org/maven2/org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44
|
||||
https://repo1.maven.org/maven2/org/clojure/core.unify/0.5.3/core.unify-0.5.3
|
||||
https://repo1.maven.org/maven2/org/clojure/data.json/0.2.6/data.json-0.2.6
|
||||
https://repo1.maven.org/maven2/org/clojure/data.priority-map/0.0.7/data.priority-map-0.0.7
|
||||
https://repo1.maven.org/maven2/org/clojure/google-closure-library-third-party/0.0-20140718-946a7d39/google-closure-library-third-party-0.0-20140718-946a7d39
|
||||
|
@ -243,6 +338,7 @@ https://repo1.maven.org/maven2/org/clojure/google-closure-library/0.0-20160609-f
|
|||
https://repo1.maven.org/maven2/org/clojure/google-closure-library/0.0-20170519-fa0499ef/google-closure-library-0.0-20170519-fa0499ef
|
||||
https://repo1.maven.org/maven2/org/clojure/google-closure-library/0.0-20170809-b9c14c6b/google-closure-library-0.0-20170809-b9c14c6b
|
||||
https://repo1.maven.org/maven2/org/clojure/google-closure-library/0.0-20190213-2033d5d9/google-closure-library-0.0-20190213-2033d5d9
|
||||
https://repo1.maven.org/maven2/org/clojure/pom.contrib/0.0.26/pom.contrib-0.0.26
|
||||
https://repo1.maven.org/maven2/org/clojure/pom.contrib/0.1.2/pom.contrib-0.1.2
|
||||
https://repo1.maven.org/maven2/org/clojure/pom.contrib/0.2.0/pom.contrib-0.2.0
|
||||
https://repo1.maven.org/maven2/org/clojure/pom.contrib/0.2.2/pom.contrib-0.2.2
|
||||
|
@ -256,6 +352,7 @@ https://repo1.maven.org/maven2/org/clojure/tools.macro/0.1.5/tools.macro-0.1.5
|
|||
https://repo1.maven.org/maven2/org/clojure/tools.namespace/0.2.11/tools.namespace-0.2.11
|
||||
https://repo1.maven.org/maven2/org/clojure/tools.reader/0.10.0/tools.reader-0.10.0
|
||||
https://repo1.maven.org/maven2/org/clojure/tools.reader/0.8.1/tools.reader-0.8.1
|
||||
https://repo1.maven.org/maven2/org/clojure/tools.reader/0.8.16/tools.reader-0.8.16
|
||||
https://repo1.maven.org/maven2/org/clojure/tools.reader/0.9.1/tools.reader-0.9.1
|
||||
https://repo1.maven.org/maven2/org/clojure/tools.reader/1.0.0-alpha1/tools.reader-1.0.0-alpha1
|
||||
https://repo1.maven.org/maven2/org/clojure/tools.reader/1.0.0-alpha3/tools.reader-1.0.0-alpha3
|
||||
|
@ -277,10 +374,13 @@ https://repo1.maven.org/maven2/org/codehaus/mojo/mojo-parent/34/mojo-parent-34
|
|||
https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1
|
||||
https://repo1.maven.org/maven2/org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1
|
||||
https://repo1.maven.org/maven2/org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA
|
||||
https://repo1.maven.org/maven2/org/json/json/20090211/json-20090211
|
||||
https://repo1.maven.org/maven2/org/jsoup/jsoup/1.7.1/jsoup-1.7.1
|
||||
https://repo1.maven.org/maven2/org/jsoup/jsoup/1.9.2/jsoup-1.9.2
|
||||
https://repo1.maven.org/maven2/org/kohsuke/pom/14/pom-14
|
||||
https://repo1.maven.org/maven2/org/kohsuke/pom/6/pom-6
|
||||
https://repo1.maven.org/maven2/org/mozilla/rhino/1.7R5/rhino-1.7R5
|
||||
https://repo1.maven.org/maven2/org/msgpack/msgpack/0.6.10/msgpack-0.6.10
|
||||
https://repo1.maven.org/maven2/org/msgpack/msgpack/0.6.12/msgpack-0.6.12
|
||||
https://repo1.maven.org/maven2/org/ow2/asm/asm-all/4.2/asm-all-4.2
|
||||
https://repo1.maven.org/maven2/org/ow2/asm/asm-parent/4.2/asm-parent-4.2
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,6 +18,7 @@
|
|||
[status-im/timbre "4.10.0-2-status"]
|
||||
[com.taoensso/encore "2.94.0"]
|
||||
[hickory "0.7.1"]
|
||||
[cljs-bean "1.3.0"]
|
||||
[com.cognitect/transit-cljs "0.8.248"]
|
||||
[status-im/pluto "iteration-4-9"]
|
||||
[mvxcvi/alphabase "1.0.0"]
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
[status-im.ui.screens.navigation :as navigation]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.utils.money :as money]
|
||||
[status-im.signing.core :as signing])
|
||||
[status-im.signing.core :as signing]
|
||||
[status-im.ethereum.eip55 :as eip55])
|
||||
(:refer-clojure :exclude [name]))
|
||||
|
||||
(defn fullname [custom-domain? username]
|
||||
|
@ -47,7 +48,7 @@
|
|||
|
||||
(defn- on-resolve [registry custom-domain? username address public-key s]
|
||||
(cond
|
||||
(= (ethereum/normalized-address address) (ethereum/normalized-address s))
|
||||
(= (eip55/address->checksum address) (eip55/address->checksum s))
|
||||
(resolver/pubkey registry (fullname custom-domain? username)
|
||||
#(re-frame/dispatch [:ens/set-state username (if (= % public-key) :connected :owned)]))
|
||||
|
||||
|
|
|
@ -9,11 +9,17 @@
|
|||
|
||||
(defn utils [] (dependencies/web3-utils))
|
||||
|
||||
(def hex-prefix "0x")
|
||||
|
||||
(defn address->checksum
|
||||
"Converts an arbitrary case address to one with correct checksum case."
|
||||
[address]
|
||||
(when address
|
||||
(.toChecksumAddress (utils) address)))
|
||||
(.toChecksumAddress
|
||||
(utils)
|
||||
(if (string/starts-with? address hex-prefix)
|
||||
address
|
||||
(str hex-prefix address)))))
|
||||
|
||||
(defn valid-address-checksum?
|
||||
"Checks address checksum validity."
|
||||
|
|
|
@ -11,4 +11,4 @@
|
|||
(fx/defn hide-popover
|
||||
{:events [:hide-popover]}
|
||||
[{:keys [db]}]
|
||||
{:db (dissoc db :popover/popover)})
|
||||
{:db (dissoc db :popover/popover)})
|
||||
|
|
|
@ -169,5 +169,11 @@
|
|||
(defn my-profile-icon [{{:keys [photo-path name]} :multiaccount
|
||||
edit? :edit?}]
|
||||
(let [color colors/default-chat-color
|
||||
size 56]
|
||||
size 64]
|
||||
[profile-icon-view photo-path name color edit? size {}]))
|
||||
|
||||
(defn my-profile-header-icon [{{:keys [photo-path name]} :multiaccount
|
||||
edit? :edit?}]
|
||||
(let [color colors/default-chat-color
|
||||
size 40]
|
||||
[profile-icon-view photo-path name color edit? size {}]))
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
(ns status-im.ui.components.copyable-text
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs]])
|
||||
(:require [reagent.core :as reagent]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.animation :as animation]
|
||||
[status-im.ui.components.typography :as typography]))
|
||||
|
||||
(defn hide-cue-atom [anim-opacity anim-y cue-atom]
|
||||
(animation/start
|
||||
(animation/parallel
|
||||
[(animation/timing anim-opacity
|
||||
{:toValue 0
|
||||
:duration 140
|
||||
:delay 1000
|
||||
:easing (.-ease (animation/easing))
|
||||
:useNativeDriver true})
|
||||
(animation/timing anim-y
|
||||
{:toValue 0
|
||||
:duration 140
|
||||
:delay 1000
|
||||
:easing (.-ease (animation/easing))
|
||||
:useNativeDriver true})])
|
||||
#(reset! cue-atom false)))
|
||||
|
||||
(defn show-cue-atom [anim-opacity anim-y cue-atom y]
|
||||
(when @cue-atom
|
||||
(animation/start
|
||||
(animation/parallel
|
||||
[(animation/timing anim-opacity
|
||||
{:toValue 1
|
||||
:duration 140
|
||||
:easing (.-ease (animation/easing))
|
||||
:useNativeDriver true})
|
||||
(animation/timing anim-y
|
||||
{:toValue y
|
||||
:duration 140
|
||||
:easing (.-ease (animation/easing))
|
||||
:useNativeDriver true})])
|
||||
#(hide-cue-atom anim-opacity anim-y cue-atom))))
|
||||
|
||||
(defn copy-action-visual-cue [anim-opacity anim-y width cue-atom]
|
||||
[react/animated-view {:style {:opacity anim-opacity
|
||||
:transform [{:translateY anim-y}]
|
||||
:height 34
|
||||
:max-width @width
|
||||
:position :absolute
|
||||
:border-radius 8
|
||||
:align-self :center
|
||||
:z-index (if @cue-atom 1 -1)
|
||||
:align-items :center
|
||||
:justify-content :center
|
||||
:shadow-offset {:width 0 :height 4}
|
||||
:shadow-radius 12
|
||||
:shadow-opacity 1
|
||||
:shadow-color "rgba(0, 34, 51, 0.08)"
|
||||
:background-color colors/white}}
|
||||
[react/view {:padding-horizontal 16
|
||||
:padding-vertical 7
|
||||
:border-radius 8
|
||||
:background-color colors/white
|
||||
:shadow-offset {:width 0 :height 2}
|
||||
:shadow-radius 4
|
||||
:shadow-opacity 1
|
||||
:shadow-color "rgba(0, 34, 51, 0.16)"}
|
||||
[react/text {:style {:typography :main-medium :line-height 20 :font-size 14}}
|
||||
(i18n/label :sharing-copied-to-clipboard)]]])
|
||||
|
||||
(defview copyable-text-view [{:keys [label copied-text]} content]
|
||||
(letsubs [cue-atom (reagent/atom false)
|
||||
width (reagent/atom nil)
|
||||
anim-y (animation/create-value 0)
|
||||
anim-opacity (animation/create-value 0)]
|
||||
[react/view
|
||||
[copy-action-visual-cue anim-opacity anim-y width cue-atom]
|
||||
[react/touchable-opacity
|
||||
{:active-opacity (if @cue-atom 1 0.7)
|
||||
:style {:margin-top 12 :margin-bottom 4}
|
||||
:on-press #(when (not @cue-atom)
|
||||
(reset! cue-atom true)
|
||||
(show-cue-atom anim-opacity anim-y cue-atom -22)
|
||||
(react/copy-to-clipboard copied-text))}
|
||||
[react/view
|
||||
[react/text {:style {:font-size 13 :line-height 18 :font-weight "500"
|
||||
:color colors/gray :margin-bottom 4}}
|
||||
(i18n/label label)]
|
||||
[react/view
|
||||
{:on-layout #(reset! width (-> % .-nativeEvent .-layout .-width))}
|
||||
content]]]]))
|
|
@ -0,0 +1,144 @@
|
|||
(ns status-im.ui.components.large-toolbar
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs]])
|
||||
(:require [reagent.core :as reagent]
|
||||
[cljs-bean.core :refer [->clj ->js]]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.list.views :as list.views]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.toolbar.view :as toolbar]
|
||||
[status-im.ui.components.toolbar.styles :as toolbar.styles]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.ui.components.animation :as animation]))
|
||||
|
||||
(def hidden (reagent/atom 0))
|
||||
(def shown (reagent/atom 100))
|
||||
(def minimized-header-visible? (reagent/atom false))
|
||||
(def initial-on-show-done? (volatile! false))
|
||||
|
||||
(defview animated-content-wrapper [header-in-toolbar has-nav? show?]
|
||||
(letsubs [anim-opacity (animation/create-value 0)
|
||||
to-hide (reagent/atom false)]
|
||||
{:component-will-update
|
||||
(fn [_ [_ _ _ show?]]
|
||||
(cond
|
||||
(and (not @to-hide) show?)
|
||||
(animation/start
|
||||
(animation/timing
|
||||
anim-opacity
|
||||
{:toValue 1
|
||||
:duration 200
|
||||
:easing (.-ease (animation/easing))
|
||||
:useNativeDriver true})
|
||||
#(reset! to-hide true))
|
||||
|
||||
(and @to-hide (not show?))
|
||||
(animation/start
|
||||
(animation/timing
|
||||
anim-opacity
|
||||
{:toValue 0
|
||||
:duration 200
|
||||
:easing (.-ease (animation/easing))
|
||||
:useNativeDriver true})
|
||||
#(reset! to-hide false))))}
|
||||
[react/animated-view
|
||||
{:style (cond-> {:flex 1
|
||||
:align-self :stretch
|
||||
:opacity anim-opacity}
|
||||
(false? has-nav?)
|
||||
(assoc :margin-left -40 :margin-right 40))}
|
||||
header-in-toolbar]))
|
||||
|
||||
(defn on-viewable-items-changed [threshold interporlation-step]
|
||||
(fn [info]
|
||||
(let [changed (->> (->clj info)
|
||||
:changed
|
||||
(filter #(= 1 (:index %))))
|
||||
viewable? (when (seq changed)
|
||||
(->> changed
|
||||
first
|
||||
:isViewable))]
|
||||
(when (and @initial-on-show-done? (not (nil? viewable?)))
|
||||
(if (= threshold 0)
|
||||
(if viewable?
|
||||
(reset! minimized-header-visible? false)
|
||||
(reset! minimized-header-visible? true))
|
||||
(if viewable?
|
||||
(do (swap! hidden - interporlation-step) (swap! shown + interporlation-step))
|
||||
(do (swap! hidden + interporlation-step) (swap! shown - interporlation-step))))))))
|
||||
|
||||
(defonce viewability-config-callback-pairs
|
||||
(let [interporlation-step 20]
|
||||
(->js
|
||||
(vec
|
||||
(for [threshold (range 0 (+ 100 interporlation-step) interporlation-step)]
|
||||
{:viewabilityConfig {:itemVisiblePercentThreshold threshold}
|
||||
:onViewableItemsChanged (on-viewable-items-changed threshold interporlation-step)})))))
|
||||
|
||||
;; header-in-toolbar - component - small header in toolbar
|
||||
;; nav-item - component/nil - if nav-item like back button is needed, else nil
|
||||
;; action-items - status-im.ui.components.toolbar.view/actions
|
||||
(defn minimized-toolbar [header-in-toolbar nav-item action-items]
|
||||
(let [has-nav? (boolean nav-item)]
|
||||
[toolbar/toolbar
|
||||
{:transparent? true
|
||||
:style {:z-index 100
|
||||
:elevation 9}}
|
||||
nav-item
|
||||
[animated-content-wrapper header-in-toolbar has-nav? @minimized-header-visible?]
|
||||
action-items]))
|
||||
|
||||
;; header - component that serves as large header without any top/bottom padding
|
||||
;; top(4px high) and bottom(16px high and with border) padding
|
||||
;; are assumed to be constant
|
||||
;; this is wrapped with padding components and merged with content
|
||||
;; content - vector - of the rest(from header) of the list components
|
||||
;; wrapped header and content form the data prop of flat-list
|
||||
;; list-ref - atom - a reference to flat-list for the purpose of invoking its
|
||||
;; methods
|
||||
(defview flat-list-with-large-header [header content list-ref]
|
||||
(letsubs [window-width [:dimensions/window-width]]
|
||||
{:component-did-mount #(do (reset! hidden 0) (reset! shown 100)
|
||||
(reset! minimized-header-visible? false)
|
||||
(vreset! initial-on-show-done? false))}
|
||||
(let [header-top-padding [react/view {:height 4}]
|
||||
;; header bottom padding with border-bottom
|
||||
;; fades out as it approaches toolbar shadow
|
||||
header-bottom [react/animated-view
|
||||
{:style {:height 16
|
||||
:opacity (/ @shown 100)
|
||||
:border-bottom-width 1
|
||||
:border-bottom-color colors/gray-lighter}}]
|
||||
wrapped-data (into [header-top-padding header header-bottom] content)
|
||||
status-bar-height (get platform/platform-specific :status-bar-default-height)
|
||||
toolbar-shadow-component-height
|
||||
(+ 50 toolbar.styles/toolbar-height (if (zero? status-bar-height) 50 status-bar-height))]
|
||||
[react/view {:flex 1}
|
||||
;; toolbar shadow
|
||||
[react/animated-view
|
||||
{:style
|
||||
(cond-> {:flex 1
|
||||
:align-self :stretch
|
||||
:position :absolute
|
||||
:height toolbar-shadow-component-height
|
||||
:width window-width
|
||||
:top (- toolbar-shadow-component-height)
|
||||
:shadow-radius 8
|
||||
:shadow-offset {:width 0 :height 2}
|
||||
:shadow-opacity 1
|
||||
:shadow-color "rgba(0, 9, 26, 0.12)"
|
||||
:elevation (if (>= @hidden 40) (- (/ @hidden 10) 2) 0)
|
||||
:background-color colors/white}
|
||||
platform/ios?
|
||||
(assoc :opacity (if (>= @hidden 40) (/ @hidden 100) 0)))}]
|
||||
|
||||
[list.views/flat-list
|
||||
{:style {:z-index -1}
|
||||
:data wrapped-data
|
||||
:initial-num-to-render 3
|
||||
:ref #(reset! list-ref %)
|
||||
:render-fn (fn [item idx] item)
|
||||
:key-fn (fn [item idx] (str idx))
|
||||
:on-scroll-begin-drag #(when (false? @initial-on-show-done?)
|
||||
(vreset! initial-on-show-done? true))
|
||||
:viewabilityConfigCallbackPairs viewability-config-callback-pairs
|
||||
:keyboard-should-persist-taps :handled}]])))
|
|
@ -55,7 +55,6 @@
|
|||
:show-extension-modal {:type :main}
|
||||
:wallet {:type :main}
|
||||
:wallet-stack {:type :main}
|
||||
:profile-qr-viewer {:type :modal-white}
|
||||
:recipient-qr-code {:type :transparent}
|
||||
:wallet-send-assets {:type :wallet}
|
||||
:wallet-request-assets {:type :wallet}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
[react/view {:style (style/photo-container size)}
|
||||
[react/image {:source (utils.image/source photo-path)
|
||||
:style (style/photo size)
|
||||
:resize-mode :cover
|
||||
:accessibility-label (or accessibility-label :chat-icon)}]
|
||||
[react/view {:style (style/photo-border size)}]])
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
{:position :absolute
|
||||
:width size
|
||||
:height size
|
||||
:opacity 0.4
|
||||
:border-color colors/black-transparent
|
||||
:border-width 1
|
||||
:border-radius (radius size)})
|
||||
|
|
|
@ -114,8 +114,9 @@
|
|||
{:on-press #(re-frame/dispatch [:intro-wizard/on-key-selected (:id acc)])}
|
||||
[react/view {:style (styles/list-item selected?)}
|
||||
|
||||
[react/image {:source {:uri (identicon/identicon public-key)}
|
||||
:style styles/multiaccount-image}]
|
||||
[react/image {:source {:uri (identicon/identicon public-key)}
|
||||
:resize-mode :cover
|
||||
:style styles/multiaccount-image}]
|
||||
[react/view {:style {:margin-horizontal 16 :flex 1 :justify-content :space-between}}
|
||||
[react/text {:style (assoc styles/wizard-text :text-align :left
|
||||
:color colors/black
|
||||
|
|
|
@ -5,7 +5,8 @@
|
|||
[status-im.ui.components.react :as react]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.ui.screens.wallet.signing-phrase.views :as signing-phrase]
|
||||
[status-im.ui.screens.wallet.request.views :as request]))
|
||||
[status-im.ui.screens.wallet.request.views :as request]
|
||||
[status-im.ui.screens.profile.user.views :as profile.user]))
|
||||
|
||||
(defn hide-panel-anim
|
||||
[bottom-anim-value alpha-value window-height]
|
||||
|
@ -34,60 +35,73 @@
|
|||
current-popover (reagent/atom nil)
|
||||
update? (reagent/atom nil)]
|
||||
(reagent/create-class
|
||||
{:component-will-update (fn [_ [_ popover _]]
|
||||
(when @clear-timeout (js/clearTimeout @clear-timeout))
|
||||
(cond
|
||||
@update?
|
||||
(do (reset! update? false)
|
||||
(show-panel-anim bottom-anim-value alpha-value))
|
||||
{:component-will-update
|
||||
(fn [_ [_ popover _]]
|
||||
(when @clear-timeout (js/clearTimeout @clear-timeout))
|
||||
(cond
|
||||
@update?
|
||||
(do (reset! update? false)
|
||||
(show-panel-anim bottom-anim-value alpha-value))
|
||||
|
||||
(and @current-popover popover)
|
||||
(do (reset! update? true)
|
||||
(js/setTimeout #(reset! current-popover popover) 600)
|
||||
(hide-panel-anim bottom-anim-value alpha-value (- window-height)))
|
||||
(and @current-popover popover)
|
||||
(do (reset! update? true)
|
||||
(js/setTimeout #(reset! current-popover popover) 600)
|
||||
(hide-panel-anim bottom-anim-value alpha-value (- window-height)))
|
||||
|
||||
popover
|
||||
(do (reset! current-popover popover)
|
||||
(show-panel-anim bottom-anim-value alpha-value))
|
||||
popover
|
||||
(do (reset! current-popover popover)
|
||||
(show-panel-anim bottom-anim-value alpha-value))
|
||||
|
||||
:else
|
||||
(do (reset! clear-timeout (js/setTimeout #(reset! current-popover nil) 500))
|
||||
(hide-panel-anim bottom-anim-value alpha-value (- window-height)))))
|
||||
:reagent-render (fn []
|
||||
(when @current-popover
|
||||
(let [{:keys [view style]} @current-popover]
|
||||
[react/view {:position :absolute :top 0 :bottom 0 :left 0 :right 0}
|
||||
[react/animated-view {:style {:flex 1 :background-color :black :opacity alpha-value}}]
|
||||
[react/animated-view {:style
|
||||
{:position :absolute
|
||||
:height window-height
|
||||
:left 0
|
||||
:right 0
|
||||
:transform [{:translateY bottom-anim-value}]}}
|
||||
[react/touchable-highlight {:style {:flex 1} :on-press #(re-frame/dispatch [:hide-popover])}
|
||||
[react/view {:flex 1 :align-items :center :justify-content :center}
|
||||
[react/view (merge {:background-color :white
|
||||
:border-radius 16
|
||||
:margin 32
|
||||
:shadow-offset {:width 0 :height 2}
|
||||
:shadow-radius 8
|
||||
:shadow-opacity 1
|
||||
:shadow-color "rgba(0, 9, 26, 0.12)"}
|
||||
style)
|
||||
(cond
|
||||
(vector? view)
|
||||
view
|
||||
:else
|
||||
(reset! current-popover nil)))
|
||||
:reagent-render
|
||||
(fn []
|
||||
(when @current-popover
|
||||
(let [{:keys [view style]} @current-popover]
|
||||
[react/view {:position :absolute :top 0 :bottom 0 :left 0 :right 0}
|
||||
[react/animated-view
|
||||
{:style {:flex 1 :background-color :black :opacity alpha-value}}]
|
||||
[react/animated-view {:style
|
||||
{:position :absolute
|
||||
:height window-height
|
||||
:left 0
|
||||
:right 0
|
||||
:transform [{:translateY bottom-anim-value}]}}
|
||||
[react/touchable-highlight
|
||||
{:style {:flex 1 :align-items :center :justify-content :center}
|
||||
:on-press (fn []
|
||||
(reset! clear-timeout
|
||||
(js/setTimeout
|
||||
#(do (reset! current-popover nil)
|
||||
(re-frame/dispatch [:hide-popover])) 200))
|
||||
(hide-panel-anim
|
||||
bottom-anim-value alpha-value (- window-height)))}
|
||||
[react/view (merge {:background-color :white
|
||||
:border-radius 16
|
||||
:margin 32
|
||||
:shadow-offset {:width 0 :height 2}
|
||||
:shadow-radius 8
|
||||
:shadow-opacity 1
|
||||
:shadow-color "rgba(0, 9, 26, 0.12)"}
|
||||
style)
|
||||
[react/touchable-opacity {:active-opacity 1}
|
||||
(cond
|
||||
(vector? view)
|
||||
view
|
||||
|
||||
(= :signing-phrase view)
|
||||
[signing-phrase/signing-phrase]
|
||||
(= :signing-phrase view)
|
||||
[signing-phrase/signing-phrase]
|
||||
|
||||
(= :share-account view)
|
||||
[request/share-address]
|
||||
(= :share-account view)
|
||||
[request/share-address]
|
||||
|
||||
:else
|
||||
[view])]]]]])))})))
|
||||
(= :share-chat-key view)
|
||||
[profile.user/share-chat-key]
|
||||
|
||||
:else
|
||||
[view])]]]]])))})))
|
||||
|
||||
(views/defview popover []
|
||||
(views/letsubs [popover [:popover/popover]
|
||||
{window-height :height} [:dimensions/window]]
|
||||
[popover-view popover window-height]))
|
||||
[popover-view popover window-height]))
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
;; profile header elements
|
||||
|
||||
(def profile-header-display
|
||||
{:flex-direction :column
|
||||
:justify-content :center
|
||||
{:flex-direction :row
|
||||
:justify-content :flex-start
|
||||
:align-items :center})
|
||||
|
||||
(def profile-header-edit
|
||||
|
@ -15,30 +15,43 @@
|
|||
:justify-content :center})
|
||||
|
||||
(defstyle profile-name-text
|
||||
{:padding-vertical 8
|
||||
:text-align :center
|
||||
:font-weight "700"})
|
||||
{:typography :header
|
||||
:line-height 28
|
||||
:text-align :left})
|
||||
|
||||
(defstyle profile-name-text-with-subtitle
|
||||
{:margin-vertical 5
|
||||
:typography :header
|
||||
:line-height 28
|
||||
:text-align :left})
|
||||
|
||||
(defstyle profile-three-words
|
||||
{:font-size 12
|
||||
:text-align :center
|
||||
:color colors/gray})
|
||||
{:color colors/gray})
|
||||
|
||||
(defstyle profile-name-input-text
|
||||
{:text-align :center
|
||||
:flex 1
|
||||
:desktop {:height 20
|
||||
:width 200}
|
||||
:ios {:margin-top 1
|
||||
:height 45
|
||||
:border-bottom-width 1
|
||||
:border-bottom-color colors/gray-light}
|
||||
:android {:border-bottom-width 2
|
||||
:border-bottom-color colors/blue}})
|
||||
{:text-align :center
|
||||
:flex 1
|
||||
:desktop {:height 20
|
||||
:width 200}
|
||||
:ios {:margin-top 1
|
||||
:height 45
|
||||
:border-bottom-width 1
|
||||
:border-bottom-color colors/gray-light}
|
||||
:android {:border-bottom-width 2
|
||||
:border-bottom-color colors/blue}})
|
||||
|
||||
(def profile-header-name-container
|
||||
{:flex 1
|
||||
:justify-content :center})
|
||||
:justify-content :center
|
||||
:align-items :flex-start
|
||||
:margin-left 16})
|
||||
|
||||
(def profile-header-name-container-with-subtitle
|
||||
{:flex 1
|
||||
:justify-content :flex-start
|
||||
:align-items :flex-start
|
||||
:align-self :stretch
|
||||
:margin-left 16})
|
||||
|
||||
;; settings items elements
|
||||
|
||||
|
@ -63,9 +76,9 @@
|
|||
:align-items :center})
|
||||
|
||||
(def settings-item-text-wrapper
|
||||
{:flex 1
|
||||
:flex-direction :row
|
||||
:justify-content :space-between})
|
||||
{:flex 1
|
||||
:flex-direction :row
|
||||
:justify-content :space-between})
|
||||
|
||||
(def settings-item-text
|
||||
{:flex-wrap :nowrap})
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.gfycat.core :as gfy]
|
||||
[status-im.ui.components.list-selection :as list-selection]
|
||||
[status-im.ui.screens.profile.user.sheet.views :as sheets]
|
||||
[status-im.ui.screens.profile.components.styles :as styles]))
|
||||
|
||||
;; profile header elements
|
||||
|
@ -27,44 +28,63 @@
|
|||
:accessibility-label :username-input}
|
||||
props)]])
|
||||
|
||||
(defn- show-profile-icon-actions [options]
|
||||
(when (seq options)
|
||||
(list-selection/show {:title (i18n/label :t/image-source-title)
|
||||
:options options})))
|
||||
|
||||
(defn- names [{:keys [name public-key] :as contact}]
|
||||
(let [generated-name (when public-key (gfy/generate-gfy public-key))]
|
||||
[react/view styles/profile-header-name-container
|
||||
[react/text {:style styles/profile-name-text
|
||||
:number-of-lines 1}
|
||||
(defn- names [{:keys [usernames name public-key] :as contact}]
|
||||
(let [generated-name (when public-key (gfy/generate-gfy public-key))
|
||||
with-subtitle? (seq usernames)]
|
||||
[react/view (if with-subtitle? styles/profile-header-name-container-with-subtitle
|
||||
styles/profile-header-name-container)
|
||||
[react/text {:style (if with-subtitle? styles/profile-name-text-with-subtitle
|
||||
styles/profile-name-text)}
|
||||
(multiaccounts/displayed-name contact)]
|
||||
(when generated-name
|
||||
(when with-subtitle?
|
||||
[react/text {:style styles/profile-three-words
|
||||
:number-of-lines 1}
|
||||
generated-name])]))
|
||||
|
||||
(defn- profile-header-display [{:keys [name public-key] :as contact}]
|
||||
(let [generated-name (when public-key (gfy/generate-gfy public-key))]
|
||||
[react/view styles/profile-header-display
|
||||
(defn- profile-header-display [{:keys [name public-key] :as contact}
|
||||
allow-icon-change? include-remove-action?]
|
||||
[react/view (merge styles/profile-header-display {:padding-horizontal 16})
|
||||
(if allow-icon-change?
|
||||
[react/view {:align-items :center
|
||||
:align-self :stretch
|
||||
:justify-content :center}
|
||||
[react/touchable-highlight
|
||||
{:accessibility-label :edit-profile-photo-button
|
||||
:on-press
|
||||
#(re-frame/dispatch
|
||||
[:bottom-sheet/show-sheet
|
||||
{:content (sheets/profile-icon-actions include-remove-action?)
|
||||
:content-height (if include-remove-action? 192 128)}])}
|
||||
[react/view
|
||||
[react/view {:background-color colors/white
|
||||
:border-radius 15
|
||||
:width 30
|
||||
:height 30
|
||||
:justify-content :center
|
||||
:align-items :center
|
||||
:position :absolute
|
||||
:z-index 1
|
||||
:top -5
|
||||
:right -5}
|
||||
[react/view {:background-color colors/blue
|
||||
:border-radius 12
|
||||
:width 24
|
||||
:height 24
|
||||
:justify-content :center
|
||||
:align-items :center}
|
||||
[vector-icons/icon :tiny-edit {:color colors/white
|
||||
:width 16
|
||||
:height 16}]]]
|
||||
[chat-icon.screen/my-profile-icon {:multiaccount contact
|
||||
:edit? false}]]]]
|
||||
;; else
|
||||
[chat-icon.screen/my-profile-icon {:multiaccount contact
|
||||
:edit? false}]
|
||||
[names contact]]))
|
||||
|
||||
(defn- profile-header-edit [{:keys [name group-chat] :as contact}
|
||||
icon-options on-change-text-event allow-icon-change?]
|
||||
[react/view styles/profile-header-edit
|
||||
[react/touchable-highlight {:on-press #(show-profile-icon-actions icon-options)
|
||||
:accessibility-label :edit-profile-photo-button}
|
||||
[react/view styles/modal-menu
|
||||
[chat-icon.screen/my-profile-icon {:multiaccount contact
|
||||
:edit? allow-icon-change?}]]]
|
||||
:edit? false}])
|
||||
[names contact]])
|
||||
|
||||
(defn profile-header
|
||||
[{:keys [contact edited-contact editing? allow-icon-change? options on-change-text-event]}]
|
||||
(if editing?
|
||||
[profile-header-edit (merge edited-contact contact) options on-change-text-event allow-icon-change?]
|
||||
[profile-header-display contact]))
|
||||
[{:keys [contact allow-icon-change? include-remove-action?]}]
|
||||
[profile-header-display contact allow-icon-change? include-remove-action?])
|
||||
|
||||
;; settings items elements
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@
|
|||
[status-im.ui.components.list-selection :as list-selection]
|
||||
[status-im.utils.handlers :as handlers]
|
||||
[status-im.utils.identicon :as identicon]
|
||||
[status-im.utils.universal-links.core :as universal-links]))
|
||||
[status-im.utils.universal-links.core :as universal-links]
|
||||
[status-im.utils.fx :as fx]))
|
||||
|
||||
(re-frame/reg-fx
|
||||
:open-image-picker
|
||||
|
@ -33,10 +34,12 @@
|
|||
(handlers/register-handler-fx
|
||||
:my-profile/remove-current-photo
|
||||
(fn [{:keys [db] :as cofx}]
|
||||
{:db (-> db
|
||||
(assoc-in [:my-profile/profile :photo-path]
|
||||
(identicon/identicon (multiaccounts.model/current-public-key cofx)))
|
||||
(assoc :my-profile/editing? true))}))
|
||||
(fx/merge cofx
|
||||
{:db (-> db
|
||||
(assoc-in [:my-profile/profile :photo-path]
|
||||
(identicon/identicon (multiaccounts.model/current-public-key cofx)))
|
||||
(assoc :my-profile/editing? true))}
|
||||
(profile.models/save))))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:my-profile/start-editing-profile
|
||||
|
|
|
@ -36,14 +36,6 @@
|
|||
(assoc-in [:my-profile/profile :valid-name?] (valid-name? name))
|
||||
(assoc-in [:my-profile/profile :name] name))})
|
||||
|
||||
(defn update-picture [this-event base64-image {:keys [db]}]
|
||||
(if base64-image
|
||||
{:db (-> db
|
||||
(assoc-in [:my-profile/profile :photo-path]
|
||||
(str "data:image/jpeg;base64," base64-image))
|
||||
(assoc :my-profile/editing? true))}
|
||||
{:open-image-picker this-event}))
|
||||
|
||||
(defn- clean-name [db edit-view]
|
||||
(let [name (get-in db [edit-view :name])]
|
||||
(if (valid-name? name)
|
||||
|
@ -60,7 +52,7 @@
|
|||
:my-profile/editing? true
|
||||
:my-profile/profile profile)}))
|
||||
|
||||
(defn save [{:keys [db now] :as cofx}]
|
||||
(fx/defn save [{:keys [db now] :as cofx}]
|
||||
(let [{:keys [photo-path]} (:my-profile/profile db)
|
||||
cleaned-name (clean-name db :my-profile/profile)
|
||||
cleaned-edit (merge {:name cleaned-name
|
||||
|
@ -71,6 +63,16 @@
|
|||
(clear-profile)
|
||||
(multiaccounts.update/multiaccount-update cleaned-edit {}))))
|
||||
|
||||
(defn update-picture [this-event base64-image {:keys [db] :as cofx}]
|
||||
(if base64-image
|
||||
(fx/merge cofx
|
||||
{:db (-> db
|
||||
(assoc-in [:my-profile/profile :photo-path]
|
||||
(str "data:image/jpeg;base64," base64-image))
|
||||
(assoc :my-profile/editing? true))}
|
||||
save)
|
||||
{:open-image-picker this-event}))
|
||||
|
||||
(defn start-editing-group-chat-profile [{:keys [db]}]
|
||||
(let [current-chat-name (get-in db [:chats (:current-chat-id db) :name])]
|
||||
{:db (-> db
|
||||
|
|
|
@ -1,14 +1,6 @@
|
|||
(ns status-im.ui.screens.profile.navigation
|
||||
(:require [status-im.ui.screens.navigation :as navigation]))
|
||||
|
||||
;;TODO(goranjovic) - replace this with an atomic navigation event that calls functions, not dispatch
|
||||
;; possibly use the generic event, see https://github.com/status-im/status-react/issues/2987
|
||||
(defmethod navigation/preload-data! :profile-qr-viewer
|
||||
[db [_ _ {:keys [contact source value]}]]
|
||||
(update db :qr-modal #(merge % {:contact (or contact (get db :multiaccount))
|
||||
:source source
|
||||
:value value})))
|
||||
|
||||
(defmethod navigation/unload-data! :my-profile
|
||||
[db]
|
||||
(dissoc db :my-profile/editing?))
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
(ns status-im.ui.screens.profile.user.sheet.views
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.ui.components.action-button.action-button :as action-button]
|
||||
[status-im.ui.components.action-button.styles :as action-button.styles]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.utils :as utils]))
|
||||
|
||||
(defn hide-sheet-and-dispatch [event]
|
||||
(re-frame/dispatch [:bottom-sheet/hide-sheet])
|
||||
(re-frame/dispatch event))
|
||||
|
||||
(defn profile-icon-actions [include-remove-action?]
|
||||
(fn []
|
||||
[react/view {:flex 1 :flex-direction :row}
|
||||
[react/view action-button.styles/actions-list
|
||||
[action-button/action-button
|
||||
{:label (i18n/label :t/image-source-gallery)
|
||||
:accessibility-label :group-info-button
|
||||
:icon :main-icons/photo
|
||||
:icon-opts {:color colors/blue}
|
||||
:on-press #(hide-sheet-and-dispatch [:my-profile/update-picture])}]
|
||||
[action-button/action-button
|
||||
{:label (i18n/label :t/image-source-make-photo)
|
||||
:accessibility-label :delete-and-leave-group-button
|
||||
:icon :main-icons/camera
|
||||
:icon-opts {:color colors/blue}
|
||||
:on-press (fn []
|
||||
(hide-sheet-and-dispatch
|
||||
[:request-permissions
|
||||
{:permissions [:camera :write-external-storage]
|
||||
:on-allowed #(re-frame/dispatch
|
||||
[:navigate-to :profile-photo-capture])
|
||||
:on-denied
|
||||
(fn []
|
||||
(utils/set-timeout
|
||||
#(utils/show-popup (i18n/label :t/error)
|
||||
(i18n/label :t/camera-access-error))
|
||||
50))}]))}]
|
||||
(when include-remove-action?
|
||||
[action-button/action-button
|
||||
{:label (i18n/label :t/image-remove-current)
|
||||
:label-style {:color colors/red}
|
||||
:accessibility-label :group-info-button
|
||||
:icon :main-icons/delete
|
||||
:icon-opts {:color colors/red}
|
||||
:cyrcle-color colors/red-light
|
||||
:on-press #(hide-sheet-and-dispatch [:my-profile/remove-current-photo])}])]]))
|
|
@ -20,8 +20,7 @@
|
|||
:flex-direction :column})
|
||||
|
||||
(def share-link-button
|
||||
{:margin-top 12
|
||||
:margin-bottom 16})
|
||||
{:margin-vertical 20})
|
||||
|
||||
(defstyle my-profile-info-container {})
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(ns status-im.ui.screens.profile.user.views
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs]])
|
||||
(:require [clojure.string :as string]
|
||||
[re-frame.core :as re-frame]
|
||||
[reagent.core :as reagent]
|
||||
|
@ -7,102 +8,64 @@
|
|||
[status-im.ui.components.button.view :as button]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.common.common :as components.common]
|
||||
[status-im.ui.components.copyable-text :as copyable-text]
|
||||
[status-im.ui.components.icons.vector-icons :as icons]
|
||||
[status-im.ui.components.large-toolbar :as large-toolbar]
|
||||
[status-im.ui.components.list-selection :as list-selection]
|
||||
[status-im.ui.components.list.views :as list.views]
|
||||
[status-im.ui.components.qr-code-viewer.views :as qr-code-viewer]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.status-bar.view :as status-bar]
|
||||
[status-im.ui.components.toolbar.actions :as toolbar.actions]
|
||||
[status-im.ui.components.toolbar.view :as toolbar]
|
||||
[status-im.ui.screens.profile.components.styles
|
||||
:as
|
||||
profile.components.styles]
|
||||
[status-im.ui.screens.chat.photos :as photos]
|
||||
[status-im.ui.screens.profile.components.views :as profile.components]
|
||||
[status-im.ui.screens.profile.user.styles :as styles]
|
||||
[status-im.utils.config :as config]
|
||||
[status-im.utils.identicon :as identicon]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.universal-links.core :as universal-links]
|
||||
[status-im.biometric-auth.core :as biometric-auth]
|
||||
[status-im.utils.utils :as utils])
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs]]))
|
||||
[status-im.ethereum.stateofus :as stateofus]))
|
||||
|
||||
(defn my-profile-toolbar []
|
||||
[toolbar/toolbar
|
||||
{}
|
||||
nil
|
||||
nil
|
||||
[toolbar/text-action
|
||||
{:handler #(re-frame/dispatch [:my-profile/start-editing-profile])
|
||||
:accessibility-label :edit-button}
|
||||
(i18n/label :t/edit)]])
|
||||
|
||||
(defn my-profile-edit-toolbar [on-show]
|
||||
(reagent/create-class
|
||||
{:component-did-mount on-show
|
||||
:reagent-render (fn []
|
||||
[toolbar/toolbar
|
||||
{}
|
||||
nil
|
||||
nil
|
||||
[toolbar/text-action
|
||||
{:handler #(re-frame/dispatch [:my-profile/save-profile])
|
||||
:accessibility-label :done-button}
|
||||
(i18n/label :t/done)]])}))
|
||||
|
||||
(def profile-icon-options
|
||||
[{:label (i18n/label :t/image-source-gallery)
|
||||
:action #(re-frame/dispatch [:my-profile/update-picture])}
|
||||
{:label (i18n/label :t/image-source-make-photo)
|
||||
:action (fn []
|
||||
(re-frame/dispatch [:request-permissions {:permissions [:camera :write-external-storage]
|
||||
:on-allowed #(re-frame/dispatch [:navigate-to :profile-photo-capture])
|
||||
:on-denied (fn []
|
||||
(utils/set-timeout
|
||||
#(utils/show-popup (i18n/label :t/error)
|
||||
(i18n/label :t/camera-access-error))
|
||||
50))}]))}])
|
||||
|
||||
(defn- profile-icon-options-ext []
|
||||
(conj profile-icon-options {:label (i18n/label :t/image-remove-current)
|
||||
:action #(re-frame/dispatch [:my-profile/remove-current-photo])}))
|
||||
|
||||
(defn qr-viewer-toolbar [label value]
|
||||
[toolbar/toolbar nil
|
||||
(toolbar/nav-button
|
||||
(toolbar.actions/close toolbar.actions/default-handler))
|
||||
[toolbar/content-title label]])
|
||||
|
||||
(defn qr-code-share-button [value]
|
||||
(let [link (universal-links/generate-link :user :external value)]
|
||||
[button/button-with-icon
|
||||
{:on-press #(list-selection/open-share {:message link})
|
||||
:label (i18n/label :t/share-link)
|
||||
:icon :main-icons/share
|
||||
:accessibility-label :share-my-contact-code-button
|
||||
:style styles/share-link-button}]))
|
||||
|
||||
(defview qr-viewer []
|
||||
(letsubs [{:keys [value contact]} [:qr-modal]
|
||||
ttt-enabled? [:tribute-to-talk/enabled?]]
|
||||
[react/view styles/qr-code-viewer
|
||||
[status-bar/status-bar {:type :modal-white}]
|
||||
[qr-viewer-toolbar (multiaccounts/displayed-name contact) value]
|
||||
[qr-code-viewer/qr-code-viewer
|
||||
(merge
|
||||
{:style styles/qr-code
|
||||
:value value
|
||||
:hint (i18n/label :t/qr-code-public-key-hint)
|
||||
:legend (str value)
|
||||
:show-tribute-to-talk-warning? ttt-enabled?}
|
||||
(when-not platform/desktop?
|
||||
{:footer-button qr-code-share-button}))]]))
|
||||
|
||||
(defn- show-qr [contact source value]
|
||||
#(re-frame/dispatch [:navigate-to :profile-qr-viewer {:contact contact
|
||||
:source source
|
||||
:value value}]))
|
||||
(defview share-chat-key []
|
||||
(letsubs [{:keys [address]} [:popover/popover]
|
||||
window-width [:dimensions/window-width]
|
||||
{:keys [names preferred-name]} [:ens.main/screen]]
|
||||
(let [username (stateofus/username preferred-name)
|
||||
qr-width (- window-width 128)
|
||||
name (or username preferred-name)
|
||||
link (universal-links/generate-link :user :external address)]
|
||||
[react/view
|
||||
[react/view {:style {:padding-top 16 :padding-left 16 :padding-right 16}}
|
||||
[qr-code-viewer/qr-code-view qr-width address]
|
||||
(when (seq names)
|
||||
[react/view
|
||||
[copyable-text/copyable-text-view
|
||||
{:label :t/ens-usernames
|
||||
:copied-text preferred-name}
|
||||
[react/nested-text
|
||||
{:style {:line-height 22 :font-size 15
|
||||
:font-family "monospace"}
|
||||
:accessibility-label :ens-username}
|
||||
name
|
||||
(when username [{:style {:color colors/gray}} (str "." stateofus/domain)])]]
|
||||
[react/view {:height 1 :margin-top 12 :margin-horizontal -16
|
||||
:background-color colors/gray-lighter}]])
|
||||
[copyable-text/copyable-text-view
|
||||
{:label :t/chat-key
|
||||
:copied-text address}
|
||||
[react/text {:number-of-lines 1
|
||||
:ellipsize-mode :middle
|
||||
:accessibility-label :chat-key
|
||||
:style {:line-height 22 :font-size 15
|
||||
:font-family "monospace"}}
|
||||
address]]
|
||||
[react/view styles/share-link-button
|
||||
[button/button-with-icon
|
||||
{:on-press #(list-selection/open-share {:message link})
|
||||
:label (i18n/label :t/share-link)
|
||||
:icon :main-icons/link
|
||||
:style {:height 44 :margin-horizontal 0}
|
||||
:accessibility-label :share-my-contact-code-button}]]]])))
|
||||
|
||||
(defn- my-profile-settings [{:keys [seed-backed-up? mnemonic]}
|
||||
{:keys [settings]}
|
||||
|
@ -272,17 +235,6 @@
|
|||
(when advanced?
|
||||
[advanced-settings params on-show supported-biometric-auth])]))
|
||||
|
||||
(defn share-profile-item
|
||||
[{:keys [public-key photo-path] :as current-multiaccount}]
|
||||
[list.views/big-list-item
|
||||
{:text (i18n/label :t/share-my-profile)
|
||||
:icon :main-icons/share
|
||||
:accessibility-label :share-my-profile-button
|
||||
:action-fn #(re-frame/dispatch [:navigate-to :profile-qr-viewer
|
||||
{:contact current-multiaccount
|
||||
:source :public-key
|
||||
:value public-key}])}])
|
||||
|
||||
(defn contacts-list-item [active-contacts-count]
|
||||
[list.views/big-list-item
|
||||
{:text (i18n/label :t/contacts)
|
||||
|
@ -325,52 +277,64 @@
|
|||
[react/scroll-view
|
||||
[view]]]))
|
||||
|
||||
(defn- header [{:keys [public-key photo-path] :as account}]
|
||||
[profile.components/profile-header
|
||||
{:contact account
|
||||
:allow-icon-change? true
|
||||
:include-remove-action? (not= (identicon/identicon public-key) photo-path)}])
|
||||
|
||||
(defn- header-in-toolbar [{:keys [photo-path] :as account}]
|
||||
(let [displayed-name (multiaccounts/displayed-name account)]
|
||||
[react/view {:flex 1
|
||||
:flex-direction :row
|
||||
:align-items :center
|
||||
:align-self :stretch}
|
||||
[photos/photo photo-path {:size 40}]
|
||||
[react/text {:style {:typography :title-bold
|
||||
:line-height 21
|
||||
:margin-right 40
|
||||
:margin-left 16
|
||||
:text-align :left}}
|
||||
displayed-name]]))
|
||||
|
||||
(defn- toolbar-action-items [public-key]
|
||||
[toolbar/actions
|
||||
[{:icon :main-icons/share
|
||||
:icon-opts {:width 24
|
||||
:height 24}
|
||||
:handler #(re-frame/dispatch [:show-popover {:view :share-chat-key :address public-key}])}]])
|
||||
|
||||
(defview my-profile []
|
||||
(letsubs [{:keys [public-key photo-path preferred-name] :as current-multiaccount} [:multiaccount]
|
||||
editing? [:my-profile/editing?]
|
||||
extensions [:extensions/profile]
|
||||
changed-multiaccount [:my-profile/profile]
|
||||
currency [:wallet/currency]
|
||||
login-data [:multiaccounts/login]
|
||||
scroll (reagent/atom nil)
|
||||
active-contacts-count [:contacts/active-count]
|
||||
tribute-to-talk [:tribute-to-talk/profile]
|
||||
stateofus-registrar [:ens.stateofus/registrar]]
|
||||
(let [shown-multiaccount (merge current-multiaccount changed-multiaccount)
|
||||
(letsubs [list-ref (reagent/atom nil)
|
||||
{:keys [public-key photo-path preferred-name]
|
||||
:as current-multiaccount} [:multiaccount]
|
||||
extensions [:extensions/profile]
|
||||
changed-multiaccount [:my-profile/profile]
|
||||
currency [:wallet/currency]
|
||||
login-data [:multiaccounts/login]
|
||||
active-contacts-count [:contacts/active-count]
|
||||
tribute-to-talk [:tribute-to-talk/profile]
|
||||
stateofus-registrar [:ens.stateofus/registrar]]
|
||||
(let [shown-multiaccount (merge current-multiaccount changed-multiaccount)
|
||||
;; We scroll on the component once rendered. setTimeout is necessary,
|
||||
;; likely to allow the animation to finish.
|
||||
on-show-edit (fn []
|
||||
(js/setTimeout
|
||||
#(.scrollTo @scroll {:x 0 :y 0 :animated false})
|
||||
300))
|
||||
on-show-advanced (fn []
|
||||
(js/setTimeout
|
||||
#(.scrollToEnd @scroll {:animated false})
|
||||
300))]
|
||||
[react/keyboard-avoiding-view {:style {:flex 1}}
|
||||
on-show-advanced
|
||||
(fn [] (js/setTimeout #(.scrollToEnd @list-ref {:animated false}) 300))
|
||||
|
||||
;; toolbar-contents
|
||||
header-in-toolbar (header-in-toolbar shown-multiaccount)
|
||||
toolbar-action-items (toolbar-action-items public-key)
|
||||
|
||||
;; flatlist contents
|
||||
header (header shown-multiaccount)
|
||||
content
|
||||
[[ens-item preferred-name {:registrar stateofus-registrar}]
|
||||
[contacts-list-item active-contacts-count]
|
||||
(when tribute-to-talk [tribute-to-talk-item tribute-to-talk])
|
||||
[my-profile-settings current-multiaccount shown-multiaccount
|
||||
currency (nil? login-data) extensions]
|
||||
(when (nil? login-data) [advanced shown-multiaccount on-show-advanced])]]
|
||||
[(react/safe-area-view) {:style {:flex 1}}
|
||||
[status-bar/status-bar {:type :main}]
|
||||
[react/view profile.components.styles/profile
|
||||
(if editing?
|
||||
[my-profile-edit-toolbar on-show-edit]
|
||||
[my-profile-toolbar])
|
||||
[react/scroll-view {:ref #(reset! scroll %)
|
||||
:keyboard-should-persist-taps :handled}
|
||||
[react/view profile.components.styles/profile-form
|
||||
[profile.components/profile-header
|
||||
{:contact current-multiaccount
|
||||
:edited-contact changed-multiaccount
|
||||
:editing? editing?
|
||||
:allow-icon-change? true
|
||||
:options (if (not= (identicon/identicon public-key)
|
||||
photo-path)
|
||||
(profile-icon-options-ext)
|
||||
profile-icon-options)
|
||||
:on-change-text-event :my-profile/update-name}]]
|
||||
[share-profile-item (dissoc current-multiaccount :mnemonic)]
|
||||
[ens-item preferred-name {:registrar stateofus-registrar}]
|
||||
[contacts-list-item active-contacts-count]
|
||||
(when tribute-to-talk
|
||||
[tribute-to-talk-item tribute-to-talk])
|
||||
[my-profile-settings current-multiaccount shown-multiaccount currency (nil? login-data) extensions]
|
||||
(when (nil? login-data)
|
||||
[advanced shown-multiaccount on-show-advanced])]]])))
|
||||
[large-toolbar/minimized-toolbar header-in-toolbar nil toolbar-action-items]
|
||||
[large-toolbar/flat-list-with-large-header header content list-ref]])))
|
||||
|
|
|
@ -9,6 +9,5 @@
|
|||
:hardwallet-connect-modal
|
||||
:selection-modal-screen
|
||||
:wallet-transactions-filter
|
||||
:profile-qr-viewer
|
||||
:welcome
|
||||
:keycard-welcome])
|
||||
:keycard-welcome])
|
||||
|
|
|
@ -123,7 +123,6 @@
|
|||
:new add-new/add-new
|
||||
:new-chat new-chat/new-chat
|
||||
:qr-scanner qr-scanner/qr-scanner
|
||||
:profile-qr-viewer [:modal profile.user/qr-viewer]
|
||||
:take-picture extensions.module/take-picture-view
|
||||
:extension-screen-holder extensions.module/screen-holder-view
|
||||
:new-group group/new-group
|
||||
|
|
|
@ -156,4 +156,4 @@
|
|||
:loadNavigationState (when js/goog.DEBUG load-state)}]
|
||||
[signing/signing]
|
||||
[bottom-sheet]
|
||||
[popover/popover]]))})))
|
||||
[popover/popover]]))})))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(ns status-im.utils.identicon
|
||||
(:require [status-im.js-dependencies :as dependencies]))
|
||||
|
||||
(def default-size 40)
|
||||
(def default-size 150)
|
||||
|
||||
(defn identicon
|
||||
([hash] (identicon hash (clj->js {:background [255 255 255 255]
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"other": "{{count}} members"
|
||||
},
|
||||
"chat-name": "Chat name",
|
||||
"chat-key": "Chat key",
|
||||
"public-group-topic": "Topic",
|
||||
"debug-enabled": "Debug server has been launched! You can now execute *status-dev-cli scan* to find the server from your computer on the same network.",
|
||||
"chat-settings": "Chat settings",
|
||||
|
@ -1146,6 +1147,7 @@
|
|||
"ens-terms-point-8": "These terms are guaranteed by the smart contract logic at addresses:",
|
||||
"ens-terms-point-9": "{{address}} (Status UsernameRegistrar) ",
|
||||
"ens-terms-point-10": "0x314159265dd8dbb310642f98f50c066173c1259b (ENS Registry).",
|
||||
"ens-username": "ENS username",
|
||||
"ens-usernames": "ENS usernames",
|
||||
"ens-your-username": "Your username",
|
||||
"ens-your-your-name": "Your ENS name",
|
||||
|
|
Loading…
Reference in New Issue