Skip to content

Commit abebfb1

Browse files
daksh-rDaksh
andauthored
[CHA-1113] Update response fields for delete for me feature (#179)
* add delete for me fields and tests * update delete function * fix type * fix test * update flag * resolve comments * add overload * fix * update interface --------- Co-authored-by: Daksh <[email protected]>
1 parent 6b94302 commit abebfb1

File tree

3 files changed

+33
-3
lines changed

3 files changed

+33
-3
lines changed

src/Clients/IMessageClient.cs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,20 @@ public interface IMessageClient
2020
/// <summary>
2121
/// Deletes a message.
2222
/// </summary>
23-
/// <remarks>https://getstream.io/chat/docs/dotnet-csharp/send_message/?language=csharp</remarks>
24-
Task<GenericMessageResponse> DeleteMessageAsync(string messageId, bool hardDelete = false);
23+
/// <remarks>https://getstream.io/chat/docs/dotnet-csharp/send_message/?language=csharp#delete-a-message.</remarks>
24+
Task<GenericMessageResponse> DeleteMessageAsync(string messageId);
25+
26+
/// <summary>
27+
/// Deletes a message.
28+
/// </summary>
29+
/// <remarks>https://getstream.io/chat/docs/dotnet-csharp/send_message/?language=csharp#delete-a-message.</remarks>
30+
Task<GenericMessageResponse> DeleteMessageAsync(string messageId, bool hardDelete);
31+
32+
/// <summary>
33+
/// Deletes a message.
34+
/// </summary>
35+
/// <remarks>https://getstream.io/chat/docs/dotnet-csharp/send_message/?language=csharp#delete-a-message.</remarks>
36+
Task<GenericMessageResponse> DeleteMessageAsync(string messageId, string deletedBy, bool hardDelete = false, bool deleteForMe = false);
2537

2638
/// <summary>
2739
/// Returns a message.

src/Clients/MessageClient.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,21 @@ public async Task<MessagePartialUpdateResponse> UpdateMessagePartialAsync(string
7575
HttpStatusCode.Created,
7676
partialUpdateRequest);
7777

78-
public async Task<GenericMessageResponse> DeleteMessageAsync(string messageId, bool hardDelete = false)
78+
public async Task<GenericMessageResponse> DeleteMessageAsync(string messageId)
79+
=> await DeleteMessageAsync(messageId, null, false, false);
80+
81+
public async Task<GenericMessageResponse> DeleteMessageAsync(string messageId, bool hardDelete)
82+
=> await DeleteMessageAsync(messageId, null, hardDelete, false);
83+
84+
public async Task<GenericMessageResponse> DeleteMessageAsync(string messageId, string deletedBy, bool hardDelete = false, bool deleteForMe = false)
7985
=> await ExecuteRequestAsync<GenericMessageResponse>($"messages/{messageId}",
8086
HttpMethod.DELETE,
8187
HttpStatusCode.OK,
8288
queryParams: new List<KeyValuePair<string, string>>
8389
{
8490
new KeyValuePair<string, string>("hard", hardDelete.ToString().ToLowerInvariant()),
91+
new KeyValuePair<string, string>("delete_for_me", deleteForMe.ToString().ToLowerInvariant()),
92+
new KeyValuePair<string, string>("deleted_by", deletedBy),
8593
});
8694

8795
public async Task<GenericMessageResponse> GetMessageAsync(string messageId)

tests/MessageClientTests.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,16 @@ public async Task TestDeleteMessageAsync()
201201
await getMessageCall.Should().ThrowAsync<StreamChatException>();
202202
}
203203

204+
[Test]
205+
public async Task TestDeleteMessageForMeAsync()
206+
{
207+
await _messageClient.DeleteMessageAsync(_message.Id, _user.Id, hardDelete: false, deleteForMe: true);
208+
209+
// The message should still exist for other users but be marked as deleted for this user
210+
var response = await _messageClient.GetMessageAsync(_message.Id);
211+
response.Should().NotBeNull();
212+
}
213+
204214
[Test]
205215
public async Task TestPinAndUnpinAsync()
206216
{

0 commit comments

Comments
 (0)