|
1 | 1 | - message_classes = [("reply-message" if message.reply_to_id), ("message-branch-#{local_assigns[:branch_index]}" unless local_assigns[:branch_index].nil?)].compact.join(" ") |
2 | | -.message-card id=message_dom_id(message) class=message_classes |
| 2 | +- render_mode = local_assigns.fetch(:render_mode, :inline) |
| 3 | +- is_collapsed = render_mode != :inline |
| 4 | +.message-card id=message_dom_id(message) class=message_classes data-controller="message-collapse" data-message-collapse-collapsed-value=is_collapsed |
3 | 5 | - if (mid_anchor = message_id_anchor(message)) |
4 | 6 | a.message-id-anchor id=mid_anchor aria-hidden="true" |
5 | 7 | - if local_assigns[:is_first_unread] |
6 | 8 | a.message-id-anchor id="first-unread" aria-hidden="true" |
7 | 9 | - display_number = number || (@message_numbers && @message_numbers[message.id]) |
8 | | - - is_read = defined?(@read_message_ids) && @read_message_ids[message.id] |
9 | | - - if user_signed_in? |
10 | | - - read_data = { controller: "read-status", "read-status-message-id-value": message.id, "read-status-read-url-value": read_message_path(message, format: :json), "read-status-delay-seconds-value": read_visibility_seconds } |
11 | | - - read_classes = ["message-content", ("is-read" if is_read)].compact |
12 | | - - else |
13 | | - - read_data = {} |
14 | | - - read_classes = ["message-content"] |
15 | 10 | .message-header |
16 | 11 | .message-author |
17 | 12 | .author-row |
|
53 | 48 | i.fa-solid.fa-building-columns |
54 | 49 | = link_to "https://www.postgresql.org/message-id/resend/#{ERB::Util.url_encode(message.message_id)}", target: "_blank", rel: "noopener", data: { turbo: false }, title: "Resend from postgresql.org archive", "aria-label": "Resend from postgresql.org archive" do |
55 | 50 | i.fa-solid.fa-paper-plane |
| 51 | + button.message-collapse-toggle type="button" data-action="click->message-collapse#toggle" aria-label="Toggle message" |
| 52 | + i.fa-solid class=(is_collapsed ? "fa-chevron-down" : "fa-chevron-up") |
56 | 53 |
|
57 | | - .message-content class=read_classes.join(" ") data=read_data |
58 | | - - if message.subject != @topic.title && message.subject.present? |
59 | | - .message-subject = message.subject |
60 | | - |
61 | | - .message-body |
62 | | - = render_message_body(message.body) |
63 | | - |
64 | | - - if message.attachments.any? |
65 | | - .message-attachments id="message-#{message.id}-attachments" |
66 | | - h4 Attachments: |
67 | | - - message.attachments.each do |attachment| |
68 | | - - if attachment.patch? || attachment.text? |
69 | | - details.attachment |
70 | | - summary.attachment-info |
71 | | - span.attachment-summary-row |
72 | | - span.filename = attachment.file_name |
73 | | - span.content-type = attachment.content_type if attachment.content_type |
74 | | - = link_to "Download", attachment_path(attachment), class: "attachment-download", download: attachment.file_name, data: { turbo: false } |
75 | | - - if attachment.patch? |
76 | | - - stats = attachment.diff_line_stats |
77 | | - - if stats[:added].positive? || stats[:removed].positive? |
78 | | - span.patchset-stats aria-label="Patch line changes" title="Lines added and removed by this patch" |
79 | | - span.patchset-added +#{stats[:added]} |
80 | | - span.patchset-removed -#{stats[:removed]} |
81 | | - pre.attachment-content |
82 | | - code data-controller=("diff-highlight" if attachment.patch?) |
83 | | - = attachment.decoded_body_utf8 |
84 | | - - else |
85 | | - .attachment |
86 | | - .attachment-info |
87 | | - span.filename = attachment.file_name |
88 | | - span.content-type = attachment.content_type if attachment.content_type |
89 | | - = link_to "Download", attachment_path(attachment), class: "attachment-download", download: attachment.file_name, data: { turbo: false } |
90 | | - |
91 | | - - if message.import_log.present? |
92 | | - .import-metadata |
93 | | - details |
94 | | - summary Import Notes |
95 | | - pre.import-log = message.import_log |
96 | | - |
97 | | - - notes_for_message = @notes_by_message&.[](message.id) || [] |
98 | | - - if user_signed_in? |
99 | | - = render "notes/note_stack", topic: @topic, message: message, notes: notes_for_message |
| 54 | + .message-body-wrapper |
| 55 | + - if render_mode == :inline |
| 56 | + = render "topics/message_body", message: message |
| 57 | + - elsif render_mode == :collapsed |
| 58 | + = turbo_frame_tag "message-body-#{message.id}", src: message_content_path(message) |
0 commit comments