Skip to content

Commit 4c974be

Browse files
committed
feat: soft delete and restore
1 parent 8686611 commit 4c974be

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

lib/stream/reactions.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,18 @@ def update(reaction_id, data: nil, target_feeds: nil)
2626
make_reaction_request(:put, {}, data, endpoint: uri)
2727
end
2828

29-
def delete(reaction_id)
29+
def delete(reaction_id, soft: false)
3030
uri = "/reaction/#{reaction_id}/"
31-
make_reaction_request(:delete, {}, {}, endpoint: uri)
31+
if soft
32+
make_reaction_request(:delete, { soft: soft }, {}, endpoint: uri)
33+
else
34+
make_reaction_request(:delete, {}, {}, endpoint: uri)
35+
end
36+
end
37+
38+
def restore(reaction_id)
39+
uri = "/reaction/#{reaction_id}/restore/"
40+
make_reaction_request(:put, {}, {}, endpoint: uri)
3241
end
3342

3443
def add_child(kind, parent_id, user_id, data: nil, target_feeds: nil, target_feeds_extra_data: nil)

spec/integration_spec.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,18 @@
951951
@client.reactions.delete(reaction['id'])
952952
expect { @client.reactions.get(reaction['id']) }.to raise_error Stream::StreamApiResponseDoesNotExistException
953953
end
954+
example 'soft delete and restore reaction' do
955+
reaction = @client.reactions.add('like', @activity['id'], 'vlad')
956+
@client.reactions.delete(reaction['id'], soft: true)
957+
activity_reactions = @client.reactions.filter({ activity_id: @activity['id'] })
958+
expect(activity_reactions.select { |react| react['id'] =~ reaction['id'] }.length).to eq 0
959+
@client.reactions.restore(reaction['id'])
960+
response = @client.reactions.get(reaction['id'])
961+
expect(response['activity_id']).to eq @activity['id']
962+
expect(response['user_id']).to eq 'vlad'
963+
expect(response['kind']).to eq 'like'
964+
expect(response['deleted_at']).to eq nil
965+
end
954966
example 'filter reactions' do
955967
parent = @client.reactions.add('like', @activity['id'], 'jim')
956968
child = @client.reactions.add_child('like', parent['id'], 'juan')

0 commit comments

Comments
 (0)