Merge branch 'develop' into fix/channel-mute
This commit is contained in:
@@ -31,7 +31,27 @@
|
|||||||
return true;
|
return true;
|
||||||
),
|
),
|
||||||
```
|
```
|
||||||
|
|
||||||
|
- Added `StreamMessageInput.hintGetter` to allow users to customize the hint text of the message
|
||||||
|
input. [#1401](https://github.com/GetStream/stream-chat-flutter/issues/1401)
|
||||||
|
|
||||||
|
```dart
|
||||||
|
StreamMessageInput(
|
||||||
|
hintGetter: (context, hintType) {
|
||||||
|
switch (hintType) {
|
||||||
|
case HintType.searchGif:
|
||||||
|
return 'Custom Search Giphy';
|
||||||
|
case HintType.addACommentOrSend:
|
||||||
|
return 'Custom Add a comment or send';
|
||||||
|
case HintType.slowModeOn:
|
||||||
|
return 'Custom Slow mode is on';
|
||||||
|
case HintType.writeAMessage:
|
||||||
|
return 'Custom Write a message';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
),
|
||||||
|
```
|
||||||
|
|
||||||
🔄 Changed
|
🔄 Changed
|
||||||
|
|
||||||
- Deprecated `MessageTheme.linkBackgroundColor` in favor of `MessageTheme.urlAttachmentBackgroundColor`.
|
- Deprecated `MessageTheme.linkBackgroundColor` in favor of `MessageTheme.urlAttachmentBackgroundColor`.
|
||||||
|
|||||||
@@ -32,6 +32,26 @@ typedef OgPreviewFilter = bool Function(
|
|||||||
String messageText,
|
String messageText,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/// Different types of hints that can be shown in [StreamMessageInput].
|
||||||
|
enum HintType {
|
||||||
|
/// Hint for [StreamMessageInput] when the command is enabled and the command
|
||||||
|
/// is 'giphy'.
|
||||||
|
searchGif,
|
||||||
|
|
||||||
|
/// Hint for [StreamMessageInput] when there are attachments.
|
||||||
|
addACommentOrSend,
|
||||||
|
|
||||||
|
/// Hint for [StreamMessageInput] when slow mode is enabled.
|
||||||
|
slowModeOn,
|
||||||
|
|
||||||
|
/// Hint for [StreamMessageInput] when other conditions are not met.
|
||||||
|
writeAMessage,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Function that returns the hint text for [StreamMessageInput] based on
|
||||||
|
/// [type].
|
||||||
|
typedef HintGetter = String? Function(BuildContext context, HintType type);
|
||||||
|
|
||||||
/// Inactive state:
|
/// Inactive state:
|
||||||
///
|
///
|
||||||
/// 
|
/// 
|
||||||
@@ -122,6 +142,7 @@ class StreamMessageInput extends StatefulWidget {
|
|||||||
this.clearQuotedMessageKeyPredicate =
|
this.clearQuotedMessageKeyPredicate =
|
||||||
_defaultClearQuotedMessageKeyPredicate,
|
_defaultClearQuotedMessageKeyPredicate,
|
||||||
this.ogPreviewFilter = _defaultOgPreviewFilter,
|
this.ogPreviewFilter = _defaultOgPreviewFilter,
|
||||||
|
this.hintGetter = _defaultHintGetter,
|
||||||
});
|
});
|
||||||
|
|
||||||
/// The predicate used to send a message on desktop/web
|
/// The predicate used to send a message on desktop/web
|
||||||
@@ -271,6 +292,25 @@ class StreamMessageInput extends StatefulWidget {
|
|||||||
/// preview.
|
/// preview.
|
||||||
final OgPreviewFilter ogPreviewFilter;
|
final OgPreviewFilter ogPreviewFilter;
|
||||||
|
|
||||||
|
/// Returns the hint text for the message input.
|
||||||
|
final HintGetter hintGetter;
|
||||||
|
|
||||||
|
static String? _defaultHintGetter(
|
||||||
|
BuildContext context,
|
||||||
|
HintType type,
|
||||||
|
) {
|
||||||
|
switch (type) {
|
||||||
|
case HintType.searchGif:
|
||||||
|
return context.translations.searchGifLabel;
|
||||||
|
case HintType.addACommentOrSend:
|
||||||
|
return context.translations.addACommentOrSendLabel;
|
||||||
|
case HintType.slowModeOn:
|
||||||
|
return context.translations.slowModeOnLabel;
|
||||||
|
case HintType.writeAMessage:
|
||||||
|
return context.translations.writeAMessageLabel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool _defaultOgPreviewFilter(
|
static bool _defaultOgPreviewFilter(
|
||||||
Uri matchedUri,
|
Uri matchedUri,
|
||||||
String messageText,
|
String messageText,
|
||||||
@@ -982,18 +1022,20 @@ class StreamMessageInputState extends State<StreamMessageInput>
|
|||||||
leading: true,
|
leading: true,
|
||||||
);
|
);
|
||||||
|
|
||||||
String _getHint(BuildContext context) {
|
String? _getHint(BuildContext context) {
|
||||||
|
HintType hintType;
|
||||||
|
|
||||||
if (_commandEnabled && _effectiveController.message.command == 'giphy') {
|
if (_commandEnabled && _effectiveController.message.command == 'giphy') {
|
||||||
return context.translations.searchGifLabel;
|
hintType = HintType.searchGif;
|
||||||
}
|
} else if (_effectiveController.attachments.isNotEmpty) {
|
||||||
if (_effectiveController.attachments.isNotEmpty) {
|
hintType = HintType.addACommentOrSend;
|
||||||
return context.translations.addACommentOrSendLabel;
|
} else if (_timeOut != 0) {
|
||||||
}
|
hintType = HintType.slowModeOn;
|
||||||
if (_timeOut != 0) {
|
} else {
|
||||||
return context.translations.slowModeOnLabel;
|
hintType = HintType.writeAMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
return context.translations.writeAMessageLabel;
|
return widget.hintGetter.call(context, hintType);
|
||||||
}
|
}
|
||||||
|
|
||||||
String? _lastSearchedContainsUrlText;
|
String? _lastSearchedContainsUrlText;
|
||||||
|
|||||||
Reference in New Issue
Block a user