Merge pull request #377 from status-im/feature/#297

Empty discover screen (#297)

Former-commit-id: b60c15988b
This commit is contained in:
Roman Volosovskyi 2016-10-26 09:23:08 +03:00 committed by GitHub
commit 7247e29c5a
5 changed files with 42 additions and 61 deletions

View File

@ -6,14 +6,17 @@
[status-im.components.react :refer [view [status-im.components.react :refer [view
scroll-view scroll-view
text text
text-input]] text-input
icon]]
[status-im.components.toolbar.view :refer [toolbar]] [status-im.components.toolbar.view :refer [toolbar]]
[status-im.components.drawer.view :refer [open-drawer]] [status-im.components.drawer.view :refer [open-drawer]]
[status-im.discovery.views.popular :refer [discovery-popular]]
[status-im.discovery.views.recent :refer [discovery-recent]]
[status-im.discovery.styles :as st] [status-im.discovery.styles :as st]
[status-im.components.tabs.bottom-gradient :refer [bottom-gradient]] [status-im.components.tabs.bottom-gradient :refer [bottom-gradient]]
[status-im.i18n :refer [label]])) [status-im.i18n :refer [label]]
[status-im.components.carousel.carousel :refer [carousel]]
[status-im.discovery.views.popular-list :refer [discovery-popular-list]]
[status-im.discovery.views.discovery-list-item :refer [discovery-list-item]]
[status-im.contacts.styles :as contacts-styles]))
(defn get-hashtags [status] (defn get-hashtags [status]
(let [hashtags (map #(str/lower-case (str/replace % #"#" "")) (re-seq #"[^ !?,;:.]+" status))] (let [hashtags (map #(str/lower-case (str/replace % #"#" "")) (re-seq #"[^ !?,;:.]+" status))]
@ -49,23 +52,46 @@
:style st/search-icon} :style st/search-icon}
:handler #(toogle-search show-search?)}]}]) :handler #(toogle-search show-search?)}]}])
(defn title [label-kw]
[view st/section-spacing
[text {:style st/discovery-subtitle
:font :medium}
(label label-kw)]])
(defview discovery-popular [{:keys [contacts]}]
[popular-tags [:get-popular-tags 10]]
(if (seq popular-tags)
[view
[title :t/popular-tags]
(if (pos? (count popular-tags))
[carousel {:pageStyle st/carousel-page-style}
(for [{:keys [name count]} popular-tags]
[discovery-popular-list {:tag name
:count count
:contacts contacts}])]
[text (label :t/none)])]
[view contacts-styles/empty-contact-groups
;; todo change icon
[icon :group_big contacts-styles/empty-contacts-icon]
[text {:style contacts-styles/empty-contacts-text}
(label :t/no-statuses-discovered)]]))
(defview discovery-recent [{:keys [contacts]}]
[discoveries [:get :discoveries]]
(when (seq discoveries)
[view
[title :t/recent]
[view st/recent-list
(for [{:keys [message-id] :as discovery} discoveries]
^{:key (str "message-" message-id)}
[discovery-list-item discovery])]]))
(defview discovery [] (defview discovery []
[show-search? [:get ::show-search?] [show-search? [:get ::show-search?]
contacts [:get :contacts]] contacts [:get :contacts]]
[view st/discovery-container [view st/discovery-container
[discovery-toolbar show-search?] [discovery-toolbar show-search?]
[scroll-view st/scroll-view-container [scroll-view st/scroll-view-container
[view st/section-spacing
[text {:style st/discovery-subtitle
:font :medium}
(label :t/popular-tags)]]
[discovery-popular {:contacts contacts}] [discovery-popular {:contacts contacts}]
[view st/section-spacing
[text {:style st/discovery-subtitle
:font :medium}
(label :t/recent)]]
[discovery-recent {:contacts contacts}]] [discovery-recent {:contacts contacts}]]
[bottom-gradient]]) [bottom-gradient]])

View File

@ -1,23 +0,0 @@
(ns status-im.discovery.views.popular
(:require-macros [status-im.utils.views :refer [defview]])
(:require
[re-frame.core :refer [subscribe]]
[status-im.components.react :refer [text]]
[status-im.components.carousel.carousel :refer [carousel]]
[status-im.discovery.styles :as st]
[status-im.discovery.views.popular-list :refer [discovery-popular-list]]
[status-im.i18n :refer [label]]
[status-im.components.react :as r]))
(defn page-width []
(.-width (.get (.. r/react-native -Dimensions) "window")))
(defview discovery-popular [{:keys [contacts]}]
[popular-tags [:get-popular-tags 10]]
(if (pos? (count popular-tags))
[carousel {:pageStyle st/carousel-page-style}
(for [{:keys [name count]} popular-tags]
[discovery-popular-list {:tag name
:count count
:contacts contacts}])]
[text (label :t/none)]))

View File

@ -11,10 +11,6 @@
[status-im.utils.listview :refer [to-datasource]] [status-im.utils.listview :refer [to-datasource]]
[status-im.discovery.views.discovery-list-item :refer [discovery-list-item]])) [status-im.discovery.views.discovery-list-item :refer [discovery-list-item]]))
(defn render-separator [_ row-id _]
(list-item [view {:style st/row-separator
:key row-id}]))
(defview discovery-popular-list [{:keys [tag count contacts]}] (defview discovery-popular-list [{:keys [tag count contacts]}]
[discoveries [:get-discoveries-by-tags [tag] 3]] [discoveries [:get-discoveries-by-tags [tag] 3]]
[view st/popular-list-container [view st/popular-list-container

View File

@ -1,19 +0,0 @@
(ns status-im.discovery.views.recent
(:require-macros [status-im.utils.views :refer [defview]])
(:require
[re-frame.core :refer [subscribe]]
[status-im.components.react :refer [view list-view list-item]]
[status-im.utils.listview :refer [to-datasource]]
[status-im.discovery.styles :as st]
[status-im.discovery.views.discovery-list-item :refer [discovery-list-item]]))
(defn render-separator [_ row-id _]
(list-item [view {:style st/row-separator
:key row-id}]))
(defview discovery-recent [{:keys [contacts]}]
[discoveries [:get :discoveries]]
[view st/recent-list
(for [{:keys [message-id] :as discovery} discoveries]
^{:key (str "message-" message-id)}
[discovery-list-item discovery])])

View File

@ -100,6 +100,7 @@
:search-tags "Type your search tags here" :search-tags "Type your search tags here"
:popular-tags "Popular tags" :popular-tags "Popular tags"
:recent "Recent" :recent "Recent"
:no-statuses-discovered "No statuses discovered"
;settings ;settings
:settings "Settings" :settings "Settings"