Merge pull request #1122 from GetStream/feat/disable_mentions_overlay_message_input

feat(ui): Add option to disable mentions overlay in StreamMessageInput
This commit is contained in:
Salvatore Giordano
2022-05-06 14:59:29 +02:00
committed by GitHub
2 changed files with 28 additions and 15 deletions
@@ -1,5 +1,10 @@
## Upcoming ## Upcoming
✅ Added
- [[#1119]](https://github.com/GetStream/stream-chat-flutter/issues/1119) Added an option to disable mentions overlay in `StreamMessageInput`
- Deprecated `disableEmojiSuggestionsOverlay` in favor of `enableEmojiSuggestionsOverlay` in `StreamMessageInput`
🐞 Fixed 🐞 Fixed
- Fixed attachment picker ui. - Fixed attachment picker ui.
@@ -207,8 +207,10 @@ class StreamMessageInput extends StatefulWidget {
this.enableSafeArea, this.enableSafeArea,
this.elevation, this.elevation,
this.shadow, this.shadow,
this.autoCorrect, this.autoCorrect = true,
this.disableEmojiSuggestionsOverlay, this.disableEmojiSuggestionsOverlay = false,
this.enableEmojiSuggestionsOverlay = true,
this.enableMentionsOverlay = true,
}) : super(key: key); }) : super(key: key);
/// List of options for showing overlays. /// List of options for showing overlays.
@@ -327,11 +329,20 @@ class StreamMessageInput extends StatefulWidget {
/// Disable autoCorrect by passing false /// Disable autoCorrect by passing false
/// autoCorrect is enabled by default /// autoCorrect is enabled by default
final bool? autoCorrect; final bool autoCorrect;
/// Disable the default emoji suggestions /// Disable the default emoji suggestions
/// Enabled by default /// Enabled by default
final bool? disableEmojiSuggestionsOverlay; @Deprecated('Please use enableEmojiSuggestionsOverlay')
final bool disableEmojiSuggestionsOverlay;
/// Disable the default emoji suggestions by passing `false`
/// Enabled by default
final bool enableEmojiSuggestionsOverlay;
/// Disable the mentions overlay by passing false
/// Enabled by default
final bool enableMentionsOverlay;
static bool _defaultValidator(Message message) => static bool _defaultValidator(Message message) =>
message.text?.isNotEmpty == true || message.attachments.isNotEmpty; message.text?.isNotEmpty == true || message.attachments.isNotEmpty;
@@ -364,11 +375,6 @@ class StreamMessageInputState extends State<StreamMessageInput>
bool get _isEditing => bool get _isEditing =>
_effectiveController.value.status != MessageSendingStatus.sending; _effectiveController.value.status != MessageSendingStatus.sending;
bool get _autoCorrect => widget.autoCorrect ?? true;
bool get _disableEmojiSuggestionsOverlay =>
widget.disableEmojiSuggestionsOverlay ?? false;
StreamRestorableMessageInputController? _controller; StreamRestorableMessageInputController? _controller;
StreamMessageInputController get _effectiveController => StreamMessageInputController get _effectiveController =>
@@ -598,7 +604,8 @@ class StreamMessageInputState extends State<StreamMessageInput>
visible: _showCommandsOverlay, visible: _showCommandsOverlay,
widget: _buildCommandsOverlayEntry(), widget: _buildCommandsOverlayEntry(),
), ),
if (!_disableEmojiSuggestionsOverlay) if (widget.enableEmojiSuggestionsOverlay &&
!widget.disableEmojiSuggestionsOverlay)
OverlayOptions( OverlayOptions(
visible: _focusNode.hasFocus && visible: _focusNode.hasFocus &&
_effectiveController.text.isNotEmpty && _effectiveController.text.isNotEmpty &&
@@ -611,10 +618,11 @@ class StreamMessageInputState extends State<StreamMessageInput>
.contains(':'), .contains(':'),
widget: _buildEmojiOverlay(), widget: _buildEmojiOverlay(),
), ),
OverlayOptions( if (widget.enableMentionsOverlay)
visible: _showMentionsOverlay, OverlayOptions(
widget: _buildMentionsOverlayEntry(), visible: _showMentionsOverlay,
), widget: _buildMentionsOverlayEntry(),
),
...widget.customOverlays, ...widget.customOverlays,
], ],
child: child, child: child,
@@ -813,7 +821,7 @@ class StreamMessageInputState extends State<StreamMessageInput>
textAlignVertical: TextAlignVertical.center, textAlignVertical: TextAlignVertical.center,
decoration: _getInputDecoration(context), decoration: _getInputDecoration(context),
textCapitalization: TextCapitalization.sentences, textCapitalization: TextCapitalization.sentences,
autocorrect: _autoCorrect, autocorrect: widget.autoCorrect,
), ),
), ),
], ],