mirror of
https://github.com/status-im/status-mobile.git
synced 2025-02-03 12:23:50 +00:00
[#10880] Expanded view with public chat categories
This commit is contained in:
parent
08cbc76111
commit
eef6815616
134
resources/chats.json
Normal file
134
resources/chats.json
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
{
|
||||||
|
"chats": [
|
||||||
|
["Featured", [
|
||||||
|
"status",
|
||||||
|
"support",
|
||||||
|
"crypto",
|
||||||
|
"chitchat",
|
||||||
|
"defi",
|
||||||
|
"markets",
|
||||||
|
"dap-ps",
|
||||||
|
"devcon",
|
||||||
|
"eth2"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["General", [
|
||||||
|
"chitchat",
|
||||||
|
"chitchat",
|
||||||
|
"hello",
|
||||||
|
"worldnews",
|
||||||
|
"status",
|
||||||
|
"support"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Entertainment", [
|
||||||
|
"music",
|
||||||
|
"movies",
|
||||||
|
"podcasts",
|
||||||
|
"books",
|
||||||
|
"gaming",
|
||||||
|
"adult",
|
||||||
|
"tv-shows"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Interests", [
|
||||||
|
"sports",
|
||||||
|
"travel",
|
||||||
|
"design",
|
||||||
|
"food",
|
||||||
|
"automotive"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Society", [
|
||||||
|
"climatechange",
|
||||||
|
"blacklivesmatter",
|
||||||
|
"politics",
|
||||||
|
"hongkong",
|
||||||
|
"privacy"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Crypto", [
|
||||||
|
"crypto",
|
||||||
|
"markets",
|
||||||
|
"crypto-education",
|
||||||
|
"ethereum",
|
||||||
|
"bitcoin",
|
||||||
|
"chainlink",
|
||||||
|
"avalanche",
|
||||||
|
"eth2",
|
||||||
|
"eips",
|
||||||
|
"dap-ps",
|
||||||
|
"cryptolife",
|
||||||
|
"governance",
|
||||||
|
"staking",
|
||||||
|
"defi",
|
||||||
|
"cryptopayments",
|
||||||
|
"tokenomics",
|
||||||
|
"web3",
|
||||||
|
"web3design",
|
||||||
|
"devcon",
|
||||||
|
"exchange",
|
||||||
|
"validators"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Technologies", [
|
||||||
|
"tech",
|
||||||
|
"ai",
|
||||||
|
"vr-ar",
|
||||||
|
"networks"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Status", [
|
||||||
|
"status",
|
||||||
|
"support",
|
||||||
|
"statusphere",
|
||||||
|
"status-townhall-questions",
|
||||||
|
"status-core-ui",
|
||||||
|
"status-keycard",
|
||||||
|
"nimbus-general",
|
||||||
|
"status-assemble",
|
||||||
|
"status-marketing",
|
||||||
|
"status-protocol",
|
||||||
|
"status-desktop",
|
||||||
|
"status-watercooler",
|
||||||
|
"status-security",
|
||||||
|
"waku",
|
||||||
|
"status-docs",
|
||||||
|
"status-general",
|
||||||
|
"status-design"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Development", [
|
||||||
|
"ethereum-clients",
|
||||||
|
"storage",
|
||||||
|
"indexing",
|
||||||
|
"sidechains",
|
||||||
|
"layer2",
|
||||||
|
"devops",
|
||||||
|
"smart-contracts",
|
||||||
|
"embark-community",
|
||||||
|
"subspace",
|
||||||
|
"open-source",
|
||||||
|
"security"
|
||||||
|
]],
|
||||||
|
|
||||||
|
["Languages", [
|
||||||
|
"status-spanish",
|
||||||
|
"statusbrasil",
|
||||||
|
"status-german",
|
||||||
|
"status-french",
|
||||||
|
"status-italiano",
|
||||||
|
"status-dutch",
|
||||||
|
"status-russian",
|
||||||
|
"status-chinese",
|
||||||
|
"status-korean",
|
||||||
|
"status-japanese",
|
||||||
|
"status-farsi",
|
||||||
|
"status-turkish",
|
||||||
|
"status-filipino",
|
||||||
|
"status-naija",
|
||||||
|
"status-indian",
|
||||||
|
"indonesian"
|
||||||
|
]]
|
||||||
|
]
|
||||||
|
}
|
BIN
resources/images/icons/channel@2x.png
Normal file
BIN
resources/images/icons/channel@2x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 497 B |
BIN
resources/images/icons/channel@3x.png
Normal file
BIN
resources/images/icons/channel@3x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 740 B |
Binary file not shown.
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 6.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 9.5 KiB |
@ -48,7 +48,8 @@
|
|||||||
;; in the SHADOW_HOST env variable to make sure that
|
;; in the SHADOW_HOST env variable to make sure that
|
||||||
;; it will use the right interface
|
;; it will use the right interface
|
||||||
:local-ip #shadow/env "SHADOW_HOST"}
|
:local-ip #shadow/env "SHADOW_HOST"}
|
||||||
:chunks {:fleets status-im.default-fleet/default-fleets}
|
:chunks {:fleets status-im.default-fleet/default-fleets
|
||||||
|
:chats status-im.chat.default-chats/default-chats}
|
||||||
:release {:compiler-options {:output-feature-set :es6
|
:release {:compiler-options {:output-feature-set :es6
|
||||||
;;disable for android build as there
|
;;disable for android build as there
|
||||||
;;is an intermittent warning with deftype
|
;;is an intermittent warning with deftype
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
(ns mocks.js-dependencies
|
(ns mocks.js-dependencies
|
||||||
(:require-macros [status-im.utils.slurp :refer [slurp]])
|
(:require-macros [status-im.utils.slurp :refer [slurp]])
|
||||||
(:require [status-im.default-fleet :refer (default-fleets)]))
|
(:require [status-im.default-fleet :refer (default-fleets)])
|
||||||
|
(:require [status-im.chat.default-chats :refer (default-chats)]))
|
||||||
|
|
||||||
(def action-button #js {:default #js {:Item #js {}}})
|
(def action-button #js {:default #js {:Item #js {}}})
|
||||||
(def config #js {:default #js {}})
|
(def config #js {:default #js {}})
|
||||||
@ -202,6 +203,7 @@
|
|||||||
"react-native-image-resizer" image-resizer
|
"react-native-image-resizer" image-resizer
|
||||||
"react-native-haptic-feedback" react-native-haptic-feedback
|
"react-native-haptic-feedback" react-native-haptic-feedback
|
||||||
"./fleets.js" default-fleets
|
"./fleets.js" default-fleets
|
||||||
|
"./chats.js" default-chats
|
||||||
"../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json"))
|
"../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json"))
|
||||||
"../translations/de.json" (js/JSON.parse (slurp "./translations/de.json"))
|
"../translations/de.json" (js/JSON.parse (slurp "./translations/de.json"))
|
||||||
"../translations/en.json" (js/JSON.parse (slurp "./translations/en.json"))
|
"../translations/en.json" (js/JSON.parse (slurp "./translations/en.json"))
|
||||||
|
5
src/status_im/chat/default_chats.cljs
Normal file
5
src/status_im/chat/default_chats.cljs
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
(ns status-im.chat.default-chats
|
||||||
|
(:require-macros [status-im.utils.slurp :refer [slurp]]))
|
||||||
|
|
||||||
|
(def default-chats
|
||||||
|
(slurp "resources/chats.json"))
|
@ -14,7 +14,11 @@
|
|||||||
[status-im.utils.clocks :as utils.clocks]
|
[status-im.utils.clocks :as utils.clocks]
|
||||||
[status-im.utils.fx :as fx]
|
[status-im.utils.fx :as fx]
|
||||||
[status-im.utils.utils :as utils]
|
[status-im.utils.utils :as utils]
|
||||||
[status-im.chat.models.loading :as loading]))
|
[status-im.chat.models.loading :as loading]
|
||||||
|
[status-im.utils.types :as types]))
|
||||||
|
|
||||||
|
(defn chats []
|
||||||
|
(:chats (types/json->clj (js/require "./chats.js"))))
|
||||||
|
|
||||||
(defn- get-chat [cofx chat-id]
|
(defn- get-chat [cofx chat-id]
|
||||||
(get-in cofx [:db :chats chat-id]))
|
(get-in cofx [:db :chats chat-id]))
|
||||||
|
@ -8,7 +8,9 @@
|
|||||||
[quo.core :as quo]
|
[quo.core :as quo]
|
||||||
[status-im.ui.components.topbar :as topbar]
|
[status-im.ui.components.topbar :as topbar]
|
||||||
[status-im.ui.screens.add-new.new-public-chat.db :as db]
|
[status-im.ui.screens.add-new.new-public-chat.db :as db]
|
||||||
[status-im.ui.screens.add-new.new-public-chat.styles :as styles])
|
[status-im.chat.models :as chat.models]
|
||||||
|
[status-im.ui.components.styles :as components.styles]
|
||||||
|
[status-im.ui.components.icons.vector-icons :as icons])
|
||||||
(:require-macros [status-im.utils.views :as views]))
|
(:require-macros [status-im.utils.views :as views]))
|
||||||
|
|
||||||
(defn- start-chat [topic]
|
(defn- start-chat [topic]
|
||||||
@ -16,10 +18,7 @@
|
|||||||
(re-frame/dispatch [:set :public-group-topic nil]))
|
(re-frame/dispatch [:set :public-group-topic nil]))
|
||||||
|
|
||||||
(defn- hash-icon []
|
(defn- hash-icon []
|
||||||
[quo/text {:color :secondary
|
[icons/icon :main-icons/channel {:color colors/gray}])
|
||||||
:weight :medium
|
|
||||||
:size :x-large}
|
|
||||||
"#"])
|
|
||||||
|
|
||||||
(defn- chat-name-input [topic error]
|
(defn- chat-name-input [topic error]
|
||||||
[quo/text-input
|
[quo/text-input
|
||||||
@ -41,37 +40,69 @@
|
|||||||
^{:key topic}
|
^{:key topic}
|
||||||
[react/touchable-highlight {:on-press #(start-chat topic)
|
[react/touchable-highlight {:on-press #(start-chat topic)
|
||||||
:accessibility-label :chat-item}
|
:accessibility-label :chat-item}
|
||||||
[react/view {:padding-horizontal 4 :padding-vertical 8}
|
[react/view {:padding-right 8 :padding-vertical 8}
|
||||||
[react/view {:border-color colors/gray-lighter :border-radius 36 :border-width 1 :padding-horizontal 8 :padding-vertical 5}
|
[react/view {:border-color colors/gray-lighter :border-radius 36 :border-width 1 :padding-horizontal 8 :padding-vertical 5}
|
||||||
[react/text {:style {:color colors/blue :typography :main-medium}} (str "#" topic)]]]])
|
[react/text {:style {:color colors/blue :typography :main-medium}} (str "#" topic)]]]])
|
||||||
|
|
||||||
(def lang-names {"zh" "chinese" "ja" "japanese" "ko" "korean" "ru" "russian" "es" "spanish" "fa" "farsi"})
|
(def lang-names {"es" "status-spanish"
|
||||||
|
"pt" "statusbrasil"
|
||||||
|
"de" "status-german"
|
||||||
|
"fr" "status-french"
|
||||||
|
"it" "status-italiano"
|
||||||
|
"ru" "status-russian"
|
||||||
|
"zh" "status-chinese"
|
||||||
|
"ko" "status-korean"
|
||||||
|
"ja" "status-japanese"
|
||||||
|
"fa" "status-farsi"
|
||||||
|
"tr" "status-turkish"
|
||||||
|
"id" "indonesian"
|
||||||
|
"in" "indonesian"
|
||||||
|
"hi" "status-indian"
|
||||||
|
"fil" "status-filipino"
|
||||||
|
"nl" "status-dutch"})
|
||||||
|
|
||||||
(defn get-language-topic []
|
(defn get-language-topic []
|
||||||
(let [lang (subs (name i18n-resources/default-device-language) 0 2)
|
(let [lang (subs (name i18n-resources/default-device-language) 0 2)
|
||||||
lang-name (get lang-names lang)]
|
lang3 (subs (name i18n-resources/default-device-language) 0 3)
|
||||||
|
lang-name (or (get lang-names lang3) (get lang-names lang))]
|
||||||
(when-not (= lang "en")
|
(when-not (= lang "en")
|
||||||
[(str "status-" (or lang-name lang))])))
|
(or lang-name (str "status-" lang)))))
|
||||||
|
|
||||||
(def default-public-chats
|
(def section-featured "Featured")
|
||||||
(concat
|
|
||||||
["introductions" "chitchat" "status"]
|
(defn featured-public-chats []
|
||||||
(get-language-topic)
|
(let [lang-topic (get-language-topic)
|
||||||
["crypto" "tech" "music" "movies" "support"]))
|
chats (some #(when (= section-featured (first %)) (second %)) (chat.models/chats))]
|
||||||
|
(if lang-topic
|
||||||
|
(conj chats lang-topic)
|
||||||
|
chats)))
|
||||||
|
|
||||||
(views/defview new-public-chat []
|
(views/defview new-public-chat []
|
||||||
(views/letsubs [topic [:public-group-topic]
|
(views/letsubs [topic [:public-group-topic]
|
||||||
error [:public-chat.new/topic-error-message]]
|
error [:public-chat.new/topic-error-message]]
|
||||||
[react/view {:style styles/group-container}
|
[react/view components.styles/flex
|
||||||
[topbar/topbar {:title :t/new-public-group-chat :modal? true}]
|
[topbar/topbar {:title :t/new-public-group-chat :modal? true}]
|
||||||
[react/scroll-view {:style {:flex 1}}
|
[react/scroll-view {:style {:flex 1}}
|
||||||
[react/view {:padding-horizontal 16}
|
[react/view {:padding-horizontal 16}
|
||||||
[react/view {:align-items :center :padding-vertical 12}
|
[react/view {:align-items :center :padding-vertical 8}
|
||||||
[react/image {:source (:new-chat-header resources/ui)
|
[react/image {:source (:new-chat-header resources/ui)
|
||||||
:style {:width 160 :height 160}}]]
|
:style {:width 160 :height 160}}]]
|
||||||
[react/text {:style {:text-align :center :margin-bottom 32 :line-height 22}}
|
[react/text {:style {:text-align :center :margin-bottom 16 :line-height 22}}
|
||||||
(i18n/label :t/public-chat-description)]
|
(i18n/label :t/public-chat-description)]
|
||||||
[chat-name-input topic error]]
|
[chat-name-input topic error]]
|
||||||
[react/view {:flex-direction :row :flex-wrap :wrap :margin-top 24 :padding-horizontal 12}
|
[react/view {:margin-top 32}
|
||||||
(for [chat default-public-chats]
|
(for [[section chats] (chat.models/chats)]
|
||||||
(render-topic chat))]]]))
|
[react/view
|
||||||
|
[react/view {:margin-right 16 :padding-left 16 :padding-vertical 3
|
||||||
|
:border-bottom-width 1 :border-bottom-color colors/gray-lighter
|
||||||
|
:border-top-width 1 :border-top-color colors/gray-lighter
|
||||||
|
:border-right-width 1 :border-right-color colors/gray-lighter
|
||||||
|
:border-bottom-right-radius 14 :border-top-right-radius 14}
|
||||||
|
[quo/text {:weight :medium} section]]
|
||||||
|
[react/view {:flex-direction :row :flex-wrap :wrap :margin-vertical 8 :padding-horizontal 16}
|
||||||
|
(let [lang-topic (get-language-topic)
|
||||||
|
chats (if (and (= section-featured section) lang-topic)
|
||||||
|
(conj chats lang-topic)
|
||||||
|
chats)]
|
||||||
|
(for [chat chats]
|
||||||
|
(render-topic chat)))]])]]]))
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
:key :follow-your-interests}]
|
:key :follow-your-interests}]
|
||||||
[react/view {:style styles/tags-wrapper}
|
[react/view {:style styles/tags-wrapper}
|
||||||
[react/view {:flex-direction :row :flex-wrap :wrap :justify-content :center}
|
[react/view {:flex-direction :row :flex-wrap :wrap :justify-content :center}
|
||||||
(for [chat new-public-chat/default-public-chats]
|
(for [chat (new-public-chat/featured-public-chats)]
|
||||||
(new-public-chat/render-topic chat))]]]])
|
(new-public-chat/render-topic chat))]]]])
|
||||||
|
|
||||||
(defn welcome-blank-page []
|
(defn welcome-blank-page []
|
||||||
|
@ -76,6 +76,7 @@
|
|||||||
:component new-chat/new-contact}
|
:component new-chat/new-contact}
|
||||||
{:name :new-public-chat
|
{:name :new-public-chat
|
||||||
:transition :presentation-ios
|
:transition :presentation-ios
|
||||||
|
:insets {:bottom true}
|
||||||
:component new-public-chat/new-public-chat}
|
:component new-public-chat/new-public-chat}
|
||||||
{:name :edit-group-chat-name
|
{:name :edit-group-chat-name
|
||||||
:transition :presentation-ios
|
:transition :presentation-ios
|
||||||
|
@ -1161,5 +1161,6 @@
|
|||||||
"continue-anyway": "Continue anyway",
|
"continue-anyway": "Continue anyway",
|
||||||
"private-notifications": "Private notifications",
|
"private-notifications": "Private notifications",
|
||||||
"private-notifications-descr": "Status will notify you about new messages. You can edit your notification preferences later in settings.",
|
"private-notifications-descr": "Status will notify you about new messages. You can edit your notification preferences later in settings.",
|
||||||
"maybe-later": "Maybe later"
|
"maybe-later": "Maybe later",
|
||||||
|
"join": "Join"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user