Skip to content

Commit f30f1f7

Browse files
committed
Make the collapsed by default read messages a user setting
enabled by default
1 parent 9aa3140 commit f30f1f7

6 files changed

Lines changed: 23 additions & 4 deletions

File tree

app/controllers/settings/preferences_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def update
1313
private
1414

1515
def preferences_params
16-
params.require(:user).permit(:mention_restriction, :open_threads_at_first_unread)
16+
params.require(:user).permit(:mention_restriction, :open_threads_at_first_unread, :collapse_read_messages)
1717
end
1818
end
1919
end

app/views/settings/profiles/show.html.slim

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,13 @@
4949
span.radio-text
5050
strong Open at first unread
5151
span.radio-description Jump to first unread message in the thread if the title was clicked
52+
h2 Thread Display
53+
p.settings-hint Control how messages are displayed in threads.
54+
.form-group
55+
.radio-group
56+
label
57+
= f.check_box :collapse_read_messages
58+
span.radio-text
59+
strong Collapse read messages
60+
span.radio-description Automatically collapse already-read messages when opening a thread
5261
= f.submit "Save", class: "button-primary"

app/views/topics/_message.html.slim

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
- render_mode = local_assigns.fetch(:render_mode, :inline)
22
- is_read = local_assigns.fetch(:is_read, false)
3-
- is_collapsed = (render_mode == :collapsed) || (render_mode == :shell && is_read)
3+
- collapse_read = local_assigns.fetch(:collapse_read, true)
4+
- is_collapsed = (render_mode == :collapsed) || (render_mode == :shell && is_read && collapse_read)
45
- message_classes = [("reply-message" if message.reply_to_id), ("message-branch-#{local_assigns[:branch_index]}" unless local_assigns[:branch_index].nil?), ("is-collapsed" if is_collapsed)].compact.join(" ")
56
.message-card id=message_dom_id(message) class=message_classes data-controller="message-collapse" data-message-collapse-collapsed-value=is_collapsed data-message-id=message.id data-read=(is_read ? "true" : "false")
67
- if (mid_anchor = message_id_anchor(message))

app/views/topics/show.html.slim

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@
197197
- if user_signed_in?
198198
= link_to "Jump to unread", "#first-unread", class: "button button-secondary button-small", title: "Jump to first unread message", "aria-label": "Jump to first unread message"
199199

200+
- collapse_read = !user_signed_in? || current_user.collapse_read_messages?
200201
- first_unread_found = false
201202
- unread_inline_count = 0
202203
- @messages.each do |message|
@@ -213,7 +214,7 @@
213214
- else
214215
- render_mode = :shell
215216
- branch_index = @message_branch_index&.dig(message.id)
216-
= render 'message', message: message, number: @message_numbers[message.id], is_first_unread: is_first_unread, branch_index: branch_index, render_mode: render_mode, is_read: !!is_read
217+
= render 'message', message: message, number: @message_numbers[message.id], is_first_unread: is_first_unread, branch_index: branch_index, render_mode: render_mode, is_read: !!is_read, collapse_read: collapse_read
217218

218219
.topic-navigation
219220
= link_to "← Back to Topics", topics_path, class: "back-link"
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# frozen_string_literal: true
2+
3+
class AddCollapseReadMessagesToUsers < ActiveRecord::Migration[7.1]
4+
def change
5+
add_column :users, :collapse_read_messages, :boolean, default: true, null: false
6+
end
7+
end

db/schema.rb

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)