82 lines
1.8 KiB
Plaintext
82 lines
1.8 KiB
Plaintext
---
|
|
id: customize_message_actions
|
|
title: Message Actions
|
|
---
|
|
|
|
Customizing Message Actions
|
|
|
|
### Introduction
|
|
|
|
Message actions pop up in message overlay, when you long-press a message.
|
|
|
|

|
|
|
|
We have provided granular control over these actions.
|
|
|
|
By default we render the following message actions:
|
|
|
|
* edit message
|
|
|
|
* delete message
|
|
|
|
* reply
|
|
|
|
* thread reply
|
|
|
|
* copy message
|
|
|
|
* flag message
|
|
|
|
* pin message
|
|
|
|
:::note
|
|
Edit and delete message are only available on messages sent by the user.
|
|
Additionally, pinning a message requires you to add the roles which are allowed to pin messages.
|
|
:::
|
|
|
|
### Partially remove some message actions
|
|
|
|
For example, if you only want to keep "copy message" and "delete message":
|
|
here is how to do it using the `messageBuilder` with our `StreamMessageWidget`.
|
|
|
|
```dart
|
|
StreamMessageListView(
|
|
messageBuilder: (context, details, messages, defaultMessage) {
|
|
return defaultMessage.copyWith(
|
|
showFlagButton: false,
|
|
showEditMessage: false,
|
|
showCopyMessage: true,
|
|
showDeleteMessage: details.isMyMessage,
|
|
showReplyMessage: false,
|
|
showThreadReplyMessage: false,
|
|
);
|
|
},
|
|
)
|
|
```
|
|
|
|
### Add a new custom message action
|
|
|
|
The SDK also allows you to add new actions into the dialog.
|
|
|
|
For example, let's suppose you want to introduce a new message action - "Demo Action":
|
|
|
|
We use the `customActions` parameter of the `StreamMessageWidget` to add extra actions.
|
|
|
|
```dart
|
|
StreamMessageListView(
|
|
messageBuilder: (context, details, messages, defaultMessage) {
|
|
return defaultMessage.copyWith(
|
|
customActions: [
|
|
StreamMessageAction(
|
|
leading: const Icon(Icons.add),
|
|
title: const Text('Demo Action'),
|
|
onTap: (message) {
|
|
/// Complete action here
|
|
},
|
|
),
|
|
],
|
|
);
|
|
},
|
|
)
|
|
```
|