Revert "don't auto-generate contact address from whisper pub key"

This reverts commit b3416f5ad5.

Signed-off-by: Igor Mandrigin <i@mandrigin.ru>
This commit is contained in:
Igor Mandrigin 2019-02-04 14:58:04 +01:00
parent c11b99c0d4
commit e2f53418f3
No known key found for this signature in database
GPG Key ID: 4A0EDDE26E66BC8B
10 changed files with 31 additions and 37 deletions

View File

@ -35,23 +35,22 @@
[type] [type]
(keyword (str (protocol/id type) "-button"))) (keyword (str (protocol/id type) "-button")))
(defn- contact->address [all-contacts pub-key] (defn- contact->address [contact]
(get-in all-contacts [pub-key :address])) (str "0x" (db/public-key->address contact)))
(defn add-chat-contacts (defn add-chat-contacts
"Enrich command-message by adding contact list of the current private or group chat" "Enrich command-message by adding contact list of the current private or group chat"
[all-contacts contacts {:keys [public? group-chat] :as command-message}] [contacts {:keys [public? group-chat] :as command-message}]
(cond (cond
public? command-message public? command-message
group-chat (assoc command-message :contacts (map #(contact->address all-contacts %) contacts)) group-chat (assoc command-message :contacts (map contact->address contacts))
:else (assoc command-message :contact (contact->address all-contacts (first contacts))))) :else (assoc command-message :contact (contact->address (first contacts)))))
(defn enrich-command-message-for-events (defn enrich-command-message-for-events
"adds new pairs to command-message to be consumed by extension events" "adds new pairs to command-message to be consumed by extension events"
[db {:keys [chat-id] :as command-message}] [db {:keys [chat-id] :as command-message}]
(let [{:keys [contacts public? group-chat]} (get-in db [:chats chat-id]) (let [{:keys [contacts public? group-chat]} (get-in db [:chats chat-id])]
all-contacts (get db :contacts/contacts)] (add-chat-contacts contacts (assoc command-message :public? public? :group-chat group-chat))))
(add-chat-contacts all-contacts contacts (assoc command-message :public? public? :group-chat group-chat))))
(defn generate-short-preview (defn generate-short-preview
"Returns short preview for command" "Returns short preview for command"

View File

@ -28,8 +28,10 @@
(defn build-contact [{{:keys [chats] :account/keys [account] (defn build-contact [{{:keys [chats] :account/keys [account]
:contacts/keys [contacts]} :db} public-key] :contacts/keys [contacts]} :db} public-key]
(cond-> (or (get contacts public-key) (cond-> (assoc (or (get contacts public-key)
(contact.db/public-key->new-contact public-key)) (contact.db/public-key->new-contact public-key))
:address (contact.db/public-key->address public-key))
(= public-key (:public-key account)) (assoc :name (:name account)))) (= public-key (:public-key account)) (assoc :name (:name account))))
(defn- own-info [db] (defn- own-info [db]
@ -124,7 +126,9 @@
{:public-key public-key {:public-key public-key
:photo-path profile-image :photo-path profile-image
:name name :name name
:address (or address (:address contact)) :address (or address
(:address contact)
(contact.db/public-key->address public-key))
:last-updated timestamp-ms :last-updated timestamp-ms
;;NOTE (yenda) in case of concurrent contact request ;;NOTE (yenda) in case of concurrent contact request
:pending? (get contact :pending? true)} :pending? (get contact :pending? true)}

View File

@ -87,6 +87,16 @@
:photo-path (identicon/identicon public-key) :photo-path (identicon/identicon public-key)
:public-key public-key}) :public-key public-key})
(defn public-key->address [public-key]
(let [length (count public-key)
normalized-key (case length
132 (subs public-key 4)
130 (subs public-key 2)
128 public-key
nil)]
(when normalized-key
(subs (.sha3 js-dependencies/Web3.prototype normalized-key #js {:encoding "hex"}) 26))))
(defn- contact-by-address [[_ contact] address] (defn- contact-by-address [[_ contact] address]
(when (ethereum/address= (:address contact) address) (when (ethereum/address= (:address contact) address)
contact)) contact))

View File

@ -1,6 +1,5 @@
(ns status-im.contact.subs (ns status-im.contact.subs
(:require [re-frame.core :as re-frame] (:require [re-frame.core :as re-frame]
[clojure.string :as str]
[status-im.utils.identicon :as identicon] [status-im.utils.identicon :as identicon]
[status-im.contact.db :as contact.db])) [status-im.contact.db :as contact.db]))
@ -48,12 +47,6 @@
(fn [contacts] (fn [contacts]
(remove :dapp? contacts))) (remove :dapp? contacts)))
(re-frame/reg-sub
:contacts/all-added-people-contacts-with-address
:<- [:contacts/all-added-people-contacts]
(fn [contacts]
(remove #(-> % :address (str/blank?)) contacts)))
(re-frame/reg-sub (re-frame/reg-sub
:contacts/all-dapps :contacts/all-dapps
:<- [::dapps] :<- [::dapps]

View File

@ -33,7 +33,6 @@
(defview message-content-command (defview message-content-command
[command-message] [command-message]
(letsubs [id->command [:chats/id->command] (letsubs [id->command [:chats/id->command]
all-contacts [:contacts/contacts]
{:keys [contacts]} [:chats/current-chat]] {:keys [contacts]} [:chats/current-chat]]
(let [{:keys [type] :as command} (commands-receiving/lookup-command-by-ref command-message id->command) (let [{:keys [type] :as command} (commands-receiving/lookup-command-by-ref command-message id->command)
extension-id (get-in command-message [:content :params :extension-id])] extension-id (get-in command-message [:content :params :extension-id])]
@ -45,7 +44,7 @@
;; or installed extension has differen extension id ;; or installed extension has differen extension id
[install-extension-message extension-id (:outgoing command-message)] [install-extension-message extension-id (:outgoing command-message)]
(if command (if command
(commands/generate-preview command (commands/add-chat-contacts all-contacts contacts command-message)) (commands/generate-preview command (commands/add-chat-contacts contacts command-message))
[react/text (str "Unhandled command: " (-> command-message :content :command-path first))]))))) [react/text (str "Unhandled command: " (-> command-message :content :command-path first))])))))
(defview message-timestamp [t justify-timestamp? outgoing command? content] (defview message-timestamp [t justify-timestamp? outgoing command? content]

View File

@ -23,10 +23,9 @@
(defview command-short-preview [message] (defview command-short-preview [message]
(letsubs [id->command [:chats/id->command] (letsubs [id->command [:chats/id->command]
all-contacts [:contacts/contacts]
{:keys [contacts]} [:chats/current-chat]] {:keys [contacts]} [:chats/current-chat]]
(when-let [command (commands-receiving/lookup-command-by-ref message id->command)] (when-let [command (commands-receiving/lookup-command-by-ref message id->command)]
(commands/generate-short-preview command (commands/add-chat-contacts all-contacts contacts message))))) (commands/generate-short-preview command (commands/add-chat-contacts contacts message)))))
(defn message-content-text [{:keys [content content-type] :as message}] (defn message-content-text [{:keys [content content-type] :as message}]
[react/view styles/last-message-container [react/view styles/last-message-container

View File

@ -1,6 +1,5 @@
(ns status-im.ui.screens.profile.contact.views (ns status-im.ui.screens.profile.contact.views
(:require [re-frame.core :as re-frame] (:require [re-frame.core :as re-frame]
[clojure.string :as str]
[status-im.contact.db :as contact.db] [status-im.contact.db :as contact.db]
[status-im.i18n :as i18n] [status-im.i18n :as i18n]
[status-im.ui.components.list.views :as list] [status-im.ui.components.list.views :as list]
@ -17,7 +16,7 @@
toolbar/default-nav-back toolbar/default-nav-back
[toolbar/content-title ""]]) [toolbar/content-title ""]])
(defn actions [{:keys [pending? public-key dapp? address]}] (defn actions [{:keys [pending? public-key dapp?]}]
(concat (if (or (nil? pending?) pending?) (concat (if (or (nil? pending?) pending?)
[{:label (i18n/label :t/add-to-contacts) [{:label (i18n/label :t/add-to-contacts)
:icon :icons/add-contact :icon :icons/add-contact
@ -35,7 +34,6 @@
[{:label (i18n/label :t/send-transaction) [{:label (i18n/label :t/send-transaction)
:icon :icons/arrow-right :icon :icons/arrow-right
:action #(re-frame/dispatch [:profile/send-transaction public-key]) :action #(re-frame/dispatch [:profile/send-transaction public-key])
:disabled? (str/blank? address)
:accessibility-label :send-transaction-button}]) :accessibility-label :send-transaction-button}])
[{:label (i18n/label :t/share-profile-link) [{:label (i18n/label :t/share-profile-link)
:icon :icons/share :icon :icons/share

View File

@ -211,7 +211,7 @@
(ethereum/normalized-address (:address contact))]]]]) (ethereum/normalized-address (:address contact))]]]])
(views/defview recent-recipients [] (views/defview recent-recipients []
(views/letsubs [contacts [:contacts/all-added-people-contacts-with-address]] (views/letsubs [contacts [:contacts/all-added-people-contacts]]
[simple-screen [simple-screen
[toolbar (i18n/label :t/recipient)] [toolbar (i18n/label :t/recipient)]
[react/view styles/recent-recipients [react/view styles/recent-recipients

View File

@ -115,11 +115,6 @@
"0x21631d18d9681d4ffdd460fc45fa52159fcd95c8" "0x21631d18d9681d4ffdd460fc45fa52159fcd95c8"
"0x5541e3be81b76d76cdbf968516caa5a5b773763b")) "0x5541e3be81b76d76cdbf968516caa5a5b773763b"))
(def contacts-list
(let [pairs (zipmap contacts contacts_addresses)]
(reduce (fn [acc [pub addr]]
(assoc acc pub {:address addr})) {} pairs)))
(deftest enrich-command-message-for-events-test-public (deftest enrich-command-message-for-events-test-public
(let [db {:chats {"1" {:contacts nil :public? true :group-chat false}}} (let [db {:chats {"1" {:contacts nil :public? true :group-chat false}}}
msg {:chat-id "1"} msg {:chat-id "1"}
@ -129,8 +124,7 @@
(assoc msg :public? true :group-chat false)))))) (assoc msg :public? true :group-chat false))))))
(deftest enrich-command-message-for-events-test-groupchat (deftest enrich-command-message-for-events-test-groupchat
(let [db {:contacts/contacts contacts-list (let [db {:chats {"1" {:contacts contacts :public? false :group-chat true}}}
:chats {"1" {:contacts contacts :public? false :group-chat true}}}
msg {:chat-id "1"} msg {:chat-id "1"}
enriched-msg (core/enrich-command-message-for-events db msg)] enriched-msg (core/enrich-command-message-for-events db msg)]
(testing "command-message correctly enriched - group chat" (testing "command-message correctly enriched - group chat"
@ -138,8 +132,7 @@
(assoc msg :public? false :group-chat true :contacts contacts_addresses)))))) (assoc msg :public? false :group-chat true :contacts contacts_addresses))))))
(deftest enrich-command-message-for-events-test-1on1-chat (deftest enrich-command-message-for-events-test-1on1-chat
(let [db {:contacts/contacts contacts-list (let [db {:chats {"1" {:contacts contacts :public? false :group-chat false}}}
:chats {"1" {:contacts contacts :public? false :group-chat false}}}
msg {:chat-id "1"} msg {:chat-id "1"}
enriched-msg (core/enrich-command-message-for-events db msg)] enriched-msg (core/enrich-command-message-for-events db msg)]
(testing "command-message correctly enriched - 1on1 chat" (testing "command-message correctly enriched - 1on1 chat"

View File

@ -118,8 +118,7 @@
:photo-path "old-image" :photo-path "old-image"
:name "old-name" :name "old-name"
:last-updated 0 :last-updated 0
:pending? false :pending? false}}}})
:address address}}}})
contact (get-in actual [:db :contacts/contacts public-key])] contact (get-in actual [:db :contacts/contacts public-key])]
(testing "it stores the contact in the database" (testing "it stores the contact in the database"
(is (:data-store/tx actual))) (is (:data-store/tx actual)))