|
87 | 87 | timestamp-str]])))
|
88 | 88 |
|
89 | 89 | (defview quoted-message
|
90 |
| - [_ {:keys [from parsed-text image]} current-public-key public? pinned] |
91 |
| - (letsubs [contact-name [:contacts/contact-name-by-identity from]] |
92 |
| - [react/view {:style (style/quoted-message-container)} |
93 |
| - [react/view {:style style/quoted-message-author-container} |
94 |
| - [chat.utils/format-reply-author |
95 |
| - from |
96 |
| - contact-name |
97 |
| - current-public-key |
98 |
| - (partial style/quoted-message-author (not pinned)) |
99 |
| - false]] |
100 |
| - (if (and image |
101 |
| - ;; Disabling images for public-chats |
102 |
| - (not public?)) |
103 |
| - [fast-image/fast-image {:style {:width 56 |
104 |
| - :height 56 |
105 |
| - :background-color :black |
106 |
| - :border-radius 4} |
107 |
| - :source {:uri image}}] |
108 |
| - [react/text {:style (style/quoted-message-text) |
109 |
| - :number-of-lines 5} |
110 |
| - (components.reply/get-quoted-text-with-mentions parsed-text)])])) |
| 90 | + [_ reply] |
| 91 | + [react/view {:style (style/quoted-message-container)} |
| 92 | + [components.reply/reply-message reply false]]) |
111 | 93 |
|
112 | 94 | (defn render-inline [message-text content-type acc {:keys [type literal destination]}]
|
113 | 95 | (case type
|
|
312 | 294 | identicon
|
313 | 295 | from in-popover? timestamp-str]
|
314 | 296 | :as message} content {:keys [modal close-modal]}]
|
315 |
| - [react/view {:style (style/message-wrapper message) |
316 |
| - :pointer-events :box-none |
317 |
| - :accessibility-label :chat-item} |
318 |
| - [react/view {:style (style/message-body) |
319 |
| - :pointer-events :box-none} |
320 |
| - [react/view (style/message-author-userpic) |
321 |
| - (when last-in-group? |
322 |
| - [react/touchable-highlight {:on-press #(do (when modal (close-modal)) |
323 |
| - (re-frame/dispatch [:chat.ui/show-profile from]))} |
324 |
| - [photos/member-photo from identicon]])] |
325 |
| - [react/view {:style (style/message-author-wrapper)} |
326 |
| - (when last-in-group? |
327 |
| - [react/view {:style {:flex-direction :row :align-items :center}} |
328 |
| - [react/touchable-opacity {:style style/message-author-touchable |
329 |
| - :disabled in-popover? |
330 |
| - :on-press #(do (when modal (close-modal)) |
331 |
| - (re-frame/dispatch [:chat.ui/show-profile from]))} |
332 |
| - [message-author-name from {:modal modal}]] |
333 |
| - [react/text |
334 |
| - {:style (merge |
335 |
| - {:padding-left 5 |
336 |
| - :margin-top 2} |
337 |
| - (style/message-timestamp-text)) |
338 |
| - :accessibility-label :message-timestamp} |
339 |
| - timestamp-str]]) |
| 297 | + (let [response-to (:response-to (:content message))] |
| 298 | + [react/view {:style (style/message-wrapper message) |
| 299 | + :pointer-events :box-none |
| 300 | + :accessibility-label :chat-item} |
| 301 | + (when (and (seq response-to) (:quoted-message message)) |
| 302 | + [quoted-message response-to (:quoted-message message)]) |
| 303 | + [react/view {:style (style/message-body) |
| 304 | + :pointer-events :box-none} |
| 305 | + [react/view (style/message-author-userpic) |
| 306 | + (when (or (and (seq response-to) (:quoted-message message)) last-in-group?) |
| 307 | + [react/touchable-highlight {:on-press #(do (when modal (close-modal)) |
| 308 | + (re-frame/dispatch [:chat.ui/show-profile from]))} |
| 309 | + [photos/member-photo from identicon]])] |
| 310 | + [react/view {:style (style/message-author-wrapper)} |
| 311 | + (when (or (and (seq response-to) (:quoted-message message)) last-in-group?) |
| 312 | + [react/view {:style {:flex-direction :row :align-items :center}} |
| 313 | + [react/touchable-opacity {:style style/message-author-touchable |
| 314 | + :disabled in-popover? |
| 315 | + :on-press #(do (when modal (close-modal)) |
| 316 | + (re-frame/dispatch [:chat.ui/show-profile from]))} |
| 317 | + [message-author-name from {:modal modal}]] |
| 318 | + [react/text |
| 319 | + {:style (merge |
| 320 | + {:padding-left 5 |
| 321 | + :margin-top 2} |
| 322 | + (style/message-timestamp-text)) |
| 323 | + :accessibility-label :message-timestamp} |
| 324 | + timestamp-str]]) |
340 | 325 | ;;MESSAGE CONTENT
|
341 |
| - content |
342 |
| - [link-preview/link-preview-wrapper (:links (:content message)) false false]]] |
| 326 | + content |
| 327 | + [link-preview/link-preview-wrapper (:links (:content message)) false false]]] |
343 | 328 | ; delivery status
|
344 |
| - [react/view (style/delivery-status) |
345 |
| - [message-delivery-status message]]]) |
| 329 | + [react/view (style/delivery-status) |
| 330 | + [message-delivery-status message]]])) |
346 | 331 |
|
347 | 332 | (def image-max-width 260)
|
348 | 333 | (def image-max-height 192)
|
|
449 | 434 | (defn collapsible-text-message [_ _]
|
450 | 435 | (let [collapsed? (reagent/atom false)
|
451 | 436 | show-timestamp? (reagent/atom false)]
|
452 |
| - (fn [{:keys [content current-public-key public? pinned in-popover?] :as message} on-long-press modal] |
| 437 | + (fn [{:keys [content in-popover?] :as message} on-long-press modal] |
453 | 438 | [react/touchable-highlight
|
454 | 439 | (when-not modal
|
455 | 440 | {:on-press (fn [_]
|
|
466 | 451 | [message-timestamp message show-timestamp?]
|
467 | 452 | [react/view {:style (style/message-view message)}
|
468 | 453 | [react/view {:style (style/message-view-content)}
|
469 |
| - (let [response-to (:response-to content)] |
470 |
| - [react/view |
471 |
| - (when (and (seq response-to) (:quoted-message message)) |
472 |
| - [quoted-message response-to (:quoted-message message) current-public-key public? pinned]) |
473 |
| - [render-parsed-text-with-message-status message (:parsed-text content)]])]]]]))) |
| 454 | + [react/view |
| 455 | + [render-parsed-text-with-message-status message (:parsed-text content)]]]]]]))) |
474 | 456 |
|
475 | 457 | (defmethod ->message constants/content-type-text
|
476 | 458 | [message {:keys [on-long-press modal] :as reaction-picker}]
|
|
494 | 476 |
|
495 | 477 | (defmethod ->message constants/content-type-emoji []
|
496 | 478 | (let [show-timestamp? (reagent/atom false)]
|
497 |
| - (fn [{:keys [content current-public-key outgoing public? pinned in-popover? message-pin-enabled] :as message} |
| 479 | + (fn [{:keys [content pinned in-popover? message-pin-enabled] :as message} |
498 | 480 | {:keys [on-long-press modal]
|
499 | 481 | :as reaction-picker}]
|
500 |
| - (let [response-to (:response-to content)] |
501 |
| - [message-content-wrapper message |
502 |
| - [react/touchable-highlight (when-not modal |
503 |
| - {:disabled in-popover? |
504 |
| - :on-press (fn [] |
505 |
| - (react/dismiss-keyboard!) |
506 |
| - (reset! show-timestamp? true)) |
507 |
| - :delay-long-press 100 |
508 |
| - :on-long-press (fn [] |
509 |
| - (on-long-press |
510 |
| - (concat |
511 |
| - [{:on-press #(re-frame/dispatch [:chat.ui/reply-to-message message]) |
512 |
| - :id :reply |
513 |
| - :label (i18n/label :t/message-reply)} |
514 |
| - {:on-press #(react/copy-to-clipboard (get content :text)) |
515 |
| - :id :copy |
516 |
| - :label (i18n/label :t/sharing-copy-to-clipboard)}] |
517 |
| - (when message-pin-enabled [{:on-press #(pin-message message) |
518 |
| - :label (if pinned (i18n/label :t/unpin) (i18n/label :t/pin))}]))))}) |
519 |
| - [react/view style/message-view-wrapper |
520 |
| - [message-timestamp message show-timestamp?] |
521 |
| - [react/view (style/message-view message) |
522 |
| - [react/view {:style (style/message-view-content)} |
523 |
| - [react/view {:style (style/style-message-text)} |
524 |
| - (when (and (seq response-to) (:quoted-message message)) |
525 |
| - [quoted-message response-to (:quoted-message message) outgoing current-public-key public? pinned]) |
526 |
| - [react/text {:style (style/emoji-message message)} |
527 |
| - (:text content)]] |
528 |
| - [message-status message]]]]] |
529 |
| - reaction-picker])))) |
| 482 | + [message-content-wrapper message |
| 483 | + [react/touchable-highlight (when-not modal |
| 484 | + {:disabled in-popover? |
| 485 | + :on-press (fn [] |
| 486 | + (react/dismiss-keyboard!) |
| 487 | + (reset! show-timestamp? true)) |
| 488 | + :delay-long-press 100 |
| 489 | + :on-long-press (fn [] |
| 490 | + (on-long-press |
| 491 | + (concat |
| 492 | + [{:on-press #(re-frame/dispatch [:chat.ui/reply-to-message message]) |
| 493 | + :id :reply |
| 494 | + :label (i18n/label :t/message-reply)} |
| 495 | + {:on-press #(react/copy-to-clipboard (get content :text)) |
| 496 | + :id :copy |
| 497 | + :label (i18n/label :t/sharing-copy-to-clipboard)}] |
| 498 | + (when message-pin-enabled [{:on-press #(pin-message message) |
| 499 | + :label (if pinned (i18n/label :t/unpin) (i18n/label :t/pin))}]))))}) |
| 500 | + [react/view style/message-view-wrapper |
| 501 | + [message-timestamp message show-timestamp?] |
| 502 | + [react/view (style/message-view message) |
| 503 | + [react/view {:style (style/message-view-content)} |
| 504 | + [react/view {:style (style/style-message-text)} |
| 505 | + [react/text {:style (style/emoji-message message)} |
| 506 | + (:text content)]] |
| 507 | + [message-status message]]]]] |
| 508 | + reaction-picker]))) |
530 | 509 |
|
531 | 510 | (defmethod ->message constants/content-type-sticker
|
532 | 511 | [{:keys [content from outgoing in-popover?]
|
|
0 commit comments