Merge pull request #369 from status-im/bug/ui-fixes

Several UI fixes (#362, #364, #367)
This commit is contained in:
Roman Volosovskyi 2016-10-19 09:35:27 +03:00 committed by GitHub
commit 891507f767
9 changed files with 70 additions and 88 deletions

View File

@ -261,52 +261,6 @@
:textAlign :center
:color text2-color})
(def online-container
{:position :absolute
:top 44
:left 44
:width 24
:height 24
:borderRadius 12
:backgroundColor online-color
:borderWidth 2
:borderColor color-white})
(def online-dot
{:position :absolute
:top 8
:width 4
:height 4
:borderRadius 2
:backgroundColor color-white})
(def online-dot-left
(assoc online-dot :left 5))
(def online-dot-right
(assoc online-dot :left 11))
(def contact-photo-container
{:borderRadius 32})
(def contact-photo
{:border-radius 32
:width 64
:height 64})
(def message-date-container
{:backgroundColor color-light-blue-transparent
:height 24
:borderRadius 12
:alignSelf :center
:marginTop 20
:marginBottom 20
:paddingTop 5
:paddingHorizontal 12})
(def message-date-text
(assoc style-sub-text :textAlign :center))
(defn message-container [height]
{:height height})

View File

@ -24,30 +24,15 @@
content-type-status
content-type-command
content-type-command-request]]
[status-im.components.chat-icon.screen :refer [chat-icon-message-status]]
[status-im.utils.identicon :refer [identicon]]
[status-im.utils.gfycat.core :refer [generate-gfy]]
[status-im.i18n :refer [label]]
[status-im.chat.utils :as cu]
[clojure.string :as str]))
(defn contact-photo [photo-path]
[view st/contact-photo-container
[image {:source (if (s/blank? photo-path)
res/user-no-photo
{:uri photo-path})
:style st/contact-photo}]])
(defn contact-online [online?]
(when online?
[view st/online-container
[view st/online-dot-left]
[view st/online-dot-right]]))
;;[photo-path (subscribe [:chat-photo from])
(defn message-content-status [{:keys [from]}]
(let [chat-photo-path (subscribe [:chat-photo from])
{:keys [group-chat name]} (subscribe [:chat-properties [:group-chat :name]])
(defn message-content-status [_]
(let [{:keys [chat-id group-chat name color]} (subscribe [:chat-properties [:chat-id :group-chat :name :color]])
members (subscribe [:current-chat-contacts])]
(fn [{:keys [messages-count content datemark]}]
(let [{:keys [photo-path
@ -56,13 +41,9 @@
{:photo-path nil
:status nil
:last-online 0}
(first @members))
online? (-> (- (time/now-ms) last-online)
(< (* 60 1000)))]
(first @members))]
[view st/status-container
[view st/status-image-view
[contact-photo (or photo-path @chat-photo-path)]
[contact-online online?]]
[chat-icon-message-status @chat-id @group-chat @name @color false]
[text {:style st/status-from
:font :default
:number-of-lines 1}

View File

@ -4,13 +4,10 @@
text
image
touchable-highlight]]
[status-im.chats-list.views.inner-item :refer [chat-list-item-inner-view]]))
[status-im.chats-list.views.inner-item :refer [chat-list-item-inner-view]]
[taoensso.timbre :as log]))
(defn chat-list-item [[chat-id chat]]
[touchable-highlight {:on-press #(dispatch [:navigate-to :chat chat-id])}
[view
[chat-list-item-inner-view (merge chat
;; TODO stub data
{:chat-id chat-id
:new-messages-count 3
:online true})]]])
[chat-list-item-inner-view (assoc chat :chat-id chat-id)]]])

View File

@ -1,20 +1,37 @@
(ns status-im.chats-list.views.inner-item
(:require-macros [status-im.utils.views :refer [defview]])
(:require [status-im.components.react :refer [view image icon text]]
(:require [re-frame.core :refer [subscribe dispatch]]
[clojure.string :as str]
[status-im.components.react :refer [view image icon text]]
[status-im.components.chat-icon.screen :refer [chat-icon-view-chat-list]]
[status-im.models.commands :refer [parse-command-message-content]]
[status-im.chats-list.styles :as st]
[status-im.utils.utils :refer [truncate-str]]
[status-im.i18n :refer [label label-pluralize]]
[status-im.utils.datetime :as time]
[status-im.utils.gfycat.core :refer [generate-gfy]]
[status-im.constants :refer [console-chat-id]]
[clojure.string :as str]))
[status-im.constants :refer [console-chat-id
content-type-command
content-type-command-request]]
[taoensso.timbre :as log]))
(defn message-content [{:keys [content] :as message}]
(let [content (if message
(if (string? content)
content
(:content content)))]
(defmulti message-content (fn [{:keys [content-type] :as message}] content-type))
(defmethod message-content content-type-command
[{{:keys [command params]} :content}]
(let [kw (keyword (str "t/command-text-" (name command)))]
(label kw params)))
(defmethod message-content content-type-command-request
[{{:keys [content]} :content}]
content)
(defmethod message-content :default
[{:keys [content]}]
content)
(defn message-content-text [message]
(let [content (message-content message)]
(if (str/blank? content)
[text {:style st/last-message-text-no-messages}
(label :t/no-messages)]
@ -71,7 +88,7 @@
(when group-chat
[text {:style st/memebers-text}
(label-pluralize (inc (count contacts)) :t/members)])]
[message-content last-message]]
[message-content-text last-message]]
[view
(when last-message
[view st/status-container

View File

@ -78,6 +78,16 @@
:default-chat-icon (st/default-chat-icon-menu-item color)
:default-chat-icon-text st/default-chat-icon-text}])
(defn chat-icon-message-status [chat-id group-chat name color online]
[chat-icon-view chat-id group-chat name online
{:container st/container-message-status
:online-view st/online-view
:online-dot-left st/online-dot-left
:online-dot-right st/online-dot-right
:chat-icon st/chat-icon-message-status
:default-chat-icon (st/default-chat-icon-message-status color)
:default-chat-icon-text st/message-status-icon-text}])
(defn contact-icon-view [contact styles]
(let [photo-path (:photo-path contact)
;; TODO: stub

View File

@ -35,12 +35,23 @@
:height 36
:border-radius 18}))
(defn default-chat-icon-message-status [color]
(merge (default-chat-icon color)
{:width 64
:height 64
:border-radius 32}))
(def default-chat-icon-text
{:marginTop -2
:color color-white
:fontSize 16
:lineHeight 20})
(def message-status-icon-text
{:marginTop -2
:color color-white
:fontSize 24})
(def chat-icon
{:margin 4
:border-radius 20
@ -70,6 +81,11 @@
:height 36
:border-radius 18}))
(def chat-icon-message-status
{:border-radius 32
:width 64
:height 64})
(def online-view-wrapper
{:position :absolute
:bottom -1
@ -152,3 +168,6 @@
(def container-profile
{:width 72
:height 72})
(def container-message-status
{:margin-top 20})

View File

@ -65,7 +65,9 @@
(defn get-last-message
[chat-id]
(data-store/get-last-message chat-id))
(let [{:keys [content-type] :as message} (data-store/get-last-message chat-id)]
(when (and message (command-type? content-type))
(clojure.core/update message :content str-to-map))))
(defn get-unviewed
[]

View File

@ -31,8 +31,7 @@
[chat-id]
(-> (realm/get-by-field @realm/account-realm :message :chat-id chat-id)
(realm/sorted :timestamp :desc)
(realm/single)
(js->clj :keywordize-keys true)))
(realm/single-cljs)))
(defn get-unviewed
[]

View File

@ -139,6 +139,9 @@
:keypair-password-command-description ""
:help-command-description "Help"
:request "Request"
:command-text-location "Location: {{address}}"
:command-text-browse "Browsing webpage: {{webpage}}"
:command-text-send "Transaction: {{amount}} ETH"
;new-group
:group-chat-name "Chat name"