From 3b409dd7fb8b43ed637872a532f9e9f3c9500675 Mon Sep 17 00:00:00 2001 From: Aidan Date: Wed, 25 Nov 2020 21:31:05 -0800 Subject: [PATCH] make subscribe and contact sync requests once user is chosen --- src/whisper/core.clj | 20 +++++++++++++------- src/whisper/signald.clj | 12 ++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/whisper/core.clj b/src/whisper/core.clj index e2aedef..0038a83 100644 --- a/src/whisper/core.clj +++ b/src/whisper/core.clj @@ -20,7 +20,8 @@ (let [users (get-in data ["data" "accounts"])] (if (> (count users) 1) (log/info "Alert, multi account not supported yet. picking first on list")) - (swap! user (first users)))) + (swap! user (first users)) + (get @user "username"))) (defn -main "packs and shows main window with signald version string" @@ -35,8 +36,7 @@ ;; register callbacks between the UI and signald (assoc-callback-type "version" (fn [x] (add-str-flag (get-version-from-version-message x)))) (assoc-callback-type "linking_uri" (fn [x] (paint-linking x))) - (assoc-callback-type "linking_successful" (fn [_] - (paint-linking nil))) + (assoc-callback-type "linking_successful" (fn [_] (paint-linking nil))) (assoc-callback-type "linking_error" (fn [_] (paint-linking nil) (add-str-flag "Linking returned Error"))) @@ -53,10 +53,16 @@ sigd-loop (thread (callback-loop sigd-output))] ;; handle login basically - (assoc-callback-type "account_list" (fn [x] (if (< (count x) 1) - (do (make-link-data-req sigd-input) - (make-list-accounts-req sigd-input)) - (handle-users x)))) + (assoc-callback-type "account_list" + (fn [x] + (if (< (count x) 1) + (do (make-link-data-req sigd-input) + (make-list-accounts-req sigd-input) + (let [username (handle-users x)] + (make-subscription-req sigd-input username) + ;; list_contacts? + ;; TODO: sync/list groups + (make-contact-sync-req sigd-input username)))))) ;; find avail accounts (make-list-accounts-req sigd-input) diff --git a/src/whisper/signald.clj b/src/whisper/signald.clj index 34e2fa7..4aa9917 100644 --- a/src/whisper/signald.clj +++ b/src/whisper/signald.clj @@ -52,3 +52,15 @@ (defn make-list-accounts-req [output-stream] (-make-req output-stream "{\"type\": \"list_accounts\"}\n")) + +(defn make-subscribe-req + [output-stream username] + (-make-req output-stream + (json/write-str {"type" "subscribe" + "username" username}))) + +(defn make-contact-sync-req + [output-stream username] + (-make-req output-stream + (json/write-str {"type" "sync_contacts" + "username" username})))