Module: NitroRails::DefaultBroadcasts
- Included in:
- BroadcastableRecord
- Defined in:
- app/models/nitro_rails/default_broadcasts.rb
Instance Method Summary collapse
- #append_to_affiliated_lists ⇒ Object
- #broadcast_attribute(attribute) ⇒ Object
-
#broadcast_to_user_later(action, &block) ⇒ Object
——- # Helpers # ——- #.
- #broadcast_to_user_or_public_later(action, &block) ⇒ Object
- #focus_on_new_resource ⇒ Object
- #insert_into_affiliated_lists ⇒ Object
- #nitro_data_id(*attributes) ⇒ Object
- #partial_path ⇒ Object
-
#redirect_to_index ⇒ Object
Should we just redirect back?.
-
#refresh_affiliatied_lists ⇒ Object
——————- # Creation Broadcasts # ——————- #.
-
#refresh_page ⇒ Object
—————— # Generic Broadcasts # —————— #.
-
#remove_everywhere ⇒ Object
——————- # Deletion Broadcasts # ——————- #.
- #replace_attribute_content(attribute, value) ⇒ Object
- #toggle_checkbox(attribute, value) ⇒ Object
- #toggle_resource_attribute_class(attribute, value) ⇒ Object
-
#update_associated_attributes ⇒ Object
——————– # Attribute Broadcasts # ——————– #.
Instance Method Details
#append_to_affiliated_lists ⇒ Object
28 29 30 31 32 33 34 35 36 37 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 28 def append_to_affiliated_lists affiliations.each do |affiliation| broadcast_to_user_or_public_later(:append) do |broadcast| broadcast_attribute_tag = affiliation.nitro_data_id(collection_tag) broadcast.targets broadcast_attribute_tag broadcast.template(**partial_path) broadcast.attributes(focus: true) end end end |
#broadcast_attribute(attribute) ⇒ Object
66 67 68 69 70 71 72 73 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 66 def broadcast_attribute(attribute) new_value = send(attribute) replace_attribute_content(attribute, new_value) self.class.attribute_broadcasts[attribute.to_sym].to_a.each do |attribute_broadcast| send(*[attribute_broadcast, attribute, new_value][0..method(attribute_broadcast).arity]) end end |
#broadcast_to_user_later(action, &block) ⇒ Object
——- # Helpers # ——- #
122 123 124 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 122 def broadcast_to_user_later(action, &block) Broadcast.build(self, action, &block).perform_later end |
#broadcast_to_user_or_public_later(action, &block) ⇒ Object
126 127 128 129 130 131 132 133 134 135 136 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 126 def broadcast_to_user_or_public_later(action, &block) if defined?(User) && self.is_a?(User) user = self elsif self.respond_to?(:user) user = self.user else user = :public end Broadcast.build(user, action, &block).perform_later end |
#focus_on_new_resource ⇒ Object
49 50 51 52 53 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 49 def focus_on_new_resource broadcast_to_user_or_public_later(:focus) do |broadcast| broadcast.target nitro_data_id end end |
#insert_into_affiliated_lists ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 39 def insert_into_affiliated_lists affiliations.each do |affiliation| broadcast_to_user_or_public_later(:insert) do |broadcast| broadcast.targets affiliation.nitro_data_id(collection_tag) broadcast.template(**partial_path) broadcast.attributes(position: 0) end end end |
#nitro_data_id(*attributes) ⇒ Object
138 139 140 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 138 def nitro_data_id(*attributes) "[data-nitro-id='#{nitro_id(*attributes)}']" end |
#partial_path ⇒ Object
142 143 144 145 146 147 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 142 def partial_path { partial: "#{collection_tag}/#{type}", locals: { "#{type}": self, tag: :li, focus: true } } end |
#redirect_to_index ⇒ Object
Should we just redirect back?
112 113 114 115 116 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 112 def redirect_to_index broadcast_to_user_or_public_later(:redirect) do |broadcast| broadcast.attributes(on: path_for_record, to: "/") end end |
#refresh_affiliatied_lists ⇒ Object
——————- # Creation Broadcasts # ——————- #
16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 16 def refresh_affiliatied_lists affiliations.each do |affiliation| # broadcast_to_user_or_public_later(:refresh) do |broadcast| # broadcast.targets affiliation.nitro_data_id(collection_tag) # end broadcast_to_user_or_public_later(:refresh_frame) do |broadcast| broadcast.targets affiliation.nitro_data_id(collection_tag) end end end |
#refresh_page ⇒ Object
—————— # Generic Broadcasts # —————— #
8 9 10 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 8 def refresh_page broadcast_to_user_or_public_later(:refresh) {} end |
#remove_everywhere ⇒ Object
——————- # Deletion Broadcasts # ——————- #
105 106 107 108 109 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 105 def remove_everywhere broadcast_to_user_or_public_later(:remove) do |broadcast| broadcast.targets nitro_data_id end end |
#replace_attribute_content(attribute, value) ⇒ Object
75 76 77 78 79 80 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 75 def replace_attribute_content(attribute, value) broadcast_to_user_or_public_later(:update) do |broadcast| broadcast.targets nitro_data_id(attribute) broadcast.template(inline: value.to_s) end end |
#toggle_checkbox(attribute, value) ⇒ Object
82 83 84 85 86 87 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 82 def toggle_checkbox(attribute, value) broadcast_to_user_or_public_later(:toggle_checkbox) do |broadcast| broadcast.targets nitro_data_id(attribute) broadcast.attributes(status: value.to_s) end end |
#toggle_resource_attribute_class(attribute, value) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 89 def toggle_resource_attribute_class(attribute, value) broadcast_to_user_or_public_later(:toggle_class) do |broadcast| broadcast.targets nitro_data_id broadcast.attributes(class: attribute, status: value) end broadcast_to_user_or_public_later(:toggle_class) do |broadcast| broadcast.targets nitro_data_id broadcast.attributes(class: "not-#{attribute}", status: !value) end end |
#update_associated_attributes ⇒ Object
——————– # Attribute Broadcasts # ——————– #
59 60 61 62 63 64 |
# File 'app/models/nitro_rails/default_broadcasts.rb', line 59 def update_associated_attributes saved_changes.each do |attribute, (old_value, new_value)| next if skipped_attributes.include?(attribute.to_sym) broadcast_attribute(attribute) end end |