From 88e5aea11a15db52d523fb04cb04265c09fdcc68 Mon Sep 17 00:00:00 2001 From: wandji20 Date: Tue, 15 Oct 2024 04:44:39 +0100 Subject: [PATCH] Replace admin report CableReady broadcast with ActionCable --- app/jobs/report_job.rb | 25 +++++++++++-------- .../controllers/scoped_channel_controller.js | 5 ++-- spec/jobs/report_job_spec.rb | 8 +++--- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/app/jobs/report_job.rb b/app/jobs/report_job.rb index 0367ddd259..42b1a29ebc 100644 --- a/app/jobs/report_job.rb +++ b/app/jobs/report_job.rb @@ -2,7 +2,6 @@ # Renders a report and stores it in a given blob. class ReportJob < ApplicationJob - include CableReady::Broadcaster delegate :render, to: ActionController::Base before_perform :enable_active_storage_urls @@ -39,21 +38,25 @@ class ReportJob < ApplicationJob end def broadcast_result(channel, format, blob) - cable_ready[channel] - .inner_html( + ActionCable.server.broadcast( + channel, + { selector: "#report-go", html: Spree::Admin::BaseController.helpers.button(I18n.t(:go), "report__submit-btn") - ).inner_html( - selector: "#report-table", - html: actioncable_content(format, blob) - ).broadcast + } + ) + + ActionCable.server.broadcast( + channel, + { selector: "#report-table", html: actioncable_content(format, blob) } + ) end def broadcast_error(channel) - cable_ready[channel].inner_html( - selector: "#report-table", - html: I18n.t("report_job.report_failed") - ).broadcast + ActionCable.server.broadcast( + channel, + { selector: "#report-table", html: I18n.t("report_job.report_failed") } + ) end def actioncable_content(format, blob) diff --git a/app/webpacker/controllers/scoped_channel_controller.js b/app/webpacker/controllers/scoped_channel_controller.js index eb777da09f..974dba1a3d 100644 --- a/app/webpacker/controllers/scoped_channel_controller.js +++ b/app/webpacker/controllers/scoped_channel_controller.js @@ -1,6 +1,5 @@ import { Controller } from "stimulus"; import consumer from "../channels/consumer"; -import CableReady from "cable_ready"; export default class extends Controller { static values = { id: String }; @@ -10,7 +9,9 @@ export default class extends Controller { { channel: "ScopedChannel", id: this.idValue }, { received(data) { - if (data.cableReady) CableReady.perform(data.operations); + if (!data.selector) return; + + document.querySelector(data.selector).innerHTML = data.html; }, } ); diff --git a/spec/jobs/report_job_spec.rb b/spec/jobs/report_job_spec.rb index fd8c9aaf86..b3f9124006 100644 --- a/spec/jobs/report_job_spec.rb +++ b/spec/jobs/report_job_spec.rb @@ -3,8 +3,6 @@ require 'spec_helper' RSpec.describe ReportJob do - include CableReady::Broadcaster - let(:report_args) { { report_class:, user:, params:, format:, blob: } } @@ -41,8 +39,10 @@ RSpec.describe ReportJob do with_channel = report_args.merge(channel:) ReportJob.perform_later(**with_channel) - - expect(cable_ready[channel]).to receive(:broadcast).and_call_original + expect(ActionCable.server).to receive(:broadcast).with( + channel, + instance_of(Hash) + ).twice.and_call_original expect { perform_enqueued_jobs(only: ReportJob)