Class: Spina::Pro::Message
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- Spina::Pro::Message
- Includes:
- AttrJson::Record, Gravatar
- Defined in:
- app/models/spina/pro/message.rb
Class Method Summary collapse
Instance Method Summary collapse
- #archive! ⇒ Object
- #archived? ⇒ Boolean
- #body_attributes ⇒ Object
- #fallback_url ⇒ Object
- #field_type(key) ⇒ Object
- #ham? ⇒ Boolean
- #index_attributes ⇒ Object
- #label ⇒ Object
- #mark_as_ham! ⇒ Object
- #mark_as_read! ⇒ Object
- #mark_as_spam! ⇒ Object
- #mark_as_unread! ⇒ Object
- #message_attributes ⇒ Object
- #name_attributes ⇒ Object
- #to_name ⇒ Object
- #unarchive! ⇒ Object
- #unread? ⇒ Boolean
Class Method Details
.field(name, type, **options) ⇒ Object
110 111 112 113 |
# File 'app/models/spina/pro/message.rb', line 110 def field(name, type, **) attr_json(name, type, **.except(:index)) self.index_attributes += [name] if [:index] end |
.inbox(name, label = nil) ⇒ Object
115 116 117 118 |
# File 'app/models/spina/pro/message.rb', line 115 def inbox(name, label = nil) self.inbox_name = name self.inbox_label = label end |
Instance Method Details
#archive! ⇒ Object
80 81 82 |
# File 'app/models/spina/pro/message.rb', line 80 def archive! update!(archived_at: Time.current) if archived_at.nil? end |
#archived? ⇒ Boolean
60 61 62 |
# File 'app/models/spina/pro/message.rb', line 60 def archived? archived_at.present? end |
#body_attributes ⇒ Object
72 73 74 |
# File 'app/models/spina/pro/message.rb', line 72 def body_attributes - name_attributes end |
#fallback_url ⇒ Object
104 105 106 |
# File 'app/models/spina/pro/message.rb', line 104 def fallback_url "https://eu.ui-avatars.com/api/#{CGI.escape(json_attributes.values.first.to_s)}/128" end |
#field_type(key) ⇒ Object
76 77 78 |
# File 'app/models/spina/pro/message.rb', line 76 def field_type(key) self.class.attr_json_registry.type_for_attribute(key)&.type end |
#ham? ⇒ Boolean
48 49 50 |
# File 'app/models/spina/pro/message.rb', line 48 def ham? !spam? end |
#index_attributes ⇒ Object
64 65 66 |
# File 'app/models/spina/pro/message.rb', line 64 def index_attributes self.class.index_attributes end |
#label ⇒ Object
52 53 54 |
# File 'app/models/spina/pro/message.rb', line 52 def label id end |
#mark_as_ham! ⇒ Object
100 101 102 |
# File 'app/models/spina/pro/message.rb', line 100 def mark_as_ham! update!(spam: false) end |
#mark_as_read! ⇒ Object
88 89 90 |
# File 'app/models/spina/pro/message.rb', line 88 def mark_as_read! update!(read_at: Time.current) if read_at.nil? end |
#mark_as_spam! ⇒ Object
96 97 98 |
# File 'app/models/spina/pro/message.rb', line 96 def mark_as_spam! update!(spam: true) end |
#mark_as_unread! ⇒ Object
92 93 94 |
# File 'app/models/spina/pro/message.rb', line 92 def mark_as_unread! update!(read_at: nil) end |
#message_attributes ⇒ Object
68 69 70 |
# File 'app/models/spina/pro/message.rb', line 68 def self.class.attr_json_registry.attribute_names end |
#name_attributes ⇒ Object
44 45 46 |
# File 'app/models/spina/pro/message.rb', line 44 def name_attributes [:first_name, :last_name, :name] end |
#to_name ⇒ Object
34 35 36 37 38 39 40 41 42 |
# File 'app/models/spina/pro/message.rb', line 34 def to_name if .include? :name name elsif .include?(:first_name) && .include?(:last_name) [first_name, last_name].join(" ") else email end end |
#unarchive! ⇒ Object
84 85 86 |
# File 'app/models/spina/pro/message.rb', line 84 def unarchive! update!(archived_at: nil) end |
#unread? ⇒ Boolean
56 57 58 |
# File 'app/models/spina/pro/message.rb', line 56 def unread? read_at.nil? end |