has_friendship 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/has_friendship/friendable.rb +13 -1
- data/lib/has_friendship/friendship.rb +11 -0
- data/lib/has_friendship/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9132e28ff843795c0c0a75a2a9a87d8924ce6b04
|
4
|
+
data.tar.gz: 082d2aca63456254542c02704e84caf9429fdd02
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4a19f13fb2a2ad003fb169abebf782af9df68bd70d1e2cba6fb5dbdc8f5568949cce12c5d8422e6ed89ecd84f7bfe1834df8f8112ae0159da84e246cd9749f68
|
7
|
+
data.tar.gz: e5c234f06331dbefbb97cec124d9d493e4de5646994e150e13a6d2ae2261790a3dd193d1c3e184b97a2920396482964804f024d3d00519847736f032af34f845
|
@@ -51,7 +51,8 @@ module HasFriendship
|
|
51
51
|
|
52
52
|
def accept_request(friend)
|
53
53
|
on_relation_with(friend) do |one, other|
|
54
|
-
HasFriendship::Friendship.find_unblocked_friendship(one, other)
|
54
|
+
friendship = HasFriendship::Friendship.find_unblocked_friendship(one, other)
|
55
|
+
friendship.accept! if can_accept_request?(friendship)
|
55
56
|
end
|
56
57
|
end
|
57
58
|
|
@@ -87,11 +88,22 @@ module HasFriendship
|
|
87
88
|
HasFriendship::Friendship.find_relation(self, friend, status: 2).any?
|
88
89
|
end
|
89
90
|
|
91
|
+
def on_friendship_created(*args); end
|
92
|
+
def on_friendship_accepted(*args); end
|
93
|
+
def on_friendship_blocked(*args); end
|
94
|
+
|
90
95
|
private
|
91
96
|
|
92
97
|
def has_blocked(friend)
|
93
98
|
HasFriendship::Friendship.find_one_side(self, friend).blocker_id == self.id
|
94
99
|
end
|
100
|
+
|
101
|
+
def can_accept_request?(friendship)
|
102
|
+
return if friendship.pending? && self == friendship.friendable
|
103
|
+
return if friendship.requested? && self == friendship.friend
|
104
|
+
|
105
|
+
true
|
106
|
+
end
|
95
107
|
end
|
96
108
|
end
|
97
109
|
end
|
@@ -1,9 +1,17 @@
|
|
1
1
|
module HasFriendship
|
2
2
|
class Friendship < ActiveRecord::Base
|
3
3
|
|
4
|
+
after_create do
|
5
|
+
friend.on_friendship_created(self)
|
6
|
+
end
|
7
|
+
|
4
8
|
enum status: { pending: 0, requested: 1, accepted: 2, blocked: 3 } do
|
5
9
|
event :accept do
|
6
10
|
transition [:pending, :requested] => :accepted
|
11
|
+
|
12
|
+
after do
|
13
|
+
friendable.on_friendship_accepted(self)
|
14
|
+
end
|
7
15
|
end
|
8
16
|
|
9
17
|
event :block do
|
@@ -11,6 +19,9 @@ module HasFriendship
|
|
11
19
|
self.blocker_id = self.friendable.id
|
12
20
|
end
|
13
21
|
|
22
|
+
after do
|
23
|
+
friendable.on_friendship_blocked(self)
|
24
|
+
end
|
14
25
|
transition all - [:blocked] => :blocked
|
15
26
|
end
|
16
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_friendship
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sung Won Cho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -195,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
195
195
|
version: '0'
|
196
196
|
requirements: []
|
197
197
|
rubyforge_project:
|
198
|
-
rubygems_version: 2.
|
198
|
+
rubygems_version: 2.5.1
|
199
199
|
signing_key:
|
200
200
|
specification_version: 4
|
201
201
|
summary: Add social network friendship features to your Active Record models.
|