Module: SourceMonitor::Realtime::Broadcaster
- Extended by:
- ActionView::RecordIdentifier, Broadcaster
- Included in:
- Broadcaster
- Defined in:
- lib/source_monitor/realtime/broadcaster.rb
Constant Summary collapse
- SOURCE_INDEX_STREAM =
"source_monitor_sources"- NOTIFICATION_STREAM =
"source_monitor_notifications"
Instance Method Summary collapse
- #broadcast_item(item) ⇒ Object
- #broadcast_source(source) ⇒ Object
- #broadcast_toast(message:, level: :info, title: nil, delay_ms: 5000) ⇒ Object
- #fetch_callback ⇒ Object
- #item_callback ⇒ Object
- #setup! ⇒ Object
Instance Method Details
#broadcast_item(item) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/source_monitor/realtime/broadcaster.rb', line 41 def broadcast_item(item) return unless turbo_available? item = reload_record(item) return unless item Turbo::StreamsChannel.broadcast_replace_to( item, :details, target: dom_id(item, :details), html: render_html = SourceMonitor::ItemsController.render( partial: "source_monitor/items/details_wrapper", locals: { item: item } ) ) log_info( "broadcast_item", item_id: item.id, stream: item_stream_identifier(item), status: item.scrape_status, contains_scraped_label: render_html.include?("Scraped") ) rescue StandardError => error log_error("item broadcast", error) end |
#broadcast_source(source) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/source_monitor/realtime/broadcaster.rb', line 32 def broadcast_source(source) return unless turbo_available? source = reload_record(source) return unless source broadcast_source_row(source) broadcast_source_show(source) end |
#broadcast_toast(message:, level: :info, title: nil, delay_ms: 5000) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/source_monitor/realtime/broadcaster.rb', line 66 def broadcast_toast(message:, level: :info, title: nil, delay_ms: 5000) return unless turbo_available? return if .blank? Turbo::StreamsChannel.broadcast_append_to( NOTIFICATION_STREAM, target: NOTIFICATION_STREAM, html: SourceMonitor::ApplicationController.render( partial: "source_monitor/shared/toast", locals: { message: , level: level, title: title, delay_ms: delay_ms } ) ) rescue StandardError => error log_error("toast broadcast", error) end |
#fetch_callback ⇒ Object
24 25 26 |
# File 'lib/source_monitor/realtime/broadcaster.rb', line 24 def fetch_callback @fetch_callback ||= lambda { |event| handle_fetch_completed(event) } end |
#item_callback ⇒ Object
28 29 30 |
# File 'lib/source_monitor/realtime/broadcaster.rb', line 28 def item_callback @item_callback ||= lambda { |event| handle_item_scraped(event) } end |
#setup! ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/source_monitor/realtime/broadcaster.rb', line 14 def setup! return unless turbo_available? return if @setup register_callback(:after_fetch_completed, fetch_callback) register_callback(:after_item_scraped, item_callback) @setup = true end |