Skip to main content

Delete messages

Use the channel message deletion APIs to remove specific messages, clear history before a timestamp, or recall a sent message for all participants.

tip
  • BaseChannel.deleteLocalMessages() removes the specified messages from local storage only.
  • channel.deleteMessages() deletes the specified messages in the current channel.
  • channel.clearMessages() removes messages sent before a timestamp according to ClearMessagesParams.policy.
  • BaseChannel.deleteMessageForAll() recalls a sent message for all participants. The callback reports status through error; the current Flutter wrapper does not return the recalled Message object.

Delete specific messages (local only)

Delete one or more messages from the local database.

Method

Dart
static Future<int> deleteLocalMessages(List<Message> messages, OprationHandler<List<Message>> handler)

Code example

Dart
final channel = DirectChannel('<target-user-id>');
await BaseChannel.deleteLocalMessages(
messages,
(List<Message>? deletedMessages, NCError? error) {
if (error == null) {
print('Messages deleted locally: ${deletedMessages?.length}');
}
},
);

Delete specific messages in a channel

Delete one or more messages in the current channel.

Method

Dart
Future<int> deleteMessages(List<Message> messages, ErrorHandler handler)
Dart
final channel = DirectChannel('<target-user-id>');
await channel.deleteMessages(
messages,
(error) {
if (error == null) {
print('Messages deleted');
}
},
);

Clear messages by timestamp

Clear all messages in a channel up to a specified timestamp.

Method

Dart
Future<int> clearMessages(ClearMessagesParams params, ErrorHandler handler)

Code example

Dart
final channel = DirectChannel('<target-user-id>');
await channel.clearMessages(
ClearMessagesParams(
timestamp: <cutoff-timestamp>, // 0 to clear all messages
policy: MessageOperationPolicy.localRemote,
),
(error) {
if (error == null) {
print('Messages cleared');
}
},
);

ClearMessagesParams

ParameterTypeDefaultDescription
timestampintRequiredMessages sent before this timestamp are cleared.
policyMessageOperationPolicyMessageOperationPolicy.localScope of the clear operation: local, remote, or localRemote.

Recall a message for all participants

Dart
await BaseChannel.deleteMessageForAll(
message,
(_, error) {
if (error == null) {
print('Message recalled');
}
},
);