mailboxer 0.0.12 → 0.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/models/conversation.rb +27 -16
- data/app/models/message.rb +12 -8
- data/lib/mailboxer/models/messageable.rb +7 -7
- data/mailboxer.gemspec +1 -1
- data/spec/integration/message_and_receipt_spec.rb +13 -13
- data/spec/models/conversation_spec.rb +4 -3
- data/spec/models/message_spec.rb +24 -0
- metadata +4 -3
data/app/models/conversation.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
class Conversation < ActiveRecord::Base
|
2
|
-
attr_reader :originator, :original_message, :last_sender, :last_message
|
2
|
+
attr_reader :originator, :original_message, :last_sender, :last_message
|
3
|
+
attr_accessor :recipients, :body
|
3
4
|
has_many :messages
|
4
5
|
has_many :receipts, :through => :messages
|
5
6
|
|
7
|
+
validates_presence_of :recipients, :subject, :body
|
8
|
+
|
6
9
|
before_create :clean
|
10
|
+
after_create :clear_recipients
|
7
11
|
|
8
12
|
# before_create :clean
|
9
13
|
scope :participant, lambda {|participant|
|
@@ -47,6 +51,15 @@ class Conversation < ActiveRecord::Base
|
|
47
51
|
return self.receipts(participant).untrash
|
48
52
|
end
|
49
53
|
|
54
|
+
def recipients
|
55
|
+
if @recipients.blank? and self.last_message
|
56
|
+
recps = self.last_message.recipients
|
57
|
+
recps = recps.is_a?(Array) ? recps : [recps]
|
58
|
+
return recps
|
59
|
+
end
|
60
|
+
return @recipients
|
61
|
+
end
|
62
|
+
|
50
63
|
#originator of the conversation.
|
51
64
|
def originator
|
52
65
|
@orignator = self.original_message.sender if @originator.nil?
|
@@ -76,15 +89,6 @@ class Conversation < ActiveRecord::Base
|
|
76
89
|
return Receipt.conversation(self)
|
77
90
|
end
|
78
91
|
|
79
|
-
#all users involved in the conversation.
|
80
|
-
def recipients
|
81
|
-
return last_message.get_recipients
|
82
|
-
end
|
83
|
-
|
84
|
-
def get_recipients
|
85
|
-
return self.recipients
|
86
|
-
end
|
87
|
-
|
88
92
|
def count_messages
|
89
93
|
return Message.conversation(self).count
|
90
94
|
end
|
@@ -93,20 +97,20 @@ class Conversation < ActiveRecord::Base
|
|
93
97
|
return false if participant.nil?
|
94
98
|
return self.receipts(participant).count != 0
|
95
99
|
end
|
96
|
-
|
100
|
+
|
97
101
|
def is_trashed?(participant)
|
98
102
|
return false if participant.nil?
|
99
|
-
|
103
|
+
return self.receipts(participant).trash.count!=0
|
100
104
|
end
|
101
|
-
|
105
|
+
|
102
106
|
def is_completely_trashed?(participant)
|
103
107
|
return false if participant.nil?
|
104
|
-
|
108
|
+
return self.receipts(participant).trash.count==self.receipts(participant).count
|
105
109
|
end
|
106
|
-
|
110
|
+
|
107
111
|
def is_unread?(participant)
|
108
112
|
return false if participant.nil?
|
109
|
-
|
113
|
+
return self.receipts(participant).unread.count!=0
|
110
114
|
end
|
111
115
|
# protected
|
112
116
|
# #[empty method]
|
@@ -117,9 +121,16 @@ class Conversation < ActiveRecord::Base
|
|
117
121
|
# #strip all illegal content here. (scripts, shit that will break layout, etc.)
|
118
122
|
# end
|
119
123
|
|
124
|
+
protected
|
125
|
+
|
120
126
|
include ActionView::Helpers::SanitizeHelper
|
121
127
|
|
122
128
|
def clean
|
123
129
|
self.subject = sanitize self.subject
|
124
130
|
end
|
131
|
+
|
132
|
+
def clear_recipients
|
133
|
+
self.recipients=nil
|
134
|
+
end
|
135
|
+
|
125
136
|
end
|
data/app/models/message.rb
CHANGED
@@ -25,16 +25,20 @@ class Message < ActiveRecord::Base
|
|
25
25
|
self.recipients.each do |r|
|
26
26
|
r.mailbox[mailbox_type] << self
|
27
27
|
end
|
28
|
+
self.recipients=nil
|
28
29
|
self.on_deliver_callback.call(self, mailbox_type) unless self.on_deliver_callback.nil?
|
29
30
|
end
|
30
|
-
|
31
|
-
def
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
|
32
|
+
def recipients
|
33
|
+
if @recipients.blank?
|
34
|
+
recipients_array = Array.new
|
35
|
+
self.receipts.each do |receipt|
|
36
|
+
recipients_array << receipt.receiver
|
37
|
+
end
|
38
|
+
return recipients_array
|
39
|
+
end
|
40
|
+
return @recipients
|
41
|
+
end
|
38
42
|
|
39
43
|
def receipts(participant=nil)
|
40
44
|
return Receipt.message(self).receiver(participant) if participant
|
@@ -21,10 +21,11 @@ module Mailboxer
|
|
21
21
|
return @mailbox
|
22
22
|
end
|
23
23
|
|
24
|
-
def send_message(recipients, msg_body, subject
|
25
|
-
convo = Conversation.create({:subject => subject})
|
24
|
+
def send_message(recipients, msg_body, subject)
|
25
|
+
convo = Conversation.create!({:recipients => recipients, :body => msg_body, :subject => subject})
|
26
26
|
message = Message.create({:sender => self, :conversation => convo, :body => msg_body, :subject => subject})
|
27
27
|
message.recipients = recipients.is_a?(Array) ? recipients : [recipients]
|
28
|
+
message.recipients = message.recipients.uniq
|
28
29
|
message.deliver(:inbox)
|
29
30
|
return mailbox[:sentbox] << message
|
30
31
|
end
|
@@ -34,7 +35,8 @@ module Mailboxer
|
|
34
35
|
conversation.update_attribute(:updated_at, Time.now)
|
35
36
|
subject = subject || "RE: #{conversation.subject}"
|
36
37
|
response = Message.create({:sender => self, :conversation => conversation, :body => reply_body, :subject => subject})
|
37
|
-
response.recipients = recipients.is_a?(Array) ? recipients : [recipients]
|
38
|
+
response.recipients = recipients.is_a?(Array) ? recipients : [recipients]
|
39
|
+
response.recipients = response.recipients.uniq
|
38
40
|
response.recipients.delete(self)
|
39
41
|
response.deliver(:inbox)
|
40
42
|
return mailbox[:sentbox] << response
|
@@ -45,9 +47,7 @@ module Mailboxer
|
|
45
47
|
end
|
46
48
|
|
47
49
|
def reply_to_all(receipt, reply_body, subject = nil)
|
48
|
-
|
49
|
-
recipients = msg.get_recipients
|
50
|
-
return reply(receipt.conversation, recipients, reply_body, subject)
|
50
|
+
return reply(receipt.conversation, receipt.message.recipients, reply_body, subject)
|
51
51
|
end
|
52
52
|
|
53
53
|
def reply_to_conversation(conversation, reply_body, subject = nil)
|
@@ -56,7 +56,7 @@ module Mailboxer
|
|
56
56
|
mailbox.receipts.conversation(conversation).untrash
|
57
57
|
end
|
58
58
|
#remove self from recipients unless you are the originator of the convo
|
59
|
-
recipients = conversation.
|
59
|
+
recipients = conversation.last_message.recipients
|
60
60
|
if(conversation.originator != self)
|
61
61
|
recipients.delete(self)
|
62
62
|
if(!recipients.include?(conversation.originator))
|
data/mailboxer.gemspec
CHANGED
@@ -42,7 +42,7 @@ describe "Messages And Receipts" do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should have the correct recipients" do
|
45
|
-
recipients = @message1.
|
45
|
+
recipients = @message1.recipients
|
46
46
|
recipients.count.should==2
|
47
47
|
recipients.count(@entity1).should==1
|
48
48
|
recipients.count(@entity2).should==1
|
@@ -85,7 +85,7 @@ describe "Messages And Receipts" do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
it "should have the correct recipients" do
|
88
|
-
recipients = @message2.
|
88
|
+
recipients = @message2.recipients
|
89
89
|
recipients.count.should==2
|
90
90
|
recipients.count(@entity1).should==1
|
91
91
|
recipients.count(@entity2).should==1
|
@@ -131,7 +131,7 @@ describe "Messages And Receipts" do
|
|
131
131
|
end
|
132
132
|
|
133
133
|
it "should have the correct recipients" do
|
134
|
-
recipients = @message2.
|
134
|
+
recipients = @message2.recipients
|
135
135
|
recipients.count.should==2
|
136
136
|
recipients.count(@entity1).should==1
|
137
137
|
recipients.count(@entity2).should==1
|
@@ -176,7 +176,7 @@ describe "Messages And Receipts" do
|
|
176
176
|
end
|
177
177
|
|
178
178
|
it "should have the correct recipients" do
|
179
|
-
recipients = @message2.
|
179
|
+
recipients = @message2.recipients
|
180
180
|
recipients.count.should==2
|
181
181
|
recipients.count(@entity1).should==1
|
182
182
|
recipients.count(@entity2).should==1
|
@@ -228,7 +228,7 @@ describe "Messages And Receipts" do
|
|
228
228
|
end
|
229
229
|
|
230
230
|
it "should have the correct recipients" do
|
231
|
-
recipients = @message1.
|
231
|
+
recipients = @message1.recipients
|
232
232
|
recipients.count.should==2
|
233
233
|
recipients.count(@entity1).should==1
|
234
234
|
recipients.count(@entity2).should==1
|
@@ -271,7 +271,7 @@ describe "Messages And Receipts" do
|
|
271
271
|
end
|
272
272
|
|
273
273
|
it "should have the correct recipients" do
|
274
|
-
recipients = @message2.
|
274
|
+
recipients = @message2.recipients
|
275
275
|
recipients.count.should==2
|
276
276
|
recipients.count(@entity1).should==1
|
277
277
|
recipients.count(@entity2).should==1
|
@@ -317,7 +317,7 @@ describe "Messages And Receipts" do
|
|
317
317
|
end
|
318
318
|
|
319
319
|
it "should have the correct recipients" do
|
320
|
-
recipients = @message2.
|
320
|
+
recipients = @message2.recipients
|
321
321
|
recipients.count.should==2
|
322
322
|
recipients.count(@entity1).should==1
|
323
323
|
recipients.count(@entity2).should==1
|
@@ -396,7 +396,7 @@ describe "Messages And Receipts" do
|
|
396
396
|
end
|
397
397
|
|
398
398
|
it "should have the correct recipients" do
|
399
|
-
recipients = @message1.
|
399
|
+
recipients = @message1.recipients
|
400
400
|
recipients.count.should==3
|
401
401
|
recipients.count(@entity1).should==1
|
402
402
|
recipients.count(@entity2).should==1
|
@@ -445,7 +445,7 @@ describe "Messages And Receipts" do
|
|
445
445
|
end
|
446
446
|
|
447
447
|
it "should have the correct recipients" do
|
448
|
-
recipients = @message2.
|
448
|
+
recipients = @message2.recipients
|
449
449
|
recipients.count.should==2
|
450
450
|
recipients.count(@entity1).should==1
|
451
451
|
recipients.count(@entity2).should==1
|
@@ -498,7 +498,7 @@ describe "Messages And Receipts" do
|
|
498
498
|
end
|
499
499
|
|
500
500
|
it "should have the correct recipients" do
|
501
|
-
recipients = @message2.
|
501
|
+
recipients = @message2.recipients
|
502
502
|
recipients.count.should==3
|
503
503
|
recipients.count(@entity1).should==1
|
504
504
|
recipients.count(@entity2).should==1
|
@@ -578,7 +578,7 @@ describe "Messages And Receipts" do
|
|
578
578
|
end
|
579
579
|
|
580
580
|
it "should have the correct recipients" do
|
581
|
-
recipients = @message1.
|
581
|
+
recipients = @message1.recipients
|
582
582
|
recipients.count.should==3
|
583
583
|
recipients.count(@entity1).should==1
|
584
584
|
recipients.count(@entity2).should==1
|
@@ -627,7 +627,7 @@ describe "Messages And Receipts" do
|
|
627
627
|
end
|
628
628
|
|
629
629
|
it "should have the correct recipients" do
|
630
|
-
recipients = @message2.
|
630
|
+
recipients = @message2.recipients
|
631
631
|
recipients.count.should==2
|
632
632
|
recipients.count(@entity1).should==1
|
633
633
|
recipients.count(@entity2).should==1
|
@@ -680,7 +680,7 @@ describe "Messages And Receipts" do
|
|
680
680
|
end
|
681
681
|
|
682
682
|
it "should have the correct recipients" do
|
683
|
-
recipients = @message2.
|
683
|
+
recipients = @message2.recipients
|
684
684
|
recipients.count.should==3
|
685
685
|
recipients.count(@entity1).should==1
|
686
686
|
recipients.count(@entity2).should==1
|
@@ -31,9 +31,10 @@ describe Conversation do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should have all conversation users" do
|
34
|
-
@conversation.
|
35
|
-
@conversation.
|
36
|
-
@conversation.
|
34
|
+
@conversation.recipients.count.should==2
|
35
|
+
@conversation.recipients.count.should==2
|
36
|
+
@conversation.recipients.count(@entity1).should==1
|
37
|
+
@conversation.recipients.count(@entity2).should==1
|
37
38
|
end
|
38
39
|
|
39
40
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
2
|
+
|
3
|
+
describe Message do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@entity1 = Factory(:user)
|
7
|
+
@entity2 = Factory(:user)
|
8
|
+
@receipt1 = @entity1.send_message(@entity2,"Body","Subject")
|
9
|
+
@receipt2 = @entity2.reply_to_all(@receipt1,"Reply body 1")
|
10
|
+
@receipt3 = @entity1.reply_to_all(@receipt2,"Reply body 2")
|
11
|
+
@receipt4 = @entity2.reply_to_all(@receipt3,"Reply body 3")
|
12
|
+
@message1 = @receipt1.message
|
13
|
+
@message4 = @receipt4.message
|
14
|
+
@conversation = @message1.conversation
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should have right recipients" do
|
18
|
+
@receipt1.message.recipients.count.should==2
|
19
|
+
@receipt2.message.recipients.count.should==2
|
20
|
+
@receipt3.message.recipients.count.should==2
|
21
|
+
@receipt4.message.recipients.count.should==2
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailboxer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 5
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 13
|
10
|
+
version: 0.0.13
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Eduardo Casanova Cuesta
|
@@ -255,6 +255,7 @@ files:
|
|
255
255
|
- spec/models/conversation_spec.rb
|
256
256
|
- spec/models/mailbox_spec.rb
|
257
257
|
- spec/models/mailboxer_models_messageable_spec.rb
|
258
|
+
- spec/models/message_spec.rb
|
258
259
|
- spec/models/receipt_spec.rb
|
259
260
|
- spec/spec_helper.rb
|
260
261
|
has_rdoc: true
|