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 8fdfeb5 commit 72bba0e
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 31 deletions.
49 changes: 49 additions & 0 deletions src/status_im/communities/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@
{}
categ))

(defn <-featured-communities-rpc
[r]
(set/rename-keys r
{:contractCommunities :contract-communities
:contractFeaturedCommunities :contract-featured-communities
:unknownCommunities :unknown-communities}))

(defn <-rpc
[c]
(-> c
Expand All @@ -84,6 +91,28 @@
{}
(:communityTokensMetadata c)))))

(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))

(defn- fetch-community-id-input
[{:keys [db]}]
(:communities/community-id-input db))
Expand Down Expand Up @@ -131,6 +160,17 @@
db
communities)})

(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 handle-my-pending-requests-to-join
{:events [:communities/fetched-my-communities-requests-to-join]}
[{:keys [db]} my-requests]
Expand Down Expand Up @@ -307,6 +347,15 @@
(log/error "failed to fetch communities" %)
(re-frame/dispatch [::failed-to-fetch %]))}]})

(rf/defn fetch-contract-communities
[_]
{:json-rpc/call [{:method "wakuext_curatedCommunities"
:params []
:on-success #(re-frame/dispatch [::fetched-contract-communities %])
:on-error #(do
(log/error "failed to fetch contract communities" %)
(re-frame/dispatch [::failed-to-fetch %]))}]})

(rf/defn chat-created
{:events [::chat-created]}
[_ community-id user-pk]
Expand Down
1 change: 1 addition & 0 deletions src/status_im/multiaccounts/login/core.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,7 @@
(initialize-wallet-connect)
(get-node-config)
(communities/fetch)
(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
7 changes: 3 additions & 4 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,9 +226,9 @@

(defn discover
[]
(let [featured-communities (rf/sub [:communities/featured-communities])]
(let [fcc (rf/sub [:communities/featured-contract-communities])]
[rn/view
{:style (style/discover-screen-container (colors/theme-colors
colors/white
colors/neutral-95))}
[discover-screen-content featured-communities]]))
[discover-screen-content fcc]]))
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 [cc]
(sort-by :name (vals (:featured cc)))))

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

(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 72bba0e

Please sign in to comment.