Skip to content

Commit

Permalink
feat: add LikeRemove event
Browse files Browse the repository at this point in the history
  • Loading branch information
SevereCloud committed May 23, 2020
1 parent bf4279e commit 5d89e0e
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 0 deletions.
15 changes: 15 additions & 0 deletions events/events.go
Expand Up @@ -57,6 +57,7 @@ type FuncList struct {
appPayload []object.AppPayloadFunc
messageRead []object.MessageReadFunc
likeAdd []object.LikeAddFunc
likeRemove []object.LikeRemoveFunc
special map[string][]func(object.GroupEvent)
}

Expand Down Expand Up @@ -472,6 +473,15 @@ func (fl FuncList) Handler(e object.GroupEvent) error { // nolint:gocyclo
for _, f := range fl.likeAdd {
f(obj, e.GroupID)
}
case object.EventLikeRemove:
var obj object.LikeRemoveObject
if err := json.Unmarshal(e.Object, &obj); err != nil {
return err
}

for _, f := range fl.likeRemove {
f(obj, e.GroupID)
}
}

return nil
Expand Down Expand Up @@ -705,3 +715,8 @@ func (fl *FuncList) MessageRead(f object.MessageReadFunc) {
func (fl *FuncList) LikeAdd(f object.LikeAddFunc) {
fl.likeAdd = append(fl.likeAdd, f)
}

// LikeRemove handler.
func (fl *FuncList) LikeRemove(f object.LikeRemoveFunc) {
fl.likeRemove = append(fl.likeRemove, f)
}
32 changes: 32 additions & 0 deletions events/events_test.go
Expand Up @@ -1432,6 +1432,38 @@ func TestFuncList_HandlerLikeAdd(t *testing.T) {
)
}

func TestFuncList_HandlerLikeRemove(t *testing.T) {
t.Parallel()

fl := events.NewFuncList()

fl.LikeRemove(func(obj object.LikeRemoveObject, groupID int) {
assert.Equal(t, groupID, GID)
})

f := func(e object.GroupEvent, wantErr bool) {
if err := fl.Handler(e); (err != nil) != wantErr {
t.Errorf("FuncList.Handler() error = %v, wantErr %v", err, wantErr)
}
}

f(
object.GroupEvent{
Type: "like_remove",
Object: []byte(`{"liker_id": 574423462,"object_type": "photo","object_owner_id": -178044536,"object_id": 457242474,"thread_reply_id": 0}`),
GroupID: GID,
},
false,
)
f(
object.GroupEvent{
Type: "like_remove",
Object: []byte(""),
},
true,
)
}

func TestFuncList_OnEvent(t *testing.T) {
t.Parallel()

Expand Down
12 changes: 12 additions & 0 deletions object/handler.go
Expand Up @@ -442,3 +442,15 @@ type LikeAddObject struct {
ObjectID int `json:"object_id"`
ThreadReplyID int `json:"thread_reply_id"`
}

// LikeRemoveFunc func.
type LikeRemoveFunc func(LikeRemoveObject, int)

// LikeRemoveObject struct.
type LikeRemoveObject struct {
LikerID int `json:"like_id"`
ObjectType string `json:"object_type"`
ObjectOwnerID int `json:"object_owner_id"`
ObjectID int `json:"object_id"`
ThreadReplyID int `json:"thread_reply_id"`
}
1 change: 1 addition & 0 deletions object/object.go
Expand Up @@ -122,6 +122,7 @@ const (
EventAppPayload = "app_payload"
EventMessageRead = "message_read"
EventLikeAdd = "like_add"
EventLikeRemove = "like_remove"
)

// GroupEvent struct.
Expand Down

0 comments on commit 5d89e0e

Please sign in to comment.