module Stex::Acts::Messagable::Extensions
Public Class Methods
included(base)
click to toggle source
# File lib/stex/acts/messagable/extensions.rb, line 5 def self.included(base) base.class_eval do base.send :extend, ClassMethods end end
Public Instance Methods
additional_recipient_names()
click to toggle source
@return [Array<String>]
The +recipient_name+s of all additional recipients. This uses the +recipient_name+ option set in the recipient's model class.
# File lib/stex/acts/messagable/extensions.rb, line 85 def additional_recipient_names additional_recipients.map {|r| r.messagable_accessor(:recipient_name) } end
additional_recipients()
click to toggle source
@return [Messagable]
The additional recipients which were determined by the +send_message+ function
# File lib/stex/acts/messagable/extensions.rb, line 65 def additional_recipients meta_record_list(:additional_recipients) end
additional_recipients=(recipients = [])
click to toggle source
Sets additional recipients in this message’s metadata. This is automatically done by the send_message
function.
@param [Array<Messagable>] recipients
The list of additional recipients
# File lib/stex/acts/messagable/extensions.rb, line 76 def additional_recipients=(recipients = []) meta_record_list_update(:additional_recipients, recipients) end
mark_as_read!()
click to toggle source
Sets the read_at
attribute to the current time and saves the record without validations
# File lib/stex/acts/messagable/extensions.rb, line 44 def mark_as_read! self.read_at = Time.now save(false) end
original_recipient_names()
click to toggle source
@return [Array<String>]
The names of the +original_recipients+, uses the +recipient_name+ option set in the recipient's model class
# File lib/stex/acts/messagable/extensions.rb, line 115 def original_recipient_names original_recipients.map do |recipient_or_array| if recipient_or_array.is_a?(Array) recipient = recipient_or_array.first optional_names = recipient_or_array.last.map {|i| recipient.messagable_accessor(:optional_recipients).assoc(i.to_sym).third } [recipient.messagable_accessor(:recipient_name), *optional_names] else recipient_or_array.messagable_accessor(:recipient_name) end end end
original_recipients()
click to toggle source
@return [Array<Messagable>]
The original recipients which were initially given to the +send_message+ function (so no derived recipients)
# File lib/stex/acts/messagable/extensions.rb, line 94 def original_recipients result = [] metadata[:original_recipients].each do |recipient| #Optional recipients included if recipient.first.is_a?(Array) recipient_class, recipient_id = recipient.first result << [recipient_class.constantize.find(recipient_id), recipient.last] else recipient_class, recipient_id = recipient result << recipient_class.constantize.find(recipient_id) end end result end
original_recipients=(recipients = [])
click to toggle source
Stores the original recipients of this notification.
@param recipients
An array of +Messagable+ which may also include optional recipients as symbols (see +{Stex::Acts::Messagable#send_notification}+)
# File lib/stex/acts/messagable/extensions.rb, line 134 def original_recipients=(recipients = []) result = [] recipients.each do |recipient_or_array| if recipient_or_array.is_a?(Array) recipient = recipient_or_array.first result << [[recipient.class.to_s, recipient.id], recipient_or_array.last] else result << [recipient_or_array.class.to_s, recipient_or_array.id] end end metadata[:original_recipients] = result end
read?()
click to toggle source
@return [Bool] true
if the notification was marked as read before
# File lib/stex/acts/messagable/extensions.rb, line 29 def read? read_at.present? end
unread?()
click to toggle source
@see read?
# File lib/stex/acts/messagable/extensions.rb, line 36 def unread? !read? end
url()
click to toggle source
# File lib/stex/acts/messagable/extensions.rb, line 53 def url metadata[:url] end
url=(url)
click to toggle source
# File lib/stex/acts/messagable/extensions.rb, line 57 def url=(url) metadata[:url] = url end
Private Instance Methods
meta_record_list(key)
click to toggle source
@private
# File lib/stex/acts/messagable/extensions.rb, line 154 def meta_record_list(key) return [] unless metadata[key] @meta_record_list ||= {} @meta_record_list[key] ||= metadata[key].map {|class_name, id| class_name.constantize.find(id)} end
meta_record_list_update(key, list = [])
click to toggle source
@private
# File lib/stex/acts/messagable/extensions.rb, line 163 def meta_record_list_update(key, list = []) @meta_record_list ||= {} @meta_record_list[key] = list metadata[key] = @meta_record_list[key].map {|r| [r.class.to_s, r.id] } end
metadata()
click to toggle source
Accessor method for all metadata Metadata can then be accessed using []
@private
# File lib/stex/acts/messagable/extensions.rb, line 175 def metadata self.serialized_metadata ||= {} end