You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Allow users to delete messages only for themselves (Delete message for me - feature) (#5967)
* Add `deletedForMe` property to Message model to track message deletion status for the current user
* Add `deletedForMe` property to MessageEntity and update database version
* Add `deleteMessageForMe` support to ChatClient for user-specific message deletion
* Add support for `deleteForMe` parameter in message deletion API and tests
* Show "Only visible to you" label only when message is not deleted for me
* Add DeleteMessageForMeComponentFactory for user-specific message deletion
* Add deletedForMe property to MessageDeletedEvent and update related mappings
* Add DeletedForMeDecorator and related functionality for user-specific message deletion in XML SDK
* Tests
* CHANGELOG
* Update kdocs
* Introduce DeleteMessageForMeListenerState
* Introduce DeleteMessageForMeListenerDatabase
* Add withDeletedForMe method to Message builder
* Implement retry logic for deleting messages marked as deleted for the user
Copy file name to clipboardExpand all lines: stream-chat-android-client-test/src/main/java/io/getstream/chat/android/client/test/utils/TestDataHelper.kt
Copy file name to clipboardExpand all lines: stream-chat-android-client/api/stream-chat-android-client.api
+16-4Lines changed: 16 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -53,6 +53,7 @@ public final class io/getstream/chat/android/client/ChatClient {
53
53
public final fun deleteMessage (Ljava/lang/String;)Lio/getstream/result/call/Call;
54
54
public final fun deleteMessage (Ljava/lang/String;Z)Lio/getstream/result/call/Call;
55
55
public static synthetic fun deleteMessage$default (Lio/getstream/chat/android/client/ChatClient;Ljava/lang/String;ZILjava/lang/Object;)Lio/getstream/result/call/Call;
56
+
public final fun deleteMessageForMe (Ljava/lang/String;)Lio/getstream/result/call/Call;
56
57
public final fun deletePoll (Ljava/lang/String;)Lio/getstream/result/call/Call;
57
58
public final fun deleteReaction (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lio/getstream/result/call/Call;
58
59
public static synthetic fun deleteReaction$default (Lio/getstream/chat/android/client/ChatClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/result/call/Call;
@@ -1583,9 +1584,10 @@ public final class io/getstream/chat/android/client/events/MemberUpdatedEvent :
1583
1584
}
1584
1585
1585
1586
public final class io/getstream/chat/android/client/events/MessageDeletedEvent : io/getstream/chat/android/client/events/CidEvent, io/getstream/chat/android/client/events/HasMessage {
1586
-
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;ZLjava/lang/Integer;)V
1587
+
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;ZLjava/lang/Integer;Z)V
1587
1588
public final fun component1 ()Ljava/lang/String;
1588
1589
public final fun component10 ()Ljava/lang/Integer;
1590
+
public final fun component11 ()Z
1589
1591
public final fun component2 ()Ljava/util/Date;
1590
1592
public final fun component3 ()Ljava/lang/String;
1591
1593
public final fun component4 ()Ljava/lang/String;
@@ -1594,14 +1596,15 @@ public final class io/getstream/chat/android/client/events/MessageDeletedEvent :
1594
1596
public final fun component7 ()Lio/getstream/chat/android/models/Message;
1595
1597
public final fun component8 ()Lio/getstream/chat/android/models/User;
1596
1598
public final fun component9 ()Z
1597
-
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;ZLjava/lang/Integer;)Lio/getstream/chat/android/client/events/MessageDeletedEvent;
1598
-
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/MessageDeletedEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;ZLjava/lang/Integer;ILjava/lang/Object;)Lio/getstream/chat/android/client/events/MessageDeletedEvent;
1599
+
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;ZLjava/lang/Integer;Z)Lio/getstream/chat/android/client/events/MessageDeletedEvent;
1600
+
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/MessageDeletedEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;ZLjava/lang/Integer;ZILjava/lang/Object;)Lio/getstream/chat/android/client/events/MessageDeletedEvent;
1599
1601
public fun equals (Ljava/lang/Object;)Z
1600
1602
public fun getChannelId ()Ljava/lang/String;
1601
1603
public final fun getChannelMessageCount ()Ljava/lang/Integer;
1602
1604
public fun getChannelType ()Ljava/lang/String;
1603
1605
public fun getCid ()Ljava/lang/String;
1604
1606
public fun getCreatedAt ()Ljava/util/Date;
1607
+
public final fun getDeletedForMe ()Z
1605
1608
public final fun getHardDelete ()Z
1606
1609
public fun getMessage ()Lio/getstream/chat/android/models/Message;
1607
1610
public fun getRawCreatedAt ()Ljava/lang/String;
@@ -2962,7 +2965,7 @@ public abstract interface class io/getstream/chat/android/client/persistance/rep
2962
2965
public abstract fun createRepositoryFactory (Lio/getstream/chat/android/models/User;)Lio/getstream/chat/android/client/persistance/repository/factory/RepositoryFactory;
public fun getErrorHandler ()Lio/getstream/chat/android/client/errorhandler/ErrorHandler;
2967
2970
public fun onAttachmentSendRequest (Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
2968
2971
public static synthetic fun onAttachmentSendRequest$suspendImpl (Lio/getstream/chat/android/client/plugin/Plugin;Ljava/lang/String;Ljava/lang/String;Lio/getstream/chat/android/models/Message;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
@@ -3108,6 +3111,15 @@ public abstract interface class io/getstream/chat/android/client/plugin/listener
3108
3111
public abstract fun onDeleteChannelResult (Ljava/lang/String;Ljava/lang/String;Lio/getstream/result/Result;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3109
3112
}
3110
3113
3114
+
public abstract interface class io/getstream/chat/android/client/plugin/listeners/DeleteMessageForMeListener {
3115
+
public fun onDeleteMessageForMePrecondition (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3116
+
public static synthetic fun onDeleteMessageForMePrecondition$suspendImpl (Lio/getstream/chat/android/client/plugin/listeners/DeleteMessageForMeListener;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3117
+
public fun onDeleteMessageForMeRequest (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3118
+
public static synthetic fun onDeleteMessageForMeRequest$suspendImpl (Lio/getstream/chat/android/client/plugin/listeners/DeleteMessageForMeListener;Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3119
+
public fun onDeleteMessageForMeResult (Ljava/lang/String;Lio/getstream/result/Result;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3120
+
public static synthetic fun onDeleteMessageForMeResult$suspendImpl (Lio/getstream/chat/android/client/plugin/listeners/DeleteMessageForMeListener;Ljava/lang/String;Lio/getstream/result/Result;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3121
+
}
3122
+
3111
3123
public abstract interface class io/getstream/chat/android/client/plugin/listeners/DeleteMessageListener {
3112
3124
public abstract fun onMessageDeletePrecondition (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
3113
3125
public abstract fun onMessageDeleteRequest (Ljava/lang/String;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
Copy file name to clipboardExpand all lines: stream-chat-android-client/src/main/java/io/getstream/chat/android/client/api/models/identifier/Identifiers.kt
+12Lines changed: 12 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -196,6 +196,18 @@ internal fun DeleteMessageIdentifier(
196
196
return result
197
197
}
198
198
199
+
/**
200
+
* Identifier for a [ChatClient.deleteMessageForMe] call.
201
+
*/
202
+
@Suppress("FunctionName", "MagicNumber")
203
+
internalfunDeleteMessageForMeIdentifier(
204
+
messageId:String,
205
+
): Int {
206
+
var result ="DeleteMessageForMe".hashCode()
207
+
result =31* result + messageId.hashCode()
208
+
return result
209
+
}
210
+
199
211
/**
200
212
* Identifier for [ChatClient.keystroke] and [ChatClient.stopTyping] calls.
0 commit comments