Skip to content

Commit 59eb340

Browse files
author
Daksh
committed
add fields and tests
1 parent cac5652 commit 59eb340

File tree

4 files changed

+110
-2
lines changed

4 files changed

+110
-2
lines changed

DOCS.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,6 +1214,13 @@ Message.delete(messageId).deletedBy(userId).request();
12141214

12151215
// combine parameters
12161216
Message.delete(messageId).hard(true).deletedBy(userId).request();
1217+
1218+
// delete for me only (message is only deleted for the specified user)
1219+
Message.delete(messageId).deleteForMe(true).deletedBy(userId).request();
1220+
1221+
// convenience methods
1222+
Message.hardDelete(messageId).request();
1223+
Message.deleteForMe(messageId, userId).request();
12171224
```
12181225

12191226
**Upload file or image**

src/main/java/io/getstream/chat/java/models/Message.java

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,8 @@ public static class MessageDeleteRequest extends StreamRequest<MessageDeleteResp
810810

811811
@Nullable private String deletedBy;
812812

813+
@Nullable private Boolean deleteForMe;
814+
813815
@NotNull
814816
public MessageDeleteRequest hard(@NotNull Boolean hard) {
815817
this.hard = hard;
@@ -822,9 +824,15 @@ public MessageDeleteRequest deletedBy(@NotNull String deletedBy) {
822824
return this;
823825
}
824826

827+
@NotNull
828+
public MessageDeleteRequest deleteForMe(@NotNull Boolean deleteForMe) {
829+
this.deleteForMe = deleteForMe;
830+
return this;
831+
}
832+
825833
@Override
826834
protected Call<MessageDeleteResponse> generateCall(Client client) {
827-
return client.create(MessageService.class).delete(this.id, this.hard, this.deletedBy);
835+
return client.create(MessageService.class).delete(this.id, this.hard, this.deletedBy, this.deleteForMe);
828836
}
829837
}
830838

@@ -1477,6 +1485,29 @@ public static MessageDeleteRequest delete(@NotNull String id) {
14771485
return new MessageDeleteRequest(id);
14781486
}
14791487

1488+
/**
1489+
* Creates a hard delete request
1490+
*
1491+
* @param id the message id
1492+
* @return the created request
1493+
*/
1494+
@NotNull
1495+
public static MessageDeleteRequest hardDelete(@NotNull String id) {
1496+
return new MessageDeleteRequest(id).hard(true);
1497+
}
1498+
1499+
/**
1500+
* Creates a delete for me request
1501+
*
1502+
* @param id the message id
1503+
* @param userId the user id for whom the message should be deleted
1504+
* @return the created request
1505+
*/
1506+
@NotNull
1507+
public static MessageDeleteRequest deleteForMe(@NotNull String id, @NotNull String userId) {
1508+
return new MessageDeleteRequest(id).deleteForMe(true).deletedBy(userId);
1509+
}
1510+
14801511
/**
14811512
* Creates a search request
14821513
*

src/main/java/io/getstream/chat/java/services/MessageService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ Call<StreamResponseObject> deleteImage(
9393
Call<MessageDeleteResponse> delete(
9494
@NotNull @Path("id") String id,
9595
@Nullable @Query("hard") Boolean hard,
96-
@Nullable @Query("deleted_by") String deletedBy);
96+
@Nullable @Query("deleted_by") String deletedBy,
97+
@Nullable @Query("delete_for_me") Boolean deleteForMe);
9798

9899
@GET("messages/{id}")
99100
Call<MessageGetResponse> get(

src/test/java/io/getstream/chat/java/MessageTest.java

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,4 +880,73 @@ void whenUnblockingAMessage_thenIsUnblocked() {
880880

881881
Assertions.assertDoesNotThrow(() -> Blocklist.delete(blocklistName).request());
882882
}
883+
884+
@DisplayName("Can delete message for me only")
885+
@Test
886+
void whenDeletingMessageForMe_thenIsDeletedForMe() {
887+
String text = "This is a message to delete for me only";
888+
MessageRequestObject messageRequest =
889+
MessageRequestObject.builder().text(text).userId(testUserRequestObject.getId()).build();
890+
Message message =
891+
Assertions.assertDoesNotThrow(
892+
() ->
893+
Message.send(testChannel.getType(), testChannel.getId())
894+
.message(messageRequest)
895+
.request())
896+
.getMessage();
897+
Assertions.assertNull(message.getDeletedAt());
898+
899+
// Test delete for me only
900+
Message deletedMessage =
901+
Assertions.assertDoesNotThrow(
902+
() -> Message.delete(message.getId()).deleteForMe(true).deletedBy(testUserRequestObject.getId()).request())
903+
.getMessage();
904+
Assertions.assertNotNull(deletedMessage.getDeletedAt());
905+
}
906+
907+
@DisplayName("Can use convenience method for delete for me")
908+
@Test
909+
void whenUsingDeleteForMeConvenienceMethod_thenIsDeletedForMe() {
910+
String text = "This is a message to delete for me using convenience method";
911+
MessageRequestObject messageRequest =
912+
MessageRequestObject.builder().text(text).userId(testUserRequestObject.getId()).build();
913+
Message message =
914+
Assertions.assertDoesNotThrow(
915+
() ->
916+
Message.send(testChannel.getType(), testChannel.getId())
917+
.message(messageRequest)
918+
.request())
919+
.getMessage();
920+
Assertions.assertNull(message.getDeletedAt());
921+
922+
// Test convenience method for delete for me
923+
Message deletedMessage =
924+
Assertions.assertDoesNotThrow(
925+
() -> Message.deleteForMe(message.getId(), testUserRequestObject.getId()).request())
926+
.getMessage();
927+
Assertions.assertNotNull(deletedMessage.getDeletedAt());
928+
}
929+
930+
@DisplayName("Can use convenience method for hard delete")
931+
@Test
932+
void whenUsingHardDeleteConvenienceMethod_thenIsHardDeleted() {
933+
String text = "This is a message to hard delete using convenience method";
934+
MessageRequestObject messageRequest =
935+
MessageRequestObject.builder().text(text).userId(testUserRequestObject.getId()).build();
936+
Message message =
937+
Assertions.assertDoesNotThrow(
938+
() ->
939+
Message.send(testChannel.getType(), testChannel.getId())
940+
.message(messageRequest)
941+
.request())
942+
.getMessage();
943+
Assertions.assertNull(message.getDeletedAt());
944+
945+
// Test convenience method for hard delete
946+
Message deletedMessage =
947+
Assertions.assertDoesNotThrow(
948+
() -> Message.hardDelete(message.getId()).request())
949+
.getMessage();
950+
Assertions.assertNotNull(deletedMessage.getDeletedAt());
951+
}
883952
}

0 commit comments

Comments
 (0)