Skip to content

Commit

Permalink
Add featured-community data #16015
Browse files Browse the repository at this point in the history
  • Loading branch information
erikseppanen committed Jun 15, 2023
1 parent d43b73b commit 13041b0
Show file tree
Hide file tree
Showing 6 changed files with 59 additions and 30 deletions.
2 changes: 2 additions & 0 deletions src/status_im/multiaccounts/login/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
[status-im2.contexts.contacts.events :as contacts]
[status-im2.navigation.events :as navigation]
[status-im2.contexts.shell.constants :as shell.constants]
[status-im2.contexts.communities.discover.events :as contract-communities]
[status-im2.common.log :as logging]
[taoensso.timbre :as log]
[status-im2.contexts.shell.utils :as shell.utils]
Expand Down Expand Up @@ -440,6 +441,7 @@
(initialize-wallet-connect)
(get-node-config)
(communities/fetch)
(contract-communities/fetch-contract-communities)
(communities/fetch-collapsed-community-categories)
(communities/check-and-delete-pending-request-to-join)
(logging/set-log-level (:log-level multiaccount))
Expand Down
45 changes: 45 additions & 0 deletions src/status_im2/contexts/communities/discover/events.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
(ns status-im2.contexts.communities.discover.events
(:require [clojure.set :as set]
[clojure.string :as string]
[taoensso.timbre :as log]
[utils.re-frame :as rf]))

(defn camel->kebab
[k]
(let [s (name k)
lower-cased (string/lower-case
(string/replace s #"([a-z])([A-Z])" "$1-$2"))
starts-with-digit? (re-matches #"^\d.*" s)
predicate? (some #(string/starts-with? lower-cased %)
["can-" "is-"])]
(cond starts-with-digit? s
predicate? (keyword (str lower-cased "?"))
:else (keyword lower-cased))))

(defn rename-keys
[m]
(reduce (fn [acc [k v]]
(let [new-key (if (keyword? k) (camel->kebab k) k)]
(cond
(map? v) (assoc acc new-key (rename-keys v))
:else (assoc acc new-key v))))
{}
m))

(rf/defn handle-contract-communities
{:events [:fetched-contract-communities]}
[{:keys [db]} contract-communities]
(let [cc (rename-keys contract-communities)
featured (:contract-featured-communities cc)
other (remove (set featured) (:contract-communities cc))]
{:db (assoc db
:contract-communities
{:featured (select-keys (:communities cc) featured)
:other (select-keys (:communities cc) other)})}))

(rf/defn fetch-contract-communities
[_]
{:json-rpc/call [{:method "wakuext_curatedCommunities"
:params []
:on-success #(rf/dispatch [:fetched-contract-communities %])
:on-error #(log/error "failed to fetch contract communities" %)}]})
5 changes: 2 additions & 3 deletions src/status_im2/contexts/communities/discover/view.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@
:label (i18n/label :t/gated)
:accessibility-label :gated-communities-tab}]}]])


(defn featured-list
[communities view-type]
(let [view-size (reagent/atom 0)]
Expand Down Expand Up @@ -158,7 +157,7 @@
[rn/view {:style {:flex 1}}
(case @selected-tab
:all
(other-communities-list {:communities (rf/sub [:communities/sorted-communities])
(other-communities-list {:communities (rf/sub [:communities/other-contract-communities])
:view-type view-type})

:open
Expand Down Expand Up @@ -227,7 +226,7 @@

(defn discover
[]
(let [featured-communities (rf/sub [:communities/featured-communities])]
(let [featured-communities (rf/sub [:communities/featured-contract-communities])]
[rn/view
{:style (style/discover-screen-container (colors/theme-colors
colors/white
Expand Down
16 changes: 8 additions & 8 deletions src/status_im2/subs/communities.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -71,16 +71,16 @@
(sort-by #(visibility-status-utils/visibility-status-order (get % 0)))))))

(re-frame/reg-sub
:communities/featured-communities
:<- [:communities]
(fn [communities]
(vals communities)))
:communities/featured-contract-communities
:<- [:contract-communities]
(fn [contract-communities]
(sort-by :name (vals (:featured contract-communities)))))

(re-frame/reg-sub
:communities/sorted-communities
:<- [:communities]
(fn [communities]
(sort-by :name (vals communities))))
:communities/other-contract-communities
:<- [:contract-communities]
(fn [contract-communities]
(sort-by :name (vals (:other contract-communities)))))

(re-frame/reg-sub
:communities/community-ids
Expand Down
19 changes: 0 additions & 19 deletions src/status_im2/subs/communities_test.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -78,25 +78,6 @@
:unviewed-mentions-count 0}
(rf/sub [sub-name community-id])))))

(h/deftest-sub :communities/sorted-communities
[sub-name]
(testing "Empty communities list"
(swap! rf-db/app-db assoc
:communities
{})
(is (= []
(rf/sub [sub-name]))))
(testing "communities sorted by name"
(swap! rf-db/app-db assoc
:communities
{"0x1" {:id "0x1" :name "Civilized monkeys"}
"0x2" {:id "0x2" :name "Civilized rats"}
"0x3" {:id "0x3" :name "Civilized dolphins"}})
(is (= [{:id "0x3" :name "Civilized dolphins"}
{:id "0x1" :name "Civilized monkeys"}
{:id "0x2" :name "Civilized rats"}]
(rf/sub [sub-name])))))

(h/deftest-sub :communities/categorized-channels
[sub-name]
(testing "Channels with categories"
Expand Down
2 changes: 2 additions & 0 deletions src/status_im2/subs/root.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,8 @@
(reg-root-key-sub :communities/collapsed-categories :communities/collapsed-categories)
(reg-root-key-sub :communities/selected-tab :communities/selected-tab)

(reg-root-key-sub :contract-communities :contract-communities)

(reg-root-key-sub :activity-center :activity-center)

(reg-root-key-sub :bug-report/description-error :bug-report/description-error)
Expand Down

0 comments on commit 13041b0

Please sign in to comment.