From 00818697ef2a8e1392d0fbc7ceeee14168e7f1e5 Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Mon, 3 Nov 2025 16:01:59 +0100 Subject: [PATCH 1/2] Use page refreshes with morphing to avoid flickering Replacing the card container will reload the frame. Also, see https://github.com/basecamp/fizzy/commit/5b70320a6b64adf2d1e0be4bd7dc221a5ba80c95 --- app/controllers/cards/triages_controller.rb | 4 ++-- test/controllers/cards/triages_controller_test.rb | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/controllers/cards/triages_controller.rb b/app/controllers/cards/triages_controller.rb index 12fe1a5fb..10fb3df34 100644 --- a/app/controllers/cards/triages_controller.rb +++ b/app/controllers/cards/triages_controller.rb @@ -5,11 +5,11 @@ class Cards::TriagesController < ApplicationController column = @card.collection.columns.find(params[:column_id]) @card.triage_into(column) - render_card_replacement + redirect_to @card end def destroy @card.send_back_to_triage - render_card_replacement + redirect_to @card end end diff --git a/test/controllers/cards/triages_controller_test.rb b/test/controllers/cards/triages_controller_test.rb index 8439d70f9..9076cdade 100644 --- a/test/controllers/cards/triages_controller_test.rb +++ b/test/controllers/cards/triages_controller_test.rb @@ -12,7 +12,7 @@ class Cards::TriagesControllerTest < ActionDispatch::IntegrationTest assert_changes -> { card.reload.column }, from: original_column, to: column do post card_triage_path(card, column_id: column.id) - assert_card_container_rerendered(card) + assert_redirected_to card end end @@ -20,8 +20,8 @@ class Cards::TriagesControllerTest < ActionDispatch::IntegrationTest card = cards(:shipping) assert_changes -> { card.reload.column }, to: nil do - delete card_triage_path(card) - assert_card_container_rerendered(card) + delete card_triage_path(card), as: :turbo_stream + assert_redirected_to card end end end From 24da4066b731f297d70a900cb0c401150dea91ce Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Mon, 3 Nov 2025 16:06:55 +0100 Subject: [PATCH 2/2] Refresh the full meta area so that the assignee name gets updated too --- app/controllers/cards/assignments_controller.rb | 3 +-- test/controllers/cards/assignments_controller_test.rb | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/controllers/cards/assignments_controller.rb b/app/controllers/cards/assignments_controller.rb index 7b9464a61..9516ebc2f 100644 --- a/app/controllers/cards/assignments_controller.rb +++ b/app/controllers/cards/assignments_controller.rb @@ -6,7 +6,6 @@ class Cards::AssignmentsController < ApplicationController def create @card.toggle_assignment @collection.users.active.find(params[:assignee_id]) - - render turbo_stream: turbo_stream.replace([ @card, :assignees ], partial: "cards/display/perma/assignees", locals: { card: @card.reload }) + render turbo_stream: turbo_stream.replace([ @card, :meta ], partial: "/cards/display/perma/meta", method: "morph", locals: { card: @card.reload }) end end diff --git a/test/controllers/cards/assignments_controller_test.rb b/test/controllers/cards/assignments_controller_test.rb index 3c5e26997..9cfcc469f 100644 --- a/test/controllers/cards/assignments_controller_test.rb +++ b/test/controllers/cards/assignments_controller_test.rb @@ -13,17 +13,17 @@ class Cards::AssignmentsControllerTest < ActionDispatch::IntegrationTest test "create" do assert_changes "cards(:logo).assigned_to?(users(:david))", from: false, to: true do post card_assignments_path(cards(:logo)), params: { assignee_id: users(:david).id }, as: :turbo_stream - assert_assignees_replaced(cards(:logo)) + assert_meta_replaced(cards(:logo)) end assert_changes "cards(:logo).assigned_to?(users(:david))", from: true, to: false do post card_assignments_path(cards(:logo)), params: { assignee_id: users(:david).id }, as: :turbo_stream - assert_assignees_replaced(cards(:logo)) + assert_meta_replaced(cards(:logo)) end end private - def assert_assignees_replaced(card) - assert_turbo_stream action: :replace, target: dom_id(card, :assignees) + def assert_meta_replaced(card) + assert_turbo_stream action: :replace, target: dom_id(card, :meta) end end