acts-as-messageable 0.4.10 → 0.4.11
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.
- checksums.yaml +5 -5
- data/.rspec +1 -1
- data/.travis.yml +16 -14
- data/Appraisals +30 -27
- data/Gemfile +10 -10
- data/Gemfile.lock +124 -98
- data/README.md +4 -5
- data/Rakefile +8 -10
- data/VERSION +1 -1
- data/acts-as-messageable.gemspec +45 -43
- data/gemfiles/rails_3.2.gemfile +7 -7
- data/gemfiles/rails_3.2.gemfile.lock +153 -0
- data/gemfiles/rails_4.2.11.gemfile +16 -0
- data/gemfiles/rails_4.2.11.gemfile.lock +157 -0
- data/gemfiles/rails_5.2.gemfile +16 -0
- data/gemfiles/rails_5.2.gemfile.lock +155 -0
- data/gemfiles/rails_6.0.gemfile +16 -0
- data/gemfiles/rails_6.0.gemfile.lock +155 -0
- data/lib/acts-as-messageable/message.rb +13 -13
- data/lib/acts-as-messageable/model.rb +46 -46
- data/lib/acts-as-messageable/rails4.rb +1 -3
- data/lib/acts-as-messageable/railtie.rb +0 -1
- data/lib/acts-as-messageable/relation.rb +4 -4
- data/lib/acts-as-messageable/scopes.rb +21 -20
- data/lib/generators/acts-as-messageable/migration/migration_generator.rb +12 -4
- data/spec/acts-as-messageable_spec.rb +155 -160
- data/spec/custom-class_spec.rb +19 -20
- data/spec/custom-required_spec.rb +27 -27
- data/spec/group-messages_spec.rb +17 -19
- data/spec/spec_helper.rb +22 -22
- data/spec/support/admin.rb +3 -3
- data/spec/support/send_message.rb +1 -1
- metadata +23 -21
- data/gemfiles/rails_3.0.gemfile +0 -16
- data/gemfiles/rails_3.1.gemfile +0 -16
- data/gemfiles/rails_4.0.gemfile +0 -16
- data/gemfiles/rails_4.1.gemfile +0 -16
- data/gemfiles/rails_4.1_ProtectedAttributes.gemfile +0 -17
@@ -0,0 +1,16 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "activerecord", "~> 5.2.0"
|
6
|
+
gem "activesupport", "~> 5.2.0"
|
7
|
+
gem "ancestry", ">= 1.3.0"
|
8
|
+
gem "railties", "~> 5.2.0"
|
9
|
+
|
10
|
+
group :development do
|
11
|
+
gem "appraisal"
|
12
|
+
gem "coveralls", require: false
|
13
|
+
gem "jeweler"
|
14
|
+
gem "rspec"
|
15
|
+
gem "sqlite3", "~> 1.3.6"
|
16
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
actionpack (5.2.3)
|
5
|
+
actionview (= 5.2.3)
|
6
|
+
activesupport (= 5.2.3)
|
7
|
+
rack (~> 2.0)
|
8
|
+
rack-test (>= 0.6.3)
|
9
|
+
rails-dom-testing (~> 2.0)
|
10
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
11
|
+
actionview (5.2.3)
|
12
|
+
activesupport (= 5.2.3)
|
13
|
+
builder (~> 3.1)
|
14
|
+
erubi (~> 1.4)
|
15
|
+
rails-dom-testing (~> 2.0)
|
16
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
17
|
+
activemodel (5.2.3)
|
18
|
+
activesupport (= 5.2.3)
|
19
|
+
activerecord (5.2.3)
|
20
|
+
activemodel (= 5.2.3)
|
21
|
+
activesupport (= 5.2.3)
|
22
|
+
arel (>= 9.0)
|
23
|
+
activesupport (5.2.3)
|
24
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
25
|
+
i18n (>= 0.7, < 2)
|
26
|
+
minitest (~> 5.1)
|
27
|
+
tzinfo (~> 1.1)
|
28
|
+
addressable (2.4.0)
|
29
|
+
ancestry (3.0.6)
|
30
|
+
activerecord (>= 3.2.0)
|
31
|
+
appraisal (2.2.0)
|
32
|
+
bundler
|
33
|
+
rake
|
34
|
+
thor (>= 0.14.0)
|
35
|
+
arel (9.0.0)
|
36
|
+
builder (3.2.3)
|
37
|
+
concurrent-ruby (1.1.5)
|
38
|
+
coveralls (0.8.23)
|
39
|
+
json (>= 1.8, < 3)
|
40
|
+
simplecov (~> 0.16.1)
|
41
|
+
term-ansicolor (~> 1.3)
|
42
|
+
thor (>= 0.19.4, < 2.0)
|
43
|
+
tins (~> 1.6)
|
44
|
+
crass (1.0.4)
|
45
|
+
descendants_tracker (0.0.4)
|
46
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
47
|
+
diff-lcs (1.3)
|
48
|
+
docile (1.3.1)
|
49
|
+
erubi (1.8.0)
|
50
|
+
faraday (0.9.2)
|
51
|
+
multipart-post (>= 1.2, < 3)
|
52
|
+
git (1.5.0)
|
53
|
+
github_api (0.16.0)
|
54
|
+
addressable (~> 2.4.0)
|
55
|
+
descendants_tracker (~> 0.0.4)
|
56
|
+
faraday (~> 0.8, < 0.10)
|
57
|
+
hashie (>= 3.4)
|
58
|
+
mime-types (>= 1.16, < 3.0)
|
59
|
+
oauth2 (~> 1.0)
|
60
|
+
hashie (3.6.0)
|
61
|
+
highline (2.0.2)
|
62
|
+
i18n (1.6.0)
|
63
|
+
concurrent-ruby (~> 1.0)
|
64
|
+
jeweler (2.3.9)
|
65
|
+
builder
|
66
|
+
bundler
|
67
|
+
git (>= 1.2.5)
|
68
|
+
github_api (~> 0.16.0)
|
69
|
+
highline (>= 1.6.15)
|
70
|
+
nokogiri (>= 1.5.10)
|
71
|
+
psych
|
72
|
+
rake
|
73
|
+
rdoc
|
74
|
+
semver2
|
75
|
+
json (2.2.0)
|
76
|
+
jwt (2.2.1)
|
77
|
+
loofah (2.2.3)
|
78
|
+
crass (~> 1.0.2)
|
79
|
+
nokogiri (>= 1.5.9)
|
80
|
+
method_source (0.9.2)
|
81
|
+
mime-types (2.99.3)
|
82
|
+
mini_portile2 (2.4.0)
|
83
|
+
minitest (5.11.3)
|
84
|
+
multi_json (1.13.1)
|
85
|
+
multi_xml (0.6.0)
|
86
|
+
multipart-post (2.1.1)
|
87
|
+
nokogiri (1.10.3)
|
88
|
+
mini_portile2 (~> 2.4.0)
|
89
|
+
oauth2 (1.4.1)
|
90
|
+
faraday (>= 0.8, < 0.16.0)
|
91
|
+
jwt (>= 1.0, < 3.0)
|
92
|
+
multi_json (~> 1.3)
|
93
|
+
multi_xml (~> 0.5)
|
94
|
+
rack (>= 1.2, < 3)
|
95
|
+
psych (3.1.0)
|
96
|
+
rack (2.0.7)
|
97
|
+
rack-test (1.1.0)
|
98
|
+
rack (>= 1.0, < 3)
|
99
|
+
rails-dom-testing (2.0.3)
|
100
|
+
activesupport (>= 4.2.0)
|
101
|
+
nokogiri (>= 1.6)
|
102
|
+
rails-html-sanitizer (1.0.4)
|
103
|
+
loofah (~> 2.2, >= 2.2.2)
|
104
|
+
railties (5.2.3)
|
105
|
+
actionpack (= 5.2.3)
|
106
|
+
activesupport (= 5.2.3)
|
107
|
+
method_source
|
108
|
+
rake (>= 0.8.7)
|
109
|
+
thor (>= 0.19.0, < 2.0)
|
110
|
+
rake (12.3.2)
|
111
|
+
rdoc (6.1.1)
|
112
|
+
rspec (3.8.0)
|
113
|
+
rspec-core (~> 3.8.0)
|
114
|
+
rspec-expectations (~> 3.8.0)
|
115
|
+
rspec-mocks (~> 3.8.0)
|
116
|
+
rspec-core (3.8.0)
|
117
|
+
rspec-support (~> 3.8.0)
|
118
|
+
rspec-expectations (3.8.3)
|
119
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
120
|
+
rspec-support (~> 3.8.0)
|
121
|
+
rspec-mocks (3.8.0)
|
122
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
123
|
+
rspec-support (~> 3.8.0)
|
124
|
+
rspec-support (3.8.0)
|
125
|
+
semver2 (3.4.2)
|
126
|
+
simplecov (0.16.1)
|
127
|
+
docile (~> 1.1)
|
128
|
+
json (>= 1.8, < 3)
|
129
|
+
simplecov-html (~> 0.10.0)
|
130
|
+
simplecov-html (0.10.2)
|
131
|
+
sqlite3 (1.3.13)
|
132
|
+
term-ansicolor (1.7.1)
|
133
|
+
tins (~> 1.0)
|
134
|
+
thor (0.20.3)
|
135
|
+
thread_safe (0.3.6)
|
136
|
+
tins (1.20.3)
|
137
|
+
tzinfo (1.2.5)
|
138
|
+
thread_safe (~> 0.1)
|
139
|
+
|
140
|
+
PLATFORMS
|
141
|
+
ruby
|
142
|
+
|
143
|
+
DEPENDENCIES
|
144
|
+
activerecord (~> 5.2.0)
|
145
|
+
activesupport (~> 5.2.0)
|
146
|
+
ancestry (>= 1.3.0)
|
147
|
+
appraisal
|
148
|
+
coveralls
|
149
|
+
jeweler
|
150
|
+
railties (~> 5.2.0)
|
151
|
+
rspec
|
152
|
+
sqlite3 (~> 1.3.6)
|
153
|
+
|
154
|
+
BUNDLED WITH
|
155
|
+
2.0.1
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# This file was generated by Appraisal
|
2
|
+
|
3
|
+
source "http://rubygems.org"
|
4
|
+
|
5
|
+
gem "activerecord", "~> 6.0.0.rc1"
|
6
|
+
gem "activesupport", "~> 6.0.0.rc1"
|
7
|
+
gem "ancestry", ">= 1.3.0"
|
8
|
+
gem "railties", "~> 6.0.0.rc1"
|
9
|
+
|
10
|
+
group :development do
|
11
|
+
gem "appraisal"
|
12
|
+
gem "coveralls", require: false
|
13
|
+
gem "jeweler"
|
14
|
+
gem "rspec"
|
15
|
+
gem "sqlite3", "~> 1.4.0"
|
16
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
actionpack (6.0.0.rc1)
|
5
|
+
actionview (= 6.0.0.rc1)
|
6
|
+
activesupport (= 6.0.0.rc1)
|
7
|
+
rack (~> 2.0)
|
8
|
+
rack-test (>= 0.6.3)
|
9
|
+
rails-dom-testing (~> 2.0)
|
10
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
11
|
+
actionview (6.0.0.rc1)
|
12
|
+
activesupport (= 6.0.0.rc1)
|
13
|
+
builder (~> 3.1)
|
14
|
+
erubi (~> 1.4)
|
15
|
+
rails-dom-testing (~> 2.0)
|
16
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
17
|
+
activemodel (6.0.0.rc1)
|
18
|
+
activesupport (= 6.0.0.rc1)
|
19
|
+
activerecord (6.0.0.rc1)
|
20
|
+
activemodel (= 6.0.0.rc1)
|
21
|
+
activesupport (= 6.0.0.rc1)
|
22
|
+
activesupport (6.0.0.rc1)
|
23
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
24
|
+
i18n (>= 0.7, < 2)
|
25
|
+
minitest (~> 5.1)
|
26
|
+
tzinfo (~> 1.1)
|
27
|
+
zeitwerk (~> 2.1, >= 2.1.4)
|
28
|
+
addressable (2.4.0)
|
29
|
+
ancestry (3.0.6)
|
30
|
+
activerecord (>= 3.2.0)
|
31
|
+
appraisal (2.2.0)
|
32
|
+
bundler
|
33
|
+
rake
|
34
|
+
thor (>= 0.14.0)
|
35
|
+
builder (3.2.3)
|
36
|
+
concurrent-ruby (1.1.5)
|
37
|
+
coveralls (0.8.23)
|
38
|
+
json (>= 1.8, < 3)
|
39
|
+
simplecov (~> 0.16.1)
|
40
|
+
term-ansicolor (~> 1.3)
|
41
|
+
thor (>= 0.19.4, < 2.0)
|
42
|
+
tins (~> 1.6)
|
43
|
+
crass (1.0.4)
|
44
|
+
descendants_tracker (0.0.4)
|
45
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
46
|
+
diff-lcs (1.3)
|
47
|
+
docile (1.3.1)
|
48
|
+
erubi (1.8.0)
|
49
|
+
faraday (0.9.2)
|
50
|
+
multipart-post (>= 1.2, < 3)
|
51
|
+
git (1.5.0)
|
52
|
+
github_api (0.16.0)
|
53
|
+
addressable (~> 2.4.0)
|
54
|
+
descendants_tracker (~> 0.0.4)
|
55
|
+
faraday (~> 0.8, < 0.10)
|
56
|
+
hashie (>= 3.4)
|
57
|
+
mime-types (>= 1.16, < 3.0)
|
58
|
+
oauth2 (~> 1.0)
|
59
|
+
hashie (3.6.0)
|
60
|
+
highline (2.0.2)
|
61
|
+
i18n (1.6.0)
|
62
|
+
concurrent-ruby (~> 1.0)
|
63
|
+
jeweler (2.3.9)
|
64
|
+
builder
|
65
|
+
bundler
|
66
|
+
git (>= 1.2.5)
|
67
|
+
github_api (~> 0.16.0)
|
68
|
+
highline (>= 1.6.15)
|
69
|
+
nokogiri (>= 1.5.10)
|
70
|
+
psych
|
71
|
+
rake
|
72
|
+
rdoc
|
73
|
+
semver2
|
74
|
+
json (2.2.0)
|
75
|
+
jwt (2.2.1)
|
76
|
+
loofah (2.2.3)
|
77
|
+
crass (~> 1.0.2)
|
78
|
+
nokogiri (>= 1.5.9)
|
79
|
+
method_source (0.9.2)
|
80
|
+
mime-types (2.99.3)
|
81
|
+
mini_portile2 (2.4.0)
|
82
|
+
minitest (5.11.3)
|
83
|
+
multi_json (1.13.1)
|
84
|
+
multi_xml (0.6.0)
|
85
|
+
multipart-post (2.1.1)
|
86
|
+
nokogiri (1.10.3)
|
87
|
+
mini_portile2 (~> 2.4.0)
|
88
|
+
oauth2 (1.4.1)
|
89
|
+
faraday (>= 0.8, < 0.16.0)
|
90
|
+
jwt (>= 1.0, < 3.0)
|
91
|
+
multi_json (~> 1.3)
|
92
|
+
multi_xml (~> 0.5)
|
93
|
+
rack (>= 1.2, < 3)
|
94
|
+
psych (3.1.0)
|
95
|
+
rack (2.0.7)
|
96
|
+
rack-test (1.1.0)
|
97
|
+
rack (>= 1.0, < 3)
|
98
|
+
rails-dom-testing (2.0.3)
|
99
|
+
activesupport (>= 4.2.0)
|
100
|
+
nokogiri (>= 1.6)
|
101
|
+
rails-html-sanitizer (1.0.4)
|
102
|
+
loofah (~> 2.2, >= 2.2.2)
|
103
|
+
railties (6.0.0.rc1)
|
104
|
+
actionpack (= 6.0.0.rc1)
|
105
|
+
activesupport (= 6.0.0.rc1)
|
106
|
+
method_source
|
107
|
+
rake (>= 0.8.7)
|
108
|
+
thor (>= 0.20.3, < 2.0)
|
109
|
+
rake (12.3.2)
|
110
|
+
rdoc (6.1.1)
|
111
|
+
rspec (3.8.0)
|
112
|
+
rspec-core (~> 3.8.0)
|
113
|
+
rspec-expectations (~> 3.8.0)
|
114
|
+
rspec-mocks (~> 3.8.0)
|
115
|
+
rspec-core (3.8.0)
|
116
|
+
rspec-support (~> 3.8.0)
|
117
|
+
rspec-expectations (3.8.3)
|
118
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
119
|
+
rspec-support (~> 3.8.0)
|
120
|
+
rspec-mocks (3.8.0)
|
121
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
122
|
+
rspec-support (~> 3.8.0)
|
123
|
+
rspec-support (3.8.0)
|
124
|
+
semver2 (3.4.2)
|
125
|
+
simplecov (0.16.1)
|
126
|
+
docile (~> 1.1)
|
127
|
+
json (>= 1.8, < 3)
|
128
|
+
simplecov-html (~> 0.10.0)
|
129
|
+
simplecov-html (0.10.2)
|
130
|
+
sqlite3 (1.4.1)
|
131
|
+
term-ansicolor (1.7.1)
|
132
|
+
tins (~> 1.0)
|
133
|
+
thor (0.20.3)
|
134
|
+
thread_safe (0.3.6)
|
135
|
+
tins (1.20.3)
|
136
|
+
tzinfo (1.2.5)
|
137
|
+
thread_safe (~> 0.1)
|
138
|
+
zeitwerk (2.1.6)
|
139
|
+
|
140
|
+
PLATFORMS
|
141
|
+
ruby
|
142
|
+
|
143
|
+
DEPENDENCIES
|
144
|
+
activerecord (~> 6.0.0.rc1)
|
145
|
+
activesupport (~> 6.0.0.rc1)
|
146
|
+
ancestry (>= 1.3.0)
|
147
|
+
appraisal
|
148
|
+
coveralls
|
149
|
+
jeweler
|
150
|
+
railties (~> 6.0.0.rc1)
|
151
|
+
rspec
|
152
|
+
sqlite3 (~> 1.4.0)
|
153
|
+
|
154
|
+
BUNDLED WITH
|
155
|
+
2.0.1
|
@@ -4,32 +4,32 @@ module ActsAsMessageable
|
|
4
4
|
class Message < ::ActiveRecord::Base
|
5
5
|
include ActsAsMessageable::Scopes
|
6
6
|
|
7
|
-
belongs_to :received_messageable, :
|
8
|
-
belongs_to :sent_messageable, :
|
7
|
+
belongs_to :received_messageable, polymorphic: true
|
8
|
+
belongs_to :sent_messageable, polymorphic: true
|
9
9
|
|
10
10
|
attr_accessor :removed, :restored
|
11
11
|
cattr_accessor :required
|
12
12
|
|
13
|
-
ActsAsMessageable.rails_api.new(self).default_scope(
|
13
|
+
ActsAsMessageable.rails_api.new(self).default_scope('created_at desc')
|
14
14
|
|
15
15
|
def open?
|
16
|
-
|
16
|
+
opened?
|
17
17
|
end
|
18
18
|
|
19
19
|
def open
|
20
|
-
update_attributes!(:
|
20
|
+
update_attributes!(opened: true)
|
21
21
|
end
|
22
|
-
alias
|
23
|
-
alias
|
22
|
+
alias mark_as_read open
|
23
|
+
alias read open
|
24
24
|
|
25
25
|
def close
|
26
|
-
update_attributes!(:
|
26
|
+
update_attributes!(opened: false)
|
27
27
|
end
|
28
|
-
alias
|
29
|
-
alias
|
28
|
+
alias mark_as_unread close
|
29
|
+
alias unread close
|
30
30
|
|
31
|
-
alias
|
32
|
-
alias
|
31
|
+
alias from sent_messageable
|
32
|
+
alias to received_messageable
|
33
33
|
|
34
34
|
def real_receiver(user)
|
35
35
|
user == from ? to : from
|
@@ -56,7 +56,7 @@ module ActsAsMessageable
|
|
56
56
|
end
|
57
57
|
|
58
58
|
def people
|
59
|
-
conversation.map
|
59
|
+
conversation.map(&:from).uniq!
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
module ActsAsMessageable
|
2
2
|
module Model
|
3
|
-
|
4
3
|
def self.included(base)
|
5
4
|
base.extend ClassMethods
|
6
5
|
end
|
@@ -15,47 +14,46 @@ module ActsAsMessageable
|
|
15
14
|
# @param [Symbol] :dependent - dependent option from ActiveRecord has_many method
|
16
15
|
def acts_as_messageable(options = {})
|
17
16
|
default_options = {
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
22
|
-
:
|
17
|
+
table_name: 'messages',
|
18
|
+
class_name: 'ActsAsMessageable::Message',
|
19
|
+
required: %i[topic body],
|
20
|
+
dependent: :nullify,
|
21
|
+
group_messages: false
|
23
22
|
}
|
24
23
|
options = default_options.merge(options)
|
25
24
|
|
26
25
|
has_many :received_messages_relation,
|
27
|
-
:
|
28
|
-
:
|
29
|
-
:
|
26
|
+
as: :received_messageable,
|
27
|
+
class_name: options[:class_name],
|
28
|
+
dependent: options[:dependent]
|
30
29
|
has_many :sent_messages_relation,
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
30
|
+
as: :sent_messageable,
|
31
|
+
class_name: options[:class_name],
|
32
|
+
dependent: options[:dependent]
|
34
33
|
|
35
34
|
self.messages_class_name = options[:class_name].constantize
|
36
|
-
|
35
|
+
messages_class_name.has_ancestry
|
37
36
|
|
38
|
-
if
|
39
|
-
|
40
|
-
|
37
|
+
if messages_class_name.respond_to?(:table_name=)
|
38
|
+
messages_class_name.table_name = options[:table_name]
|
39
|
+
messages_class_name.initialize_scopes
|
41
40
|
else
|
42
|
-
|
41
|
+
messages_class_name.set_table_name(options[:table_name])
|
43
42
|
ActiveSupport::Deprecation.warn("Calling set_table_name is deprecated. Please use `self.table_name = 'the_name'` instead.")
|
44
43
|
end
|
45
44
|
|
46
|
-
|
47
|
-
|
45
|
+
messages_class_name.required = Array.wrap(options[:required])
|
46
|
+
messages_class_name.validates_presence_of messages_class_name.required
|
48
47
|
self.group_messages = options[:group_messages]
|
49
48
|
|
50
49
|
include ActsAsMessageable::Model::InstanceMethods
|
51
50
|
end
|
52
51
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
52
|
+
# Method recognize real object class
|
53
|
+
# @return [ActiveRecord::Base] class or relation object
|
54
|
+
def resolve_active_record_ancestor
|
55
|
+
reflect_on_association(:received_messages_relation).active_record
|
56
|
+
end
|
59
57
|
end
|
60
58
|
|
61
59
|
module InstanceMethods
|
@@ -70,7 +68,7 @@ module ActsAsMessageable
|
|
70
68
|
# @return [ActiveRecord::Relation] returns all messages from inbox
|
71
69
|
def received_messages
|
72
70
|
result = ActsAsMessageable.rails_api.new(received_messages_relation)
|
73
|
-
result = result.scoped.where(:
|
71
|
+
result = result.scoped.where(recipient_delete: false)
|
74
72
|
result.relation_context = self
|
75
73
|
|
76
74
|
result
|
@@ -79,7 +77,7 @@ module ActsAsMessageable
|
|
79
77
|
# @return [ActiveRecord::Relation] returns all messages from outbox
|
80
78
|
def sent_messages
|
81
79
|
result = ActsAsMessageable.rails_api.new(sent_messages_relation)
|
82
|
-
result = result.scoped.where(:
|
80
|
+
result = result.scoped.where(sender_delete: false)
|
83
81
|
result.relation_context = self
|
84
82
|
|
85
83
|
result
|
@@ -100,12 +98,12 @@ module ActsAsMessageable
|
|
100
98
|
message_attributes = {}
|
101
99
|
|
102
100
|
case args.first
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
101
|
+
when String
|
102
|
+
self.class.messages_class_name.required.each_with_index do |attribute, index|
|
103
|
+
message_attributes[attribute] = args[index]
|
104
|
+
end
|
105
|
+
when Hash
|
106
|
+
message_attributes = args.first
|
109
107
|
end
|
110
108
|
|
111
109
|
message = self.class.messages_class_name.new message_attributes
|
@@ -124,7 +122,9 @@ module ActsAsMessageable
|
|
124
122
|
#
|
125
123
|
# @return [ActsAsMessageable::Message] the message object
|
126
124
|
def send_message!(to, *args)
|
127
|
-
send_message(to, *args).
|
125
|
+
send_message(to, *args).tap do |message|
|
126
|
+
message.save!
|
127
|
+
end
|
128
128
|
end
|
129
129
|
|
130
130
|
# Reply to given message
|
@@ -150,12 +150,12 @@ module ActsAsMessageable
|
|
150
150
|
current_user = self
|
151
151
|
|
152
152
|
case current_user
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
153
|
+
when message.to
|
154
|
+
attribute = message.recipient_delete ? :recipient_permanent_delete : :recipient_delete
|
155
|
+
when message.from
|
156
|
+
attribute = message.sender_delete ? :sender_permanent_delete : :sender_delete
|
157
|
+
else
|
158
|
+
raise "#{current_user} can't delete this message"
|
159
159
|
end
|
160
160
|
|
161
161
|
message.update_attributes!(attribute => true)
|
@@ -166,12 +166,12 @@ module ActsAsMessageable
|
|
166
166
|
current_user = self
|
167
167
|
|
168
168
|
case current_user
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
169
|
+
when message.to
|
170
|
+
attribute = :recipient_delete
|
171
|
+
when message.from
|
172
|
+
attribute = :sender_delete
|
173
|
+
else
|
174
|
+
raise "#{current_user} can't restore this message"
|
175
175
|
end
|
176
176
|
|
177
177
|
message.update_attributes!(attribute => false)
|