From 8ddb09b53bdd57f280f7ff70ed42fc5ca5b1b271 Mon Sep 17 00:00:00 2001 From: Artemiy Solopov Date: Thu, 27 Nov 2025 01:23:40 +0200 Subject: [PATCH] Broadcasting status change --- app/services/tasks/change_status.rb | 16 ++++++++++++++++ app/views/tasks/show.html.slim | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/app/services/tasks/change_status.rb b/app/services/tasks/change_status.rb index a15d176..8d925d0 100644 --- a/app/services/tasks/change_status.rb +++ b/app/services/tasks/change_status.rb @@ -9,6 +9,8 @@ module Tasks delegate :model_name, to: Task + after_success :broadcast_status_changes + def perform(task) @task = task @id = task.id @@ -18,5 +20,19 @@ module Tasks @task.status_id = status_id save @task end + + private + + def broadcast_status_changes + view_model_with_form = Tasks::Statuses::SelectorViewModel.new(task, with_form: true) + view_model_no_form = Tasks::Statuses::SelectorViewModel.new(task, with_form: false) + + task.broadcast_replace_to [task, :status, :with_form], + target: view_model_with_form.dom_id, + renderable: view_model_with_form + task.broadcast_replace_to [task, :status, :no_form], + target: view_model_no_form.dom_id, + renderable: view_model_no_form + end end end diff --git a/app/views/tasks/show.html.slim b/app/views/tasks/show.html.slim index 6e2cb75..aaade18 100644 --- a/app/views/tasks/show.html.slim +++ b/app/views/tasks/show.html.slim @@ -3,7 +3,9 @@ div h1= @task.title section.task-show-info - = task_status_selector @task, id: "task_status_selector_#{@task.id}", with_form: true + = task_status_selector @task, with_form: true + = turbo_stream_from @task, :status, :with_form + section= @task.description