From 011fb1b2d9831f4add1d1b1ae8db2003b9c1573b Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 19 Oct 2021 15:31:20 +0530 Subject: [PATCH 001/201] added basic replacements for controller --- .../lib/src/message_input.dart | 313 +++---- .../src/mip/stream_message_send_button.dart | 0 .../src/mip/stream_message_text_field.dart | 782 ++++++++++++++++++ .../lib/src/message_input_controller.dart | 170 ++++ .../lib/stream_chat_flutter_core.dart | 1 + 5 files changed, 1125 insertions(+), 141 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart create mode 100644 packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart create mode 100644 packages/stream_chat_flutter_core/lib/src/message_input_controller.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 08fc2a7b..3f8e22d1 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -178,7 +178,7 @@ class MessageInput extends StatefulWidget { this.keyboardType = TextInputType.multiline, this.disableAttachments = false, this.initialMessage, - this.textEditingController, + this.messageInputController, this.actions = const [], this.actionsLocation = ActionsLocation.left, this.attachmentThumbnailBuilders, @@ -256,7 +256,7 @@ class MessageInput extends StatefulWidget { final bool hideSendAsDm; /// The text controller of the TextField - final TextEditingController? textEditingController; + final MessageInputController? messageInputController; /// List of action widgets final List actions; @@ -339,9 +339,6 @@ class MessageInput extends StatefulWidget { /// State of [MessageInput] class MessageInputState extends State { - final _attachments = {}; - final List _mentionedUsers = []; - final _imagePicker = ImagePicker(); late final _focusNode = widget.focusNode ?? FocusNode(); bool _inputEnabled = true; @@ -356,15 +353,15 @@ class MessageInputState extends State { int _filePickerIndex = 0; /// The editing controller passed to the input TextField - late final TextEditingController textEditingController = - widget.textEditingController ?? TextEditingController(); + late final MessageInputController messageInputController = + widget.messageInputController ?? MessageInputController(); late StreamChatThemeData _streamChatTheme; late MessageInputThemeData _messageInputTheme; bool get _hasQuotedMessage => widget.quotedMessage != null; - bool get _messageIsPresent => textEditingController.text.trim().isNotEmpty; + bool get _messageIsPresent => messageInputController.text.trim().isNotEmpty; @override void initState() { @@ -372,7 +369,8 @@ class MessageInputState extends State { if (widget.editMessage != null || widget.initialMessage != null) { _parseExistingMessage(widget.editMessage ?? widget.initialMessage!); } - textEditingController.addListener(_onChangedDebounced); + messageInputController.textEditingController + .addListener(_onChangedDebounced); _focusNode.addListener(_focusNodeListener); } @@ -414,64 +412,67 @@ class MessageInputState extends State { @override Widget build(BuildContext context) { - Widget child = DecoratedBox( - decoration: BoxDecoration( - color: _messageInputTheme.inputBackgroundColor, - ), - child: SafeArea( - child: GestureDetector( - onPanUpdate: (details) { - if (details.delta.dy > 0) { - _focusNode.unfocus(); - if (_openFilePickerSection) { - setState(() { - _openFilePickerSection = false; - }); + Widget child = ValueListenableBuilder( + valueListenable: messageInputController, + builder: (context, value, wid) => DecoratedBox( + decoration: BoxDecoration( + color: _messageInputTheme.inputBackgroundColor, + ), + child: SafeArea( + child: GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy > 0) { + _focusNode.unfocus(); + if (_openFilePickerSection) { + setState(() { + _openFilePickerSection = false; + }); + } } - } - }, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (_hasQuotedMessage) - Padding( - padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: StreamSvgIcon.reply( - color: _streamChatTheme.colorTheme.disabled, + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (_hasQuotedMessage) + Padding( + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon.reply( + color: _streamChatTheme.colorTheme.disabled, + ), ), - ), - Text( - context.translations.replyToMessageLabel, - style: const TextStyle(fontWeight: FontWeight.bold), - ), - IconButton( - visualDensity: VisualDensity.compact, - icon: StreamSvgIcon.closeSmall(), - onPressed: widget.onQuotedMessageCleared, - ), - ], + Text( + context.translations.replyToMessageLabel, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: widget.onQuotedMessageCleared, + ), + ], + ), ), - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 8), - child: _buildTextField(context), - ), - if (widget.parentMessage != null && !widget.hideSendAsDm) Padding( - padding: const EdgeInsets.only( - right: 12, - left: 12, - bottom: 12, - ), - child: _buildDmCheckbox(), + padding: const EdgeInsets.symmetric(vertical: 8), + child: _buildTextField(context), ), - _buildFilePickerSection(), - ], + if (widget.parentMessage != null && !widget.hideSendAsDm) + Padding( + padding: const EdgeInsets.only( + right: 12, + left: 12, + bottom: 12, + ), + child: _buildDmCheckbox(), + ), + _buildFilePickerSection(), + ], + ), ), ), ), @@ -493,12 +494,12 @@ class MessageInputState extends State { ), OverlayOptions( visible: _focusNode.hasFocus && - textEditingController.text.isNotEmpty && - textEditingController.selection.baseOffset > 0 && - textEditingController.text + messageInputController.text.isNotEmpty && + messageInputController.baseOffset > 0 && + messageInputController.text .substring( 0, - textEditingController.selection.baseOffset, + messageInputController.baseOffset, ) .contains(':'), widget: _buildEmojiOverlay(), @@ -591,7 +592,8 @@ class MessageInputState extends State { late Widget sendButton; if (_timeOut > 0) { sendButton = _CountdownButton(count: _timeOut); - } else if (!_messageIsPresent && _attachments.isEmpty) { + } else if (!_messageIsPresent && + messageInputController.attachments.isEmpty) { sendButton = widget.idleSendButton ?? _buildIdleSendButton(context); } else { sendButton = widget.activeSendButton != null @@ -700,7 +702,7 @@ class MessageInputState extends State { maxLines: null, onSubmitted: (_) => sendMessage(), keyboardType: widget.keyboardType, - controller: textEditingController, + controller: messageInputController.textEditingController, focusNode: _focusNode, style: _messageInputTheme.inputTextStyle, autofocus: widget.autofocus, @@ -823,7 +825,7 @@ class MessageInputState extends State { late final _onChangedDebounced = debounce( () { - var value = textEditingController.text; + var value = messageInputController.text; if (!mounted) return; value = value.trim(); @@ -853,7 +855,7 @@ class MessageInputState extends State { if (_commandEnabled && _chosenCommand!.name == 'giphy') { return context.translations.searchGifLabel; } - if (_attachments.isNotEmpty) { + if (messageInputController.attachments.isNotEmpty) { return context.translations.addACommentOrSendLabel; } if (_timeOut != 0) { @@ -865,12 +867,17 @@ class MessageInputState extends State { void _checkEmoji(String s, BuildContext context) { if (s.isNotEmpty && - textEditingController.selection.baseOffset > 0 && - textEditingController.text - .substring(0, textEditingController.selection.baseOffset) + messageInputController.baseOffset > 0 && + messageInputController.text + .substring( + 0, + messageInputController.baseOffset, + ) .contains(':')) { - final textToSelection = textEditingController.text - .substring(0, textEditingController.value.selection.start); + final textToSelection = messageInputController.text.substring( + 0, + messageInputController.textEditingController.value.selection.start, + ); final splits = textToSelection.split(':'); final query = splits[splits.length - 2].toLowerCase(); final emoji = Emoji.byName(query); @@ -883,9 +890,12 @@ class MessageInputState extends State { void _checkMentions(String s, BuildContext context) { if (s.isNotEmpty && - textEditingController.selection.baseOffset > 0 && - textEditingController.text - .substring(0, textEditingController.selection.baseOffset) + messageInputController.baseOffset > 0 && + messageInputController.text + .substring( + 0, + messageInputController.baseOffset, + ) .split(' ') .last .contains('@')) { @@ -921,7 +931,7 @@ class MessageInputState extends State { } Widget _buildCommandsOverlayEntry() { - final text = textEditingController.text.trimLeft(); + final text = messageInputController.text.trimLeft(); final renderObject = context.findRenderObject() as RenderBox?; if (renderObject == null) { @@ -937,16 +947,16 @@ class MessageInputState extends State { Widget _buildFilePickerSection() { final _attachmentContainsFile = - _attachments.values.any((it) => it.type == 'file'); + messageInputController.attachments.any((it) => it.type == 'file'); final attachmentLimitCrossed = - _attachments.length >= widget.attachmentLimit; + messageInputController.attachments.length >= widget.attachmentLimit; Color _getIconColor(int index) { final streamChatThemeData = _streamChatTheme; switch (index) { case 0: - return _attachments.isEmpty + return messageInputController.attachments.isEmpty ? streamChatThemeData.colorTheme.accentPrimary : (!_attachmentContainsFile ? streamChatThemeData.colorTheme.accentPrimary @@ -955,7 +965,7 @@ class MessageInputState extends State { case 1: return _attachmentContainsFile ? streamChatThemeData.colorTheme.accentPrimary - : (_attachments.isEmpty + : (messageInputController.attachments.isEmpty ? streamChatThemeData.colorTheme.textHighEmphasis .withOpacity(0.5) : streamChatThemeData.colorTheme.textHighEmphasis @@ -963,7 +973,8 @@ class MessageInputState extends State { case 2: return attachmentLimitCrossed ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) - : _attachmentContainsFile && _attachments.isNotEmpty + : _attachmentContainsFile && + messageInputController.attachments.isNotEmpty ? streamChatThemeData.colorTheme.textHighEmphasis .withOpacity(0.2) : streamChatThemeData.colorTheme.textHighEmphasis @@ -971,7 +982,8 @@ class MessageInputState extends State { case 3: return attachmentLimitCrossed ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) - : _attachmentContainsFile && _attachments.isNotEmpty + : _attachmentContainsFile && + messageInputController.attachments.isNotEmpty ? streamChatThemeData.colorTheme.textHighEmphasis .withOpacity(0.2) : streamChatThemeData.colorTheme.textHighEmphasis @@ -1001,26 +1013,26 @@ class MessageInputState extends State { icon: StreamSvgIcon.pictures( color: _getIconColor(0), ), - onPressed: - _attachmentContainsFile && _attachments.isNotEmpty - ? null - : () { - setState(() { - _filePickerIndex = 0; - }); - }, + onPressed: _attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? null + : () { + setState(() { + _filePickerIndex = 0; + }); + }, ), IconButton( iconSize: 32, icon: StreamSvgIcon.files( color: _getIconColor(1), ), - onPressed: - !_attachmentContainsFile && _attachments.isNotEmpty - ? null - : () { - pickFile(DefaultAttachmentTypes.file); - }, + onPressed: !_attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? null + : () { + pickFile(DefaultAttachmentTypes.file); + }, ), IconButton( icon: StreamSvgIcon.camera( @@ -1028,7 +1040,7 @@ class MessageInputState extends State { ), onPressed: attachmentLimitCrossed || (_attachmentContainsFile && - _attachments.isNotEmpty) + messageInputController.attachments.isNotEmpty) ? null : () { pickFile( @@ -1044,7 +1056,7 @@ class MessageInputState extends State { ), onPressed: attachmentLimitCrossed || (_attachmentContainsFile && - _attachments.isNotEmpty) + messageInputController.attachments.isNotEmpty) ? null : () { pickFile( @@ -1088,11 +1100,15 @@ class MessageInputState extends State { filePickerIndex: _filePickerIndex, streamChatTheme: _streamChatTheme, containsFile: _attachmentContainsFile, - selectedMedias: _attachments.keys.toList(), + selectedMedias: messageInputController.attachments + .map((e) => e.id) + .toList(), onAddMoreFilesClick: pickFile, onMediaSelected: (media) { - if (_attachments.containsKey(media.id)) { - setState(() => _attachments.remove(media.id)); + if (messageInputController.attachments + .any((e) => e.id == media.id)) { + setState(() => messageInputController.attachments + .removeWhere((e) => e.id == media.id)); } else { _addAssetAttachment(media); } @@ -1163,12 +1179,16 @@ class MessageInputState extends State { } Widget _buildMentionsOverlayEntry() { - if (textEditingController.value.selection.start < 0) { + if (messageInputController.textEditingController.value.selection.start < + 0) { return const Offstage(); } - final splits = textEditingController.text - .substring(0, textEditingController.value.selection.start) + final splits = messageInputController.text + .substring( + 0, + messageInputController.textEditingController.value.selection.start, + ) .split('@'); final query = splits.last.toLowerCase(); @@ -1196,14 +1216,15 @@ class MessageInputState extends State { size: Size(renderObject.size.width - 16, 400), mentionsTileBuilder: tileBuilder, onMentionUserTap: (user) { - _mentionedUsers.add(user); + messageInputController.mentionedUsers.add(user); splits[splits.length - 1] = user.name; final rejoin = splits.join('@'); - textEditingController.value = TextEditingValue( + messageInputController.textEditingController.value = TextEditingValue( text: rejoin + - textEditingController.text.substring( - textEditingController.selection.start, + messageInputController.text.substring( + messageInputController + .textEditingController.value.selection.start, ), selection: TextSelection.collapsed( offset: rejoin.length, @@ -1216,12 +1237,15 @@ class MessageInputState extends State { } Widget _buildEmojiOverlay() { - if (textEditingController.value.selection.baseOffset < 0) { + if (messageInputController.baseOffset < 0) { return const Offstage(); } - final splits = textEditingController.text - .substring(0, textEditingController.value.selection.baseOffset) + final splits = messageInputController.text + .substring( + 0, + messageInputController.baseOffset, + ) .split(':'); final query = splits.last.toLowerCase(); @@ -1240,10 +1264,11 @@ class MessageInputState extends State { void _chooseEmoji(List splits, Emoji emoji) { final rejoin = splits.sublist(0, splits.length - 1).join(':') + emoji.char!; - textEditingController.value = TextEditingValue( + messageInputController.textEditingController.value = TextEditingValue( text: rejoin + - textEditingController.text - .substring(textEditingController.selection.start), + messageInputController.text.substring( + messageInputController.textEditingController.selection.start, + ), selection: TextSelection.collapsed( offset: rejoin.length, ), @@ -1251,7 +1276,7 @@ class MessageInputState extends State { } void _setCommand(Command c) { - textEditingController.clear(); + messageInputController.clear(); setState(() { _chosenCommand = c; _commandEnabled = true; @@ -1273,11 +1298,11 @@ class MessageInputState extends State { } Widget _buildAttachments() { - if (_attachments.isEmpty) return const Offstage(); - final fileAttachments = _attachments.values + if (messageInputController.attachments.isEmpty) return const Offstage(); + final fileAttachments = messageInputController.attachments .where((it) => it.type == 'file') .toList(growable: false); - final remainingAttachments = _attachments.values + final remainingAttachments = messageInputController.attachments .where((it) => it.type != 'file') .toList(growable: false); return Column( @@ -1364,7 +1389,10 @@ class MessageInputState extends State { focusElevation: 0, hoverElevation: 0, onPressed: () { - setState(() => _attachments.remove(attachment.id)); + setState( + () => messageInputController.attachments + .removeWhere((e) => e.id == attachment.id), + ); }, fillColor: _streamChatTheme.colorTheme.textHighEmphasis.withOpacity(0.5), @@ -1443,7 +1471,7 @@ class MessageInputState extends State { } Widget _buildCommandButton(BuildContext context) { - final s = textEditingController.text.trim(); + final s = messageInputController.text.trim(); final defaultButton = IconButton( icon: StreamSvgIcon.lightning( color: s.isNotEmpty @@ -1574,10 +1602,11 @@ class MessageInputState extends State { setState(() => _addAttachments([attachment])); } - /// Adds an attachment to the [_attachments] map + /// Adds an attachment to the [messageInputController.attachments] map void _addAttachments(Iterable attachments) { final limit = widget.attachmentLimit; - final length = _attachments.length + attachments.length; + final length = + messageInputController.attachments.length + attachments.length; if (length > limit) { final onAttachmentLimitExceed = widget.onAttachmentLimitExceed; if (onAttachmentLimitExceed != null) { @@ -1591,7 +1620,7 @@ class MessageInputState extends State { ); } for (final attachment in attachments) { - _attachments[attachment.id] = attachment; + messageInputController.addAttachment(attachment); } } @@ -1754,8 +1783,8 @@ class MessageInputState extends State { /// Sends the current message Future sendMessage() async { - var text = textEditingController.text.trim(); - if (text.isEmpty && _attachments.isEmpty) { + var text = messageInputController.text.trim(); + if (text.isEmpty && messageInputController.attachments.isEmpty) { return; } @@ -1765,10 +1794,8 @@ class MessageInputState extends State { text = '${'/${_chosenCommand!.name} '}$text'; } - final attachments = [..._attachments.values]; - - textEditingController.clear(); - _attachments.clear(); + messageInputController.clear(); + messageInputController.attachments.clear(); widget.onQuotedMessageCleared?.call(); setState(() { @@ -1779,17 +1806,19 @@ class MessageInputState extends State { if (widget.editMessage != null) { message = widget.editMessage!.copyWith( text: text, - attachments: attachments, - mentionedUsers: - _mentionedUsers.where((u) => text.contains('@${u.name}')).toList(), + attachments: messageInputController.attachments, + mentionedUsers: messageInputController.mentionedUsers + .where((u) => text.contains('@${u.name}')) + .toList(), ); } else { message = (widget.initialMessage ?? Message()).copyWith( parentId: widget.parentMessage?.id, text: text, - attachments: attachments, - mentionedUsers: - _mentionedUsers.where((u) => text.contains('@${u.name}')).toList(), + attachments: messageInputController.attachments, + mentionedUsers: messageInputController.mentionedUsers + .where((u) => text.contains('@${u.name}')) + .toList(), showInChannel: widget.parentMessage != null ? _sendAsDm : null, ); } @@ -1810,7 +1839,7 @@ class MessageInputState extends State { await streamChannel.reloadChannel(); } - _mentionedUsers.clear(); + messageInputController.mentionedUsers.clear(); try { Future sendingFuture; @@ -1909,13 +1938,15 @@ class MessageInputState extends State { void _parseExistingMessage(Message message) { final messageText = message.text; - if (messageText != null) textEditingController.text = messageText; + if (messageText != null) messageInputController.text = messageText; _addAttachments(message.attachments); } @override void dispose() { - textEditingController.dispose(); + messageInputController.textEditingController + .removeListener(_onChangedDebounced); + messageInputController.dispose(); _focusNode.removeListener(_focusNodeListener); _stopSlowMode(); _onChangedDebounced.cancel(); diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart b/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart new file mode 100644 index 00000000..e69de29b diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart new file mode 100644 index 00000000..48ece391 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart @@ -0,0 +1,782 @@ +import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle; + +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +export 'package:flutter/services.dart' + show + TextInputType, + TextInputAction, + TextCapitalization, + SmartQuotesType, + SmartDashesType; + +class StreamMessageTextField extends StatefulWidget { + /// Creates a Material Design text field. + /// + /// If [decoration] is non-null (which is the default), the text field requires + /// one of its ancestors to be a [Material] widget. + /// + /// To remove the decoration entirely (including the extra padding introduced + /// by the decoration to save space for the labels), set the [decoration] to + /// null. + /// + /// The [maxLines] property can be set to null to remove the restriction on + /// the number of lines. By default, it is one, meaning this is a single-line + /// text field. [maxLines] must not be zero. + /// + /// The [maxLength] property is set to null by default, which means the + /// number of characters allowed in the text field is not restricted. If + /// [maxLength] is set a character counter will be displayed below the + /// field showing how many characters have been entered. If the value is + /// set to a positive integer it will also display the maximum allowed + /// number of characters to be entered. If the value is set to + /// [TextField.noMaxLength] then only the current length is displayed. + /// + /// After [maxLength] characters have been input, additional input + /// is ignored, unless [maxLengthEnforcement] is set to + /// [MaxLengthEnforcement.none]. + /// The text field enforces the length with a [LengthLimitingTextInputFormatter], + /// which is evaluated after the supplied [inputFormatters], if any. + /// The [maxLength] value must be either null or greater than zero. + /// + /// If [maxLengthEnforced] is set to false, then more than [maxLength] + /// characters may be entered, and the error counter and divider will + /// switch to the [decoration].errorStyle when the limit is exceeded. + /// + /// The text cursor is not shown if [showCursor] is false or if [showCursor] + /// is null (the default) and [readOnly] is true. + /// + /// The [selectionHeightStyle] and [selectionWidthStyle] properties allow + /// changing the shape of the selection highlighting. These properties default + /// to [ui.BoxHeightStyle.tight] and [ui.BoxWidthStyle.tight] respectively and + /// must not be null. + /// + /// The [textAlign], [autofocus], [obscureText], [readOnly], [autocorrect], + /// [maxLengthEnforced], [scrollPadding], [maxLines], [maxLength], + /// [selectionHeightStyle], [selectionWidthStyle], [enableSuggestions], and + /// [enableIMEPersonalizedLearning] arguments must not be null. + /// + /// See also: + /// + /// * [maxLength], which discusses the precise meaning of "number of + /// characters" and how it may differ from the intuitive meaning. + const StreamMessageTextField({ + Key? key, + this.controller, + this.focusNode, + this.decoration = const InputDecoration(), + TextInputType? keyboardType, + this.textInputAction, + this.textCapitalization = TextCapitalization.none, + this.style, + this.strutStyle, + this.textAlign = TextAlign.start, + this.textAlignVertical, + this.textDirection, + this.readOnly = false, + ToolbarOptions? toolbarOptions, + this.showCursor, + this.autofocus = false, + this.obscuringCharacter = '•', + this.obscureText = false, + this.autocorrect = true, + SmartDashesType? smartDashesType, + SmartQuotesType? smartQuotesType, + this.enableSuggestions = true, + this.maxLines = 1, + this.minLines, + this.expands = false, + this.maxLength, + @Deprecated( + 'Use maxLengthEnforcement parameter which provides more specific ' + 'behavior related to the maxLength limit. ' + 'This feature was deprecated after v1.25.0-5.0.pre.', + ) + this.maxLengthEnforced = true, + this.maxLengthEnforcement, + this.onChanged, + this.onEditingComplete, + this.onSubmitted, + this.onAppPrivateCommand, + this.inputFormatters, + this.enabled, + this.cursorWidth = 2.0, + this.cursorHeight, + this.cursorRadius, + this.cursorColor, + this.selectionHeightStyle = ui.BoxHeightStyle.tight, + this.selectionWidthStyle = ui.BoxWidthStyle.tight, + this.keyboardAppearance, + this.scrollPadding = const EdgeInsets.all(20.0), + this.dragStartBehavior = DragStartBehavior.start, + this.enableInteractiveSelection = true, + this.selectionControls, + this.onTap, + this.mouseCursor, + this.buildCounter, + this.scrollController, + this.scrollPhysics, + this.autofillHints, + this.restorationId, + this.enableIMEPersonalizedLearning = true, + }) : assert(textAlign != null), + assert(readOnly != null), + assert(autofocus != null), + assert(obscuringCharacter != null && obscuringCharacter.length == 1), + assert(obscureText != null), + assert(autocorrect != null), + smartDashesType = smartDashesType ?? + (obscureText ? SmartDashesType.disabled : SmartDashesType.enabled), + smartQuotesType = smartQuotesType ?? + (obscureText ? SmartQuotesType.disabled : SmartQuotesType.enabled), + assert(enableSuggestions != null), + assert(enableInteractiveSelection != null), + assert(maxLengthEnforced != null), + assert( + maxLengthEnforced || maxLengthEnforcement == null, + 'maxLengthEnforced is deprecated, use only maxLengthEnforcement', + ), + assert(scrollPadding != null), + assert(dragStartBehavior != null), + assert(selectionHeightStyle != null), + assert(selectionWidthStyle != null), + assert(maxLines == null || maxLines > 0), + assert(minLines == null || minLines > 0), + assert( + (maxLines == null) || (minLines == null) || (maxLines >= minLines), + "minLines can't be greater than maxLines", + ), + assert(expands != null), + assert( + !expands || (maxLines == null && minLines == null), + 'minLines and maxLines must be null when expands is true.', + ), + assert(!obscureText || maxLines == 1, + 'Obscured fields cannot be multiline.'), + assert(maxLength == null || + maxLength == TextField.noMaxLength || + maxLength > 0), + // Assert the following instead of setting it directly to avoid surprising the user by silently changing the value they set. + assert( + !identical(textInputAction, TextInputAction.newline) || + maxLines == 1 || + !identical(keyboardType, TextInputType.text), + 'Use keyboardType TextInputType.multiline when using TextInputAction.newline on a multiline TextField.', + ), + assert(enableIMEPersonalizedLearning != null), + keyboardType = keyboardType ?? + (maxLines == 1 ? TextInputType.text : TextInputType.multiline), + toolbarOptions = toolbarOptions ?? + (obscureText + ? const ToolbarOptions( + selectAll: true, + paste: true, + ) + : const ToolbarOptions( + copy: true, + cut: true, + selectAll: true, + paste: true, + )), + super(key: key); + + /// Controls the message being edited. + /// + /// If null, this widget will create its own [MessageInputController]. + final MessageInputController? controller; + + /// Defines the keyboard focus for this widget. + /// + /// The [focusNode] is a long-lived object that's typically managed by a + /// [StatefulWidget] parent. See [FocusNode] for more information. + /// + /// To give the keyboard focus to this widget, provide a [focusNode] and then + /// use the current [FocusScope] to request the focus: + /// + /// ```dart + /// FocusScope.of(context).requestFocus(myFocusNode); + /// ``` + /// + /// This happens automatically when the widget is tapped. + /// + /// To be notified when the widget gains or loses the focus, add a listener + /// to the [focusNode]: + /// + /// ```dart + /// focusNode.addListener(() { print(myFocusNode.hasFocus); }); + /// ``` + /// + /// If null, this widget will create its own [FocusNode]. + /// + /// ## Keyboard + /// + /// Requesting the focus will typically cause the keyboard to be shown + /// if it's not showing already. + /// + /// On Android, the user can hide the keyboard - without changing the focus - + /// with the system back button. They can restore the keyboard's visibility + /// by tapping on a text field. The user might hide the keyboard and + /// switch to a physical keyboard, or they might just need to get it + /// out of the way for a moment, to expose something it's + /// obscuring. In this case requesting the focus again will not + /// cause the focus to change, and will not make the keyboard visible. + /// + /// This widget builds an [EditableText] and will ensure that the keyboard is + /// showing when it is tapped by calling [EditableTextState.requestKeyboard()]. + final FocusNode? focusNode; + + /// The decoration to show around the text field. + /// + /// By default, draws a horizontal line under the text field but can be + /// configured to show an icon, label, hint text, and error text. + /// + /// Specify null to remove the decoration entirely (including the + /// extra padding introduced by the decoration to save space for the labels). + final InputDecoration? decoration; + + /// {@macro flutter.widgets.editableText.keyboardType} + final TextInputType keyboardType; + + /// The type of action button to use for the keyboard. + /// + /// Defaults to [TextInputAction.newline] if [keyboardType] is + /// [TextInputType.multiline] and [TextInputAction.done] otherwise. + final TextInputAction? textInputAction; + + /// {@macro flutter.widgets.editableText.textCapitalization} + final TextCapitalization textCapitalization; + + /// The style to use for the text being edited. + /// + /// This text style is also used as the base style for the [decoration]. + /// + /// If null, defaults to the `subtitle1` text style from the current [Theme]. + final TextStyle? style; + + /// {@macro flutter.widgets.editableText.strutStyle} + final StrutStyle? strutStyle; + + /// {@macro flutter.widgets.editableText.textAlign} + final TextAlign textAlign; + + /// {@macro flutter.material.InputDecorator.textAlignVertical} + final TextAlignVertical? textAlignVertical; + + /// {@macro flutter.widgets.editableText.textDirection} + final TextDirection? textDirection; + + /// {@macro flutter.widgets.editableText.autofocus} + final bool autofocus; + + /// {@macro flutter.widgets.editableText.obscuringCharacter} + final String obscuringCharacter; + + /// {@macro flutter.widgets.editableText.obscureText} + final bool obscureText; + + /// {@macro flutter.widgets.editableText.autocorrect} + final bool autocorrect; + + /// {@macro flutter.services.TextInputConfiguration.smartDashesType} + final SmartDashesType smartDashesType; + + /// {@macro flutter.services.TextInputConfiguration.smartQuotesType} + final SmartQuotesType smartQuotesType; + + /// {@macro flutter.services.TextInputConfiguration.enableSuggestions} + final bool enableSuggestions; + + /// {@macro flutter.widgets.editableText.maxLines} + /// * [expands], which determines whether the field should fill the height of + /// its parent. + final int? maxLines; + + /// {@macro flutter.widgets.editableText.minLines} + /// * [expands], which determines whether the field should fill the height of + /// its parent. + final int? minLines; + + /// {@macro flutter.widgets.editableText.expands} + final bool expands; + + /// {@macro flutter.widgets.editableText.readOnly} + final bool readOnly; + + /// Configuration of toolbar options. + /// + /// If not set, select all and paste will default to be enabled. Copy and cut + /// will be disabled if [obscureText] is true. If [readOnly] is true, + /// paste and cut will be disabled regardless. + final ToolbarOptions toolbarOptions; + + /// {@macro flutter.widgets.editableText.showCursor} + final bool? showCursor; + + /// If [maxLength] is set to this value, only the "current input length" + /// part of the character counter is shown. + static const int noMaxLength = -1; + + /// The maximum number of characters (Unicode scalar values) to allow in the + /// text field. + /// + /// If set, a character counter will be displayed below the + /// field showing how many characters have been entered. If set to a number + /// greater than 0, it will also display the maximum number allowed. If set + /// to [TextField.noMaxLength] then only the current character count is displayed. + /// + /// After [maxLength] characters have been input, additional input + /// is ignored, unless [maxLengthEnforcement] is set to + /// [MaxLengthEnforcement.none]. + /// + /// The text field enforces the length with a [LengthLimitingTextInputFormatter], + /// which is evaluated after the supplied [inputFormatters], if any. + /// + /// This value must be either null, [TextField.noMaxLength], or greater than 0. + /// If null (the default) then there is no limit to the number of characters + /// that can be entered. If set to [TextField.noMaxLength], then no limit will + /// be enforced, but the number of characters entered will still be displayed. + /// + /// Whitespace characters (e.g. newline, space, tab) are included in the + /// character count. + /// + /// If [maxLengthEnforced] is set to false or [maxLengthEnforcement] is + /// [MaxLengthEnforcement.none], then more than [maxLength] + /// characters may be entered, but the error counter and divider will switch + /// to the [decoration]'s [InputDecoration.errorStyle] when the limit is + /// exceeded. + /// + /// {@macro flutter.services.lengthLimitingTextInputFormatter.maxLength} + final int? maxLength; + + /// If [maxLength] is set, [maxLengthEnforced] indicates whether or not to + /// enforce the limit, or merely provide a character counter and warning when + /// [maxLength] is exceeded. + /// + /// If true, prevents the field from allowing more than [maxLength] + /// characters. + @Deprecated( + 'Use maxLengthEnforcement parameter which provides more specific ' + 'behavior related to the maxLength limit. ' + 'This feature was deprecated after v1.25.0-5.0.pre.', + ) + final bool maxLengthEnforced; + + /// Determines how the [maxLength] limit should be enforced. + /// + /// {@macro flutter.services.textFormatter.effectiveMaxLengthEnforcement} + /// + /// {@macro flutter.services.textFormatter.maxLengthEnforcement} + final MaxLengthEnforcement? maxLengthEnforcement; + + /// {@macro flutter.widgets.editableText.onChanged} + /// + /// See also: + /// + /// * [inputFormatters], which are called before [onChanged] + /// runs and can validate and change ("format") the input value. + /// * [onEditingComplete], [onSubmitted]: + /// which are more specialized input change notifications. + final ValueChanged? onChanged; + + /// {@macro flutter.widgets.editableText.onEditingComplete} + final VoidCallback? onEditingComplete; + + /// {@macro flutter.widgets.editableText.onSubmitted} + /// + /// See also: + /// + /// * [TextInputAction.next] and [TextInputAction.previous], which + /// automatically shift the focus to the next/previous focusable item when + /// the user is done editing. + final ValueChanged? onSubmitted; + + /// {@macro flutter.widgets.editableText.onAppPrivateCommand} + final AppPrivateCommandCallback? onAppPrivateCommand; + + /// {@macro flutter.widgets.editableText.inputFormatters} + final List? inputFormatters; + + /// If false the text field is "disabled": it ignores taps and its + /// [decoration] is rendered in grey. + /// + /// If non-null this property overrides the [decoration]'s + /// [InputDecoration.enabled] property. + final bool? enabled; + + /// {@macro flutter.widgets.editableText.cursorWidth} + final double cursorWidth; + + /// {@macro flutter.widgets.editableText.cursorHeight} + final double? cursorHeight; + + /// {@macro flutter.widgets.editableText.cursorRadius} + final Radius? cursorRadius; + + /// The color of the cursor. + /// + /// The cursor indicates the current location of text insertion point in + /// the field. + /// + /// If this is null it will default to the ambient + /// [TextSelectionThemeData.cursorColor]. If that is null, and the + /// [ThemeData.platform] is [TargetPlatform.iOS] or [TargetPlatform.macOS] + /// it will use [CupertinoThemeData.primaryColor]. Otherwise it will use + /// the value of [ColorScheme.primary] of [ThemeData.colorScheme]. + final Color? cursorColor; + + /// Controls how tall the selection highlight boxes are computed to be. + /// + /// See [ui.BoxHeightStyle] for details on available styles. + final ui.BoxHeightStyle selectionHeightStyle; + + /// Controls how wide the selection highlight boxes are computed to be. + /// + /// See [ui.BoxWidthStyle] for details on available styles. + final ui.BoxWidthStyle selectionWidthStyle; + + /// The appearance of the keyboard. + /// + /// This setting is only honored on iOS devices. + /// + /// If unset, defaults to the brightness of [ThemeData.primaryColorBrightness]. + final Brightness? keyboardAppearance; + + /// {@macro flutter.widgets.editableText.scrollPadding} + final EdgeInsets scrollPadding; + + /// {@macro flutter.widgets.editableText.enableInteractiveSelection} + final bool enableInteractiveSelection; + + /// {@macro flutter.widgets.editableText.selectionControls} + final TextSelectionControls? selectionControls; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@macro flutter.widgets.editableText.selectionEnabled} + bool get selectionEnabled => enableInteractiveSelection; + + /// {@template flutter.material.textfield.onTap} + /// Called for each distinct tap except for every second tap of a double tap. + /// + /// The text field builds a [GestureDetector] to handle input events like tap, + /// to trigger focus requests, to move the caret, adjust the selection, etc. + /// Handling some of those events by wrapping the text field with a competing + /// GestureDetector is problematic. + /// + /// To unconditionally handle taps, without interfering with the text field's + /// internal gesture detector, provide this callback. + /// + /// If the text field is created with [enabled] false, taps will not be + /// recognized. + /// + /// To be notified when the text field gains or loses the focus, provide a + /// [focusNode] and add a listener to that. + /// + /// To listen to arbitrary pointer events without competing with the + /// text field's internal gesture detector, use a [Listener]. + /// {@endtemplate} + final GestureTapCallback? onTap; + + /// The cursor for a mouse pointer when it enters or is hovering over the + /// widget. + /// + /// If [mouseCursor] is a [MaterialStateProperty], + /// [MaterialStateProperty.resolve] is used for the following [MaterialState]s: + /// + /// * [MaterialState.error]. + /// * [MaterialState.hovered]. + /// * [MaterialState.focused]. + /// * [MaterialState.disabled]. + /// + /// If this property is null, [MaterialStateMouseCursor.textable] will be used. + /// + /// The [mouseCursor] is the only property of [TextField] that controls the + /// appearance of the mouse pointer. All other properties related to "cursor" + /// stand for the text cursor, which is usually a blinking vertical line at + /// the editing position. + final MouseCursor? mouseCursor; + + /// Callback that generates a custom [InputDecoration.counter] widget. + /// + /// See [InputCounterWidgetBuilder] for an explanation of the passed in + /// arguments. The returned widget will be placed below the line in place of + /// the default widget built when [InputDecoration.counterText] is specified. + /// + /// The returned widget will be wrapped in a [Semantics] widget for + /// accessibility, but it also needs to be accessible itself. For example, + /// if returning a Text widget, set the [Text.semanticsLabel] property. + /// + /// {@tool snippet} + /// ```dart + /// Widget counter( + /// BuildContext context, + /// { + /// required int currentLength, + /// required int? maxLength, + /// required bool isFocused, + /// } + /// ) { + /// return Text( + /// '$currentLength of $maxLength characters', + /// semanticsLabel: 'character count', + /// ); + /// } + /// ``` + /// {@end-tool} + /// + /// If buildCounter returns null, then no counter and no Semantics widget will + /// be created at all. + final InputCounterWidgetBuilder? buildCounter; + + /// {@macro flutter.widgets.editableText.scrollPhysics} + final ScrollPhysics? scrollPhysics; + + /// {@macro flutter.widgets.editableText.scrollController} + final ScrollController? scrollController; + + /// {@macro flutter.widgets.editableText.autofillHints} + /// {@macro flutter.services.AutofillConfiguration.autofillHints} + final Iterable? autofillHints; + + /// {@template flutter.material.textfield.restorationId} + /// Restoration ID to save and restore the state of the text field. + /// + /// If non-null, the text field will persist and restore its current scroll + /// offset and - if no [controller] has been provided - the content of the + /// text field. If a [controller] has been provided, it is the responsibility + /// of the owner of that controller to persist and restore it, e.g. by using + /// a [RestorableTextEditingController]. + /// + /// The state of this widget is persisted in a [RestorationBucket] claimed + /// from the surrounding [RestorationScope] using the provided restoration ID. + /// + /// See also: + /// + /// * [RestorationManager], which explains how state restoration works in + /// Flutter. + /// {@endtemplate} + final String? restorationId; + + /// {@macro flutter.services.TextInputConfiguration.enableIMEPersonalizedLearning} + final bool enableIMEPersonalizedLearning; + + @override + _StreamMessageTextFieldState createState() => _StreamMessageTextFieldState(); + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties.add(DiagnosticsProperty('focusNode', focusNode, + defaultValue: null)); + properties + .add(DiagnosticsProperty('enabled', enabled, defaultValue: null)); + properties.add(DiagnosticsProperty( + 'decoration', decoration, + defaultValue: const InputDecoration())); + properties.add(DiagnosticsProperty( + 'keyboardType', keyboardType, + defaultValue: TextInputType.text)); + properties.add( + DiagnosticsProperty('style', style, defaultValue: null)); + properties.add( + DiagnosticsProperty('autofocus', autofocus, defaultValue: false)); + properties.add(DiagnosticsProperty( + 'obscuringCharacter', obscuringCharacter, + defaultValue: '•')); + properties.add(DiagnosticsProperty('obscureText', obscureText, + defaultValue: false)); + properties.add(DiagnosticsProperty('autocorrect', autocorrect, + defaultValue: true)); + properties.add(EnumProperty( + 'smartDashesType', smartDashesType, + defaultValue: + obscureText ? SmartDashesType.disabled : SmartDashesType.enabled)); + properties.add(EnumProperty( + 'smartQuotesType', smartQuotesType, + defaultValue: + obscureText ? SmartQuotesType.disabled : SmartQuotesType.enabled)); + properties.add(DiagnosticsProperty( + 'enableSuggestions', enableSuggestions, + defaultValue: true)); + properties.add(IntProperty('maxLines', maxLines, defaultValue: 1)); + properties.add(IntProperty('minLines', minLines, defaultValue: null)); + properties.add( + DiagnosticsProperty('expands', expands, defaultValue: false)); + properties.add(IntProperty('maxLength', maxLength, defaultValue: null)); + properties.add(FlagProperty('maxLengthEnforced', + value: maxLengthEnforced, + defaultValue: true, + ifFalse: 'maxLength not enforced')); + properties.add(EnumProperty( + 'maxLengthEnforcement', maxLengthEnforcement, + defaultValue: null)); + properties.add(EnumProperty( + 'textInputAction', textInputAction, + defaultValue: null)); + properties.add(EnumProperty( + 'textCapitalization', textCapitalization, + defaultValue: TextCapitalization.none)); + properties.add(EnumProperty('textAlign', textAlign, + defaultValue: TextAlign.start)); + properties.add(DiagnosticsProperty( + 'textAlignVertical', textAlignVertical, + defaultValue: null)); + properties.add(EnumProperty('textDirection', textDirection, + defaultValue: null)); + properties + .add(DoubleProperty('cursorWidth', cursorWidth, defaultValue: 2.0)); + properties + .add(DoubleProperty('cursorHeight', cursorHeight, defaultValue: null)); + properties.add(DiagnosticsProperty('cursorRadius', cursorRadius, + defaultValue: null)); + properties + .add(ColorProperty('cursorColor', cursorColor, defaultValue: null)); + properties.add(DiagnosticsProperty( + 'keyboardAppearance', keyboardAppearance, + defaultValue: null)); + properties.add(DiagnosticsProperty( + 'scrollPadding', scrollPadding, + defaultValue: const EdgeInsets.all(20.0))); + properties.add(FlagProperty('selectionEnabled', + value: selectionEnabled, + defaultValue: true, + ifFalse: 'selection disabled')); + properties.add(DiagnosticsProperty( + 'selectionControls', selectionControls, + defaultValue: null)); + properties.add(DiagnosticsProperty( + 'scrollController', scrollController, + defaultValue: null)); + properties.add(DiagnosticsProperty( + 'scrollPhysics', scrollPhysics, + defaultValue: null)); + properties.add(DiagnosticsProperty( + 'enableIMEPersonalizedLearning', enableIMEPersonalizedLearning, + defaultValue: true)); + } +} + +class _StreamMessageTextFieldState extends State + with RestorationMixin { + RestorableMessageInputController? _controller; + + MessageInputController get _effectiveController => + widget.controller ?? _controller!.value; + + @override + void initState() { + super.initState(); + if (widget.controller == null) { + _createLocalController(); + } + } + + void _createLocalController([Message? message]) { + assert(_controller == null, ''); + _controller = RestorableMessageInputController(message: message); + } + + @override + void didUpdateWidget(covariant StreamMessageTextField oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.controller == null && oldWidget.controller != null) { + _createLocalController(oldWidget.controller!.value); + } else if (widget.controller != null && oldWidget.controller == null) { + unregisterFromRestoration(_controller!); + _controller!.dispose(); + _controller = null; + } + } + + @override + void restoreState(RestorationBucket? oldBucket, bool initialRestore) { + if (_controller != null) { + _registerController(); + } + } + + @override + String? get restorationId => widget.restorationId; + + void _registerController() { + assert(_controller != null, ''); + registerForRestoration(_controller!, 'controller'); + } + + late final _onChangedDebounced = debounce( + (String newText) => _effectiveController.text = newText, + const Duration(milliseconds: 350), + leading: true, + ); + + @override + Widget build(BuildContext context) => TextField( + key: widget.key, + controller: _effectiveController.textEditingController, + onChanged: (newText) => _onChangedDebounced([newText]), + focusNode: widget.focusNode, + decoration: widget.decoration, + keyboardType: widget.keyboardType, + textInputAction: widget.textInputAction, + textCapitalization: widget.textCapitalization, + style: widget.style, + strutStyle: widget.strutStyle, + textAlign: widget.textAlign, + textAlignVertical: widget.textAlignVertical, + textDirection: widget.textDirection, + readOnly: widget.readOnly, + toolbarOptions: widget.toolbarOptions, + showCursor: widget.showCursor, + autofocus: widget.autofocus, + obscuringCharacter: widget.obscuringCharacter, + obscureText: widget.obscureText, + autocorrect: widget.autocorrect, + smartDashesType: widget.smartDashesType, + smartQuotesType: widget.smartQuotesType, + enableSuggestions: widget.enableSuggestions, + maxLines: widget.maxLines, + minLines: widget.minLines, + expands: widget.expands, + maxLength: widget.maxLength, + maxLengthEnforced: widget.maxLengthEnforced, + maxLengthEnforcement: widget.maxLengthEnforcement, + onEditingComplete: widget.onEditingComplete, + onSubmitted: widget.onSubmitted, + onAppPrivateCommand: widget.onAppPrivateCommand, + inputFormatters: widget.inputFormatters, + enabled: widget.enabled, + cursorWidth: widget.cursorWidth, + cursorHeight: widget.cursorHeight, + cursorRadius: widget.cursorRadius, + cursorColor: widget.cursorColor, + selectionHeightStyle: widget.selectionHeightStyle, + selectionWidthStyle: widget.selectionWidthStyle, + keyboardAppearance: widget.keyboardAppearance, + scrollPadding: widget.scrollPadding, + dragStartBehavior: widget.dragStartBehavior, + enableInteractiveSelection: widget.enableInteractiveSelection, + selectionControls: widget.selectionControls, + onTap: widget.onTap, + mouseCursor: widget.mouseCursor, + buildCounter: widget.buildCounter, + scrollController: widget.scrollController, + scrollPhysics: widget.scrollPhysics, + autofillHints: widget.autofillHints, + restorationId: widget.restorationId, + enableIMEPersonalizedLearning: widget.enableIMEPersonalizedLearning, + ); + + @override + void dispose() { + _onChangedDebounced.cancel(); + _controller?.dispose(); + super.dispose(); + } +} diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart new file mode 100644 index 00000000..365dc017 --- /dev/null +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -0,0 +1,170 @@ +import 'dart:async'; +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; +import 'package:stream_chat/stream_chat.dart'; + +class MessageInputController extends ValueNotifier { + /// Creates a controller for an editable text field. + /// + /// This constructor treats a null [message] argument as if it were the empty + /// message. + factory MessageInputController({Message? message}) => + MessageInputController._(message ?? Message()); + + /// Creates a controller for an editable text field from an initial [text]. + factory MessageInputController.fromText(String? text) => + MessageInputController._(Message(text: text)); + + /// Creates a controller for an editable text field from an initial [attachments]. + factory MessageInputController.fromAttachments( + List attachments, + ) => + MessageInputController._(Message(attachments: attachments)); + + MessageInputController._(Message message) + : _textEditingController = TextEditingController(text: message.text), + super(message); + + /// + TextEditingController get textEditingController => _textEditingController; + final TextEditingController _textEditingController; + + /// + String get text => value.text ?? ''; + + /// + set message(Message message) { + value = message; + } + + set text(String? newText) { + value = value.copyWith(text: newText); + _textEditingController.text = newText ?? ''; + } + + set textEditingValue(TextEditingValue newValue) { + _textEditingController.value = newValue; + value = value.copyWith(text: _textEditingController.text); + } + + /// + List get attachments => value.attachments; + + set attachments(List attachments) { + value = value.copyWith(attachments: attachments); + } + + /// + get baseOffset { + return textEditingController.selection.baseOffset; + } + + /// + void addAttachment(Attachment attachment) { + attachments = [...attachments, attachment]; + } + + /// + void addAttachmentAt(int index, Attachment attachment) { + attachments = [...attachments]..insert(index, attachment); + } + + /// + void removeAttachment(Attachment attachment) { + attachments = [...attachments]..remove(attachment); + } + + /// + void removeAttachmentById(String attachmentId) { + attachments = [...attachments]..removeWhere((it) => it.id == attachmentId); + } + + /// + void removeAttachmentAt(int index) { + attachments = [...attachments]..removeAt(index); + } + + /// + List get mentionedUsers => value.mentionedUsers; + + set mentionedUsers(List users) { + value = value.copyWith(mentionedUsers: users); + } + + /// + void addMentionedUser(User user) { + mentionedUsers = [...mentionedUsers, user]; + } + + /// + void removeMentionedUser(User user) { + mentionedUsers = [...mentionedUsers]..remove(user); + } + + /// + void removeMentionedUserById(String userId) { + mentionedUsers = [...mentionedUsers]..removeWhere((it) => it.id == userId); + } + + /// Set the [value] to empty. + /// + /// After calling this function, [text], [attachments] and [mentionedUsers] + /// all will be empty. + /// + /// Calling this will notify all the listeners of this [MessageInputController] + /// that they need to update (it calls [notifyListeners]). For this reason, + /// this method should only be called between frames, e.g. in response to user + /// actions, not during the build, layout, or paint phases. + void clear() { + value = Message(); + _textEditingController.clear(); + } + + @override + void dispose() { + super.dispose(); + _textEditingController.dispose(); + } +} + +/// A [RestorableProperty] that knows how to store and restore a +/// [MessageInputController]. +/// +/// The [MessageInputController] is accessible via the [value] getter. During +/// state restoration, the property will restore [MessageInputController.value] +/// to the value it had when the restoration data it is getting restored from +/// was collected. +class RestorableMessageInputController + extends RestorableChangeNotifier { + /// Creates a [RestorableMessageInputController]. + /// + /// This constructor treats a null `text` argument as if it were the empty + /// string. + RestorableMessageInputController({Message? message}) + : _initialValue = message ?? Message(); + + /// Creates a [RestorableMessageInputController] from an initial + /// [TextEditingValue]. + /// + /// This constructor treats a null `value` argument as if it were + /// [TextEditingValue.empty]. + factory RestorableMessageInputController.fromText(String? text) => + RestorableMessageInputController(message: Message(text: text)); + + final Message _initialValue; + + @override + MessageInputController createDefaultValue() => + MessageInputController(message: _initialValue); + + @override + MessageInputController fromPrimitives(Object? data) { + final message = Message.fromJson(json.decode(data! as String)); + return MessageInputController(message: message); + } + + @override + String toPrimitives() => json.encode(value.value); +} diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index 8bd41c76..bf191ace 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -7,6 +7,7 @@ export 'src/better_stream_builder.dart'; export 'src/channel_list_core.dart' hide ChannelListCoreState; export 'src/channels_bloc.dart'; export 'src/lazy_load_scroll_view.dart'; +export 'src/message_input_controller.dart'; export 'src/message_list_core.dart' hide MessageListCoreState; export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; From 4459253f49a2c514b1bc9143834ace881d468f8d Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 19 Oct 2021 16:08:25 +0530 Subject: [PATCH 002/201] sendAsDm changes --- .../lib/src/message_input.dart | 22 +++++++------- .../lib/src/message_input_controller.dart | 30 +++++++++++++++---- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 3f8e22d1..982d5cc5 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -348,7 +348,6 @@ class MessageInputState extends State { Command? _chosenCommand; bool _actionsShrunk = false; - bool _sendAsDm = false; bool _openFilePickerSection = false; int _filePickerIndex = 0; @@ -535,7 +534,7 @@ class MessageInputState extends State { height: 16, width: 16, foregroundDecoration: BoxDecoration( - border: _sendAsDm + border: messageInputController.showInChannel ? null : Border.all( color: _streamChatTheme.colorTheme.textHighEmphasis @@ -547,19 +546,20 @@ class MessageInputState extends State { child: Center( child: Material( borderRadius: BorderRadius.circular(3), - color: _sendAsDm + color: messageInputController.showInChannel ? _streamChatTheme.colorTheme.accentPrimary : _streamChatTheme.colorTheme.barsBg, child: InkWell( onTap: () { setState(() { - _sendAsDm = !_sendAsDm; + messageInputController.showInChannel = + !messageInputController.showInChannel; }); }, child: AnimatedCrossFade( duration: const Duration(milliseconds: 300), reverseDuration: const Duration(milliseconds: 300), - crossFadeState: _sendAsDm + crossFadeState: messageInputController.showInChannel ? CrossFadeState.showFirst : CrossFadeState.showSecond, firstChild: StreamSvgIcon.check( @@ -1216,7 +1216,7 @@ class MessageInputState extends State { size: Size(renderObject.size.width - 16, 400), mentionsTileBuilder: tileBuilder, onMentionUserTap: (user) { - messageInputController.mentionedUsers.add(user); + messageInputController.addMentionedUser(user); splits[splits.length - 1] = user.name; final rejoin = splits.join('@'); @@ -1794,8 +1794,8 @@ class MessageInputState extends State { text = '${'/${_chosenCommand!.name} '}$text'; } - messageInputController.clear(); - messageInputController.attachments.clear(); + messageInputController.text = ''; + messageInputController.clearAttachments(); widget.onQuotedMessageCleared?.call(); setState(() { @@ -1819,7 +1819,9 @@ class MessageInputState extends State { mentionedUsers: messageInputController.mentionedUsers .where((u) => text.contains('@${u.name}')) .toList(), - showInChannel: widget.parentMessage != null ? _sendAsDm : null, + showInChannel: widget.parentMessage != null + ? messageInputController.showInChannel + : null, ); } @@ -1839,7 +1841,7 @@ class MessageInputState extends State { await streamChannel.reloadChannel(); } - messageInputController.mentionedUsers.clear(); + messageInputController.clearMentionedUsers(); try { Future sendingFuture; diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 365dc017..96026530 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -44,11 +44,26 @@ class MessageInputController extends ValueNotifier { _textEditingController.text = newText ?? ''; } + /// set textEditingValue(TextEditingValue newValue) { _textEditingController.value = newValue; value = value.copyWith(text: _textEditingController.text); } + /// + get baseOffset { + return textEditingController.selection.baseOffset; + } + + set showInChannel(bool newValue) { + value = value.copyWith(showInChannel: newValue); + } + + /// + bool get showInChannel { + return value.showInChannel ?? false; + } + /// List get attachments => value.attachments; @@ -56,11 +71,6 @@ class MessageInputController extends ValueNotifier { value = value.copyWith(attachments: attachments); } - /// - get baseOffset { - return textEditingController.selection.baseOffset; - } - /// void addAttachment(Attachment attachment) { attachments = [...attachments, attachment]; @@ -86,6 +96,11 @@ class MessageInputController extends ValueNotifier { attachments = [...attachments]..removeAt(index); } + /// + void clearAttachments() { + attachments = []; + } + /// List get mentionedUsers => value.mentionedUsers; @@ -108,6 +123,11 @@ class MessageInputController extends ValueNotifier { mentionedUsers = [...mentionedUsers]..removeWhere((it) => it.id == userId); } + /// + void clearMentionedUsers() { + mentionedUsers = []; + } + /// Set the [value] to empty. /// /// After calling this function, [text], [attachments] and [mentionedUsers] From 8e7e6c9542f28b24780e6211e7f1bf90fbb80222 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 22 Oct 2021 18:51:06 +0530 Subject: [PATCH 003/201] fixed texteditingcontroller issues --- .../lib/src/message_input.dart | 21 +++++++++---------- .../src/mip/stream_message_send_button.dart | 1 + .../src/mip/stream_message_text_field.dart | 11 +++------- .../lib/stream_chat_flutter.dart | 1 + .../lib/src/message_input_controller.dart | 15 ++++++++++--- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 982d5cc5..e1ab4b90 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -696,13 +696,13 @@ class MessageInputState extends State { _buildAttachments(), LimitedBox( maxHeight: widget.maxHeight, - child: TextField( + child: StreamMessageTextField( key: const Key('messageInputText'), enabled: _inputEnabled, maxLines: null, onSubmitted: (_) => sendMessage(), keyboardType: widget.keyboardType, - controller: messageInputController.textEditingController, + controller: messageInputController, focusNode: _focusNode, style: _messageInputTheme.inputTextStyle, autofocus: widget.autofocus, @@ -876,7 +876,7 @@ class MessageInputState extends State { .contains(':')) { final textToSelection = messageInputController.text.substring( 0, - messageInputController.textEditingController.value.selection.start, + messageInputController.selectionStart, ); final splits = textToSelection.split(':'); final query = splits[splits.length - 2].toLowerCase(); @@ -1179,15 +1179,14 @@ class MessageInputState extends State { } Widget _buildMentionsOverlayEntry() { - if (messageInputController.textEditingController.value.selection.start < - 0) { + if (messageInputController.selectionStart < 0) { return const Offstage(); } final splits = messageInputController.text .substring( 0, - messageInputController.textEditingController.value.selection.start, + messageInputController.selectionStart, ) .split('@'); final query = splits.last.toLowerCase(); @@ -1223,8 +1222,7 @@ class MessageInputState extends State { messageInputController.textEditingController.value = TextEditingValue( text: rejoin + messageInputController.text.substring( - messageInputController - .textEditingController.value.selection.start, + messageInputController.selectionStart, ), selection: TextSelection.collapsed( offset: rejoin.length, @@ -1267,7 +1265,7 @@ class MessageInputState extends State { messageInputController.textEditingController.value = TextEditingValue( text: rejoin + messageInputController.text.substring( - messageInputController.textEditingController.selection.start, + messageInputController.selectionStart, ), selection: TextSelection.collapsed( offset: rejoin.length, @@ -1794,8 +1792,9 @@ class MessageInputState extends State { text = '${'/${_chosenCommand!.name} '}$text'; } - messageInputController.text = ''; - messageInputController.clearAttachments(); + messageInputController + ..text = '' + ..clearAttachments(); widget.onQuotedMessageCleared?.call(); setState(() { diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart b/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart index e69de29b..8b137891 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart +++ b/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart @@ -0,0 +1 @@ + diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart index 48ece391..43acce31 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart @@ -710,17 +710,13 @@ class _StreamMessageTextFieldState extends State registerForRestoration(_controller!, 'controller'); } - late final _onChangedDebounced = debounce( - (String newText) => _effectiveController.text = newText, - const Duration(milliseconds: 350), - leading: true, - ); - @override Widget build(BuildContext context) => TextField( key: widget.key, controller: _effectiveController.textEditingController, - onChanged: (newText) => _onChangedDebounced([newText]), + onChanged: (newText) { + _effectiveController.text = newText; + }, focusNode: widget.focusNode, decoration: widget.decoration, keyboardType: widget.keyboardType, @@ -775,7 +771,6 @@ class _StreamMessageTextFieldState extends State @override void dispose() { - _onChangedDebounced.cancel(); _controller?.dispose(); super.dispose(); } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 0447fc68..948f0261 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -28,6 +28,7 @@ export 'src/message_search_item.dart'; export 'src/message_search_list_view.dart'; export 'src/message_text.dart'; export 'src/message_widget.dart'; +export 'src/mip/stream_message_text_field.dart'; export 'src/option_list_tile.dart'; export 'src/reaction_icon.dart'; export 'src/reaction_picker.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 96026530..3f60efaf 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -32,16 +32,20 @@ class MessageInputController extends ValueNotifier { final TextEditingController _textEditingController; /// - String get text => value.text ?? ''; + String get text => _textEditingController.text; /// set message(Message message) { value = message; } - set text(String? newText) { + set text(String newText) { value = value.copyWith(text: newText); - _textEditingController.text = newText ?? ''; + _textEditingController + ..text = newText + ..selection = TextSelection.fromPosition( + TextPosition(offset: _textEditingController.text.length), + ); } /// @@ -55,6 +59,11 @@ class MessageInputController extends ValueNotifier { return textEditingController.selection.baseOffset; } + /// + get selectionStart { + return textEditingController.selection.start; + } + set showInChannel(bool newValue) { value = value.copyWith(showInChannel: newValue); } From 79aa6aa979780415bbb1d32a91fa290f3809bb3e Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 28 Oct 2021 18:25:32 +0530 Subject: [PATCH 004/201] fixes --- .../lib/src/message_input_controller.dart | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 3f60efaf..d49d964f 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -1,10 +1,10 @@ -import 'dart:async'; import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat/stream_chat.dart'; +/// A Controller for storing and handling the [Message] class MessageInputController extends ValueNotifier { /// Creates a controller for an editable text field. /// @@ -17,7 +17,7 @@ class MessageInputController extends ValueNotifier { factory MessageInputController.fromText(String? text) => MessageInputController._(Message(text: text)); - /// Creates a controller for an editable text field from an initial [attachments]. + /// Creates a controller for an editable textfield from initial [attachments]. factory MessageInputController.fromAttachments( List attachments, ) => @@ -55,23 +55,17 @@ class MessageInputController extends ValueNotifier { } /// - get baseOffset { - return textEditingController.selection.baseOffset; - } + int get baseOffset => textEditingController.selection.baseOffset; /// - get selectionStart { - return textEditingController.selection.start; - } + int get selectionStart => textEditingController.selection.start; set showInChannel(bool newValue) { value = value.copyWith(showInChannel: newValue); } /// - bool get showInChannel { - return value.showInChannel ?? false; - } + bool get showInChannel => value.showInChannel ?? false; /// List get attachments => value.attachments; @@ -142,7 +136,7 @@ class MessageInputController extends ValueNotifier { /// After calling this function, [text], [attachments] and [mentionedUsers] /// all will be empty. /// - /// Calling this will notify all the listeners of this [MessageInputController] + /// Calling this will notify the listeners of this [MessageInputController] /// that they need to update (it calls [notifyListeners]). For this reason, /// this method should only be called between frames, e.g. in response to user /// actions, not during the build, layout, or paint phases. From 82109e5e4cc7a544d802723bf696fada4c7a8045 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 2 Nov 2021 22:13:51 +0530 Subject: [PATCH 005/201] added stream message button, general refactor --- .../lib/src/message_input.dart | 120 ++++-------------- .../lib/src/mip/countdown_button.dart | 29 +++++ .../src/mip/stream_message_send_button.dart | 97 ++++++++++++++ .../lib/stream_chat_flutter.dart | 2 + .../lib/src/message_input_controller.dart | 22 ++-- 5 files changed, 164 insertions(+), 106 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/mip/countdown_button.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index e1ab4b90..596e61c4 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -79,6 +79,11 @@ typedef ActionButtonBuilder = Widget Function( IconButton defaultActionButton, ); +typedef AttachmentsPickerBuilder = Widget Function( + BuildContext context, + List attachments, +); + /// Location for actions on the [MessageInput] enum ActionsLocation { /// Align to left @@ -204,6 +209,7 @@ class MessageInput extends StatefulWidget { this.commandButtonBuilder, this.customOverlays = const [], this.mentionAllAppUsers = false, + this.attachmentsPickerBuilder, }) : assert( initialMessage == null || editMessage == null, "Can't provide both `initialMessage` and `editMessage`", @@ -322,6 +328,9 @@ class MessageInput extends StatefulWidget { /// Defaults to false. final bool mentionAllAppUsers; + /// Builds bottom sheet when attachment picker is opened. + final AttachmentsPickerBuilder? attachmentsPickerBuilder; + @override MessageInputState createState() => MessageInputState(); @@ -524,7 +533,7 @@ class MessageInputState extends State { widget.actionsLocation == ActionsLocation.right) _buildExpandActionsButton(context), if (widget.sendButtonLocation == SendButtonLocation.outside) - _animateSendButton(context), + _buildSendButton(context), ], ); @@ -588,27 +597,15 @@ class MessageInputState extends State { ], ); - Widget _animateSendButton(BuildContext context) { - late Widget sendButton; - if (_timeOut > 0) { - sendButton = _CountdownButton(count: _timeOut); - } else if (!_messageIsPresent && - messageInputController.attachments.isEmpty) { - sendButton = widget.idleSendButton ?? _buildIdleSendButton(context); - } else { - sendButton = widget.activeSendButton != null - ? InkWell( - onTap: sendMessage, - child: widget.activeSendButton, - ) - : _buildSendButton(context); - } - - return AnimatedSwitcher( - duration: _streamChatTheme.messageInputTheme.sendAnimationDuration!, - child: sendButton, - ); - } + Widget _buildSendButton(BuildContext context) => StreamMessageSendButton( + onSendMessage: sendMessage, + timeOut: _timeOut, + isIdle: + !_messageIsPresent && messageInputController.attachments.isEmpty, + isEditEnabled: widget.editMessage != null, + idleSendButton: widget.idleSendButton, + activeSendButton: widget.activeSendButton, + ); Widget _buildExpandActionsButton(BuildContext context) { final channel = StreamChannel.of(context).channel; @@ -817,7 +814,7 @@ class MessageInputState extends State { widget.actionsLocation == ActionsLocation.rightInside) _buildExpandActionsButton(context), if (widget.sendButtonLocation == SendButtonLocation.inside) - _animateSendButton(context), + _buildSendButton(context), ], ), ).merge(passedDecoration); @@ -993,6 +990,13 @@ class MessageInputState extends State { } } + if (_openFilePickerSection && widget.attachmentsPickerBuilder != null) { + return widget.attachmentsPickerBuilder!( + context, + messageInputController.attachments, + ); + } + return AnimatedContainer( duration: _openFilePickerSection ? const Duration(milliseconds: 300) @@ -1736,49 +1740,6 @@ class MessageInputState extends State { }); } - Widget _buildIdleSendButton(BuildContext context) => Padding( - padding: const EdgeInsets.all(8), - child: StreamSvgIcon( - assetName: _getIdleSendIcon(), - color: _messageInputTheme.sendButtonIdleColor, - ), - ); - - Widget _buildSendButton(BuildContext context) => Padding( - padding: const EdgeInsets.all(8), - child: IconButton( - onPressed: sendMessage, - padding: const EdgeInsets.all(0), - splashRadius: 24, - constraints: const BoxConstraints.tightFor( - height: 24, - width: 24, - ), - icon: StreamSvgIcon( - assetName: _getSendIcon(), - color: _messageInputTheme.sendButtonColor, - ), - ), - ); - - String _getIdleSendIcon() { - if (_commandEnabled) { - return 'Icon_search.svg'; - } else { - return 'Icon_circle_right.svg'; - } - } - - String _getSendIcon() { - if (widget.editMessage != null) { - return 'Icon_circle_up.svg'; - } else if (_commandEnabled) { - return 'Icon_search.svg'; - } else { - return 'Icon_circle_up.svg'; - } - } - /// Sends the current message Future sendMessage() async { var text = messageInputController.text.trim(); @@ -2080,30 +2041,3 @@ class _PickerWidgetState extends State<_PickerWidget> { ); } } - -class _CountdownButton extends StatelessWidget { - const _CountdownButton({ - Key? key, - required this.count, - }) : super(key: key); - - final int count; - - @override - Widget build(BuildContext context) => Padding( - padding: const EdgeInsets.all(8), - child: DecoratedBox( - decoration: BoxDecoration( - color: StreamChatTheme.of(context).colorTheme.disabled, - shape: BoxShape.circle, - ), - child: SizedBox( - height: 24, - width: 24, - child: Center( - child: Text('$count'), - ), - ), - ), - ); -} diff --git a/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart b/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart new file mode 100644 index 00000000..e3d8bd32 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +class CountdownButton extends StatelessWidget { + const CountdownButton({ + Key? key, + required this.count, + }) : super(key: key); + + final int count; + + @override + Widget build(BuildContext context) => Padding( + padding: const EdgeInsets.all(8), + child: DecoratedBox( + decoration: BoxDecoration( + color: StreamChatTheme.of(context).colorTheme.disabled, + shape: BoxShape.circle, + ), + child: SizedBox( + height: 24, + width: 24, + child: Center( + child: Text('$count'), + ), + ), + ), + ); +} diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart b/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart index 8b137891..5443fb18 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart +++ b/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart @@ -1 +1,98 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +class StreamMessageSendButton extends StatelessWidget { + final int timeOut; + final bool isIdle; + final bool isCommandEnabled; + final bool isEditEnabled; + final Widget? idleSendButton; + final Widget? activeSendButton; + final VoidCallback onSendMessage; + + const StreamMessageSendButton({ + Key? key, + this.timeOut = 0, + this.isIdle = true, + this.isCommandEnabled = false, + this.isEditEnabled = false, + this.idleSendButton, + this.activeSendButton, + required this.onSendMessage, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + var _streamChatTheme = StreamChatTheme.of(context); + + late Widget sendButton; + if (timeOut > 0) { + sendButton = CountdownButton(count: timeOut); + } else if (isIdle) { + sendButton = idleSendButton ?? _buildIdleSendButton(context); + } else { + sendButton = activeSendButton != null + ? InkWell( + onTap: onSendMessage, + child: activeSendButton, + ) + : _buildSendButton(context); + } + + return AnimatedSwitcher( + duration: _streamChatTheme.messageInputTheme.sendAnimationDuration!, + child: sendButton, + ); + } + + Widget _buildIdleSendButton(BuildContext context) { + var _messageInputTheme = MessageInputTheme.of(context); + + return Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon( + assetName: _getIdleSendIcon(), + color: _messageInputTheme.sendButtonIdleColor, + ), + ); + } + + Widget _buildSendButton(BuildContext context) { + var _messageInputTheme = MessageInputTheme.of(context); + + return Padding( + padding: const EdgeInsets.all(8), + child: IconButton( + onPressed: onSendMessage, + padding: const EdgeInsets.all(0), + splashRadius: 24, + constraints: const BoxConstraints.tightFor( + height: 24, + width: 24, + ), + icon: StreamSvgIcon( + assetName: _getSendIcon(), + color: _messageInputTheme.sendButtonColor, + ), + ), + ); + } + + String _getIdleSendIcon() { + if (isCommandEnabled) { + return 'Icon_search.svg'; + } else { + return 'Icon_circle_right.svg'; + } + } + + String _getSendIcon() { + if (isEditEnabled) { + return 'Icon_circle_up.svg'; + } else if (isCommandEnabled) { + return 'Icon_search.svg'; + } else { + return 'Icon_circle_up.svg'; + } + } +} diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 948f0261..f58b7439 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -28,6 +28,8 @@ export 'src/message_search_item.dart'; export 'src/message_search_list_view.dart'; export 'src/message_text.dart'; export 'src/message_widget.dart'; +export 'src/mip/countdown_button.dart'; +export 'src/mip/stream_message_send_button.dart'; export 'src/mip/stream_message_text_field.dart'; export 'src/option_list_tile.dart'; export 'src/reaction_icon.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 3f60efaf..3339bc5b 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -1,10 +1,10 @@ -import 'dart:async'; import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat/stream_chat.dart'; +/// Controller for storing and mutating a [Message] value. class MessageInputController extends ValueNotifier { /// Creates a controller for an editable text field. /// @@ -17,7 +17,8 @@ class MessageInputController extends ValueNotifier { factory MessageInputController.fromText(String? text) => MessageInputController._(Message(text: text)); - /// Creates a controller for an editable text field from an initial [attachments]. + /// Creates a controller for an editable text field from an initial + /// [attachments]. factory MessageInputController.fromAttachments( List attachments, ) => @@ -55,23 +56,17 @@ class MessageInputController extends ValueNotifier { } /// - get baseOffset { - return textEditingController.selection.baseOffset; - } + int get baseOffset => textEditingController.selection.baseOffset; /// - get selectionStart { - return textEditingController.selection.start; - } + int get selectionStart => textEditingController.selection.start; set showInChannel(bool newValue) { value = value.copyWith(showInChannel: newValue); } /// - bool get showInChannel { - return value.showInChannel ?? false; - } + bool get showInChannel => value.showInChannel ?? false; /// List get attachments => value.attachments; @@ -142,8 +137,9 @@ class MessageInputController extends ValueNotifier { /// After calling this function, [text], [attachments] and [mentionedUsers] /// all will be empty. /// - /// Calling this will notify all the listeners of this [MessageInputController] - /// that they need to update (it calls [notifyListeners]). For this reason, + /// Calling this will notify all the listeners of this + /// [MessageInputController] that they need to update + /// (it calls [notifyListeners]). For this reason, /// this method should only be called between frames, e.g. in response to user /// actions, not during the build, layout, or paint phases. void clear() { From c6b04300d35e579f0a536233364ca1bebe38796e Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 2 Nov 2021 22:27:11 +0530 Subject: [PATCH 006/201] added changelog --- packages/stream_chat_flutter/CHANGELOG.md | 8 ++++++++ packages/stream_chat_flutter_core/CHANGELOG.md | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 00f8412b..cc6cd374 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,11 @@ +## Upcoming + +✅ Added + +🛑️ Breaking Changes from `3.2.0` + +- `MessageInput` now works with a `MessageInputController` instead of a `TextEditingController` + ## 3.2.0 - Updated Dart SDK constraints to `>=2.14.0 <3.0.0` diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index 77ac23a0..37354ebf 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,3 +1,7 @@ +✅ Added + +- Added `MessageInputController` to hold `Message` related data. + ## 3.2.0 - Updated `stream_chat` dependency to [`3.2.0`](https://pub.dev/packages/stream_chat/changelog). From 5c09bf21109ffc574ed96f573743345efcb661d4 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Wed, 3 Nov 2021 14:09:51 +0530 Subject: [PATCH 007/201] added new builder --- .../lib/src/message_input.dart | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 596e61c4..556a5ac1 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -79,9 +79,11 @@ typedef ActionButtonBuilder = Widget Function( IconButton defaultActionButton, ); -typedef AttachmentsPickerBuilder = Widget Function( +/// Widget builder for widgets that require may required data from the +/// [MessageInputController] +typedef MessageRelatedBuilder = Widget Function( BuildContext context, - List attachments, + MessageInputController messageInputController, ); /// Location for actions on the [MessageInput] @@ -210,6 +212,7 @@ class MessageInput extends StatefulWidget { this.customOverlays = const [], this.mentionAllAppUsers = false, this.attachmentsPickerBuilder, + this.sendButtonBuilder, }) : assert( initialMessage == null || editMessage == null, "Can't provide both `initialMessage` and `editMessage`", @@ -329,7 +332,10 @@ class MessageInput extends StatefulWidget { final bool mentionAllAppUsers; /// Builds bottom sheet when attachment picker is opened. - final AttachmentsPickerBuilder? attachmentsPickerBuilder; + final MessageRelatedBuilder? attachmentsPickerBuilder; + + /// Builder for creating send button + final MessageRelatedBuilder? sendButtonBuilder; @override MessageInputState createState() => MessageInputState(); @@ -597,15 +603,20 @@ class MessageInputState extends State { ], ); - Widget _buildSendButton(BuildContext context) => StreamMessageSendButton( - onSendMessage: sendMessage, - timeOut: _timeOut, - isIdle: - !_messageIsPresent && messageInputController.attachments.isEmpty, - isEditEnabled: widget.editMessage != null, - idleSendButton: widget.idleSendButton, - activeSendButton: widget.activeSendButton, - ); + Widget _buildSendButton(BuildContext context) { + if (widget.sendButtonBuilder != null) { + return widget.sendButtonBuilder!(context, messageInputController); + } + + return StreamMessageSendButton( + onSendMessage: sendMessage, + timeOut: _timeOut, + isIdle: !_messageIsPresent && messageInputController.attachments.isEmpty, + isEditEnabled: widget.editMessage != null, + idleSendButton: widget.idleSendButton, + activeSendButton: widget.activeSendButton, + ); + } Widget _buildExpandActionsButton(BuildContext context) { final channel = StreamChannel.of(context).channel; @@ -993,7 +1004,7 @@ class MessageInputState extends State { if (_openFilePickerSection && widget.attachmentsPickerBuilder != null) { return widget.attachmentsPickerBuilder!( context, - messageInputController.attachments, + messageInputController, ); } From bf30102d2b4a676edfe8bab7436112a6b78f1df0 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Wed, 3 Nov 2021 14:11:56 +0530 Subject: [PATCH 008/201] analysis fixes --- .../stream_chat_flutter/lib/src/mip/countdown_button.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart b/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart index e3d8bd32..6e7b5d9b 100644 --- a/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart +++ b/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart @@ -1,12 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// Button for showing visual component of slow mode. class CountdownButton extends StatelessWidget { + + /// Constructor for creating [CountdownButton]. const CountdownButton({ Key? key, required this.count, }) : super(key: key); + /// Count of time remaining to show to the user. final int count; @override From 5a5063cddb31aa0b2c3ace5730b5ced8e843a221 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Wed, 3 Nov 2021 17:45:32 +0530 Subject: [PATCH 009/201] separated attachment picker --- .../lib/src/message_input.dart | 356 +-------------- .../lib/src/mip/countdown_button.dart | 1 - .../lib/src/mip/stream_attachment_picker.dart | 428 ++++++++++++++++++ .../lib/stream_chat_flutter.dart | 1 + 4 files changed, 445 insertions(+), 341 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 556a5ac1..67785cd2 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -364,7 +364,6 @@ class MessageInputState extends State { Command? _chosenCommand; bool _actionsShrunk = false; bool _openFilePickerSection = false; - int _filePickerIndex = 0; /// The editing controller passed to the input TextField late final MessageInputController messageInputController = @@ -954,53 +953,6 @@ class MessageInputState extends State { } Widget _buildFilePickerSection() { - final _attachmentContainsFile = - messageInputController.attachments.any((it) => it.type == 'file'); - - final attachmentLimitCrossed = - messageInputController.attachments.length >= widget.attachmentLimit; - - Color _getIconColor(int index) { - final streamChatThemeData = _streamChatTheme; - switch (index) { - case 0: - return messageInputController.attachments.isEmpty - ? streamChatThemeData.colorTheme.accentPrimary - : (!_attachmentContainsFile - ? streamChatThemeData.colorTheme.accentPrimary - : streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.2)); - case 1: - return _attachmentContainsFile - ? streamChatThemeData.colorTheme.accentPrimary - : (messageInputController.attachments.isEmpty - ? streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.5) - : streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.2)); - case 2: - return attachmentLimitCrossed - ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) - : _attachmentContainsFile && - messageInputController.attachments.isNotEmpty - ? streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.2) - : streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.5); - case 3: - return attachmentLimitCrossed - ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) - : _attachmentContainsFile && - messageInputController.attachments.isNotEmpty - ? streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.2) - : streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.5); - default: - return Colors.black; - } - } - if (_openFilePickerSection && widget.attachmentsPickerBuilder != null) { return widget.attachmentsPickerBuilder!( context, @@ -1008,191 +960,25 @@ class MessageInputState extends State { ); } - return AnimatedContainer( - duration: _openFilePickerSection - ? const Duration(milliseconds: 300) - : const Duration(), - curve: Curves.easeOut, - height: _openFilePickerSection ? _kMinMediaPickerSize : 0, - child: SingleChildScrollView( - child: SizedBox( - height: _kMinMediaPickerSize, - child: Material( - color: _streamChatTheme.colorTheme.inputBg, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Row( - children: [ - IconButton( - icon: StreamSvgIcon.pictures( - color: _getIconColor(0), - ), - onPressed: _attachmentContainsFile && - messageInputController.attachments.isNotEmpty - ? null - : () { - setState(() { - _filePickerIndex = 0; - }); - }, - ), - IconButton( - iconSize: 32, - icon: StreamSvgIcon.files( - color: _getIconColor(1), - ), - onPressed: !_attachmentContainsFile && - messageInputController.attachments.isNotEmpty - ? null - : () { - pickFile(DefaultAttachmentTypes.file); - }, - ), - IconButton( - icon: StreamSvgIcon.camera( - color: _getIconColor(2), - ), - onPressed: attachmentLimitCrossed || - (_attachmentContainsFile && - messageInputController.attachments.isNotEmpty) - ? null - : () { - pickFile( - DefaultAttachmentTypes.image, - camera: true, - ); - }, - ), - IconButton( - padding: const EdgeInsets.all(0), - icon: StreamSvgIcon.record( - color: _getIconColor(3), - ), - onPressed: attachmentLimitCrossed || - (_attachmentContainsFile && - messageInputController.attachments.isNotEmpty) - ? null - : () { - pickFile( - DefaultAttachmentTypes.video, - camera: true, - ); - }, - ), - ], - ), - DecoratedBox( - decoration: BoxDecoration( - color: _streamChatTheme.colorTheme.barsBg, - borderRadius: const BorderRadius.only( - topLeft: Radius.circular(16), - topRight: Radius.circular(16), - ), - ), - child: Center( - child: Padding( - padding: const EdgeInsets.all(8), - child: Container( - width: 40, - height: 4, - decoration: BoxDecoration( - color: _streamChatTheme.colorTheme.inputBg, - borderRadius: BorderRadius.circular(4), - ), - ), - ), - ), - ), - if (_openFilePickerSection) - Expanded( - child: DecoratedBox( - decoration: BoxDecoration( - color: _streamChatTheme.colorTheme.barsBg, - borderRadius: BorderRadius.circular(8), - ), - child: _PickerWidget( - filePickerIndex: _filePickerIndex, - streamChatTheme: _streamChatTheme, - containsFile: _attachmentContainsFile, - selectedMedias: messageInputController.attachments - .map((e) => e.id) - .toList(), - onAddMoreFilesClick: pickFile, - onMediaSelected: (media) { - if (messageInputController.attachments - .any((e) => e.id == media.id)) { - setState(() => messageInputController.attachments - .removeWhere((e) => e.id == media.id)); - } else { - _addAssetAttachment(media); - } - }, - ), - ), - ), - ], - ), - ), - ), - ), + return StreamAttachmentPicker( + messageInputController: messageInputController, + onFilePicked: pickFile, + isOpen: _openFilePickerSection, + pickerSize: _openFilePickerSection ? _kMinMediaPickerSize : 0, + attachmentLimit: widget.attachmentLimit, + onAttachmentLimitExceeded: widget.onAttachmentLimitExceed, + maxAttachmentSize: widget.maxAttachmentSize, + compressedVideoQuality: widget.compressedVideoQuality, + compressedVideoFrameRate: widget.compressedVideoFrameRate, + onChangeInputState: (val) { + setState(() { + _inputEnabled = val; + }); + }, + onError: _showErrorAlert, ); } - void _addAssetAttachment(AssetEntity medium) async { - final mediaFile = await medium.originFile.timeout( - const Duration(seconds: 5), - onTimeout: () => medium.originFile, - ); - - if (mediaFile == null) return; - - var file = AttachmentFile( - path: mediaFile.path, - size: await mediaFile.length(), - bytes: mediaFile.readAsBytesSync(), - ); - - if (file.size! > widget.maxAttachmentSize) { - if (medium.type == AssetType.video && file.path != null) { - final mediaInfo = await (VideoService.compressVideo( - file.path!, - frameRate: widget.compressedVideoFrameRate, - quality: widget.compressedVideoQuality, - ) as FutureOr); - - if (mediaInfo.filesize! > widget.maxAttachmentSize) { - _showErrorAlert( - context.translations.fileTooLargeAfterCompressionError( - widget.maxAttachmentSize / (1024 * 1024), - ), - ); - return; - } - file = AttachmentFile( - name: file.name, - size: mediaInfo.filesize, - bytes: await mediaInfo.file?.readAsBytes(), - path: mediaInfo.path, - ); - } else { - _showErrorAlert(context.translations.fileTooLargeError( - widget.maxAttachmentSize / (1024 * 1024), - )); - return; - } - } - - setState(() { - final attachment = Attachment( - id: medium.id, - file: file, - type: medium.type == AssetType.image ? 'image' : 'video', - ); - _addAttachments([attachment]); - }); - } - Widget _buildMentionsOverlayEntry() { if (messageInputController.selectionStart < 0) { return const Offstage(); @@ -1942,113 +1728,3 @@ class MessageInputState extends State { super.didChangeDependencies(); } } - -class _PickerWidget extends StatefulWidget { - const _PickerWidget({ - Key? key, - required this.filePickerIndex, - required this.containsFile, - required this.selectedMedias, - required this.onAddMoreFilesClick, - required this.onMediaSelected, - required this.streamChatTheme, - }) : super(key: key); - - final int filePickerIndex; - final bool containsFile; - final List selectedMedias; - final void Function(DefaultAttachmentTypes) onAddMoreFilesClick; - final void Function(AssetEntity) onMediaSelected; - final StreamChatThemeData streamChatTheme; - - @override - _PickerWidgetState createState() => _PickerWidgetState(); -} - -class _PickerWidgetState extends State<_PickerWidget> { - Future? requestPermission; - - @override - void initState() { - super.initState(); - requestPermission = PhotoManager.requestPermission(); - } - - @override - Widget build(BuildContext context) { - if (widget.filePickerIndex != 0) { - return const Offstage(); - } - return FutureBuilder( - future: requestPermission, - builder: (context, snapshot) { - if (!snapshot.hasData) { - return const Offstage(); - } - - if (snapshot.data!) { - if (widget.containsFile) { - return GestureDetector( - onTap: () { - widget.onAddMoreFilesClick(DefaultAttachmentTypes.file); - }, - child: Container( - constraints: const BoxConstraints.expand(), - color: widget.streamChatTheme.colorTheme.inputBg, - alignment: Alignment.center, - child: Text( - context.translations.addMoreFilesLabel, - style: TextStyle( - color: widget.streamChatTheme.colorTheme.accentPrimary, - fontWeight: FontWeight.bold, - ), - ), - ), - ); - } - return MediaListView( - selectedIds: widget.selectedMedias, - onSelect: widget.onMediaSelected, - ); - } - - return InkWell( - onTap: () async { - PhotoManager.openSetting(); - }, - child: Container( - color: widget.streamChatTheme.colorTheme.inputBg, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: [ - SvgPicture.asset( - 'svgs/icon_picture_empty_state.svg', - package: 'stream_chat_flutter', - height: 140, - color: widget.streamChatTheme.colorTheme.disabled, - ), - Text( - context.translations.enablePhotoAndVideoAccessMessage, - style: widget.streamChatTheme.textTheme.body.copyWith( - color: widget.streamChatTheme.colorTheme.textLowEmphasis, - ), - textAlign: TextAlign.center, - ), - const SizedBox(height: 6), - Center( - child: Text( - context.translations.allowGalleryAccessMessage, - style: widget.streamChatTheme.textTheme.bodyBold.copyWith( - color: widget.streamChatTheme.colorTheme.accentPrimary, - ), - ), - ), - ], - ), - ), - ); - }, - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart b/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart index 6e7b5d9b..50f18e50 100644 --- a/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart +++ b/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart @@ -3,7 +3,6 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Button for showing visual component of slow mode. class CountdownButton extends StatelessWidget { - /// Constructor for creating [CountdownButton]. const CountdownButton({ Key? key, diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart new file mode 100644 index 00000000..904825fe --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart @@ -0,0 +1,428 @@ +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:photo_manager/photo_manager.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/media_list_view.dart'; +import 'package:stream_chat_flutter/src/video_service.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:video_compress/video_compress.dart'; + +typedef FilePickerCallback = void Function( + DefaultAttachmentTypes fileType, { + bool camera, +}); + +class StreamAttachmentPicker extends StatefulWidget { + final bool isOpen; + final double pickerSize; + final MessageInputController messageInputController; + final int attachmentLimit; + final AttachmentLimitExceedListener? onAttachmentLimitExceeded; + final ValueChanged? onChangeInputState; + final ValueChanged? onError; + final FilePickerCallback onFilePicked; + + /// Video quality to use when compressing the videos + final VideoQuality compressedVideoQuality; + + /// Frame rate to use when compressing the videos + final int compressedVideoFrameRate; + + /// Max attachment size in bytes + /// Defaults to 20 MB + /// do not set it if you're using our default CDN + final int maxAttachmentSize; + + const StreamAttachmentPicker({ + Key? key, + required this.messageInputController, + required this.onFilePicked, + this.isOpen = false, + this.pickerSize = 360.0, + this.attachmentLimit = 10, + this.onAttachmentLimitExceeded, + this.maxAttachmentSize = 20971520, + this.compressedVideoQuality = VideoQuality.DefaultQuality, + this.compressedVideoFrameRate = 30, + this.onChangeInputState, + this.onError, + }) : super(key: key); + + @override + State createState() => _StreamAttachmentPickerState(); +} + +class _StreamAttachmentPickerState extends State { + int _filePickerIndex = 0; + + @override + Widget build(BuildContext context) { + var _streamChatTheme = StreamChatTheme.of(context); + var messageInputController = widget.messageInputController; + + final _attachmentContainsFile = + messageInputController.attachments.any((it) => it.type == 'file'); + + final attachmentLimitCrossed = + messageInputController.attachments.length >= widget.attachmentLimit; + + Color _getIconColor(int index) { + final streamChatThemeData = _streamChatTheme; + switch (index) { + case 0: + return messageInputController.attachments.isEmpty + ? streamChatThemeData.colorTheme.accentPrimary + : (!_attachmentContainsFile + ? streamChatThemeData.colorTheme.accentPrimary + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2)); + case 1: + return _attachmentContainsFile + ? streamChatThemeData.colorTheme.accentPrimary + : (messageInputController.attachments.isEmpty + ? streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.5) + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2)); + case 2: + return attachmentLimitCrossed + ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) + : _attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2) + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.5); + case 3: + return attachmentLimitCrossed + ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) + : _attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2) + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.5); + default: + return Colors.black; + } + } + + return AnimatedContainer( + duration: + widget.isOpen ? const Duration(milliseconds: 300) : const Duration(), + curve: Curves.easeOut, + height: widget.isOpen ? widget.pickerSize : 0, + child: SingleChildScrollView( + child: SizedBox( + height: widget.pickerSize, + child: Material( + color: _streamChatTheme.colorTheme.inputBg, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + children: [ + IconButton( + icon: StreamSvgIcon.pictures( + color: _getIconColor(0), + ), + onPressed: _attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? null + : () { + setState(() { + _filePickerIndex = 0; + }); + }, + ), + IconButton( + iconSize: 32, + icon: StreamSvgIcon.files( + color: _getIconColor(1), + ), + onPressed: !_attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? null + : () { + widget.onFilePicked(DefaultAttachmentTypes.file); + }, + ), + IconButton( + icon: StreamSvgIcon.camera( + color: _getIconColor(2), + ), + onPressed: attachmentLimitCrossed || + (_attachmentContainsFile && + messageInputController.attachments.isNotEmpty) + ? null + : () { + widget.onFilePicked( + DefaultAttachmentTypes.image, + camera: true, + ); + }, + ), + IconButton( + padding: const EdgeInsets.all(0), + icon: StreamSvgIcon.record( + color: _getIconColor(3), + ), + onPressed: attachmentLimitCrossed || + (_attachmentContainsFile && + messageInputController.attachments.isNotEmpty) + ? null + : () { + widget.onFilePicked( + DefaultAttachmentTypes.video, + camera: true, + ); + }, + ), + ], + ), + DecoratedBox( + decoration: BoxDecoration( + color: _streamChatTheme.colorTheme.barsBg, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16), + ), + ), + child: Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: _streamChatTheme.colorTheme.inputBg, + borderRadius: BorderRadius.circular(4), + ), + ), + ), + ), + ), + if (widget.isOpen) + Expanded( + child: DecoratedBox( + decoration: BoxDecoration( + color: _streamChatTheme.colorTheme.barsBg, + borderRadius: BorderRadius.circular(8), + ), + child: _PickerWidget( + filePickerIndex: _filePickerIndex, + streamChatTheme: _streamChatTheme, + containsFile: _attachmentContainsFile, + selectedMedias: messageInputController.attachments + .map((e) => e.id) + .toList(), + onAddMoreFilesClick: widget.onFilePicked, + onMediaSelected: (media) { + if (messageInputController.attachments + .any((e) => e.id == media.id)) { + setState(() => messageInputController.attachments + .removeWhere((e) => e.id == media.id)); + } else { + _addAssetAttachment(media); + } + }, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } + + void _addAssetAttachment(AssetEntity medium) async { + final mediaFile = await medium.originFile.timeout( + const Duration(seconds: 5), + onTimeout: () => medium.originFile, + ); + + if (mediaFile == null) return; + + var file = AttachmentFile( + path: mediaFile.path, + size: await mediaFile.length(), + bytes: mediaFile.readAsBytesSync(), + ); + + if (file.size! > widget.maxAttachmentSize) { + if (medium.type == AssetType.video && file.path != null) { + final mediaInfo = await (VideoService.compressVideo( + file.path!, + frameRate: widget.compressedVideoFrameRate, + quality: widget.compressedVideoQuality, + ) as FutureOr); + + if (mediaInfo.filesize! > widget.maxAttachmentSize) { + widget.onError?.call( + context.translations.fileTooLargeAfterCompressionError( + widget.maxAttachmentSize / (1024 * 1024), + ), + ); + return; + } + file = AttachmentFile( + name: file.name, + size: mediaInfo.filesize, + bytes: await mediaInfo.file?.readAsBytes(), + path: mediaInfo.path, + ); + } else { + widget.onError?.call(context.translations.fileTooLargeError( + widget.maxAttachmentSize / (1024 * 1024), + )); + return; + } + } + + setState(() { + final attachment = Attachment( + id: medium.id, + file: file, + type: medium.type == AssetType.image ? 'image' : 'video', + ); + _addAttachments([attachment]); + }); + } + + /// Adds an attachment to the [messageInputController.attachments] map + void _addAttachments(Iterable attachments) { + final limit = widget.attachmentLimit; + final length = + widget.messageInputController.attachments.length + attachments.length; + if (length > limit) { + final onAttachmentLimitExceed = widget.onAttachmentLimitExceeded; + if (onAttachmentLimitExceed != null) { + return onAttachmentLimitExceed( + widget.attachmentLimit, + context.translations.attachmentLimitExceedError(limit), + ); + } + return widget.onError?.call( + context.translations.attachmentLimitExceedError(limit), + ); + } + for (final attachment in attachments) { + widget.messageInputController.addAttachment(attachment); + } + } +} + +class _PickerWidget extends StatefulWidget { + const _PickerWidget({ + Key? key, + required this.filePickerIndex, + required this.containsFile, + required this.selectedMedias, + required this.onAddMoreFilesClick, + required this.onMediaSelected, + required this.streamChatTheme, + }) : super(key: key); + + final int filePickerIndex; + final bool containsFile; + final List selectedMedias; + final void Function(DefaultAttachmentTypes) onAddMoreFilesClick; + final void Function(AssetEntity) onMediaSelected; + final StreamChatThemeData streamChatTheme; + + @override + _PickerWidgetState createState() => _PickerWidgetState(); +} + +class _PickerWidgetState extends State<_PickerWidget> { + Future? requestPermission; + + @override + void initState() { + super.initState(); + requestPermission = PhotoManager.requestPermission(); + } + + @override + Widget build(BuildContext context) { + if (widget.filePickerIndex != 0) { + return const Offstage(); + } + return FutureBuilder( + future: requestPermission, + builder: (context, snapshot) { + if (!snapshot.hasData) { + return const Offstage(); + } + + if (snapshot.data!) { + if (widget.containsFile) { + return GestureDetector( + onTap: () { + widget.onAddMoreFilesClick(DefaultAttachmentTypes.file); + }, + child: Container( + constraints: const BoxConstraints.expand(), + color: widget.streamChatTheme.colorTheme.inputBg, + alignment: Alignment.center, + child: Text( + context.translations.addMoreFilesLabel, + style: TextStyle( + color: widget.streamChatTheme.colorTheme.accentPrimary, + fontWeight: FontWeight.bold, + ), + ), + ), + ); + } + return MediaListView( + selectedIds: widget.selectedMedias, + onSelect: widget.onMediaSelected, + ); + } + + return InkWell( + onTap: () async { + PhotoManager.openSetting(); + }, + child: Container( + color: widget.streamChatTheme.colorTheme.inputBg, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + SvgPicture.asset( + 'svgs/icon_picture_empty_state.svg', + package: 'stream_chat_flutter', + height: 140, + color: widget.streamChatTheme.colorTheme.disabled, + ), + Text( + context.translations.enablePhotoAndVideoAccessMessage, + style: widget.streamChatTheme.textTheme.body.copyWith( + color: widget.streamChatTheme.colorTheme.textLowEmphasis, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 6), + Center( + child: Text( + context.translations.allowGalleryAccessMessage, + style: widget.streamChatTheme.textTheme.bodyBold.copyWith( + color: widget.streamChatTheme.colorTheme.accentPrimary, + ), + ), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index f58b7439..da0cd3db 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -29,6 +29,7 @@ export 'src/message_search_list_view.dart'; export 'src/message_text.dart'; export 'src/message_widget.dart'; export 'src/mip/countdown_button.dart'; +export 'src/mip/stream_attachment_picker.dart'; export 'src/mip/stream_message_send_button.dart'; export 'src/mip/stream_message_text_field.dart'; export 'src/option_list_tile.dart'; From 3465ae3401efab5ba26c38a952187a478b196838 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Wed, 3 Nov 2021 17:45:55 +0530 Subject: [PATCH 010/201] analysis --- packages/stream_chat_flutter/lib/src/message_input.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 67785cd2..f9dd8896 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -9,13 +9,11 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:image_picker/image_picker.dart'; -import 'package:photo_manager/photo_manager.dart'; import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/src/commands_overlay.dart'; import 'package:stream_chat_flutter/src/emoji/emoji.dart'; import 'package:stream_chat_flutter/src/emoji_overlay.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/media_list_view.dart'; import 'package:stream_chat_flutter/src/message_list_view.dart'; import 'package:stream_chat_flutter/src/multi_overlay.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; From 640777f87883e0a1efc12960b1beaea2be07a7a7 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 4 Nov 2021 13:44:49 +0530 Subject: [PATCH 011/201] fix: fixed attachment error --- packages/stream_chat_flutter/lib/src/message_input.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index f9dd8896..7741dade 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -1538,7 +1538,9 @@ class MessageInputState extends State { /// Sends the current message Future sendMessage() async { var text = messageInputController.text.trim(); - if (text.isEmpty && messageInputController.attachments.isEmpty) { + var attachments = messageInputController.attachments; + + if (text.isEmpty && attachments.isEmpty) { return; } @@ -1561,7 +1563,7 @@ class MessageInputState extends State { if (widget.editMessage != null) { message = widget.editMessage!.copyWith( text: text, - attachments: messageInputController.attachments, + attachments: attachments, mentionedUsers: messageInputController.mentionedUsers .where((u) => text.contains('@${u.name}')) .toList(), @@ -1570,7 +1572,7 @@ class MessageInputState extends State { message = (widget.initialMessage ?? Message()).copyWith( parentId: widget.parentMessage?.id, text: text, - attachments: messageInputController.attachments, + attachments: attachments, mentionedUsers: messageInputController.mentionedUsers .where((u) => text.contains('@${u.name}')) .toList(), From 267adfd5f0faeef42807dd1e8fa934feae5b8c5f Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 4 Nov 2021 13:55:46 +0530 Subject: [PATCH 012/201] fix: fixed slow mode --- packages/stream_chat_flutter/lib/src/message_input.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 7741dade..9b001791 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -1718,7 +1718,7 @@ class MessageInputState extends State { void didChangeDependencies() { _streamChatTheme = StreamChatTheme.of(context); _messageInputTheme = MessageInputTheme.of(context); - if (widget.editMessage == null) _startSlowMode(); + if (widget.editMessage == null && _timeOut <= 0) _startSlowMode(); if ((widget.editMessage != null || widget.initialMessage != null) && !_initialized) { From 1e01db318b0e887f358fc0bb51dfec0ea34339b0 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 4 Nov 2021 14:11:32 +0530 Subject: [PATCH 013/201] fix: fixed slow mode --- packages/stream_chat_flutter/lib/src/message_input.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 9b001791..6ee5c435 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -1538,7 +1538,7 @@ class MessageInputState extends State { /// Sends the current message Future sendMessage() async { var text = messageInputController.text.trim(); - var attachments = messageInputController.attachments; + final attachments = messageInputController.attachments; if (text.isEmpty && attachments.isEmpty) { return; From e973f98308c8ee0b86a3997b9b5ef61c82f413f3 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 4 Nov 2021 16:38:26 +0530 Subject: [PATCH 014/201] feat: Added allowed attachment types --- .../lib/src/mip/stream_attachment_picker.dart | 135 +++++++++++------- 1 file changed, 81 insertions(+), 54 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart index 904825fe..e39efc1c 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart @@ -36,6 +36,8 @@ class StreamAttachmentPicker extends StatefulWidget { /// do not set it if you're using our default CDN final int maxAttachmentSize; + final List allowedAttachmentTypes; + const StreamAttachmentPicker({ Key? key, required this.messageInputController, @@ -49,6 +51,11 @@ class StreamAttachmentPicker extends StatefulWidget { this.compressedVideoFrameRate = 30, this.onChangeInputState, this.onError, + this.allowedAttachmentTypes = const [ + DefaultAttachmentTypes.image, + DefaultAttachmentTypes.file, + DefaultAttachmentTypes.video, + ], }) : super(key: key); @override @@ -125,62 +132,73 @@ class _StreamAttachmentPickerState extends State { children: [ Row( children: [ - IconButton( - icon: StreamSvgIcon.pictures( - color: _getIconColor(0), + if (widget.allowedAttachmentTypes + .contains(DefaultAttachmentTypes.image)) + IconButton( + icon: StreamSvgIcon.pictures( + color: _getIconColor(0), + ), + onPressed: _attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? null + : () { + setState(() { + _filePickerIndex = 0; + }); + }, ), - onPressed: _attachmentContainsFile && - messageInputController.attachments.isNotEmpty - ? null - : () { - setState(() { - _filePickerIndex = 0; - }); - }, - ), - IconButton( - iconSize: 32, - icon: StreamSvgIcon.files( - color: _getIconColor(1), + if (widget.allowedAttachmentTypes + .contains(DefaultAttachmentTypes.file)) + IconButton( + iconSize: 32, + icon: StreamSvgIcon.files( + color: _getIconColor(1), + ), + onPressed: !_attachmentContainsFile && + messageInputController.attachments.isNotEmpty + ? null + : () { + widget + .onFilePicked(DefaultAttachmentTypes.file); + }, ), - onPressed: !_attachmentContainsFile && - messageInputController.attachments.isNotEmpty - ? null - : () { - widget.onFilePicked(DefaultAttachmentTypes.file); - }, - ), - IconButton( - icon: StreamSvgIcon.camera( - color: _getIconColor(2), + if (widget.allowedAttachmentTypes + .contains(DefaultAttachmentTypes.image)) + IconButton( + icon: StreamSvgIcon.camera( + color: _getIconColor(2), + ), + onPressed: attachmentLimitCrossed || + (_attachmentContainsFile && + messageInputController + .attachments.isNotEmpty) + ? null + : () { + widget.onFilePicked( + DefaultAttachmentTypes.image, + camera: true, + ); + }, ), - onPressed: attachmentLimitCrossed || - (_attachmentContainsFile && - messageInputController.attachments.isNotEmpty) - ? null - : () { - widget.onFilePicked( - DefaultAttachmentTypes.image, - camera: true, - ); - }, - ), - IconButton( - padding: const EdgeInsets.all(0), - icon: StreamSvgIcon.record( - color: _getIconColor(3), + if (widget.allowedAttachmentTypes + .contains(DefaultAttachmentTypes.video)) + IconButton( + padding: const EdgeInsets.all(0), + icon: StreamSvgIcon.record( + color: _getIconColor(3), + ), + onPressed: attachmentLimitCrossed || + (_attachmentContainsFile && + messageInputController + .attachments.isNotEmpty) + ? null + : () { + widget.onFilePicked( + DefaultAttachmentTypes.video, + camera: true, + ); + }, ), - onPressed: attachmentLimitCrossed || - (_attachmentContainsFile && - messageInputController.attachments.isNotEmpty) - ? null - : () { - widget.onFilePicked( - DefaultAttachmentTypes.video, - camera: true, - ); - }, - ), ], ), DecoratedBox( @@ -205,7 +223,11 @@ class _StreamAttachmentPickerState extends State { ), ), ), - if (widget.isOpen) + if (widget.isOpen && + (widget.allowedAttachmentTypes + .contains(DefaultAttachmentTypes.image) || + (widget.allowedAttachmentTypes + .contains(DefaultAttachmentTypes.file)))) Expanded( child: DecoratedBox( decoration: BoxDecoration( @@ -229,6 +251,7 @@ class _StreamAttachmentPickerState extends State { _addAssetAttachment(media); } }, + allowedAttachmentTypes: widget.allowedAttachmentTypes, ), ), ), @@ -326,6 +349,7 @@ class _PickerWidget extends StatefulWidget { required this.onAddMoreFilesClick, required this.onMediaSelected, required this.streamChatTheme, + required this.allowedAttachmentTypes, }) : super(key: key); final int filePickerIndex; @@ -334,6 +358,7 @@ class _PickerWidget extends StatefulWidget { final void Function(DefaultAttachmentTypes) onAddMoreFilesClick; final void Function(AssetEntity) onMediaSelected; final StreamChatThemeData streamChatTheme; + final List allowedAttachmentTypes; @override _PickerWidgetState createState() => _PickerWidgetState(); @@ -361,7 +386,9 @@ class _PickerWidgetState extends State<_PickerWidget> { } if (snapshot.data!) { - if (widget.containsFile) { + if (widget.containsFile || + !widget.allowedAttachmentTypes + .contains(DefaultAttachmentTypes.image)) { return GestureDetector( onTap: () { widget.onAddMoreFilesClick(DefaultAttachmentTypes.file); From e72cd812401f75bf5288023209f0c331ac1ca98c Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 4 Nov 2021 17:35:21 +0530 Subject: [PATCH 015/201] feat: Added ability to add custom attachment types --- .../lib/src/mip/stream_attachment_picker.dart | 102 +++++++++++++----- 1 file changed, 78 insertions(+), 24 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart index e39efc1c..ea7d54fb 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; -import 'package:image_picker/image_picker.dart'; import 'package:photo_manager/photo_manager.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/media_list_view.dart'; @@ -15,6 +14,11 @@ typedef FilePickerCallback = void Function( bool camera, }); +typedef CustomAttachmentIconBuilder = Widget Function( + BuildContext context, + bool active, +); + class StreamAttachmentPicker extends StatefulWidget { final bool isOpen; final double pickerSize; @@ -38,6 +42,8 @@ class StreamAttachmentPicker extends StatefulWidget { final List allowedAttachmentTypes; + final List customAttachmentTypes; + const StreamAttachmentPicker({ Key? key, required this.messageInputController, @@ -56,6 +62,7 @@ class StreamAttachmentPicker extends StatefulWidget { DefaultAttachmentTypes.file, DefaultAttachmentTypes.video, ], + this.customAttachmentTypes = const [], }) : super(key: key); @override @@ -70,9 +77,15 @@ class _StreamAttachmentPickerState extends State { var _streamChatTheme = StreamChatTheme.of(context); var messageInputController = widget.messageInputController; + final _attachmentContainsImage = + messageInputController.attachments.any((it) => it.type == 'image'); + final _attachmentContainsFile = messageInputController.attachments.any((it) => it.type == 'file'); + final _attachmentContainsVideo = + messageInputController.attachments.any((it) => it.type == 'video'); + final attachmentLimitCrossed = messageInputController.attachments.length >= widget.attachmentLimit; @@ -80,12 +93,13 @@ class _StreamAttachmentPickerState extends State { final streamChatThemeData = _streamChatTheme; switch (index) { case 0: - return messageInputController.attachments.isEmpty + return _filePickerIndex == 0 || _attachmentContainsImage ? streamChatThemeData.colorTheme.accentPrimary - : (!_attachmentContainsFile + : (_attachmentContainsImage ? streamChatThemeData.colorTheme.accentPrimary - : streamChatThemeData.colorTheme.textHighEmphasis - .withOpacity(0.2)); + : streamChatThemeData.colorTheme.textHighEmphasis.withOpacity( + messageInputController.attachments.isEmpty ? 0.5 : 0.2, + )); case 1: return _attachmentContainsFile ? streamChatThemeData.colorTheme.accentPrimary @@ -95,7 +109,8 @@ class _StreamAttachmentPickerState extends State { : streamChatThemeData.colorTheme.textHighEmphasis .withOpacity(0.2)); case 2: - return attachmentLimitCrossed + return widget.messageInputController.attachments.isNotEmpty && + (!_attachmentContainsImage || attachmentLimitCrossed) ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) : _attachmentContainsFile && messageInputController.attachments.isNotEmpty @@ -104,7 +119,8 @@ class _StreamAttachmentPickerState extends State { : streamChatThemeData.colorTheme.textHighEmphasis .withOpacity(0.5); case 3: - return attachmentLimitCrossed + return widget.messageInputController.attachments.isNotEmpty && + (!_attachmentContainsVideo || attachmentLimitCrossed) ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) : _attachmentContainsFile && messageInputController.attachments.isNotEmpty @@ -138,14 +154,15 @@ class _StreamAttachmentPickerState extends State { icon: StreamSvgIcon.pictures( color: _getIconColor(0), ), - onPressed: _attachmentContainsFile && - messageInputController.attachments.isNotEmpty - ? null - : () { - setState(() { - _filePickerIndex = 0; - }); - }, + onPressed: + messageInputController.attachments.isNotEmpty && + !_attachmentContainsImage + ? null + : () { + setState(() { + _filePickerIndex = 0; + }); + }, ), if (widget.allowedAttachmentTypes .contains(DefaultAttachmentTypes.file)) @@ -154,8 +171,9 @@ class _StreamAttachmentPickerState extends State { icon: StreamSvgIcon.files( color: _getIconColor(1), ), - onPressed: !_attachmentContainsFile && - messageInputController.attachments.isNotEmpty + onPressed: messageInputController + .attachments.isNotEmpty && + !_attachmentContainsFile ? null : () { widget @@ -169,9 +187,9 @@ class _StreamAttachmentPickerState extends State { color: _getIconColor(2), ), onPressed: attachmentLimitCrossed || - (_attachmentContainsFile && - messageInputController - .attachments.isNotEmpty) + (messageInputController + .attachments.isNotEmpty && + !_attachmentContainsVideo) ? null : () { widget.onFilePicked( @@ -188,9 +206,9 @@ class _StreamAttachmentPickerState extends State { color: _getIconColor(3), ), onPressed: attachmentLimitCrossed || - (_attachmentContainsFile && - messageInputController - .attachments.isNotEmpty) + (messageInputController + .attachments.isNotEmpty && + !_attachmentContainsVideo) ? null : () { widget.onFilePicked( @@ -199,6 +217,26 @@ class _StreamAttachmentPickerState extends State { ); }, ), + for (int i = 0; + i < widget.customAttachmentTypes.length; + i++) + IconButton( + onPressed: () { + if (messageInputController.attachments.isNotEmpty) { + if (!messageInputController.attachments.any((e) => + e.type == + widget.customAttachmentTypes[i].type)) { + return; + } + } + + setState(() { + _filePickerIndex = i + 1; + }); + }, + icon: widget.customAttachmentTypes[i] + .iconBuilder(context, _filePickerIndex == i + 1), + ), ], ), DecoratedBox( @@ -252,6 +290,7 @@ class _StreamAttachmentPickerState extends State { } }, allowedAttachmentTypes: widget.allowedAttachmentTypes, + customAttachmentTypes: widget.customAttachmentTypes, ), ), ), @@ -350,6 +389,7 @@ class _PickerWidget extends StatefulWidget { required this.onMediaSelected, required this.streamChatTheme, required this.allowedAttachmentTypes, + required this.customAttachmentTypes, }) : super(key: key); final int filePickerIndex; @@ -359,6 +399,7 @@ class _PickerWidget extends StatefulWidget { final void Function(AssetEntity) onMediaSelected; final StreamChatThemeData streamChatTheme; final List allowedAttachmentTypes; + final List customAttachmentTypes; @override _PickerWidgetState createState() => _PickerWidgetState(); @@ -376,7 +417,8 @@ class _PickerWidgetState extends State<_PickerWidget> { @override Widget build(BuildContext context) { if (widget.filePickerIndex != 0) { - return const Offstage(); + return widget.customAttachmentTypes[widget.filePickerIndex - 1] + .pickerBuilder(context); } return FutureBuilder( future: requestPermission, @@ -453,3 +495,15 @@ class _PickerWidgetState extends State<_PickerWidget> { ); } } + +class CustomAttachmentType { + String type; + CustomAttachmentIconBuilder iconBuilder; + WidgetBuilder pickerBuilder; + + CustomAttachmentType({ + required this.type, + required this.iconBuilder, + required this.pickerBuilder, + }); +} From 9f32eb89f85c646fc84b343373caed1728ed22c5 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 5 Nov 2021 16:31:26 +0530 Subject: [PATCH 016/201] feat: Added copyWith to stream_attachment_picker.dart --- .../lib/src/message_input.dart | 28 +++++++++---- .../lib/src/mip/stream_attachment_picker.dart | 42 +++++++++++++++++++ 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 6ee5c435..61ac3ac6 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -84,6 +84,13 @@ typedef MessageRelatedBuilder = Widget Function( MessageInputController messageInputController, ); +/// Widget builder for a custom attachment picker. +typedef AttachmentsPickerBuilder = Widget Function( + BuildContext context, + MessageInputController messageInputController, + StreamAttachmentPicker defaultPicker, +); + /// Location for actions on the [MessageInput] enum ActionsLocation { /// Align to left @@ -330,7 +337,7 @@ class MessageInput extends StatefulWidget { final bool mentionAllAppUsers; /// Builds bottom sheet when attachment picker is opened. - final MessageRelatedBuilder? attachmentsPickerBuilder; + final AttachmentsPickerBuilder? attachmentsPickerBuilder; /// Builder for creating send button final MessageRelatedBuilder? sendButtonBuilder; @@ -951,14 +958,7 @@ class MessageInputState extends State { } Widget _buildFilePickerSection() { - if (_openFilePickerSection && widget.attachmentsPickerBuilder != null) { - return widget.attachmentsPickerBuilder!( - context, - messageInputController, - ); - } - - return StreamAttachmentPicker( + final picker = StreamAttachmentPicker( messageInputController: messageInputController, onFilePicked: pickFile, isOpen: _openFilePickerSection, @@ -975,6 +975,16 @@ class MessageInputState extends State { }, onError: _showErrorAlert, ); + + if (_openFilePickerSection && widget.attachmentsPickerBuilder != null) { + return widget.attachmentsPickerBuilder!( + context, + messageInputController, + picker, + ); + } + + return picker; } Widget _buildMentionsOverlayEntry() { diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart index ea7d54fb..f075a09c 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart @@ -9,16 +9,19 @@ import 'package:stream_chat_flutter/src/video_service.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:video_compress/video_compress.dart'; +/// Callback for when a file has to be picked. typedef FilePickerCallback = void Function( DefaultAttachmentTypes fileType, { bool camera, }); +/// Callback for building an icon for a custom attachment type. typedef CustomAttachmentIconBuilder = Widget Function( BuildContext context, bool active, ); +/// class StreamAttachmentPicker extends StatefulWidget { final bool isOpen; final double pickerSize; @@ -65,6 +68,45 @@ class StreamAttachmentPicker extends StatefulWidget { this.customAttachmentTypes = const [], }) : super(key: key); + StreamAttachmentPicker copyWith({ + Key? key, + MessageInputController? messageInputController, + FilePickerCallback? onFilePicked, + bool? isOpen, + double? pickerSize, + int? attachmentLimit, + AttachmentLimitExceedListener? onAttachmentLimitExceeded, + int? maxAttachmentSize, + VideoQuality? compressedVideoQuality, + int? compressedVideoFrameRate, + ValueChanged? onChangeInputState, + ValueChanged? onError, + List? allowedAttachmentTypes, + List? customAttachmentTypes = const [], + }) => + StreamAttachmentPicker( + key: key ?? this.key, + messageInputController: + messageInputController ?? this.messageInputController, + onFilePicked: onFilePicked ?? this.onFilePicked, + isOpen: isOpen ?? this.isOpen, + pickerSize: pickerSize ?? this.pickerSize, + attachmentLimit: attachmentLimit ?? this.attachmentLimit, + onAttachmentLimitExceeded: + onAttachmentLimitExceeded ?? this.onAttachmentLimitExceeded, + maxAttachmentSize: maxAttachmentSize ?? this.maxAttachmentSize, + compressedVideoQuality: + compressedVideoQuality ?? this.compressedVideoQuality, + compressedVideoFrameRate: + compressedVideoFrameRate ?? this.compressedVideoFrameRate, + onChangeInputState: onChangeInputState ?? this.onChangeInputState, + onError: onError ?? this.onError, + allowedAttachmentTypes: + allowedAttachmentTypes ?? this.allowedAttachmentTypes, + customAttachmentTypes: + customAttachmentTypes ?? this.customAttachmentTypes, + ); + @override State createState() => _StreamAttachmentPickerState(); } From 11b5de6fd733e3640812cc95aefbe2fdad681f83 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Mon, 8 Nov 2021 21:29:48 +0530 Subject: [PATCH 017/201] added channel user capabilities --- .../stream_chat/lib/src/core/models/channel_model.dart | 9 +++++++++ .../stream_chat/lib/src/core/models/channel_model.g.dart | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/packages/stream_chat/lib/src/core/models/channel_model.dart b/packages/stream_chat/lib/src/core/models/channel_model.dart index ed7c2c2e..967fe827 100644 --- a/packages/stream_chat/lib/src/core/models/channel_model.dart +++ b/packages/stream_chat/lib/src/core/models/channel_model.dart @@ -13,6 +13,7 @@ class ChannelModel { String? id, String? type, String? cid, + this.ownCapabilities = const [], ChannelConfig? config, this.createdBy, this.frozen = false, @@ -51,6 +52,10 @@ class ChannelModel { @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final String cid; + /// List of user permissions on this channel + @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) + final List ownCapabilities; + /// The channel configuration data @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final ChannelConfig config; @@ -101,6 +106,7 @@ class ChannelModel { 'id', 'type', 'cid', + 'own_capabilities', 'config', 'created_by', 'frozen', @@ -127,6 +133,7 @@ class ChannelModel { String? id, String? type, String? cid, + List? ownCapabilities, ChannelConfig? config, User? createdBy, bool? frozen, @@ -143,6 +150,7 @@ class ChannelModel { id: id ?? this.id, type: type ?? this.type, cid: cid ?? this.cid, + ownCapabilities: ownCapabilities ?? this.ownCapabilities, config: config ?? this.config, createdBy: createdBy ?? this.createdBy, frozen: frozen ?? this.frozen, @@ -164,6 +172,7 @@ class ChannelModel { id: other.id, type: other.type, cid: other.cid, + ownCapabilities: other.ownCapabilities, config: other.config, createdBy: other.createdBy, frozen: other.frozen, diff --git a/packages/stream_chat/lib/src/core/models/channel_model.g.dart b/packages/stream_chat/lib/src/core/models/channel_model.g.dart index 94d9a81a..974ef383 100644 --- a/packages/stream_chat/lib/src/core/models/channel_model.g.dart +++ b/packages/stream_chat/lib/src/core/models/channel_model.g.dart @@ -10,6 +10,10 @@ ChannelModel _$ChannelModelFromJson(Map json) => ChannelModel( id: json['id'] as String?, type: json['type'] as String?, cid: json['cid'] as String?, + ownCapabilities: (json['own_capabilities'] as List?) + ?.map((e) => e as String) + .toList() ?? + const [], config: json['config'] == null ? null : ChannelConfig.fromJson(json['config'] as Map), @@ -48,6 +52,7 @@ Map _$ChannelModelToJson(ChannelModel instance) { } writeNotNull('cid', readonly(instance.cid)); + writeNotNull('own_capabilities', readonly(instance.ownCapabilities)); writeNotNull('config', readonly(instance.config)); writeNotNull('created_by', readonly(instance.createdBy)); val['frozen'] = instance.frozen; From c60524ef96f1a05f3895811c958ff7b2388560c7 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 9 Nov 2021 13:48:12 +0530 Subject: [PATCH 018/201] added permission types --- .../stream_chat/lib/src/permission_type.dart | 37 +++++++++++++++++++ packages/stream_chat/lib/stream_chat.dart | 1 + .../lib/src/message_list_view.dart | 12 +++--- 3 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 packages/stream_chat/lib/src/permission_type.dart diff --git a/packages/stream_chat/lib/src/permission_type.dart b/packages/stream_chat/lib/src/permission_type.dart new file mode 100644 index 00000000..2e6eef64 --- /dev/null +++ b/packages/stream_chat/lib/src/permission_type.dart @@ -0,0 +1,37 @@ +class PermissionType { + static const String sendMessage = "send-message"; + + static const String sendReaction = "send-reaction"; + + static const String sendLinks = "send-links"; + + static const String sendReply = "send-reply"; + + static const String freezeChannel = "freeze-channel"; + + static const String setChannelCooldown = "set-channel-cooldown"; + + static const String leaveChannel = "leave-channel"; + + static const String pinMessage = "pin-message"; + + static const String deleteAnyMessage = "delete-any-message"; + + static const String deleteOwnMessage = "delete-own-message"; + + static const String updateAnyMessage = "update-any-message"; + + static const String updateOwnMessage = "update-own-message"; + + static const String searchMessages = "search-messages"; + + static const String sendTypingEvents = "send-typing-events"; + + static const String uploadFile = "upload-file"; + + static const String deleteChannel = "delete-channel"; + + static const String updateChannel = "update-channel"; + + static const String updateChannelMembers = "update-channel-members"; +} diff --git a/packages/stream_chat/lib/stream_chat.dart b/packages/stream_chat/lib/stream_chat.dart index 571d78f5..d196b675 100644 --- a/packages/stream_chat/lib/stream_chat.dart +++ b/packages/stream_chat/lib/stream_chat.dart @@ -36,6 +36,7 @@ export './src/core/util/extension.dart'; export './src/db/chat_persistence_client.dart'; export './src/event_type.dart'; export './src/location.dart'; +export './src/permission_type.dart'; export './src/ws/connection_status.dart'; export 'src/client/channel.dart'; export 'src/client/client.dart'; diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 5424a1c2..12902030 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -164,7 +164,6 @@ class MessageListView extends StatefulWidget { this.messageFilter, this.onMessageTap, this.onSystemMessageTap, - this.pinPermissions = const [], this.showFloatingDateDivider = true, this.threadSeparatorBuilder, this.messageListController, @@ -276,9 +275,6 @@ class MessageListView extends StatefulWidget { /// Called when system message is tapped final OnMessageTap? onSystemMessageTap; - /// A List of user types that have permission to pin messages - final List pinPermissions; - /// Builder used to build the thread separator in case it's a thread view final WidgetBuilder? threadSeparatorBuilder; @@ -301,6 +297,7 @@ class _MessageListViewState extends State { int? _messageListLength; StreamChannelState? streamChannel; late StreamChatThemeData _streamTheme; + late List _userPermissions; int get _initialIndex { final initialScrollIndex = widget.initialScrollIndex; @@ -960,7 +957,7 @@ class _MessageListViewState extends State { FocusScope.of(context).unfocus(); }, showPinButton: currentUserMember != null && - widget.pinPermissions.contains(currentUserMember.role), + _userPermissions.contains(PermissionType.pinMessage), ); if (widget.parentMessageBuilder != null) { @@ -1159,7 +1156,7 @@ class _MessageListViewState extends State { FocusScope.of(context).unfocus(); }, showPinButton: currentUserMember != null && - widget.pinPermissions.contains(currentUserMember.role), + _userPermissions.contains(PermissionType.pinMessage), ); if (widget.messageBuilder != null) { @@ -1239,6 +1236,9 @@ class _MessageListViewState extends State { void didChangeDependencies() { final newStreamChannel = StreamChannel.of(context); _streamTheme = StreamChatTheme.of(context); + _userPermissions = + newStreamChannel.channel.state?.channelState.channel?.ownCapabilities ?? + []; if (newStreamChannel != streamChannel) { streamChannel = newStreamChannel; From c10a2be6ed55d22b1374694411cc02551eb3e970 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 9 Nov 2021 14:19:28 +0530 Subject: [PATCH 019/201] updated action modal --- .../lib/src/message_actions_modal.dart | 39 +++++++++---------- .../lib/src/message_widget.dart | 7 ---- .../test/src/message_action_modal_test.dart | 2 - 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index a67004af..ac42dd0c 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -18,9 +18,6 @@ class MessageActionsModal extends StatefulWidget { required this.message, required this.messageWidget, required this.messageTheme, - this.showReactions = true, - this.showDeleteMessage = true, - this.showEditMessage = true, this.onReplyTap, this.onThreadReplyTap, this.showCopyMessage = true, @@ -28,7 +25,6 @@ class MessageActionsModal extends StatefulWidget { this.showResendMessage = true, this.showThreadReplyMessage = true, this.showFlagButton = true, - this.showPinButton = true, this.editMessageInputBuilder, this.reverse = false, this.customActions = const [], @@ -53,21 +49,12 @@ class MessageActionsModal extends StatefulWidget { /// [MessageThemeData] for message final MessageThemeData messageTheme; - /// Flag for showing reactions - final bool showReactions; - /// Callback when copy is tapped final OnMessageTap? onCopyTap; - /// Callback when delete is tapped - final bool showDeleteMessage; - /// Flag for showing copy action final bool showCopyMessage; - /// Flag for showing edit action - final bool showEditMessage; - /// Flag for showing resend action final bool showResendMessage; @@ -80,9 +67,6 @@ class MessageActionsModal extends StatefulWidget { /// Flag for showing flag action final bool showFlagButton; - /// Flag for showing pin action - final bool showPinButton; - /// Flag for reversing message final bool reverse; @@ -95,6 +79,7 @@ class MessageActionsModal extends StatefulWidget { class _MessageActionsModalState extends State { bool _showActions = true; + late List _userPermissions; @override Widget build(BuildContext context) => _showMessageOptionsModal(); @@ -138,7 +123,7 @@ class _MessageActionsModalState extends State { ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: [ - if (widget.showReactions && + if (_userPermissions.contains(PermissionType.sendReaction) && (widget.message.status == MessageSendingStatus.sent)) Align( alignment: Alignment( @@ -185,11 +170,16 @@ class _MessageActionsModalState extends State { _buildThreadReplyButton(context), if (widget.showResendMessage) _buildResendMessage(context), - if (widget.showEditMessage) _buildEditMessage(context), + if (_userPermissions + .contains(PermissionType.updateOwnMessage)) + _buildEditMessage(context), if (widget.showCopyMessage) _buildCopyButton(context), if (widget.showFlagButton) _buildFlagButton(context), - if (widget.showPinButton) _buildPinButton(context), - if (widget.showDeleteMessage) + if (_userPermissions + .contains(PermissionType.pinMessage)) + _buildPinButton(context), + if (_userPermissions + .contains(PermissionType.deleteOwnMessage)) _buildDeleteButton(context), ...widget.customActions .map((action) => _buildCustomAction( @@ -650,4 +640,13 @@ class _MessageActionsModalState extends State { ), ); } + + @override + void didChangeDependencies() { + final newStreamChannel = StreamChannel.of(context); + _userPermissions = + newStreamChannel.channel.state?.channelState.channel?.ownCapabilities ?? + []; + super.didChangeDependencies(); + } } diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index f6ae52c6..ce6c550d 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -1104,7 +1104,6 @@ class _MessageWidgetState extends State Clipboard.setData(ClipboardData(text: message.text)), messageTheme: widget.messageTheme, reverse: widget.reverse, - showDeleteMessage: widget.showDeleteMessage || isDeleteFailed, message: widget.message, editMessageInputBuilder: widget.editMessageInputBuilder, onReplyTap: widget.onReplyTap, @@ -1114,11 +1113,6 @@ class _MessageWidgetState extends State showCopyMessage: widget.showCopyMessage && !isFailedState && widget.message.text?.trim().isNotEmpty == true, - showEditMessage: widget.showEditMessage && - !isDeleteFailed && - !widget.message.attachments - .any((element) => element.type == 'giphy'), - showReactions: widget.showReactions, showReplyMessage: widget.showReplyMessage && !isFailedState && widget.onReplyTap != null, @@ -1126,7 +1120,6 @@ class _MessageWidgetState extends State !isFailedState && widget.onThreadTap != null, showFlagButton: widget.showFlagButton, - showPinButton: widget.showPinButton, customActions: widget.customActions, ), ), diff --git a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart index 9210ac49..702e162c 100644 --- a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart @@ -78,9 +78,7 @@ void main() { client: client, child: SizedBox( child: MessageActionsModal( - showEditMessage: false, showCopyMessage: false, - showDeleteMessage: false, showReplyMessage: false, showThreadReplyMessage: false, message: Message( From 3460164b75629fdd88b254c5ca0eba24db89910e Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 9 Nov 2021 16:00:49 +0530 Subject: [PATCH 020/201] updated action modal --- .../lib/src/message_actions_modal.dart | 60 +++++++++++++++---- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index ac42dd0c..ae620f01 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -9,6 +9,7 @@ import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/src/utils.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Constructs a modal with actions for a message class MessageActionsModal extends StatefulWidget { @@ -18,13 +19,17 @@ class MessageActionsModal extends StatefulWidget { required this.message, required this.messageWidget, required this.messageTheme, + this.showReactions, + this.showDeleteMessage, + this.showEditMessage, this.onReplyTap, this.onThreadReplyTap, this.showCopyMessage = true, this.showReplyMessage = true, this.showResendMessage = true, - this.showThreadReplyMessage = true, + this.showThreadReplyMessage, this.showFlagButton = true, + this.showPinButton, this.editMessageInputBuilder, this.reverse = false, this.customActions = const [], @@ -49,12 +54,21 @@ class MessageActionsModal extends StatefulWidget { /// [MessageThemeData] for message final MessageThemeData messageTheme; + /// Flag for showing reactions + final bool? showReactions; + /// Callback when copy is tapped final OnMessageTap? onCopyTap; + /// Callback when delete is tapped + final bool? showDeleteMessage; + /// Flag for showing copy action final bool showCopyMessage; + /// Flag for showing edit action + final bool? showEditMessage; + /// Flag for showing resend action final bool showResendMessage; @@ -62,11 +76,14 @@ class MessageActionsModal extends StatefulWidget { final bool showReplyMessage; /// Flag for showing thread reply action - final bool showThreadReplyMessage; + final bool? showThreadReplyMessage; /// Flag for showing flag action final bool showFlagButton; + /// Flag for showing pin action + final bool? showPinButton; + /// Flag for reversing message final bool reverse; @@ -80,6 +97,7 @@ class MessageActionsModal extends StatefulWidget { class _MessageActionsModalState extends State { bool _showActions = true; late List _userPermissions; + late bool _isMyMessage; @override Widget build(BuildContext context) => _showMessageOptionsModal(); @@ -114,6 +132,23 @@ class _MessageActionsModalState extends State { final shiftFactor = numberOfReactions < 5 ? (5 - numberOfReactions) * 0.1 : 0.0; + final hasEditPermission = + _userPermissions.contains( + PermissionType.updateAnyMessage, + ) || + _userPermissions.contains(PermissionType.updateOwnMessage); + + final hasDeletePermission = + _userPermissions.contains( + PermissionType.deleteAnyMessage, + ) || + _userPermissions.contains(PermissionType.deleteOwnMessage); + + final hasReactionPermission = + _userPermissions.contains(PermissionType.sendReaction); + + print(widget.showReactions); + final child = Center( child: SingleChildScrollView( child: Padding( @@ -123,7 +158,7 @@ class _MessageActionsModalState extends State { ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: [ - if (_userPermissions.contains(PermissionType.sendReaction) && + if ((widget.showReactions ?? hasReactionPermission) && (widget.message.status == MessageSendingStatus.sent)) Align( alignment: Alignment( @@ -163,23 +198,26 @@ class _MessageActionsModalState extends State { if (widget.showReplyMessage && widget.message.status == MessageSendingStatus.sent) _buildReplyButton(context), - if (widget.showThreadReplyMessage && + if ((widget.showThreadReplyMessage ?? + _userPermissions + .contains(PermissionType.sendReply)) && (widget.message.status == MessageSendingStatus.sent) && widget.message.parentId == null) _buildThreadReplyButton(context), if (widget.showResendMessage) _buildResendMessage(context), - if (_userPermissions - .contains(PermissionType.updateOwnMessage)) + if (widget.showEditMessage ?? + _isMyMessage && hasEditPermission) _buildEditMessage(context), if (widget.showCopyMessage) _buildCopyButton(context), if (widget.showFlagButton) _buildFlagButton(context), - if (_userPermissions - .contains(PermissionType.pinMessage)) + if (widget.showPinButton ?? + _userPermissions + .contains(PermissionType.pinMessage)) _buildPinButton(context), - if (_userPermissions - .contains(PermissionType.deleteOwnMessage)) + if (widget.showDeleteMessage ?? + _isMyMessage && hasDeletePermission) _buildDeleteButton(context), ...widget.customActions .map((action) => _buildCustomAction( @@ -647,6 +685,8 @@ class _MessageActionsModalState extends State { _userPermissions = newStreamChannel.channel.state?.channelState.channel?.ownCapabilities ?? []; + _isMyMessage = widget.message.user!.id == + newStreamChannel.channel.client.state.currentUser!.id; super.didChangeDependencies(); } } From 13b0fa0a4c835900356290bcf32cd85cc661f286 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 9 Nov 2021 16:16:11 +0530 Subject: [PATCH 021/201] added docs and reactions modal --- .../stream_chat/lib/src/permission_type.dart | 80 ++++++++++++++----- .../lib/src/message_reactions_modal.dart | 16 +++- 2 files changed, 75 insertions(+), 21 deletions(-) diff --git a/packages/stream_chat/lib/src/permission_type.dart b/packages/stream_chat/lib/src/permission_type.dart index 2e6eef64..b0e2e73f 100644 --- a/packages/stream_chat/lib/src/permission_type.dart +++ b/packages/stream_chat/lib/src/permission_type.dart @@ -1,37 +1,81 @@ +/// Describes capabilities of a user vis-a-vis a channel class PermissionType { - static const String sendMessage = "send-message"; + /// Capability required to send a message in the channel + /// Channel is not frozen (or user has UseFrozenChannel permission) + /// and user has CreateMessage permission. + static const String sendMessage = 'send-message'; - static const String sendReaction = "send-reaction"; + /// Capability required to send a message + /// Reactions are enabled for the channel, channel is not frozen + /// (or user has UseFrozenChannel permission) and user has + /// CreateReaction permission + static const String sendReaction = 'send-reaction'; - static const String sendLinks = "send-links"; + /// Capability required to send links in a channel + /// send-message + user has AddLinks permission + static const String sendLinks = 'send-links'; - static const String sendReply = "send-reply"; + /// Capability required to send thread reply + /// send-message + channel has replies enabled + static const String sendReply = 'send-reply'; - static const String freezeChannel = "freeze-channel"; + /// Capability to freeze a channel + /// User has UpdateChannelFrozen permission. + /// The name implies freezing, + /// but unfreezing is also allowed when this capability is present + static const String freezeChannel = 'freeze-channel'; - static const String setChannelCooldown = "set-channel-cooldown"; + /// User has UpdateChannelCooldown permission. + /// Allows to enable/disable slow mode in the channel + static const String setChannelCooldown = 'set-channel-cooldown'; - static const String leaveChannel = "leave-channel"; + /// User has RemoveOwnChannelMembership or UpdateChannelMembers permission + static const String leaveChannel = 'leave-channel'; - static const String pinMessage = "pin-message"; + /// Capability required to pin a message in a channel + /// Corresponds to PinMessage permission + static const String pinMessage = 'pin-message'; - static const String deleteAnyMessage = "delete-any-message"; + /// User has ability to delete any message in the channel + /// User has DeleteMessage permission + /// which applies to any message in the channel + static const String deleteAnyMessage = 'delete-any-message'; - static const String deleteOwnMessage = "delete-own-message"; + /// User has ability to delete their own message in the channel + /// User has DeleteMessage permission which applies only to owned messages + static const String deleteOwnMessage = 'delete-own-message'; - static const String updateAnyMessage = "update-any-message"; + /// User has ability to update/edit any message in the channel + /// User has UpdateMessage permission which + /// applies to any message in the channel + static const String updateAnyMessage = 'update-any-message'; - static const String updateOwnMessage = "update-own-message"; + /// User has ability to update/edit their own message in the channel + /// User has UpdateMessage permission which applies only to owned messages + static const String updateOwnMessage = 'update-own-message'; - static const String searchMessages = "search-messages"; + /// User can search for message in a channel + /// Search feature is enabled (it will also have + /// permission check in the future) + static const String searchMessages = 'search-messages'; - static const String sendTypingEvents = "send-typing-events"; + /// Capability required to send typing events in a channel + /// (Typing events are enabled) + static const String sendTypingEvents = 'send-typing-events'; - static const String uploadFile = "upload-file"; + /// Capability required to upload a file in a channel + /// Uploads are enabled and user has UploadAttachment + static const String uploadFile = 'upload-file'; - static const String deleteChannel = "delete-channel"; + /// Capability required to delete channel + /// User has DeleteChannel permission + static const String deleteChannel = 'delete-channel'; - static const String updateChannel = "update-channel"; + /// Capability required update/edit channel info + /// User has UpdateChannel permission + static const String updateChannel = 'update-channel'; - static const String updateChannelMembers = "update-channel-members"; + /// Capability required to update/edit channel members + /// Channel is not distinct and user has UpdateChannelMembers permission + static const String updateChannelMembers = 'update-channel-members'; } diff --git a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart index 6a73c439..4b85412c 100644 --- a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart @@ -18,7 +18,7 @@ class MessageReactionsModal extends StatelessWidget { required this.message, required this.messageWidget, required this.messageTheme, - this.showReactions = true, + this.showReactions, this.reverse = false, this.onUserAvatarTap, }) : super(key: key); @@ -36,7 +36,7 @@ class MessageReactionsModal extends StatelessWidget { final bool reverse; /// Flag to show reactions on message - final bool showReactions; + final bool? showReactions; /// Callback when user avatar is tapped final void Function(User)? onUserAvatarTap; @@ -45,6 +45,16 @@ class MessageReactionsModal extends StatelessWidget { Widget build(BuildContext context) { final size = MediaQuery.of(context).size; final user = StreamChat.of(context).currentUser; + final _userPermissions = StreamChannel.of(context) + .channel + .state + ?.channelState + .channel + ?.ownCapabilities ?? + []; + + final hasReactionPermission = + _userPermissions.contains(PermissionType.sendReaction); final roughMaxSize = size.width * 2 / 3; var messageTextLength = message.text!.length; @@ -76,7 +86,7 @@ class MessageReactionsModal extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - if (showReactions && + if ((showReactions ?? hasReactionPermission) && (message.status == MessageSendingStatus.sent)) Align( alignment: Alignment( From c9f848a6934cb3643f6d5e6b0eaf7843f2b62777 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 9 Nov 2021 16:20:51 +0530 Subject: [PATCH 022/201] added changelog --- packages/stream_chat/CHANGELOG.md | 6 ++++++ packages/stream_chat_flutter/CHANGELOG.md | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index 4b409536..386f1937 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,3 +1,9 @@ +## Upcoming + +✅ Added + +- `ChannelModel` now supplies individual user capabilities. + ## 3.2.0 🐞 Fixed diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 00f8412b..0b7e3c15 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,9 @@ +## Upcoming + +🛑️ Breaking Changes from `3.2.0` + +- `pinPermissions` is no longer needed in `MessageListView`. + ## 3.2.0 - Updated Dart SDK constraints to `>=2.14.0 <3.0.0` From 8a1aa66a46f0aca55c15d56426a19f6dc5f356ea Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 9 Nov 2021 16:24:42 +0530 Subject: [PATCH 023/201] fmt --- .../stream_chat_flutter/lib/src/message_actions_modal.dart | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index ae620f01..3bcb20cd 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -132,14 +132,12 @@ class _MessageActionsModalState extends State { final shiftFactor = numberOfReactions < 5 ? (5 - numberOfReactions) * 0.1 : 0.0; - final hasEditPermission = - _userPermissions.contains( + final hasEditPermission = _userPermissions.contains( PermissionType.updateAnyMessage, ) || _userPermissions.contains(PermissionType.updateOwnMessage); - final hasDeletePermission = - _userPermissions.contains( + final hasDeletePermission = _userPermissions.contains( PermissionType.deleteAnyMessage, ) || _userPermissions.contains(PermissionType.deleteOwnMessage); From 616881d141922a320db23dbabab9b3bc9e9161d5 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 9 Nov 2021 16:26:00 +0530 Subject: [PATCH 024/201] always remember to remove your print statements that you use instead of using the actual debugger --- packages/stream_chat_flutter/lib/src/message_actions_modal.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index 3bcb20cd..61bda279 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -145,8 +145,6 @@ class _MessageActionsModalState extends State { final hasReactionPermission = _userPermissions.contains(PermissionType.sendReaction); - print(widget.showReactions); - final child = Center( child: SingleChildScrollView( child: Padding( From 0b0ff753d49f8ff60af81eaa2ca9c1281892b1ce Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 1 Dec 2021 10:52:45 +0100 Subject: [PATCH 025/201] refactor(ui): improve message input controller --- .../lib/src/core/models/message.dart | 29 +- .../example/lib/tutorial_part_4.dart | 4 +- .../example/lib/tutorial_part_6.dart | 4 +- .../stream_chat_flutter/example/pubspec.yaml | 9 +- .../lib/src/localization/translations.dart | 2 +- .../lib/src/message_actions_modal.dart | 4 +- .../countdown_button.dart | 0 .../{ => message_input}/message_input.dart | 302 +++++++----------- .../stream_attachment_picker.dart | 4 +- .../stream_message_send_button.dart | 6 +- .../stream_message_text_field.dart | 2 + .../lib/src/stream_chat_theme.dart | 2 +- .../lib/stream_chat_flutter.dart | 10 +- .../lib/src/message_input_controller.dart | 104 ++++-- 14 files changed, 241 insertions(+), 241 deletions(-) rename packages/stream_chat_flutter/lib/src/{mip => message_input}/countdown_button.dart (100%) rename packages/stream_chat_flutter/lib/src/{ => message_input}/message_input.dart (87%) rename packages/stream_chat_flutter/lib/src/{mip => message_input}/stream_attachment_picker.dart (99%) rename packages/stream_chat_flutter/lib/src/{mip => message_input}/stream_message_send_button.dart (92%) rename packages/stream_chat_flutter/lib/src/{mip => message_input}/stream_message_text_field.dart (99%) diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index 10ff713e..85bf8a96 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -58,7 +58,7 @@ class Message extends Equatable { this.ownReactions, this.parentId, this.quotedMessage, - this.quotedMessageId, + String? quotedMessageId, this.replyCount = 0, this.threadParticipants, this.showInChannel, @@ -72,16 +72,19 @@ class Message extends Equatable { this.pinnedBy, this.extraData = const {}, this.deletedAt, - this.status = MessageSendingStatus.sent, + this.status = MessageSendingStatus.sending, this.i18n, }) : id = id ?? const Uuid().v4(), pinExpires = pinExpires?.toUtc(), - createdAt = createdAt ?? DateTime.now(), - updatedAt = updatedAt ?? DateTime.now(); + _createdAt = createdAt, + _updatedAt = updatedAt, + _quotedMessageId = quotedMessageId; /// Create a new instance from a json factory Message.fromJson(Map json) => _$MessageFromJson( Serializer.moveToExtraDataFromRoot(json, topLevelFields), + ).copyWith( + status: MessageSendingStatus.sent, ); /// The message ID. This is either created by Stream or set client side when @@ -134,8 +137,10 @@ class Message extends Equatable { @JsonKey(toJson: Serializer.readOnly) final Message? quotedMessage; + final String? _quotedMessageId; + /// The ID of the quoted message, if the message is a quoted reply. - final String? quotedMessageId; + String? get quotedMessageId => _quotedMessageId ?? quotedMessage?.id; /// Reserved field indicating the number of replies for this message. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) @@ -162,13 +167,17 @@ class Message extends Equatable { @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final String? command; + final DateTime? _createdAt; + /// Reserved field indicating when the message was created. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - final DateTime createdAt; + DateTime get createdAt => _createdAt ?? DateTime.now(); + + final DateTime? _updatedAt; /// Reserved field indicating when the message was updated last time. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - final DateTime updatedAt; + DateTime get updatedAt => _updatedAt ?? DateTime.now(); /// User who sent the message @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) @@ -301,17 +310,17 @@ class Message extends Equatable { ownReactions: ownReactions ?? this.ownReactions, parentId: parentId ?? this.parentId, quotedMessage: quotedMessage ?? this.quotedMessage, - quotedMessageId: quotedMessageId ?? this.quotedMessageId, + quotedMessageId: quotedMessageId ?? _quotedMessageId, replyCount: replyCount ?? this.replyCount, threadParticipants: threadParticipants ?? this.threadParticipants, showInChannel: showInChannel ?? this.showInChannel, command: command ?? this.command, - createdAt: createdAt ?? this.createdAt, + createdAt: createdAt ?? _createdAt, silent: silent ?? this.silent, extraData: extraData ?? this.extraData, user: user ?? this.user, shadowed: shadowed ?? this.shadowed, - updatedAt: updatedAt ?? this.updatedAt, + updatedAt: updatedAt ?? _updatedAt, deletedAt: deletedAt ?? this.deletedAt, status: status ?? this.status, pinned: pinned ?? this.pinned, diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart index 5a05e4f9..ea9afa2f 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart @@ -126,7 +126,9 @@ class ThreadPage extends StatelessWidget { ), ), MessageInput( - parentMessage: parent, + messageInputController: MessageInputController( + message: Message(parentId: parent!.id), + ), ), ], ), diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart index 19d5d1ae..2555e007 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart @@ -166,7 +166,9 @@ class ThreadPage extends StatelessWidget { ), ), MessageInput( - parentMessage: parent, + messageInputController: MessageInputController( + message: Message(parentId: parent!.id), + ), ), ], ), diff --git a/packages/stream_chat_flutter/example/pubspec.yaml b/packages/stream_chat_flutter/example/pubspec.yaml index 9977c198..bd785a29 100644 --- a/packages/stream_chat_flutter/example/pubspec.yaml +++ b/packages/stream_chat_flutter/example/pubspec.yaml @@ -27,9 +27,12 @@ dependencies: cupertino_icons: ^1.0.3 flutter: sdk: flutter - stream_chat_flutter: ^2.2.1 - stream_chat_localizations: ^1.1.0 - stream_chat_persistence: ^2.2.0 + stream_chat_flutter: + path: ../ + stream_chat_localizations: + path: ../../stream_chat_localizations + stream_chat_persistence: + path: ../../stream_chat_persistence dev_dependencies: flutter_test: diff --git a/packages/stream_chat_flutter/lib/src/localization/translations.dart b/packages/stream_chat_flutter/lib/src/localization/translations.dart index 8aa8d071..8039ac47 100644 --- a/packages/stream_chat_flutter/lib/src/localization/translations.dart +++ b/packages/stream_chat_flutter/lib/src/localization/translations.dart @@ -1,6 +1,6 @@ import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/connection_status_builder.dart'; -import 'package:stream_chat_flutter/src/message_input.dart'; +import 'package:stream_chat_flutter/src/message_input/message_input.dart'; import 'package:stream_chat_flutter/src/message_list_view.dart'; import 'package:stream_chat_flutter/src/message_search_list_view.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart' diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index a67004af..e85e7cd8 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -610,7 +610,9 @@ class _MessageActionsModalState extends State { widget.editMessageInputBuilder!(context, widget.message) else MessageInput( - editMessage: widget.message, + messageInputController: MessageInputController( + message: widget.message, + ), preMessageSending: (m) { FocusScope.of(context).unfocus(); Navigator.pop(context); diff --git a/packages/stream_chat_flutter/lib/src/mip/countdown_button.dart b/packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/mip/countdown_button.dart rename to packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart similarity index 87% rename from packages/stream_chat_flutter/lib/src/message_input.dart rename to packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 2e035df0..aa18fce5 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -184,12 +184,9 @@ class MessageInput extends StatefulWidget { Key? key, this.onMessageSent, this.preMessageSending, - this.parentMessage, - this.editMessage, this.maxHeight = 150, this.keyboardType = TextInputType.multiline, this.disableAttachments = false, - this.initialMessage, this.messageInputController, this.actions = const [], this.actionsLocation = ActionsLocation.left, @@ -219,18 +216,11 @@ class MessageInput extends StatefulWidget { this.attachmentsPickerBuilder, this.sendButtonBuilder, this.shouldKeepFocusAfterMessage, - }) : assert( - initialMessage == null || editMessage == null, - "Can't provide both `initialMessage` and `editMessage`", - ), - super(key: key); + }) : super(key: key); /// List of options for showing overlays final List customOverlays; - /// Message to edit - final Message? editMessage; - /// Video quality to use when compressing the videos final VideoQuality compressedVideoQuality; @@ -242,9 +232,6 @@ class MessageInput extends StatefulWidget { /// do not set it if you're using our default CDN final int maxAttachmentSize; - /// Message to start with - final Message? initialMessage; - /// Function called after sending the message final void Function(Message)? onMessageSent; @@ -252,9 +239,6 @@ class MessageInput extends StatefulWidget { /// Use this to transform the message final FutureOr Function(Message)? preMessageSending; - /// Parent message in case of a thread - final Message? parentMessage; - /// Maximum Height for the TextField to grow before it starts scrolling final double maxHeight; @@ -367,11 +351,10 @@ class MessageInputState extends State { final _imagePicker = ImagePicker(); late final _focusNode = widget.focusNode ?? FocusNode(); bool _inputEnabled = true; - bool _commandEnabled = false; + bool get _commandEnabled => messageInputController.value.command != null; bool _showCommandsOverlay = false; bool _showMentionsOverlay = false; - Command? _chosenCommand; bool _actionsShrunk = false; bool _openFilePickerSection = false; @@ -382,16 +365,17 @@ class MessageInputState extends State { late StreamChatThemeData _streamChatTheme; late MessageInputThemeData _messageInputTheme; - bool get _hasQuotedMessage => widget.quotedMessage != null; + bool get _hasQuotedMessage => + messageInputController.value.quotedMessage != null; bool get _messageIsPresent => messageInputController.text.trim().isNotEmpty; + bool get _isEditing => + messageInputController.value.status != MessageSendingStatus.sending; + @override void initState() { super.initState(); - if (widget.editMessage != null || widget.initialMessage != null) { - _parseExistingMessage(widget.editMessage ?? widget.initialMessage!); - } messageInputController.textEditingController .addListener(_onChangedDebounced); _focusNode.addListener(_focusNodeListener); @@ -437,70 +421,74 @@ class MessageInputState extends State { Widget build(BuildContext context) { Widget child = ValueListenableBuilder( valueListenable: messageInputController, - builder: (context, value, wid) => DecoratedBox( - decoration: BoxDecoration( - color: _messageInputTheme.inputBackgroundColor, - ), - child: SafeArea( - child: GestureDetector( - onPanUpdate: (details) { - if (details.delta.dy > 0) { - _focusNode.unfocus(); - if (_openFilePickerSection) { - setState(() { - _openFilePickerSection = false; - }); + builder: (context, value, wid) { + print('VALUE ${value.text}'); + return DecoratedBox( + decoration: BoxDecoration( + color: _messageInputTheme.inputBackgroundColor, + ), + child: SafeArea( + child: GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy > 0) { + _focusNode.unfocus(); + if (_openFilePickerSection) { + setState(() { + _openFilePickerSection = false; + }); + } } - } - }, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (_hasQuotedMessage) - Padding( - padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: StreamSvgIcon.reply( - color: _streamChatTheme.colorTheme.disabled, + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (_hasQuotedMessage) + Padding( + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon.reply( + color: _streamChatTheme.colorTheme.disabled, + ), ), - ), - Text( - context.translations.replyToMessageLabel, - style: const TextStyle(fontWeight: FontWeight.bold), - ), - IconButton( - visualDensity: VisualDensity.compact, - icon: StreamSvgIcon.closeSmall(), - onPressed: widget.onQuotedMessageCleared, - ), - ], + Text( + context.translations.replyToMessageLabel, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: widget.onQuotedMessageCleared, + ), + ], + ), ), - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 8), - child: _buildTextField(context), - ), - if (widget.parentMessage != null && !widget.hideSendAsDm) Padding( - padding: const EdgeInsets.only( - right: 12, - left: 12, - bottom: 12, - ), - child: _buildDmCheckbox(), + padding: const EdgeInsets.symmetric(vertical: 8), + child: _buildTextField(context), ), - _buildFilePickerSection(), - ], + if (messageInputController.value.parentId != null && + !widget.hideSendAsDm) + Padding( + padding: const EdgeInsets.only( + right: 12, + left: 12, + bottom: 12, + ), + child: _buildDmCheckbox(), + ), + _buildFilePickerSection(), + ], + ), ), ), - ), - ), + ); + }, ); - if (widget.editMessage == null) { + if (_isEditing) { child = Material( elevation: 8, child: child, @@ -575,10 +563,8 @@ class MessageInputState extends State { : _streamChatTheme.colorTheme.barsBg, child: InkWell( onTap: () { - setState(() { - messageInputController.showInChannel = - !messageInputController.showInChannel; - }); + messageInputController.showInChannel = + !messageInputController.showInChannel; }, child: AnimatedCrossFade( duration: const Duration(milliseconds: 300), @@ -621,7 +607,7 @@ class MessageInputState extends State { onSendMessage: sendMessage, timeOut: _timeOut, isIdle: !_messageIsPresent && messageInputController.attachments.isEmpty, - isEditEnabled: widget.editMessage != null, + isEditEnabled: _isEditing, idleSendButton: widget.idleSendButton, activeSendButton: widget.activeSendButton, ); @@ -668,7 +654,7 @@ class MessageInputState extends State { if (!widget.disableAttachments) _buildAttachmentButton(context), if (widget.showCommandsButton && - widget.editMessage == null && + !_isEditing && channel.state != null && channel.config?.commands.isNotEmpty == true) _buildCommandButton(context), @@ -791,7 +777,7 @@ class MessageInputState extends State { size: 16, ), Text( - _chosenCommand?.name.toUpperCase() ?? '', + messageInputController.value.command!.toUpperCase(), style: _streamChatTheme.textTheme.footnoteBold.copyWith( color: Colors.white, @@ -825,9 +811,7 @@ class MessageInputState extends State { height: 24, width: 24, ), - onPressed: () { - setState(() => _commandEnabled = false); - }, + onPressed: messageInputController.clear, ), ), if (!_commandEnabled && @@ -848,8 +832,10 @@ class MessageInputState extends State { final channel = StreamChannel.of(context).channel; if (value.isNotEmpty) { - // ignore: no-empty-block - channel.keyStroke(widget.parentMessage?.id).catchError((e) {}); + channel + .keyStroke(messageInputController.value.parentId) + // ignore: no-empty-block + .catchError((e) {}); } var actionsLength = widget.actions.length; @@ -869,7 +855,7 @@ class MessageInputState extends State { ); String _getHint(BuildContext context) { - if (_commandEnabled && _chosenCommand!.name == 'giphy') { + if (_commandEnabled && messageInputController.value.command == 'giphy') { return context.translations.searchGifLabel; } if (messageInputController.attachments.isNotEmpty) { @@ -1034,15 +1020,11 @@ class MessageInputState extends State { splits[splits.length - 1] = user.name; final rejoin = splits.join('@'); - messageInputController.textEditingController.value = TextEditingValue( - text: rejoin + - messageInputController.text.substring( - messageInputController.selectionStart, - ), - selection: TextSelection.collapsed( - offset: rejoin.length, - ), - ); + messageInputController.text = rejoin + + messageInputController.text.substring( + messageInputController.selectionStart, + ); + _onChangedDebounced.cancel(); setState(() => _showMentionsOverlay = false); }, @@ -1077,22 +1059,17 @@ class MessageInputState extends State { void _chooseEmoji(List splits, Emoji emoji) { final rejoin = splits.sublist(0, splits.length - 1).join(':') + emoji.char!; - messageInputController.textEditingController.value = TextEditingValue( - text: rejoin + - messageInputController.text.substring( - messageInputController.selectionStart, - ), - selection: TextSelection.collapsed( - offset: rejoin.length, - ), - ); + messageInputController.text = rejoin + + messageInputController.text.substring( + messageInputController.selectionStart, + ); } void _setCommand(Command c) { - messageInputController.clear(); + messageInputController + ..clear() + ..command = c; setState(() { - _chosenCommand = c; - _commandEnabled = true; _showCommandsOverlay = false; }); } @@ -1133,9 +1110,7 @@ class MessageInputState extends State { (e) => ClipRRect( borderRadius: BorderRadius.circular(10), child: FileAttachment( - message: Message( - status: MessageSendingStatus.sending, - ), // dummy message + message: Message(), // dummy message attachment: e, size: Size( MediaQuery.of(context).size.width * 0.65, @@ -1202,9 +1177,11 @@ class MessageInputState extends State { focusElevation: 0, hoverElevation: 0, onPressed: () { - setState( - () => messageInputController.attachments - .removeWhere((e) => e.id == attachment.id), + messageInputController.value = + messageInputController.value.copyWith( + attachments: messageInputController.attachments + .where((it) => it.id != attachment.id) + .toList(), ); }, fillColor: @@ -1412,7 +1389,7 @@ class MessageInputState extends State { /// /// Note: Only meant to be used from outside the state. void addAttachment(Attachment attachment) { - setState(() => _addAttachments([attachment])); + _addAttachments([attachment]); } /// Adds an attachment to the [messageInputController.attachments] map @@ -1539,23 +1516,20 @@ class MessageInputState extends State { } } - setState(() { - _addAttachments([ - attachment.copyWith( - file: file, - extraData: {...attachment.extraData} - ..update('file_size', ((_) => file!.size!)), - ), - ]); - }); + _addAttachments([ + attachment.copyWith( + file: file, + extraData: {...attachment.extraData} + ..update('file_size', ((_) => file!.size!)), + ), + ]); } /// Sends the current message Future sendMessage() async { - var text = messageInputController.text.trim(); - final attachments = messageInputController.attachments; + var message = messageInputController.value; - if (text.isEmpty && attachments.isEmpty) { + if (messageInputController.isValid) { return; } @@ -1563,48 +1537,9 @@ class MessageInputState extends State { shouldKeepFocus ??= !_commandEnabled; - if (_commandEnabled) { - text = '${'/${_chosenCommand!.name} '}$text'; - } - - messageInputController - ..text = '' - ..clearAttachments(); + messageInputController.reset(); widget.onQuotedMessageCleared?.call(); - setState(() { - _commandEnabled = false; - }); - - Message message; - if (widget.editMessage != null) { - message = widget.editMessage!.copyWith( - text: text, - attachments: attachments, - mentionedUsers: messageInputController.mentionedUsers - .where((u) => text.contains('@${u.name}')) - .toList(), - ); - } else { - message = (widget.initialMessage ?? Message()).copyWith( - parentId: widget.parentMessage?.id, - text: text, - attachments: attachments, - mentionedUsers: messageInputController.mentionedUsers - .where((u) => text.contains('@${u.name}')) - .toList(), - showInChannel: widget.parentMessage != null - ? messageInputController.showInChannel - : null, - ); - } - - if (widget.quotedMessage != null) { - message = message.copyWith( - quotedMessageId: widget.quotedMessage!.id, - ); - } - if (widget.preMessageSending != null) { message = await widget.preMessageSending!(message); } @@ -1615,13 +1550,9 @@ class MessageInputState extends State { await streamChannel.reloadChannel(); } - messageInputController.clearMentionedUsers(); - try { Future sendingFuture; - if (widget.editMessage == null || - widget.editMessage!.status == MessageSendingStatus.failed || - widget.editMessage!.status == MessageSendingStatus.sending) { + if (!_isEditing) { sendingFuture = channel.sendMessage(message); } else { sendingFuture = channel.updateMessage(message); @@ -1635,7 +1566,7 @@ class MessageInputState extends State { final resp = await sendingFuture; if (resp.message?.type == 'error') { - _parseExistingMessage(message); + messageInputController.value = message; } _startSlowMode(); widget.onMessageSent?.call(resp.message); @@ -1714,12 +1645,6 @@ class MessageInputState extends State { ); } - void _parseExistingMessage(Message message) { - final messageText = message.text; - if (messageText != null) messageInputController.text = messageText; - _addAttachments(message.attachments); - } - @override void dispose() { messageInputController.textEditingController @@ -1731,19 +1656,12 @@ class MessageInputState extends State { super.dispose(); } - bool _initialized = false; - @override void didChangeDependencies() { _streamChatTheme = StreamChatTheme.of(context); _messageInputTheme = MessageInputTheme.of(context); - if (widget.editMessage == null && _timeOut <= 0) _startSlowMode(); + if (!_isEditing && _timeOut <= 0) _startSlowMode(); - if ((widget.editMessage != null || widget.initialMessage != null) && - !_initialized) { - FocusScope.of(context).requestFocus(_focusNode); - _initialized = true; - } super.didChangeDependencies(); } } diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart similarity index 99% rename from packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart rename to packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index f075a09c..066ed780 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -116,8 +116,8 @@ class _StreamAttachmentPickerState extends State { @override Widget build(BuildContext context) { - var _streamChatTheme = StreamChatTheme.of(context); - var messageInputController = widget.messageInputController; + final _streamChatTheme = StreamChatTheme.of(context); + final messageInputController = widget.messageInputController; final _attachmentContainsImage = messageInputController.attachments.any((it) => it.type == 'image'); diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart similarity index 92% rename from packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart rename to packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart index 5443fb18..ec03a58c 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_message_send_button.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart @@ -23,7 +23,7 @@ class StreamMessageSendButton extends StatelessWidget { @override Widget build(BuildContext context) { - var _streamChatTheme = StreamChatTheme.of(context); + final _streamChatTheme = StreamChatTheme.of(context); late Widget sendButton; if (timeOut > 0) { @@ -46,7 +46,7 @@ class StreamMessageSendButton extends StatelessWidget { } Widget _buildIdleSendButton(BuildContext context) { - var _messageInputTheme = MessageInputTheme.of(context); + final _messageInputTheme = MessageInputTheme.of(context); return Padding( padding: const EdgeInsets.all(8), @@ -58,7 +58,7 @@ class StreamMessageSendButton extends StatelessWidget { } Widget _buildSendButton(BuildContext context) { - var _messageInputTheme = MessageInputTheme.of(context); + final _messageInputTheme = MessageInputTheme.of(context); return Padding( padding: const EdgeInsets.all(8), diff --git a/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart similarity index 99% rename from packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart rename to packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart index 43acce31..37b4f683 100644 --- a/packages/stream_chat_flutter/lib/src/mip/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart @@ -1,3 +1,5 @@ +// ignore_for_file: prefer-trailing-comma, cascade_invocations + import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle; import 'package:flutter/cupertino.dart'; diff --git a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart index 23d913cb..f3818b2e 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart @@ -2,7 +2,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' hide TextTheme; import 'package:stream_chat_flutter/src/channel_preview.dart'; import 'package:stream_chat_flutter/src/gradient_avatar.dart'; -import 'package:stream_chat_flutter/src/message_input.dart'; +import 'package:stream_chat_flutter/src/message_input/message_input.dart'; import 'package:stream_chat_flutter/src/reaction_icon.dart'; import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 78977cf4..b39a2eea 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -23,16 +23,16 @@ export 'src/localization/stream_chat_localizations.dart'; export 'src/localization/translations.dart' show DefaultTranslations; export 'src/mention_tile.dart'; export 'src/message_action.dart'; -export 'src/message_input.dart'; +export 'src/message_input/message_input.dart'; export 'src/message_list_view.dart'; export 'src/message_search_item.dart'; export 'src/message_search_list_view.dart'; export 'src/message_text.dart'; export 'src/message_widget.dart'; -export 'src/mip/countdown_button.dart'; -export 'src/mip/stream_attachment_picker.dart'; -export 'src/mip/stream_message_send_button.dart'; -export 'src/mip/stream_message_text_field.dart'; +export 'src/message_input/countdown_button.dart'; +export 'src/message_input/stream_attachment_picker.dart'; +export 'src/message_input/stream_message_send_button.dart'; +export 'src/message_input/stream_message_text_field.dart'; export 'src/option_list_tile.dart'; export 'src/reaction_icon.dart'; export 'src/reaction_picker.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 3339bc5b..4d1565da 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -4,29 +4,82 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat/stream_chat.dart'; +typedef MessageValidator = bool Function(Message message); + /// Controller for storing and mutating a [Message] value. class MessageInputController extends ValueNotifier { /// Creates a controller for an editable text field. /// /// This constructor treats a null [message] argument as if it were the empty /// message. - factory MessageInputController({Message? message}) => - MessageInputController._(message ?? Message()); + factory MessageInputController({ + Message? message, + MessageValidator? validator, + }) => + MessageInputController._( + initialMessage: message ?? Message(), + validator: validator ?? _defaultValidator, + ); /// Creates a controller for an editable text field from an initial [text]. - factory MessageInputController.fromText(String? text) => - MessageInputController._(Message(text: text)); + factory MessageInputController.fromText( + String? text, { + MessageValidator? validator, + }) => + MessageInputController._( + initialMessage: Message(text: text), + validator: validator ?? _defaultValidator, + ); /// Creates a controller for an editable text field from an initial /// [attachments]. factory MessageInputController.fromAttachments( - List attachments, - ) => - MessageInputController._(Message(attachments: attachments)); + List attachments, { + MessageValidator? validator, + }) => + MessageInputController._( + initialMessage: Message(attachments: attachments), + validator: validator ?? _defaultValidator, + ); - MessageInputController._(Message message) - : _textEditingController = TextEditingController(text: message.text), - super(message); + MessageInputController._({ + required Message initialMessage, + this.validator = _defaultValidator, + }) : _textEditingController = + TextEditingController(text: initialMessage.text), + _initialMessage = initialMessage, + super(initialMessage) { + addListener(_textEditingSyncer); + } + + /// A callback function that validates the message. + final MessageValidator validator; + + /// Checks if the message is valid. + bool get isValid => validator(value); + + static bool _defaultValidator(Message message) => + message.text?.isNotEmpty != true && message.attachments.isEmpty; + + void _textEditingSyncer() { + final cleanText = value.command == null + ? value.text + : value.text?.replaceFirst( + '/${value.command} ', + '', + ); + + if (cleanText != _textEditingController.text) { + final previousOffset = _textEditingController.value.selection.start; + final previousText = _textEditingController.text; + final diff = (cleanText?.length ?? 0) - previousText.length; + _textEditingController + ..text = cleanText ?? '' + ..selection = TextSelection.collapsed( + offset: previousOffset + diff, + ); + } + } /// TextEditingController get textEditingController => _textEditingController; @@ -35,24 +88,29 @@ class MessageInputController extends ValueNotifier { /// String get text => _textEditingController.text; + final Message _initialMessage; + /// set message(Message message) { value = message; } - set text(String newText) { - value = value.copyWith(text: newText); - _textEditingController - ..text = newText - ..selection = TextSelection.fromPosition( - TextPosition(offset: _textEditingController.text.length), - ); + /// + set command(Command command) { + value = value.copyWith( + command: command.name, + text: '/${command.name} ', + ); } - /// - set textEditingValue(TextEditingValue newValue) { - _textEditingController.value = newValue; - value = value.copyWith(text: _textEditingController.text); + set text(String newText) { + var newTextWithCommand = newText; + if (value.command != null) { + if (!newText.startsWith('/${value.command}')) { + newTextWithCommand = '/${value.command} $newText'; + } + } + value = value.copyWith(text: newTextWithCommand); } /// @@ -147,9 +205,13 @@ class MessageInputController extends ValueNotifier { _textEditingController.clear(); } + /// Set the [value] to the initial [Message] value. + void reset() => value = _initialMessage; + @override void dispose() { super.dispose(); + removeListener(_textEditingSyncer); _textEditingController.dispose(); } } From fcb9e308c714ea3a6a4ca2f6570175d73c49dd0c Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 17 Nov 2021 06:11:46 +0530 Subject: [PATCH 026/201] chore(ui): initial channel list view draft with controller. Signed-off-by: xsahil03x --- .../example/lib/tutorial_part_2.dart | 45 +- .../lib/src/channel_info.dart | 11 +- .../lib/src/group_avatar.dart | 5 +- .../lib/src/option_list_tile.dart | 17 +- .../lib/src/paged_value_notifier.dart | 92 +++ .../lib/src/paged_value_notifier.freezed.dart | 590 ++++++++++++++++++ .../lib/src/thread_header.dart | 13 +- .../lib/src/typing_indicator.dart | 41 +- .../stream_channel_list_controller.dart | 91 +++ .../stream_channel_list_loading_tile.dart | 91 +++ .../stream_channel_list_tile.dart | 379 +++++++++++ .../stream_channel_list_view.dart | 369 +++++++++++ .../lib/src/v4/stream_channel_avatar.dart | 201 ++++++ .../lib/src/v4/stream_channel_name.dart | 93 +++ .../lib/stream_chat_flutter.dart | 2 + 15 files changed, 1983 insertions(+), 57 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/paged_value_notifier.dart create mode 100644 packages/stream_chat_flutter/lib/src/paged_value_notifier.freezed.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart index 6abc260e..6e1edaba 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart @@ -62,29 +62,52 @@ class MyApp extends StatelessWidget { client: client, child: child, ), - home: const ChannelListPage(), + home: ChannelListPage( + client: client, + ), ); } } -class ChannelListPage extends StatelessWidget { - const ChannelListPage({ +class ChannelListPage extends StatefulWidget { + ChannelListPage({ Key? key, + required this.client, }) : super(key: key); + final StreamChatClient client; + + @override + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _controller = StreamChannelListController( + client: widget.client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + @override // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( - body: ChannelsBloc( - child: ChannelListView( - filter: Filter.in_( - 'members', - [StreamChat.of(context).currentUser!.id], + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), ), - sort: const [SortOption('last_message_at')], - limit: 20, - channelWidget: const ChannelPage(), ), ), ); diff --git a/packages/stream_chat_flutter/lib/src/channel_info.dart b/packages/stream_chat_flutter/lib/src/channel_info.dart index 62bfd1de..0c4f4ac7 100644 --- a/packages/stream_chat_flutter/lib/src/channel_info.dart +++ b/packages/stream_chat_flutter/lib/src/channel_info.dart @@ -94,11 +94,12 @@ class ChannelInfo extends StatelessWidget { return alternativeWidget ?? const Offstage(); } - return TypingIndicator( - parentId: parentId, - alignment: Alignment.center, - alternativeWidget: alternativeWidget, - style: textStyle, + return Align( + child: TypingIndicator( + parentId: parentId, + style: textStyle, + alternativeWidget: alternativeWidget, + ), ); } diff --git a/packages/stream_chat_flutter/lib/src/group_avatar.dart b/packages/stream_chat_flutter/lib/src/group_avatar.dart index bf599c63..d7996c4d 100644 --- a/packages/stream_chat_flutter/lib/src/group_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/group_avatar.dart @@ -6,6 +6,7 @@ class GroupAvatar extends StatelessWidget { /// Constructor for creating a [GroupAvatar] const GroupAvatar({ Key? key, + this.channel, required this.members, this.constraints, this.onTap, @@ -15,6 +16,8 @@ class GroupAvatar extends StatelessWidget { this.selectionThickness = 4, }) : super(key: key); + final Channel? channel; + /// List of images to display final List members; @@ -38,7 +41,7 @@ class GroupAvatar extends StatelessWidget { @override Widget build(BuildContext context) { - final channel = StreamChannel.of(context).channel; + final channel = this.channel ?? StreamChannel.of(context).channel; assert(channel.state != null, 'Channel ${channel.id} is not initialized'); diff --git a/packages/stream_chat_flutter/lib/src/option_list_tile.dart b/packages/stream_chat_flutter/lib/src/option_list_tile.dart index 16bf9e97..b8daa0e3 100644 --- a/packages/stream_chat_flutter/lib/src/option_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/option_list_tile.dart @@ -6,7 +6,7 @@ class OptionListTile extends StatelessWidget { /// Constructor for creating [OptionListTile] const OptionListTile({ Key? key, - this.title, + required this.title, this.leading, this.trailing, this.onTap, @@ -17,7 +17,7 @@ class OptionListTile extends StatelessWidget { }) : super(key: key); /// Title for tile - final String? title; + final String title; /// Leading widget (start) final Widget? leading; @@ -46,8 +46,8 @@ class OptionListTile extends StatelessWidget { return Column( children: [ Container( - color: separatorColor ?? chatThemeData.colorTheme.disabled, height: 1, + color: separatorColor ?? chatThemeData.colorTheme.disabled, ), Material( color: tileColor ?? chatThemeData.colorTheme.barsBg, @@ -57,15 +57,14 @@ class OptionListTile extends StatelessWidget { onTap: onTap, child: Row( children: [ - if (leading != null) Center(child: leading), - if (leading == null) - const SizedBox( - width: 16, - ), + if (leading != null) + Center(child: leading) + else + const SizedBox(width: 16), Expanded( flex: 4, child: Text( - title!, + title, style: titleTextStyle ?? (titleColor == null ? chatThemeData.textTheme.bodyBold diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart new file mode 100644 index 00000000..d71db24d --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart @@ -0,0 +1,92 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:stream_chat/stream_chat.dart' show StreamChatError; + +part 'paged_value_notifier.freezed.dart'; + +const defaultInitialPagedLimitMultiplier = 3; + +typedef PagedValueListenableBuilder + = ValueListenableBuilder>; + +abstract class PagedValueNotifier + extends ValueNotifier> { + /// Creates a [PagedValueNotifier] + PagedValueNotifier(this._initialValue) : super(_initialValue); + + /// Stores initialValue in case we need to call [refresh]. + final PagedValue _initialValue; + + /// Retry any failed load requests. + /// + /// Unlike [refresh], this does not resets the whole [value], + /// it only retries the last failed load request. + Future retry() { + var lastValue = value; + assert(lastValue.hasError, ''); + lastValue = lastValue as Success; + + final nextPageKey = lastValue.nextPageKey; + // resetting the error + value = lastValue.copyWith(error: null); + return loadMore(nextPageKey!); + } + + /// Refresh the data presented by this [PagedValueNotifier]. + /// + /// Note: This API is intended for UI-driven refresh signals, + /// such as swipe-to-refresh. + Future refresh() { + value = _initialValue; + return doInitialLoad(); + } + + /// Load initial data from the server. + Future doInitialLoad(); + + /// Load more data from the server using [nextPageKey]. + Future loadMore(Key nextPageKey); +} + +@freezed +abstract class PagedValue with _$PagedValue { + const PagedValue._(); + + /// Creates a new instance of [PagedValue] with the given [key] and [value]. + // @Assert( + // 'nextPageKey != null', + // 'Cannot set an error if all the pages are already fetched', + // ) + const factory PagedValue({ + /// List with all items loaded so far. + required List items, + + /// The key for the next page to be fetched. + Key? nextPageKey, + + /// The current error, if any. + StreamChatError? error, + }) = Success; + + bool get hasNextPage { + assert(this is Success, ''); + return (this as Success).nextPageKey != null; + } + + bool get hasError { + assert(this is Success, ''); + return (this as Success).error != null; + } + + int get itemCount { + assert(this is Success, ''); + final count = (this as Success).items.length; + if (hasNextPage || hasError) return count + 1; + return count; + } + + const factory PagedValue.loading() = Loading; + + const factory PagedValue.error(StreamChatError error) = Error; +} diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.freezed.dart b/packages/stream_chat_flutter/lib/src/paged_value_notifier.freezed.dart new file mode 100644 index 00000000..515a9742 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/paged_value_notifier.freezed.dart @@ -0,0 +1,590 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target + +part of 'paged_value_notifier.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more informations: https://github.com/rrousselGit/freezed#custom-getters-and-methods'); + +/// @nodoc +class _$PagedValueTearOff { + const _$PagedValueTearOff(); + + Success call( + {required List items, Key? nextPageKey, StreamChatError? error}) { + return Success( + items: items, + nextPageKey: nextPageKey, + error: error, + ); + } + + Loading loading() { + return Loading(); + } + + Error error(StreamChatError error) { + return Error( + error, + ); + } +} + +/// @nodoc +const $PagedValue = _$PagedValueTearOff(); + +/// @nodoc +mixin _$PagedValue { + @optionalTypeArgs + TResult when( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error) + $default, { + required TResult Function() loading, + required TResult Function(StreamChatError error) error, + }) => + throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? whenOrNull( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + }) => + throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + required TResult orElse(), + }) => + throw _privateConstructorUsedError; + @optionalTypeArgs + TResult map( + TResult Function(Success value) $default, { + required TResult Function(Loading value) loading, + required TResult Function(Error value) error, + }) => + throw _privateConstructorUsedError; + @optionalTypeArgs + TResult? mapOrNull( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + }) => + throw _privateConstructorUsedError; + @optionalTypeArgs + TResult maybeMap( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + required TResult orElse(), + }) => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PagedValueCopyWith { + factory $PagedValueCopyWith(PagedValue value, + $Res Function(PagedValue) then) = + _$PagedValueCopyWithImpl; +} + +/// @nodoc +class _$PagedValueCopyWithImpl + implements $PagedValueCopyWith { + _$PagedValueCopyWithImpl(this._value, this._then); + + final PagedValue _value; + // ignore: unused_field + final $Res Function(PagedValue) _then; +} + +/// @nodoc +abstract class $SuccessCopyWith { + factory $SuccessCopyWith( + Success value, $Res Function(Success) then) = + _$SuccessCopyWithImpl; + $Res call({List items, Key? nextPageKey, StreamChatError? error}); +} + +/// @nodoc +class _$SuccessCopyWithImpl + extends _$PagedValueCopyWithImpl + implements $SuccessCopyWith { + _$SuccessCopyWithImpl( + Success _value, $Res Function(Success) _then) + : super(_value, (v) => _then(v as Success)); + + @override + Success get _value => super._value as Success; + + @override + $Res call({ + Object? items = freezed, + Object? nextPageKey = freezed, + Object? error = freezed, + }) { + return _then(Success( + items: items == freezed + ? _value.items + : items // ignore: cast_nullable_to_non_nullable + as List, + nextPageKey: nextPageKey == freezed + ? _value.nextPageKey + : nextPageKey // ignore: cast_nullable_to_non_nullable + as Key?, + error: error == freezed + ? _value.error + : error // ignore: cast_nullable_to_non_nullable + as StreamChatError?, + )); + } +} + +/// @nodoc + +class _$Success extends Success + with DiagnosticableTreeMixin { + const _$Success({required this.items, this.nextPageKey, this.error}) + : super._(); + + @override + + /// List with all items loaded so far. + final List items; + @override + + /// The key for the next page to be fetched. + final Key? nextPageKey; + @override + + /// The current error, if any. + final StreamChatError? error; + + @override + String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { + return 'PagedValue<$Key, $Value>(items: $items, nextPageKey: $nextPageKey, error: $error)'; + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('type', 'PagedValue<$Key, $Value>')) + ..add(DiagnosticsProperty('items', items)) + ..add(DiagnosticsProperty('nextPageKey', nextPageKey)) + ..add(DiagnosticsProperty('error', error)); + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || + (other is Success && + (identical(other.items, items) || + const DeepCollectionEquality().equals(other.items, items)) && + (identical(other.nextPageKey, nextPageKey) || + const DeepCollectionEquality() + .equals(other.nextPageKey, nextPageKey)) && + (identical(other.error, error) || + const DeepCollectionEquality().equals(other.error, error))); + } + + @override + int get hashCode => + runtimeType.hashCode ^ + const DeepCollectionEquality().hash(items) ^ + const DeepCollectionEquality().hash(nextPageKey) ^ + const DeepCollectionEquality().hash(error); + + @JsonKey(ignore: true) + @override + $SuccessCopyWith> get copyWith => + _$SuccessCopyWithImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error) + $default, { + required TResult Function() loading, + required TResult Function(StreamChatError error) error, + }) { + return $default(items, nextPageKey, this.error); + } + + @override + @optionalTypeArgs + TResult? whenOrNull( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + }) { + return $default?.call(items, nextPageKey, this.error); + } + + @override + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + required TResult orElse(), + }) { + if ($default != null) { + return $default(items, nextPageKey, this.error); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map( + TResult Function(Success value) $default, { + required TResult Function(Loading value) loading, + required TResult Function(Error value) error, + }) { + return $default(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + }) { + return $default?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + required TResult orElse(), + }) { + if ($default != null) { + return $default(this); + } + return orElse(); + } +} + +abstract class Success extends PagedValue { + const factory Success( + {required List items, + Key? nextPageKey, + StreamChatError? error}) = _$Success; + const Success._() : super._(); + + /// List with all items loaded so far. + List get items => throw _privateConstructorUsedError; + + /// The key for the next page to be fetched. + Key? get nextPageKey => throw _privateConstructorUsedError; + + /// The current error, if any. + StreamChatError? get error => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $SuccessCopyWith> get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $LoadingCopyWith { + factory $LoadingCopyWith( + Loading value, $Res Function(Loading) then) = + _$LoadingCopyWithImpl; +} + +/// @nodoc +class _$LoadingCopyWithImpl + extends _$PagedValueCopyWithImpl + implements $LoadingCopyWith { + _$LoadingCopyWithImpl( + Loading _value, $Res Function(Loading) _then) + : super(_value, (v) => _then(v as Loading)); + + @override + Loading get _value => super._value as Loading; +} + +/// @nodoc + +class _$Loading extends Loading + with DiagnosticableTreeMixin { + const _$Loading() : super._(); + + @override + String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { + return 'PagedValue<$Key, $Value>.loading()'; + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('type', 'PagedValue<$Key, $Value>.loading')); + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || (other is Loading); + } + + @override + int get hashCode => runtimeType.hashCode; + + @override + @optionalTypeArgs + TResult when( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error) + $default, { + required TResult Function() loading, + required TResult Function(StreamChatError error) error, + }) { + return loading(); + } + + @override + @optionalTypeArgs + TResult? whenOrNull( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + }) { + return loading?.call(); + } + + @override + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + required TResult orElse(), + }) { + if (loading != null) { + return loading(); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map( + TResult Function(Success value) $default, { + required TResult Function(Loading value) loading, + required TResult Function(Error value) error, + }) { + return loading(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + }) { + return loading?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + required TResult orElse(), + }) { + if (loading != null) { + return loading(this); + } + return orElse(); + } +} + +abstract class Loading extends PagedValue { + const factory Loading() = _$Loading; + const Loading._() : super._(); +} + +/// @nodoc +abstract class $ErrorCopyWith { + factory $ErrorCopyWith( + Error value, $Res Function(Error) then) = + _$ErrorCopyWithImpl; + $Res call({StreamChatError error}); +} + +/// @nodoc +class _$ErrorCopyWithImpl + extends _$PagedValueCopyWithImpl + implements $ErrorCopyWith { + _$ErrorCopyWithImpl( + Error _value, $Res Function(Error) _then) + : super(_value, (v) => _then(v as Error)); + + @override + Error get _value => super._value as Error; + + @override + $Res call({ + Object? error = freezed, + }) { + return _then(Error( + error == freezed + ? _value.error + : error // ignore: cast_nullable_to_non_nullable + as StreamChatError, + )); + } +} + +/// @nodoc + +class _$Error extends Error + with DiagnosticableTreeMixin { + const _$Error(this.error) : super._(); + + @override + final StreamChatError error; + + @override + String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) { + return 'PagedValue<$Key, $Value>.error(error: $error)'; + } + + @override + void debugFillProperties(DiagnosticPropertiesBuilder properties) { + super.debugFillProperties(properties); + properties + ..add(DiagnosticsProperty('type', 'PagedValue<$Key, $Value>.error')) + ..add(DiagnosticsProperty('error', error)); + } + + @override + bool operator ==(dynamic other) { + return identical(this, other) || + (other is Error && + (identical(other.error, error) || + const DeepCollectionEquality().equals(other.error, error))); + } + + @override + int get hashCode => + runtimeType.hashCode ^ const DeepCollectionEquality().hash(error); + + @JsonKey(ignore: true) + @override + $ErrorCopyWith> get copyWith => + _$ErrorCopyWithImpl>(this, _$identity); + + @override + @optionalTypeArgs + TResult when( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error) + $default, { + required TResult Function() loading, + required TResult Function(StreamChatError error) error, + }) { + return error(this.error); + } + + @override + @optionalTypeArgs + TResult? whenOrNull( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + }) { + return error?.call(this.error); + } + + @override + @optionalTypeArgs + TResult maybeWhen( + TResult Function( + List items, Key? nextPageKey, StreamChatError? error)? + $default, { + TResult Function()? loading, + TResult Function(StreamChatError error)? error, + required TResult orElse(), + }) { + if (error != null) { + return error(this.error); + } + return orElse(); + } + + @override + @optionalTypeArgs + TResult map( + TResult Function(Success value) $default, { + required TResult Function(Loading value) loading, + required TResult Function(Error value) error, + }) { + return error(this); + } + + @override + @optionalTypeArgs + TResult? mapOrNull( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + }) { + return error?.call(this); + } + + @override + @optionalTypeArgs + TResult maybeMap( + TResult Function(Success value)? $default, { + TResult Function(Loading value)? loading, + TResult Function(Error value)? error, + required TResult orElse(), + }) { + if (error != null) { + return error(this); + } + return orElse(); + } +} + +abstract class Error extends PagedValue { + const factory Error(StreamChatError error) = _$Error; + const Error._() : super._(); + + StreamChatError get error => throw _privateConstructorUsedError; + @JsonKey(ignore: true) + $ErrorCopyWith> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/packages/stream_chat_flutter/lib/src/thread_header.dart b/packages/stream_chat_flutter/lib/src/thread_header.dart index dfe13b41..5f7fb25e 100644 --- a/packages/stream_chat_flutter/lib/src/thread_header.dart +++ b/packages/stream_chat_flutter/lib/src/thread_header.dart @@ -163,12 +163,13 @@ class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { ), const SizedBox(height: 2), if (showTypingIndicator) - TypingIndicator( - alignment: Alignment.center, - channel: StreamChannel.of(context).channel, - style: channelHeaderTheme.subtitleStyle, - parentId: parent.id, - alternativeWidget: defaultSubtitle, + Align( + child: TypingIndicator( + channel: StreamChannel.of(context).channel, + style: channelHeaderTheme.subtitleStyle, + parentId: parent.id, + alternativeWidget: defaultSubtitle, + ), ) else defaultSubtitle, diff --git a/packages/stream_chat_flutter/lib/src/typing_indicator.dart b/packages/stream_chat_flutter/lib/src/typing_indicator.dart index d961a8ff..389d1020 100644 --- a/packages/stream_chat_flutter/lib/src/typing_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/typing_indicator.dart @@ -11,7 +11,6 @@ class TypingIndicator extends StatelessWidget { this.channel, this.alternativeWidget, this.style, - this.alignment = Alignment.centerLeft, this.padding = const EdgeInsets.all(0), this.parentId, }) : super(key: key); @@ -28,9 +27,6 @@ class TypingIndicator extends StatelessWidget { /// The padding of this widget final EdgeInsets padding; - /// Alignment of the typing indicator - final Alignment alignment; - /// Id of the parent message in case of a thread final String? parentId; @@ -46,30 +42,25 @@ class TypingIndicator extends StatelessWidget { stream: channelState.typingEventsStream.map((typings) => typings.entries .where((element) => element.value.parentId == parentId) .map((e) => e.key)), - builder: (context, data) => AnimatedSwitcher( + builder: (context, users) => AnimatedSwitcher( duration: const Duration(milliseconds: 300), - child: data.isNotEmpty + child: users.isNotEmpty ? Padding( - key: const Key('main'), padding: padding, - child: Align( - key: const Key('typings'), - alignment: alignment, - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Lottie.asset( - 'animations/typing_dots.json', - package: 'stream_chat_flutter', - height: 4, - ), - Text( - context.translations.userTypingText(data), - maxLines: 1, - style: style, - ), - ], - ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Lottie.asset( + 'animations/typing_dots.json', + package: 'stream_chat_flutter', + height: 4, + ), + Text( + context.translations.userTypingText(users), + maxLines: 1, + style: style, + ), + ], ), ) : altWidget, diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart new file mode 100644 index 00000000..4bfc7130 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -0,0 +1,91 @@ +import 'package:stream_chat/stream_chat.dart' hide Success; +import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; + +class StreamChannelListController extends PagedValueNotifier { + /// Creates a [StreamChannelListController]. + StreamChannelListController({ + required this.client, + this.filter, + this.sort, + this.limit = 2, + this.messageLimit, + this.memberLimit, + }) : super(const PagedValue.loading()); + + /// Creates a [StreamChannelListController] from the passed [value]. + StreamChannelListController.fromValue( + PagedValue value, { + required this.client, + this.filter, + this.sort, + this.limit = 2, + this.messageLimit, + this.memberLimit, + }) : super(value); + + /// The client to use for the channel list. + final StreamChatClient client; + + /// The filter to apply to the channel list. + final Filter? filter; + + /// The sort to apply to the channel list. + final List>? sort; + + /// The limit to apply to the channel list. + final int limit; + + /// The limit to apply to the message list. + final int? messageLimit; + + /// The limit to apply to the member list. + final int? memberLimit; + + @override + Future doInitialLoad() async { + final limit = this.limit * defaultInitialPagedLimitMultiplier; + try { + await for (final channels in client.queryChannels( + filter: filter, + sort: sort, + memberLimit: memberLimit, + messageLimit: messageLimit, + paginationParams: PaginationParams(limit: limit), + )) { + final nextKey = channels.length < limit ? null : channels.length; + value = PagedValue( + items: channels, + nextPageKey: nextKey, + ); + } + } catch (error) { + value = PagedValue.error(StreamChatError('error')); + } + } + + @override + Future loadMore(int nextPageKey) async { + assert(value is Success, ''); + final previousValue = value as Success; + + try { + await for (final channels in client.queryChannels( + filter: filter, + sort: sort, + memberLimit: memberLimit, + messageLimit: messageLimit, + paginationParams: PaginationParams(limit: limit, offset: nextPageKey), + )) { + final previousItems = previousValue.items; + final newItems = previousItems + channels; + final nextKey = channels.length < limit ? null : newItems.length; + value = PagedValue( + items: newItems, + nextPageKey: nextKey, + ); + } + } catch (error) { + value = previousValue.copyWith(error: StreamChatError('error')); + } + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart new file mode 100644 index 00000000..9e0231d5 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:shimmer/shimmer.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; + +class StreamChannelListLoadingTile extends StatelessWidget { + const StreamChannelListLoadingTile({ + Key? key, + this.visualDensity = VisualDensity.standard, + this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), + }) : super(key: key); + + /// Defines how compact the list tile's layout will be. + /// + /// {@macro flutter.material.themedata.visualDensity} + /// + /// See also: + /// + /// * [ThemeData.visualDensity], which specifies the [visualDensity] for all + /// widgets within a [Theme]. + final VisualDensity visualDensity; + + /// The tile's internal padding. + /// + /// Insets a [ListTile]'s contents: its [leading], [title], [subtitle], + /// and [trailing] widgets. + /// + /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. + final EdgeInsetsGeometry contentPadding; + + @override + Widget build(BuildContext context) { + final colorTheme = StreamChatTheme.of(context).colorTheme; + + final leading = Container( + height: 49, + width: 49, + decoration: BoxDecoration( + color: colorTheme.barsBg, + shape: BoxShape.circle, + ), + ); + + final title = Container( + height: 16, + width: 66, + decoration: BoxDecoration( + color: colorTheme.barsBg, + borderRadius: BorderRadius.circular(8), + ), + ); + + final subtitle = Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Align( + alignment: Alignment.centerLeft, + child: Container( + height: 16, + decoration: BoxDecoration( + color: colorTheme.barsBg, + borderRadius: BorderRadius.circular(8), + ), + ), + ), + ), + const SizedBox(width: 8), + Container( + height: 16, + width: 50, + decoration: BoxDecoration( + color: colorTheme.barsBg, + borderRadius: BorderRadius.circular(8), + ), + ), + ], + ); + + return Shimmer.fromColors( + baseColor: colorTheme.disabled, + highlightColor: colorTheme.inputBg, + child: ListTile( + leading: leading, + title: title, + subtitle: subtitle, + visualDensity: visualDensity, + contentPadding: contentPadding, + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart new file mode 100644 index 00000000..f4fb4fde --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -0,0 +1,379 @@ +import 'package:collection/collection.dart'; +import 'package:flutter/material.dart'; +import 'package:jiffy/jiffy.dart'; +import 'package:stream_chat/stream_chat.dart' show Channel; +import 'package:stream_chat_flutter/src/sending_indicator.dart'; +import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; +import 'package:stream_chat_flutter/src/theme/channel_preview_theme.dart'; +import 'package:stream_chat_flutter/src/typing_indicator.dart'; +import 'package:stream_chat_flutter/src/unread_indicator.dart'; +import 'package:stream_chat_flutter/src/v4/stream_channel_avatar.dart'; +import 'package:stream_chat_flutter/src/v4/stream_channel_name.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; + +class StreamChannelListTile extends StatelessWidget { + StreamChannelListTile({ + Key? key, + required this.channel, + this.leading, + this.title, + this.subtitle, + this.onTap, + this.onLongPress, + this.visualDensity = VisualDensity.compact, + this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), + }) : assert( + channel.state != null, + 'Channel ${channel.id} is not initialized', + ), + super(key: key); + + final Channel channel; + + /// A widget to display before the title. + /// + /// Typically an [Icon] or a [CircleAvatar] widget. + final Widget? leading; + + /// The primary content of the list tile. + /// + /// Typically a [Text] widget. + /// + /// This should not wrap. To enforce the single line limit, use + /// [Text.maxLines]. + final Widget? title; + + /// Additional content displayed below the title. + /// + /// Typically a [Text] widget. + /// + /// If [isThreeLine] is false, this should not wrap. + /// + /// If [isThreeLine] is true, this should be configured to take a maximum of + /// two lines. For example, you can use [Text.maxLines] to enforce the number + /// of lines. + /// + /// The subtitle's default [TextStyle] depends on [TextTheme.bodyText2] except + /// [TextStyle.color]. The [TextStyle.color] depends on the value of [enabled] + /// and [selected]. + /// + /// When [enabled] is false, the text color is set to [ThemeData.disabledColor]. + /// + /// When [selected] is false, the text color is set to [ListTileTheme.textColor] + /// if it's not null and to [TextTheme.caption]'s color if [ListTileTheme.textColor] + /// is null. + final Widget? subtitle; + + /// Called when the user taps this list tile. + /// + /// Inoperative if [enabled] is false. + final GestureTapCallback? onTap; + + /// Called when the user long-presses on this list tile. + /// + /// Inoperative if [enabled] is false. + final GestureLongPressCallback? onLongPress; + + /// Defines how compact the list tile's layout will be. + /// + /// {@macro flutter.material.themedata.visualDensity} + /// + /// See also: + /// + /// * [ThemeData.visualDensity], which specifies the [visualDensity] for all + /// widgets within a [Theme]. + final VisualDensity visualDensity; + + /// The tile's internal padding. + /// + /// Insets a [ListTile]'s contents: its [leading], [title], [subtitle], + /// and [trailing] widgets. + /// + /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. + final EdgeInsetsGeometry contentPadding; + + @override + Widget build(BuildContext context) { + final channelState = channel.state!; + final currentUser = channel.client.state.currentUser!; + + final channelPreviewTheme = ChannelPreviewTheme.of(context); + + final leading = this.leading ?? + StreamChannelAvatar( + channel: channel, + ); + + final title = this.title ?? + StreamChannelName( + channel: channel, + textStyle: channelPreviewTheme.titleStyle, + ); + + final subtitle = this.subtitle ?? + ChannelListTileSubtitle( + channel: channel, + textStyle: channelPreviewTheme.subtitleStyle, + ); + + return BetterStreamBuilder( + stream: channel.isMutedStream, + initialData: channel.isMuted, + builder: (context, isMuted) => AnimatedOpacity( + opacity: isMuted ? 0.5 : 1, + duration: const Duration(milliseconds: 300), + child: ListTile( + onTap: onTap, + onLongPress: onLongPress, + visualDensity: visualDensity, + contentPadding: contentPadding, + leading: leading, + title: Row( + children: [ + Expanded(child: title), + BetterStreamBuilder>( + stream: channelState.membersStream, + initialData: channelState.members, + comparator: const ListEquality().equals, + builder: (context, members) { + if (members.isEmpty || + !members.any((it) => it.user!.id == currentUser.id)) { + return const Offstage(); + } + return UnreadIndicator(cid: channel.cid); + }, + ), + ], + ), + subtitle: Row( + children: [ + Expanded( + child: Align( + alignment: Alignment.centerLeft, + child: subtitle, + ), + ), + BetterStreamBuilder>( + stream: channelState.messagesStream, + initialData: channelState.messages, + comparator: const ListEquality().equals, + builder: (context, messages) { + final lastMessage = messages.lastWhereOrNull( + (m) => !m.shadowed && !m.isDeleted, + ); + + if (lastMessage == null || + (lastMessage.user?.id != currentUser.id)) { + return const Offstage(); + } + + return Padding( + padding: const EdgeInsets.only(right: 4), + child: SendingIndicator( + message: lastMessage, + size: channelPreviewTheme.indicatorIconSize, + isMessageRead: channelState.read + .where((it) => it.user.id != currentUser.id) + .where( + (it) => it.lastRead.isAfter(lastMessage.createdAt), + ) + .isNotEmpty, + ), + ); + }, + ), + ChannelLastMessageDate( + channel: channel, + textStyle: channelPreviewTheme.lastMessageAtStyle, + ), + // trailing ?? _buildDate(context), + ], + ), + ), + ), + ); + } +} + +class ChannelLastMessageDate extends StatelessWidget { + ChannelLastMessageDate({ + Key? key, + required this.channel, + this.textStyle, + }) : assert( + channel.state != null, + 'Channel ${channel.id} is not initialized', + ), + super(key: key); + + final Channel channel; + + /// The style of the text displayed + final TextStyle? textStyle; + + @override + Widget build(BuildContext context) => BetterStreamBuilder( + stream: channel.lastMessageAtStream, + initialData: channel.lastMessageAt, + builder: (context, data) { + final lastMessageAt = data.toLocal(); + + String stringDate; + final now = DateTime.now(); + + final startOfDay = DateTime(now.year, now.month, now.day); + + if (lastMessageAt.millisecondsSinceEpoch >= + startOfDay.millisecondsSinceEpoch) { + stringDate = Jiffy(lastMessageAt.toLocal()).jm; + } else if (lastMessageAt.millisecondsSinceEpoch >= + startOfDay + .subtract(const Duration(days: 1)) + .millisecondsSinceEpoch) { + stringDate = context.translations.yesterdayLabel; + } else if (startOfDay.difference(lastMessageAt).inDays < 7) { + stringDate = Jiffy(lastMessageAt.toLocal()).EEEE; + } else { + stringDate = Jiffy(lastMessageAt.toLocal()).yMd; + } + + return Text( + stringDate, + style: textStyle, + ); + }, + ); +} + +class ChannelListTileSubtitle extends StatelessWidget { + ChannelListTileSubtitle({ + Key? key, + required this.channel, + this.textStyle, + }) : assert( + channel.state != null, + 'Channel ${channel.id} is not initialized', + ), + super(key: key); + + final Channel channel; + + /// The style of the text displayed + final TextStyle? textStyle; + + @override + Widget build(BuildContext context) { + if (channel.isMuted) { + return Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + StreamSvgIcon.mute(size: 16), + Text( + ' ${context.translations.channelIsMutedText}', + style: textStyle, + ), + ], + ); + } + return TypingIndicator( + channel: channel, + style: textStyle, + alternativeWidget: ChannelLastMessageText( + channel: channel, + textStyle: textStyle, + ), + ); + } +} + +class ChannelLastMessageText extends StatelessWidget { + ChannelLastMessageText({ + Key? key, + required this.channel, + this.textStyle, + }) : assert( + channel.state != null, + 'Channel ${channel.id} is not initialized', + ), + super(key: key); + + final Channel channel; + + /// The style of the text displayed + final TextStyle? textStyle; + + @override + Widget build(BuildContext context) => BetterStreamBuilder>( + stream: channel.state!.messagesStream, + initialData: channel.state!.messages, + builder: (context, messages) { + final lastMessage = messages.lastWhereOrNull( + (m) => !m.shadowed && !m.isDeleted, + ); + + if (lastMessage == null) return const Offstage(); + + final lastMessageText = lastMessage.text; + final lastMessageAttachments = lastMessage.attachments; + final lastMessageMentionedUsers = lastMessage.mentionedUsers; + + final messageTextParts = [ + ...lastMessageAttachments.map((it) { + if (it.type == 'image') { + return '📷'; + } else if (it.type == 'video') { + return '🎬'; + } else if (it.type == 'giphy') { + return '[GIF]'; + } + return it == lastMessage.attachments.last + ? (it.title ?? 'File') + : '${it.title ?? 'File'} , '; + }), + if (lastMessageText != null) lastMessageText, + ]; + + final fontStyle = (lastMessage.isSystem || lastMessage.isDeleted) + ? FontStyle.italic + : FontStyle.normal; + + final regularTextStyle = textStyle?.copyWith(fontStyle: fontStyle); + + final mentionsTextStyle = textStyle?.copyWith( + fontStyle: fontStyle, + fontWeight: FontWeight.bold, + ); + + final spans = [ + for (final part in messageTextParts) + if (lastMessageMentionedUsers.isNotEmpty && + lastMessageMentionedUsers.any((it) => '@${it.name}' == part)) + TextSpan( + text: '$part ', + style: mentionsTextStyle, + ) + else if (lastMessageAttachments.isNotEmpty && + lastMessageAttachments + .where((it) => it.title != null) + .any((it) => it.title == part)) + TextSpan( + text: '$part ', + style: regularTextStyle, + ) + else + TextSpan( + text: part == messageTextParts.last ? part : '$part ', + style: regularTextStyle, + ), + ]; + + return Text.rich( + TextSpan(children: spans), + maxLines: 1, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.start, + ); + }, + ); +} diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart new file mode 100644 index 00000000..ea9f5c1e --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -0,0 +1,369 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_tile.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// Signature for a function that creates a widget for a given index, e.g., in a +/// list. +/// +/// Used by [GridView.builder] and other APIs that use lazily-generated widgets. +/// +/// See also: +/// +/// * [WidgetBuilder], which is similar but only takes a [BuildContext]. +/// * [TransitionBuilder], which is similar but also takes a child. +/// * [NullableIndexedWidgetBuilder], which is similar but may return null. +typedef StreamChannelListViewItemBuilder = Widget Function( + BuildContext context, + Channel channel, +); + +typedef StreamChannelTapCallback = void Function(Channel); + +Widget _defaultSeparatorBuilder(context, index) => + const _ChannelListSeparator(); + +class StreamChannelListView extends StatefulWidget { + const StreamChannelListView({ + Key? key, + required this.controller, + this.itemBuilder, + this.separatorBuilder = _defaultSeparatorBuilder, + this.onChannelTap, + this.onChannelLongPress, + this.padding, + this.physics, + this.reverse = false, + this.scrollController, + this.primary, + this.scrollBehavior, + this.shrinkWrap = false, + this.cacheExtent, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + }) : super(key: key); + + final StreamChannelListController controller; + + final StreamChannelListViewItemBuilder? itemBuilder; + + final IndexedWidgetBuilder separatorBuilder; + + /// Called when the user taps this list tile. + /// + /// Inoperative if [enabled] is false. + final StreamChannelTapCallback? onChannelTap; + + /// Called when the user long-presses on this list tile. + /// + /// Inoperative if [enabled] is false. + final StreamChannelTapCallback? onChannelLongPress; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the application, + /// the ScrollAction will be evaluated using this scroll view, for example, + /// when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollController] is null. + final bool? primary; + + /// {@macro flutter.widgets.shadow.scrollBehavior} + /// + /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit + /// [ScrollPhysics] is provided in [physics], it will take precedence, + /// followed by [scrollBehavior], and then the inherited ancestor + /// [ScrollBehavior]. + final ScrollBehavior? scrollBehavior; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + @override + _StreamChannelListViewState createState() => _StreamChannelListViewState(); +} + +class _StreamChannelListViewState extends State { + StreamChannelListController get _controller => widget.controller; + + // Avoids duplicate requests on rebuilds. + bool _hasRequestedNextPage = false; + + @override + void initState() { + super.initState(); + _controller.doInitialLoad(); + } + + @override + void didUpdateWidget(covariant StreamChannelListView oldWidget) { + super.didUpdateWidget(oldWidget); + if (_controller != oldWidget.controller) { + // reset duplicate requests flag + _hasRequestedNextPage = false; + _controller.doInitialLoad(); + } + } + + @override + Widget build(BuildContext context) => + PagedValueListenableBuilder( + valueListenable: widget.controller, + builder: (context, value, _) => value.when( + (channels, nextPageKey, error) { + if (channels.isEmpty) { + return const Center(child: Text('No channels')); + } + + return ListView.separated( + padding: widget.padding, + physics: widget.physics, + reverse: widget.reverse, + controller: widget.scrollController, + primary: widget.primary, + shrinkWrap: widget.shrinkWrap, + keyboardDismissBehavior: widget.keyboardDismissBehavior, + restorationId: widget.restorationId, + dragStartBehavior: widget.dragStartBehavior, + cacheExtent: widget.cacheExtent, + itemCount: value.itemCount, + separatorBuilder: widget.separatorBuilder, + itemBuilder: (context, index) { + if (!_hasRequestedNextPage) { + final newPageRequestTriggerIndex = value.itemCount - 3; + final isBuildingTriggerIndexItem = + index == newPageRequestTriggerIndex; + if (value.hasNextPage && isBuildingTriggerIndexItem) { + // Schedules the request for the end of this frame. + WidgetsBinding.instance?.addPostFrameCallback((_) async { + if (!value.hasError) { + await _controller.loadMore(nextPageKey!); + } + _hasRequestedNextPage = false; + }); + _hasRequestedNextPage = true; + } + } + + if (index == channels.length) { + if (value.hasError) { + return _ChannelListLoadMoreError( + onTap: _controller.retry, + ); + } + return const Center( + child: Padding( + padding: EdgeInsets.all(16), + child: _ChannelListLoadMoreIndicator(), + ), + ); + } + + final channel = channels[index]; + final itemBuilder = widget.itemBuilder; + if (itemBuilder != null) return itemBuilder(context, channel); + + final onTap = widget.onChannelTap; + final onLongPress = widget.onChannelLongPress; + + return StreamChannelListTile( + channel: channel, + onTap: onTap == null ? null : () => onTap(channel), + onLongPress: + onLongPress == null ? null : () => onLongPress(channel), + ); + }, + ); + }, + loading: () => ListView.separated( + padding: widget.padding, + physics: widget.physics, + reverse: widget.reverse, + itemCount: 25, + separatorBuilder: widget.separatorBuilder, + itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + ), + error: (error) => Center(child: Text('Error: $error')), + ), + ); +} + +class _ChannelListLoadMoreIndicator extends StatelessWidget { + const _ChannelListLoadMoreIndicator({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) => const SizedBox( + height: 16, + width: 16, + child: CircularProgressIndicator.adaptive(), + ); +} + +class _ChannelListLoadMoreError extends StatelessWidget { + const _ChannelListLoadMoreError({ + Key? key, + required this.onTap, + }) : super(key: key); + + final GestureTapCallback onTap; + + @override + Widget build(BuildContext context) { + final theme = StreamChatTheme.of(context); + return InkWell( + onTap: onTap, + child: Container( + color: theme.colorTheme.textLowEmphasis.withOpacity(0.9), + child: Padding( + padding: const EdgeInsets.all(16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + context.translations.loadingChannelsError, + style: theme.textTheme.body.copyWith( + color: Colors.white, + ), + ), + StreamSvgIcon.retry(color: Colors.white), + ], + ), + ), + ), + ); + } +} + +class _ChannelListSeparator extends StatelessWidget { + const _ChannelListSeparator({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final effect = StreamChatTheme.of(context).colorTheme.borderBottom; + return Container( + height: 1, + color: effect.color!.withOpacity(effect.alpha ?? 1.0), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart new file mode 100644 index 00000000..e1a8cdeb --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart @@ -0,0 +1,201 @@ +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/group_avatar.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_image.png) +/// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_image_paint.png) +/// +/// It shows the current [Channel] image. +/// +/// ```dart +/// class MyApp extends StatelessWidget { +/// final StreamChatClient client; +/// final Channel channel; +/// +/// MyApp(this.client, this.channel); +/// +/// @override +/// Widget build(BuildContext context) { +/// return MaterialApp( +/// debugShowCheckedModeBanner: false, +/// home: StreamChat( +/// client: client, +/// child: StreamChannel( +/// channel: channel, +/// child: Center( +/// child: ChannelImage( +/// channel: channel, +/// ), +/// ), +/// ), +/// ), +/// ); +/// } +/// } +/// ``` +/// +/// The widget uses a [StreamBuilder] to render the channel information +/// image as soon as it updates. +/// +/// By default the widget radius size is 40x40 pixels. +/// Set the property [constraints] to set a custom dimension. +/// +/// The widget renders the ui based on the first ancestor of type +/// [StreamChatTheme]. +/// Modify it to change the widget appearance. +class StreamChannelAvatar extends StatelessWidget { + /// Instantiate a new ChannelImage + StreamChannelAvatar({ + Key? key, + required this.channel, + this.constraints, + this.onTap, + this.borderRadius, + this.selected = false, + this.selectionColor, + this.selectionThickness = 4, + }) : assert( + channel.state != null, + 'Channel ${channel.id} is not initialized', + ), + super(key: key); + + /// [BorderRadius] to display the widget + final BorderRadius? borderRadius; + + /// The channel to show the image of + final Channel channel; + + /// The diameter of the image + final BoxConstraints? constraints; + + /// The function called when the image is tapped + final VoidCallback? onTap; + + /// If image is selected + final bool selected; + + /// Selection color for image + final Color? selectionColor; + + /// Thickness of selection image + final double selectionThickness; + + @override + Widget build(BuildContext context) { + final client = channel.client.state; + + final chatThemeData = StreamChatTheme.of(context); + final colorTheme = chatThemeData.colorTheme; + final previewTheme = chatThemeData.channelPreviewTheme.avatarTheme; + + return BetterStreamBuilder( + stream: channel.imageStream, + initialData: channel.image, + builder: (context, channelImage) { + Widget child = ClipRRect( + borderRadius: borderRadius ?? previewTheme?.borderRadius, + child: Container( + constraints: constraints ?? previewTheme?.constraints, + decoration: BoxDecoration(color: colorTheme.accentPrimary), + child: InkWell( + onTap: onTap, + child: CachedNetworkImage( + imageUrl: channelImage, + errorWidget: (_, __, ___) => Center( + child: Text( + channel.name?[0] ?? '', + style: TextStyle( + color: colorTheme.barsBg, + fontWeight: FontWeight.bold, + ), + ), + ), + fit: BoxFit.cover, + ), + ), + ), + ); + + if (selected) { + child = ClipRRect( + key: const Key('selectedImage'), + borderRadius: BorderRadius.circular(selectionThickness) + + (borderRadius ?? + previewTheme?.borderRadius ?? + BorderRadius.zero), + child: Container( + constraints: constraints ?? previewTheme?.constraints, + color: selectionColor ?? colorTheme.accentPrimary, + child: Padding( + padding: EdgeInsets.all(selectionThickness), + child: child, + ), + ), + ); + } + return child; + }, + noDataBuilder: (context) { + final currentUser = client.currentUser!; + final otherMembers = channel.state!.members + .where((it) => it.userId != currentUser.id) + .toList(growable: false); + + // our own space, no other members + if (otherMembers.isEmpty) { + return BetterStreamBuilder( + stream: client.currentUserStream.map((it) => it!), + initialData: currentUser, + builder: (context, user) => UserAvatar( + borderRadius: borderRadius ?? previewTheme?.borderRadius, + user: user, + constraints: constraints ?? previewTheme?.constraints, + onTap: onTap != null ? (_) => onTap!() : null, + selected: selected, + selectionColor: selectionColor ?? colorTheme.accentPrimary, + selectionThickness: selectionThickness, + ), + ); + } + + // 1-1 Conversation + if (otherMembers.length == 1) { + final member = otherMembers.first; + return BetterStreamBuilder( + stream: channel.state!.membersStream.map( + (members) => members.firstWhere( + (it) => it.userId == member.userId, + orElse: () => member, + ), + ), + initialData: member, + builder: (context, member) => UserAvatar( + borderRadius: borderRadius ?? previewTheme?.borderRadius, + user: member.user!, + constraints: constraints ?? previewTheme?.constraints, + onTap: onTap != null ? (_) => onTap!() : null, + selected: selected, + selectionColor: selectionColor ?? colorTheme.accentPrimary, + selectionThickness: selectionThickness, + ), + ); + } + + // Group conversation + return GroupAvatar( + channel: channel, + members: otherMembers, + borderRadius: borderRadius ?? previewTheme?.borderRadius, + constraints: constraints ?? previewTheme?.constraints, + onTap: onTap, + selected: selected, + selectionColor: selectionColor ?? colorTheme.accentPrimary, + selectionThickness: selectionThickness, + ); + }, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart new file mode 100644 index 00000000..2bcd56e8 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart @@ -0,0 +1,93 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// It shows the current [Channel] name using a [Text] widget. +/// +/// The widget uses a [StreamBuilder] to render the channel information +/// image as soon as it updates. +class StreamChannelName extends StatelessWidget { + /// Instantiate a new ChannelName + StreamChannelName({ + Key? key, + required this.channel, + this.textStyle, + this.textOverflow = TextOverflow.ellipsis, + }) : assert( + channel.state != null, + 'Channel ${channel.id} is not initialized', + ), + super(key: key); + + final Channel channel; + + /// The style of the text displayed + final TextStyle? textStyle; + + /// How visual overflow should be handled. + final TextOverflow textOverflow; + + @override + Widget build(BuildContext context) => BetterStreamBuilder( + stream: channel.nameStream, + initialData: channel.name, + builder: (context, channelName) => Text( + channelName, + style: textStyle, + overflow: textOverflow, + ), + noDataBuilder: (context) => _generateName( + channel.client.state.currentUser!, + channel.state!.members, + ), + ); + + Widget _generateName( + User currentUser, + List members, + ) => + LayoutBuilder( + builder: (context, constraints) { + var channelName = context.translations.noTitleText; + final otherMembers = members.where( + (member) => member.userId != currentUser.id, + ); + + if (otherMembers.isNotEmpty) { + if (otherMembers.length == 1) { + final user = otherMembers.first.user; + if (user != null) { + channelName = user.name; + } + } else { + final maxWidth = constraints.maxWidth; + final maxChars = maxWidth / (textStyle?.fontSize ?? 1); + var currentChars = 0; + final currentMembers = []; + otherMembers.forEach((element) { + final newLength = + currentChars + (element.user?.name.length ?? 0); + if (newLength < maxChars) { + currentChars = newLength; + currentMembers.add(element); + } + }); + + final exceedingMembers = + otherMembers.length - currentMembers.length; + channelName = + '${currentMembers.map((e) => e.user?.name).join(', ')} ' + '${exceedingMembers > 0 ? '+ $exceedingMembers' : ''}'; + } + } + + return Text( + channelName, + style: textStyle, + overflow: textOverflow, + ); + }, + ); +} diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index cd0d93a0..ce82789a 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -48,3 +48,5 @@ export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; export 'src/visible_footnote.dart'; +export 'src/v4/channel_list_view/stream_channel_list_view.dart'; +export 'src/v4/channel_list_view/stream_channel_list_controller.dart'; From 2cab266c90ccd173edd3711994de2b957d25c99d Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 25 Nov 2021 17:33:19 +0530 Subject: [PATCH 027/201] feat(ui): add channel list event handler in channel list controller. Signed-off-by: xsahil03x --- .../lib/src/paged_value_notifier.dart | 70 +++- .../stream_channel_list_controller.dart | 213 +++++++++++- .../stream_channel_list_event_handler.dart | 311 ++++++++++++++++++ .../stream_channel_list_view.dart | 91 +++-- 4 files changed, 628 insertions(+), 57 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart index d71db24d..d2f5b373 100644 --- a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart +++ b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart @@ -10,6 +10,14 @@ const defaultInitialPagedLimitMultiplier = 3; typedef PagedValueListenableBuilder = ValueListenableBuilder>; +/// A [PagedValueNotifier] that uses a [PagedListenable] to load data. +/// +/// This class is useful when you need to load data from a server +/// using a [PagedListenable] and want to keep the UI-driven refresh +/// signals in the [PagedListenable]. +/// +/// [PagedValueNotifier] is a [ValueNotifier] that emits a [PagedValue] +/// whenever the data is loaded or an error occurs. abstract class PagedValueNotifier extends ValueNotifier> { /// Creates a [PagedValueNotifier] @@ -18,14 +26,33 @@ abstract class PagedValueNotifier /// Stores initialValue in case we need to call [refresh]. final PagedValue _initialValue; + /// Returns the currently loaded items + List get currentItems => value.asSuccess.items; + + /// Appends [newItems] to the previously loaded ones and replaces + /// the next page's key. + void appendPage({ + required List newItems, + required Key nextPageKey, + }) { + final updatedItems = currentItems + newItems; + value = PagedValue(items: updatedItems, nextPageKey: nextPageKey); + } + + /// Appends [newItems] to the previously loaded ones and sets the next page + /// key to `null`. + void appendLastPage(List newItems) { + final updatedItems = currentItems + newItems; + value = PagedValue(items: updatedItems); + } + /// Retry any failed load requests. /// /// Unlike [refresh], this does not resets the whole [value], /// it only retries the last failed load request. Future retry() { - var lastValue = value; + final lastValue = value.asSuccess; assert(lastValue.hasError, ''); - lastValue = lastValue as Success; final nextPageKey = lastValue.nextPageKey; // resetting the error @@ -53,7 +80,7 @@ abstract class PagedValueNotifier abstract class PagedValue with _$PagedValue { const PagedValue._(); - /// Creates a new instance of [PagedValue] with the given [key] and [value]. + /// Represents the success state of the [PagedValue] // @Assert( // 'nextPageKey != null', // 'Cannot set an error if all the pages are already fetched', @@ -69,24 +96,35 @@ abstract class PagedValue with _$PagedValue { StreamChatError? error, }) = Success; - bool get hasNextPage { - assert(this is Success, ''); - return (this as Success).nextPageKey != null; + /// Represents the loading state of the [PagedValue]. + const factory PagedValue.loading() = Loading; + + /// Represents the error state of the [PagedValue]. + const factory PagedValue.error(StreamChatError error) = Error; + + /// Returns `true` if the [PagedValue] is [Success]. + bool get isSuccess => this is Success; + + /// Returns the [PagedValue] as [Success]. + Success get asSuccess { + assert( + isSuccess, + 'Cannot get asSuccess if the PagedValue is not in the Success state', + ); + return this as Success; } - bool get hasError { - assert(this is Success, ''); - return (this as Success).error != null; - } + /// Returns `true` if the [PagedValue] is [Success] + /// and has more items to load. + bool get hasNextPage => asSuccess.nextPageKey != null; + /// Returns `true` if the [PagedValue] is [Success] and has an error. + bool get hasError => asSuccess.error != null; + + /// int get itemCount { - assert(this is Success, ''); - final count = (this as Success).items.length; + final count = asSuccess.items.length; if (hasNextPage || hasError) return count + 1; return count; } - - const factory PagedValue.loading() = Loading; - - const factory PagedValue.error(StreamChatError error) = Error; } diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index 4bfc7130..d4715619 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -1,15 +1,40 @@ +import 'dart:async'; + import 'package:stream_chat/stream_chat.dart' hide Success; import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_event_handler.dart' + as event_handler; +const defaultChannelPagedLimit = 10; + +typedef ChannelListEventHandler = void Function( + Event event, + StreamChannelListController controller, +); + +/// A controller for the channel list view. class StreamChannelListController extends PagedValueNotifier { /// Creates a [StreamChannelListController]. StreamChannelListController({ required this.client, this.filter, this.sort, - this.limit = 2, + this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, + this.onChannelDeleted = event_handler.onChannelDeleted, + this.onChannelHidden = event_handler.onChannelHidden, + this.onChannelTruncated = event_handler.onChannelTruncated, + this.onChannelUpdated = event_handler.onChannelUpdated, + this.onChannelVisible = event_handler.onChannelVisible, + this.onConnectionRecovered = event_handler.onConnectionRecovered, + this.onMessageNew = event_handler.onMessageNew, + this.onNotificationAddedToChannel = + event_handler.onNotificationAddedToChannel, + this.onNotificationMessageNew = event_handler.onNotificationMessageNew, + this.onNotificationRemovedFromChannel = + event_handler.onNotificationRemovedFromChannel, + this.onUserPresenceChanged = event_handler.onUserPresenceChanged, }) : super(const PagedValue.loading()); /// Creates a [StreamChannelListController] from the passed [value]. @@ -18,9 +43,22 @@ class StreamChannelListController extends PagedValueNotifier { required this.client, this.filter, this.sort, - this.limit = 2, + this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, + this.onChannelDeleted = event_handler.onChannelDeleted, + this.onChannelHidden = event_handler.onChannelHidden, + this.onChannelTruncated = event_handler.onChannelTruncated, + this.onChannelUpdated = event_handler.onChannelUpdated, + this.onChannelVisible = event_handler.onChannelVisible, + this.onConnectionRecovered = event_handler.onConnectionRecovered, + this.onMessageNew = event_handler.onMessageNew, + this.onNotificationAddedToChannel = + event_handler.onNotificationAddedToChannel, + this.onNotificationMessageNew = event_handler.onNotificationMessageNew, + this.onNotificationRemovedFromChannel = + event_handler.onNotificationRemovedFromChannel, + this.onUserPresenceChanged = event_handler.onUserPresenceChanged, }) : super(value); /// The client to use for the channel list. @@ -41,6 +79,82 @@ class StreamChannelListController extends PagedValueNotifier { /// The limit to apply to the member list. final int? memberLimit; + /// Callback function which gets called for the event + /// [EventType.channelDeleted]. + /// + /// By default, calls [event_handler.onChannelDeleted] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onChannelDeleted; + + /// Callback function which gets called for the event + /// [EventType.channelHidden]. + /// + /// By default, calls [event_handler.onChannelHidden] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onChannelHidden; + + /// Callback function which gets called for the event + /// [EventType.channelTruncated]. + /// + /// By default, calls [event_handler.onChannelTruncated] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onChannelTruncated; + + /// Callback function which gets called for the event + /// [EventType.channelUpdated]. + /// + /// By default, calls [event_handler.onChannelUpdated] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onChannelUpdated; + + /// Callback function which gets called for the event + /// [EventType.channelVisible]. + /// + /// By default, calls [event_handler.onChannelVisible] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onChannelVisible; + + /// Callback function which gets called for the event + /// [EventType.connectionRecovered]. + /// + /// By default, calls [event_handler.onConnectionRecovered] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onConnectionRecovered; + + /// Callback function which gets called for the event [EventType.messageNew]. + /// + /// By default, calls [event_handler.onMessageNew] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onMessageNew; + + /// Callback function which gets called for the event + /// [EventType.notificationAddedToChannel]. + /// + /// By default, calls [event_handler.onNotificationAddedToChannel] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onNotificationAddedToChannel; + + /// Callback function which gets called for the event + /// [EventType.notificationMessageNew]. + /// + /// By default, calls [event_handler.onNotificationMessageNew] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onNotificationMessageNew; + + /// Callback function which gets called for the event + /// [EventType.notificationRemovedFromChannel]. + /// + /// By default, calls [event_handler.onNotificationRemovedFromChannel] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onNotificationRemovedFromChannel; + + /// Callback function which gets called for the event + /// 'user.presence.changed' and [EventType.userUpdated]. + /// + /// By default, calls [event_handler.onUserPresenceChanged] + /// with the [Event] and the [StreamChannelListController]. + final ChannelListEventHandler onUserPresenceChanged; + @override Future doInitialLoad() async { final limit = this.limit * defaultInitialPagedLimitMultiplier; @@ -58,15 +172,16 @@ class StreamChannelListController extends PagedValueNotifier { nextPageKey: nextKey, ); } - } catch (error) { - value = PagedValue.error(StreamChatError('error')); + // start listening events + _subscribeToChannelListEvents(); + } on StreamChatError catch (error) { + value = PagedValue.error(error); } } @override Future loadMore(int nextPageKey) async { - assert(value is Success, ''); - final previousValue = value as Success; + final previousValue = value.asSuccess; try { await for (final channels in client.queryChannels( @@ -84,8 +199,90 @@ class StreamChannelListController extends PagedValueNotifier { nextPageKey: nextKey, ); } - } catch (error) { - value = previousValue.copyWith(error: StreamChatError('error')); + } on StreamChatError catch (error) { + value = previousValue.copyWith(error: error); } } + + /// Replaces the previously loaded channels with [channels] and updates + /// the nextPageKey. + set channels(List channels) { + value = PagedValue( + items: channels, + nextPageKey: channels.length, + ); + } + + /// Returns/Creates a new Channel and starts watching it. + Future getChannel({ + required String id, + required String type, + }) async { + final channel = client.channel(type, id: id); + await channel.watch(); + return channel; + } + + StreamSubscription? _channelEventSubscription; + + // Subscribes to the channel list events. + void _subscribeToChannelListEvents() { + if (_channelEventSubscription != null) { + _unsubscribeFromChannelListEvents(); + } + + _channelEventSubscription = client.on().listen((event) { + final eventType = event.type; + if (eventType == EventType.channelDeleted) { + onChannelDeleted(event, this); + } else if (eventType == EventType.channelHidden) { + onChannelHidden(event, this); + } else if (eventType == EventType.channelTruncated) { + onChannelTruncated(event, this); + } else if (eventType == EventType.channelUpdated) { + onChannelUpdated(event, this); + } else if (eventType == EventType.channelVisible) { + onChannelVisible(event, this); + } else if (eventType == EventType.connectionRecovered) { + onConnectionRecovered(event, this); + } else if (eventType == EventType.connectionChanged) { + if (event.online != null) onConnectionRecovered(event, this); + } else if (eventType == EventType.messageNew) { + onMessageNew(event, this); + } else if (eventType == EventType.notificationAddedToChannel) { + onNotificationAddedToChannel(event, this); + } else if (eventType == EventType.notificationMessageNew) { + onNotificationMessageNew(event, this); + } else if (eventType == EventType.notificationRemovedFromChannel) { + onNotificationRemovedFromChannel(event, this); + } else if (eventType == 'user.presence.changed' || + eventType == EventType.userUpdated) { + onUserPresenceChanged(event, this); + } + }); + } + + // Unsubscribes from all channel list events. + void _unsubscribeFromChannelListEvents() { + if (_channelEventSubscription != null) { + _channelEventSubscription!.cancel(); + _channelEventSubscription = null; + } + } + + /// Pauses all subscriptions added to this composite. + void pauseEventsSubscription([Future? resumeSignal]) { + _channelEventSubscription?.pause(resumeSignal); + } + + /// Resumes all subscriptions added to this composite. + void resumeEventsSubscription() { + _channelEventSubscription?.resume(); + } + + @override + void dispose() { + _unsubscribeFromChannelListEvents(); + super.dispose(); + } } diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart new file mode 100644 index 00000000..e35549a9 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart @@ -0,0 +1,311 @@ +import 'package:stream_chat/stream_chat.dart' show Event; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// Handles [EventType.channelDeleted] event. +/// +/// This event is fired when a channel is deleted. +/// +/// By default, this removes the channel from the list of channels. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onChannelDeleted: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onChannelDeleted( + Event event, + StreamChannelListController controller, +) { + final channels = [...controller.currentItems]; + + final updatedChannels = channels + ..removeWhere( + (it) => it.cid == (event.cid ?? event.channel?.cid), + ); + + controller.channels = updatedChannels; +} + +/// Handles [EventType.channelHidden] event. +/// +/// This event is fired when a channel is hidden. +/// +/// By default, this removes the channel from the list of channels. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onChannelHidden: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onChannelHidden( + Event event, + StreamChannelListController controller, +) { + onChannelDeleted(event, controller); +} + +/// Handles [EventType.channelTruncated] event. +/// +/// This event is fired when a channel is truncated. +/// +/// By default, this refreshes the whole channel list. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onChannelTruncated: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onChannelTruncated( + Event event, + StreamChannelListController controller, +) { + controller.refresh(); +} + +/// Handles [EventType.channelUpdated] event. +/// +/// This event is fired when a channel is updated. +/// +/// By default, this updates the channel received in the event. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onChannelUpdated: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onChannelUpdated( + Event event, + StreamChannelListController controller, +) { + final eventChannel = event.channel; + if (eventChannel == null) return; + + final channels = [...controller.currentItems]; + final channelIndex = channels.indexWhere( + (it) => it.cid == (event.cid ?? eventChannel.cid), + ); + + if (channelIndex >= 0) { + final channelState = ChannelState(channel: eventChannel); + channels[channelIndex].state?.updateChannelState(channelState); + } + + controller.channels = channels; +} + +/// Handles [EventType.channelVisible] event. +/// +/// This event is fired when a channel is made visible. +/// +/// By default, this adds the channel to the list of channels. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onChannelVisible: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onChannelVisible( + Event event, + StreamChannelListController controller, +) async { + final channelId = event.channelId; + final channelType = event.channelType; + + if (channelId == null || channelType == null) return; + + final channel = await controller.getChannel( + id: channelId, + type: channelType, + ); + + final currentChannels = [...controller.currentItems]; + + final updatedChannels = [ + channel, + ...currentChannels..removeWhere((it) => it.cid == channel.cid), + ]; + + controller.channels = updatedChannels; +} + +/// Handles [EventType.connectionRecovered] event. +/// +/// This event is fired when the client web-socket connection recovers. +/// +/// By default, this refreshes the whole channel list. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onConnectionRecovered: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onConnectionRecovered( + Event event, + StreamChannelListController controller, +) { + controller.refresh(); +} + +/// Handles [EventType.messageNew] event. +/// +/// This event is fired when a new message is created in one of the channels +/// we are currently watching. +/// +/// By default, this moves the channel to the top of the list. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onMessageNew: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onMessageNew( + Event event, + StreamChannelListController controller, +) { + final channelCid = event.cid; + if (channelCid == null) return; + + final channels = [...controller.currentItems]; + + final channelIndex = channels.indexWhere((it) => it.cid == channelCid); + if (channelIndex <= 0) return; + + final channel = channels.removeAt(channelIndex); + channels.insert(0, channel); + + controller.channels = [...channels]; +} + +/// Handles [EventType.notificationAddedToChannel] event. +/// +/// This event is fired when a channel is added which we are not watching. +/// +/// By default, this adds the channel and moves it to the top of list. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onNotificationAddedToChannel: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onNotificationAddedToChannel( + Event event, + StreamChannelListController controller, +) { + onChannelVisible(event, controller); +} + +/// Handles [EventType.notificationMessageNew] event. +/// +/// This event is fired when a new message is created in a channel which we are +/// not currently watching. +/// +/// By default, this adds the channel and moves it to the top of list. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onNotificationMessageNew: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onNotificationMessageNew( + Event event, + StreamChannelListController controller, +) { + onChannelVisible(event, controller); +} + +/// Handles [EventType.notificationRemovedFromChannel] event. +/// +/// This event is fired when a user is removed from a channel which we are +/// not currently watching. +/// +/// By default, this removes the event channel from the list. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onNotificationRemovedFromChannel: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onNotificationRemovedFromChannel( + Event event, + StreamChannelListController controller, +) { + final channels = [...controller.currentItems]; + final updatedChannels = channels.where((it) => it.cid != event.channel?.cid); + final listChanged = channels.length != updatedChannels.length; + + if (!listChanged) return; + + controller.channels = [...updatedChannels]; +} + +/// Handles 'user.presence.changed' and [EventType.userUpdated] event. +/// +/// This event is fired when a user's presence changes or gets updated. +/// +/// By default, this updates the channel member with the event user. +/// +/// ```dart +/// StreamChannelListController( +/// client: client, +/// onUserPresenceChanged: (event, controller) { +/// // Do something +/// }, +/// ); +/// ``` +void onUserPresenceChanged( + Event event, + StreamChannelListController controller, +) { + final user = event.user; + if (user == null) return; + + final channels = [...controller.currentItems]; + + final updatedChannels = channels.map((channel) { + final members = [...channel.state!.members]; + final memberIndex = members.indexWhere( + (it) => user.id == (it.userId ?? it.user?.id), + ); + + if (memberIndex < 0) return channel; + + members[memberIndex] = members[memberIndex].copyWith(user: user); + final updatedState = ChannelState(members: [...members]); + channel.state!.updateChannelState(updatedState); + + return channel; + }); + + controller.channels = [...updatedChannels]; +} diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index ea9f5c1e..b774eaea 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -10,32 +10,44 @@ import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_tile.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; -/// Signature for a function that creates a widget for a given index, e.g., in a -/// list. -/// -/// Used by [GridView.builder] and other APIs that use lazily-generated widgets. -/// -/// See also: -/// -/// * [WidgetBuilder], which is similar but only takes a [BuildContext]. -/// * [TransitionBuilder], which is similar but also takes a child. -/// * [NullableIndexedWidgetBuilder], which is similar but may return null. +Widget defaultSeparatorBuilder(context, index) => + const StreamChannelListSeparator(); + typedef StreamChannelListViewItemBuilder = Widget Function( BuildContext context, Channel channel, ); -typedef StreamChannelTapCallback = void Function(Channel); - -Widget _defaultSeparatorBuilder(context, index) => - const _ChannelListSeparator(); - +/// A [ListView] that shows a list of [Channel]s, +/// it uses [StreamChannelListTile] as a default item. +/// +/// This is the new version of [ChannelListView] that uses +/// [StreamChannelListController]. +/// +/// Example: +/// +/// ```dart +/// StreamChannelListView( +/// controller: controller, +/// onChannelTap: (channel) { +/// // Handle channel tap event +/// }, +/// onChannelLongPress: (channel) { +/// // Handle channel long press event +/// }, +/// ) +/// ``` +/// +/// See also: +/// * [StreamChannelListTile] +/// * [StreamChannelListController] class StreamChannelListView extends StatefulWidget { + /// Creates a new instance of [StreamChannelListView]. const StreamChannelListView({ Key? key, required this.controller, this.itemBuilder, - this.separatorBuilder = _defaultSeparatorBuilder, + this.separatorBuilder = defaultSeparatorBuilder, this.onChannelTap, this.onChannelLongPress, this.padding, @@ -51,21 +63,23 @@ class StreamChannelListView extends StatefulWidget { this.restorationId, }) : super(key: key); + /// The [StreamChannelListController] used to control the list of channels. final StreamChannelListController controller; + /// A builder that is called to build items in the [ListView]. + /// + /// The `index` parameter is the index of the list tile in the list and the + /// `channel` parameter is the [Channel] at that position. final StreamChannelListViewItemBuilder? itemBuilder; + /// A builder that is called to build the list separator. final IndexedWidgetBuilder separatorBuilder; /// Called when the user taps this list tile. - /// - /// Inoperative if [enabled] is false. - final StreamChannelTapCallback? onChannelTap; + final void Function(Channel)? onChannelTap; /// Called when the user long-presses on this list tile. - /// - /// Inoperative if [enabled] is false. - final StreamChannelTapCallback? onChannelLongPress; + final void Function(Channel)? onChannelLongPress; /// The amount of space by which to inset the children. final EdgeInsetsGeometry? padding; @@ -254,11 +268,11 @@ class _StreamChannelListViewState extends State { final newPageRequestTriggerIndex = value.itemCount - 3; final isBuildingTriggerIndexItem = index == newPageRequestTriggerIndex; - if (value.hasNextPage && isBuildingTriggerIndexItem) { + if (nextPageKey != null && isBuildingTriggerIndexItem) { // Schedules the request for the end of this frame. WidgetsBinding.instance?.addPostFrameCallback((_) async { if (!value.hasError) { - await _controller.loadMore(nextPageKey!); + await _controller.loadMore(nextPageKey); } _hasRequestedNextPage = false; }); @@ -267,15 +281,15 @@ class _StreamChannelListViewState extends State { } if (index == channels.length) { - if (value.hasError) { - return _ChannelListLoadMoreError( + if (error != null) { + return ChannelListLoadMoreError( onTap: _controller.retry, ); } return const Center( child: Padding( padding: EdgeInsets.all(16), - child: _ChannelListLoadMoreIndicator(), + child: ChannelListLoadMoreIndicator(), ), ); } @@ -309,8 +323,12 @@ class _StreamChannelListViewState extends State { ); } -class _ChannelListLoadMoreIndicator extends StatelessWidget { - const _ChannelListLoadMoreIndicator({Key? key}) : super(key: key); +/// A [StreamChannelListTile] that can be used in a [ListView] to show a +/// loading tile while waiting for the [StreamChannelListController] to load +/// more channels. +class ChannelListLoadMoreIndicator extends StatelessWidget { + /// Creates a new instance of [ChannelListLoadMoreIndicator]. + const ChannelListLoadMoreIndicator({Key? key}) : super(key: key); @override Widget build(BuildContext context) => const SizedBox( @@ -320,12 +338,16 @@ class _ChannelListLoadMoreIndicator extends StatelessWidget { ); } -class _ChannelListLoadMoreError extends StatelessWidget { - const _ChannelListLoadMoreError({ +/// A [StreamChannelListTile] that is used to display the error indicator when +/// loading more channels fails. +class ChannelListLoadMoreError extends StatelessWidget { + /// Creates a new instance of [ChannelListLoadMoreError]. + const ChannelListLoadMoreError({ Key? key, required this.onTap, }) : super(key: key); + /// The callback to invoke when the user taps on the error indicator. final GestureTapCallback onTap; @override @@ -355,8 +377,11 @@ class _ChannelListLoadMoreError extends StatelessWidget { } } -class _ChannelListSeparator extends StatelessWidget { - const _ChannelListSeparator({Key? key}) : super(key: key); +/// A widget that is used to display a separator between +/// [StreamChannelListTile] items. +class StreamChannelListSeparator extends StatelessWidget { + /// Creates a new instance of [StreamChannelListSeparator]. + const StreamChannelListSeparator({Key? key}) : super(key: key); @override Widget build(BuildContext context) { From 6466d58156269ca5936a37396f746d5a271e1c0e Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 25 Nov 2021 18:01:16 +0530 Subject: [PATCH 028/201] chore(ui): add docs Signed-off-by: xsahil03x --- .../stream_channel_list_loading_tile.dart | 5 ++ .../stream_channel_list_tile.dart | 53 ++++++++----------- .../stream_channel_list_view.dart | 9 ++-- .../lib/src/v4/stream_channel_name.dart | 1 + 4 files changed, 35 insertions(+), 33 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart index 9e0231d5..69a6cf6e 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart @@ -2,7 +2,12 @@ import 'package:flutter/material.dart'; import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// A shimmering list item which shows a loading effect. +/// +/// This is used by [StreamChannelListView] to show a loading effect while +/// the list is being loaded. class StreamChannelListLoadingTile extends StatelessWidget { + /// Creates a new instance of [StreamChannelListLoadingTile] widget. const StreamChannelListLoadingTile({ Key? key, this.visualDensity = VisualDensity.standard, diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index f4fb4fde..a3d0f67a 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -2,6 +2,7 @@ import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; import 'package:jiffy/jiffy.dart'; import 'package:stream_chat/stream_chat.dart' show Channel; +import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/sending_indicator.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/theme/channel_preview_theme.dart'; @@ -10,9 +11,20 @@ import 'package:stream_chat_flutter/src/unread_indicator.dart'; import 'package:stream_chat_flutter/src/v4/stream_channel_avatar.dart'; import 'package:stream_chat_flutter/src/v4/stream_channel_name.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; -import 'package:stream_chat_flutter/src/extension.dart'; +/// A widget that displays a channel preview. +/// +/// This widget is intended to be used as a Tile in [StreamChannelListView] +/// +/// It shows the last message of the channel, the last message time, the unread +/// message count, the typing indicator, the sending indicator and the channel +/// avatar. +/// +/// See also: +/// * [StreamChannelAvatar] +/// * [StreamChannelName] class StreamChannelListTile extends StatelessWidget { + /// Creates a new instance of [StreamChannelListTile] widget. StreamChannelListTile({ Key? key, required this.channel, @@ -29,50 +41,22 @@ class StreamChannelListTile extends StatelessWidget { ), super(key: key); + /// The channel to display. final Channel channel; /// A widget to display before the title. - /// - /// Typically an [Icon] or a [CircleAvatar] widget. final Widget? leading; /// The primary content of the list tile. - /// - /// Typically a [Text] widget. - /// - /// This should not wrap. To enforce the single line limit, use - /// [Text.maxLines]. final Widget? title; /// Additional content displayed below the title. - /// - /// Typically a [Text] widget. - /// - /// If [isThreeLine] is false, this should not wrap. - /// - /// If [isThreeLine] is true, this should be configured to take a maximum of - /// two lines. For example, you can use [Text.maxLines] to enforce the number - /// of lines. - /// - /// The subtitle's default [TextStyle] depends on [TextTheme.bodyText2] except - /// [TextStyle.color]. The [TextStyle.color] depends on the value of [enabled] - /// and [selected]. - /// - /// When [enabled] is false, the text color is set to [ThemeData.disabledColor]. - /// - /// When [selected] is false, the text color is set to [ListTileTheme.textColor] - /// if it's not null and to [TextTheme.caption]'s color if [ListTileTheme.textColor] - /// is null. final Widget? subtitle; /// Called when the user taps this list tile. - /// - /// Inoperative if [enabled] is false. final GestureTapCallback? onTap; /// Called when the user long-presses on this list tile. - /// - /// Inoperative if [enabled] is false. final GestureLongPressCallback? onLongPress; /// Defines how compact the list tile's layout will be. @@ -196,7 +180,9 @@ class StreamChannelListTile extends StatelessWidget { } } +/// A widget that displays the channel last message date. class ChannelLastMessageDate extends StatelessWidget { + /// Creates a new instance of the [ChannelLastMessageDate] widget. ChannelLastMessageDate({ Key? key, required this.channel, @@ -207,6 +193,7 @@ class ChannelLastMessageDate extends StatelessWidget { ), super(key: key); + /// The channel to display the last message date for. final Channel channel; /// The style of the text displayed @@ -246,7 +233,9 @@ class ChannelLastMessageDate extends StatelessWidget { ); } +/// A widget that displays the subtitle for [StreamChannelListTile]. class ChannelListTileSubtitle extends StatelessWidget { + /// Creates a new instance of [StreamChannelListTileSubtitle] widget. ChannelListTileSubtitle({ Key? key, required this.channel, @@ -257,6 +246,7 @@ class ChannelListTileSubtitle extends StatelessWidget { ), super(key: key); + /// The channel to create the subtitle from. final Channel channel; /// The style of the text displayed @@ -287,7 +277,9 @@ class ChannelListTileSubtitle extends StatelessWidget { } } +/// A widget that displays the last message of a channel. class ChannelLastMessageText extends StatelessWidget { + /// Creates a new instance of [ChannelLastMessageText] widget. ChannelLastMessageText({ Key? key, required this.channel, @@ -298,6 +290,7 @@ class ChannelLastMessageText extends StatelessWidget { ), super(key: key); + /// The channel to display the last message of. final Channel channel; /// The style of the text displayed diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index b774eaea..af493815 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -10,9 +10,12 @@ import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_tile.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; -Widget defaultSeparatorBuilder(context, index) => +/// Default separator builder for [StreamChannelListView]. +Widget defaultSeparatorBuilder(BuildContext context, int index) => const StreamChannelListSeparator(); +/// Signature for the item builder that creates the children of the +/// [StreamChannelListView]. typedef StreamChannelListViewItemBuilder = Widget Function( BuildContext context, Channel channel, @@ -265,13 +268,13 @@ class _StreamChannelListViewState extends State { separatorBuilder: widget.separatorBuilder, itemBuilder: (context, index) { if (!_hasRequestedNextPage) { - final newPageRequestTriggerIndex = value.itemCount - 3; + final newPageRequestTriggerIndex = channels.length - 3; final isBuildingTriggerIndexItem = index == newPageRequestTriggerIndex; if (nextPageKey != null && isBuildingTriggerIndexItem) { // Schedules the request for the end of this frame. WidgetsBinding.instance?.addPostFrameCallback((_) async { - if (!value.hasError) { + if (error == null) { await _controller.loadMore(nextPageKey); } _hasRequestedNextPage = false; diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart index 2bcd56e8..7d3be9a7 100644 --- a/packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_name.dart @@ -21,6 +21,7 @@ class StreamChannelName extends StatelessWidget { ), super(key: key); + /// The [Channel] to show the name for. final Channel channel; /// The style of the text displayed From 430a92375a58f3f5b2a8079d16e14d3f2b77fa21 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 29 Nov 2021 16:40:44 +0530 Subject: [PATCH 029/201] chore(ui): add support for presence. Signed-off-by: xsahil03x --- .../stream_channel_list_controller.dart | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index d4715619..de6196cd 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -12,13 +12,14 @@ typedef ChannelListEventHandler = void Function( StreamChannelListController controller, ); -/// A controller for the channel list view. +/// class StreamChannelListController extends PagedValueNotifier { - /// Creates a [StreamChannelListController]. + /// Creates a new instance of [StreamChannelListController]. StreamChannelListController({ required this.client, this.filter, this.sort, + this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, @@ -43,6 +44,7 @@ class StreamChannelListController extends PagedValueNotifier { required this.client, this.filter, this.sort, + this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, @@ -64,21 +66,31 @@ class StreamChannelListController extends PagedValueNotifier { /// The client to use for the channel list. final StreamChatClient client; - /// The filter to apply to the channel list. + /// The query filters to use. + /// You can query on any of the custom fields you've defined on the [Channel]. + /// You can also filter other built-in channel fields. final Filter? filter; - /// The sort to apply to the channel list. + /// The sorting used for the channels matching the filters. + /// Sorting is based on field and direction, multiple sorting options + /// can be provided. + /// You can sort based on last_updated, last_message_at, updated_at, + /// created_at or member_count. + /// Direction can be ascending or descending. final List>? sort; + /// If true you’ll receive user presence updates via the websocket events + final bool presence; + /// The limit to apply to the channel list. final int limit; - /// The limit to apply to the message list. - final int? messageLimit; - - /// The limit to apply to the member list. + /// Number of members to fetch in each channel final int? memberLimit; + /// Number of messages to fetch in each channel + final int? messageLimit; + /// Callback function which gets called for the event /// [EventType.channelDeleted]. /// @@ -164,6 +176,7 @@ class StreamChannelListController extends PagedValueNotifier { sort: sort, memberLimit: memberLimit, messageLimit: messageLimit, + presence: presence, paginationParams: PaginationParams(limit: limit), )) { final nextKey = channels.length < limit ? null : channels.length; @@ -176,6 +189,9 @@ class StreamChannelListController extends PagedValueNotifier { _subscribeToChannelListEvents(); } on StreamChatError catch (error) { value = PagedValue.error(error); + } catch (error) { + final chatError = StreamChatError(error.toString()); + value = PagedValue.error(chatError); } } @@ -189,6 +205,7 @@ class StreamChannelListController extends PagedValueNotifier { sort: sort, memberLimit: memberLimit, messageLimit: messageLimit, + presence: presence, paginationParams: PaginationParams(limit: limit, offset: nextPageKey), )) { final previousItems = previousValue.items; @@ -201,6 +218,9 @@ class StreamChannelListController extends PagedValueNotifier { } } on StreamChatError catch (error) { value = previousValue.copyWith(error: error); + } catch (error) { + final chatError = StreamChatError(error.toString()); + value = previousValue.copyWith(error: chatError); } } From 042315353ced6e541a202ff1e145af3a4a851fc7 Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Thu, 2 Dec 2021 12:34:58 +0100 Subject: [PATCH 030/201] refactor: add ChannelEvents class and remove event callbacks --- .../example/lib/tutorial_part_2.dart | 2 +- .../v4/channel_list_view/channel_events.dart | 123 +++++++++++ .../stream_channel_list_controller.dart | 191 ++++++------------ .../lib/stream_chat_flutter.dart | 5 +- 4 files changed, 188 insertions(+), 133 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_events.dart diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart index 6e1edaba..f704abab 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart @@ -70,7 +70,7 @@ class MyApp extends StatelessWidget { } class ChannelListPage extends StatefulWidget { - ChannelListPage({ + const ChannelListPage({ Key? key, required this.client, }) : super(key: key); diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_events.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_events.dart new file mode 100644 index 00000000..05c2bdbd --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_events.dart @@ -0,0 +1,123 @@ +import 'package:stream_chat/stream_chat.dart' hide Success; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_event_handler.dart' + as event_handler; + +/// Contains methods that are called for certain [Event]s. These methods are +/// called from the [StreamChannelListController]. +/// +/// This class can be mixed in or extended to create custom overrides. +class ChannelEvents { + /// Function which gets called for the event + /// [EventType.channelDeleted]. + /// + /// By default, calls [event_handler.onChannelDeleted] + /// with the [Event] and the [StreamChannelListController]. + void onChannelDeleted(Event event, StreamChannelListController controller) { + event_handler.onChannelDeleted(event, controller); + } + + /// Function which gets called for the event + /// [EventType.channelHidden]. + /// + /// By default, calls [event_handler.onChannelHidden] + /// with the [Event] and the [StreamChannelListController]. + void onChannelHidden(Event event, StreamChannelListController controller) { + event_handler.onChannelHidden(event, controller); + } + + /// Function which gets called for the event + /// [EventType.channelTruncated]. + /// + /// By default, calls [event_handler.onChannelTruncated] + /// with the [Event] and the [StreamChannelListController]. + void onChannelTruncated(Event event, StreamChannelListController controller) { + event_handler.onChannelTruncated(event, controller); + } + + /// Function which gets called for the event + /// [EventType.channelUpdated]. + /// + /// By default, calls [event_handler.onChannelUpdated] + /// with the [Event] and the [StreamChannelListController]. + void onChannelUpdated(Event event, StreamChannelListController controller) { + event_handler.onChannelUpdated(event, controller); + } + + /// Function which gets called for the event + /// [EventType.channelVisible]. + /// + /// By default, calls [event_handler.onChannelVisible] + /// with the [Event] and the [StreamChannelListController]. + void onChannelVisible(Event event, StreamChannelListController controller) { + event_handler.onChannelVisible(event, controller); + } + + /// Function which gets called for the event + /// [EventType.connectionRecovered]. + /// + /// By default, calls [event_handler.onConnectionRecovered] + /// with the [Event] and the [StreamChannelListController]. + void onConnectionRecovered( + Event event, + StreamChannelListController controller, + ) { + event_handler.onConnectionRecovered(event, controller); + } + + /// Function which gets called for the event [EventType.messageNew]. + /// + /// By default, calls [event_handler.onMessageNew] + /// with the [Event] and the [StreamChannelListController]. + void onMessageNew(Event event, StreamChannelListController controller) { + event_handler.onMessageNew(event, controller); + } + + /// Function which gets called for the event + /// [EventType.notificationAddedToChannel]. + /// + /// By default, calls [event_handler.onNotificationAddedToChannel] + /// with the [Event] and the [StreamChannelListController]. + void onNotificationAddedToChannel( + Event event, + StreamChannelListController controller, + ) { + event_handler.onNotificationAddedToChannel(event, controller); + } + + /// Function which gets called for the event + /// [EventType.notificationMessageNew]. + /// + /// By default, calls [event_handler.onNotificationMessageNew] + /// with the [Event] and the [StreamChannelListController]. + void onNotificationMessageNew( + Event event, + StreamChannelListController controller, + ) { + event_handler.onNotificationMessageNew(event, controller); + } + + /// Function which gets called for the event + /// [EventType.notificationRemovedFromChannel]. + /// + /// By default, calls [event_handler.onNotificationRemovedFromChannel] + /// with the [Event] and the [StreamChannelListController]. + void onNotificationRemovedFromChannel( + Event event, + StreamChannelListController controller, + ) { + event_handler.onNotificationRemovedFromChannel(event, controller); + } + + /// Function which gets called for the event + /// 'user.presence.changed' and [EventType.userUpdated]. + /// + /// By default, calls [event_handler.onUserPresenceChanged] + /// with the [Event] and the [StreamChannelListController]. + void onUserPresenceChanged( + Event event, + StreamChannelListController controller, + ) { + event_handler.onUserPresenceChanged(event, controller); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index de6196cd..3ea6a614 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -2,68 +2,72 @@ import 'dart:async'; import 'package:stream_chat/stream_chat.dart' hide Success; import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_event_handler.dart' - as event_handler; +import 'package:stream_chat_flutter/src/v4/channel_list_view/channel_events.dart'; +/// The default channel page limit to load. const defaultChannelPagedLimit = 10; -typedef ChannelListEventHandler = void Function( - Event event, - StreamChannelListController controller, -); - -/// +/// A controller for a Channel list. +/// +/// This class lets you perform tasks such as: +/// * Load initial data. +/// * Load more data using [loadMore]. +/// * Replace the previously loaded channels. +/// * Return/Create a new channel and start watching it. +/// * Unsubscribe from all channel list events. +/// * Pause and Resume all subscriptions added to this composite. class StreamChannelListController extends PagedValueNotifier { - /// Creates a new instance of [StreamChannelListController]. + /// Creates a Stream channel list controller. + /// + /// * `client` is the Stream chat client to use for the channels list. + /// + /// * `channelEvents` is the channel events to use for the channels list. + /// This class can be mixed in or extended to create custom overrides. See + /// [ChannelEvents] for advice. + /// + /// * `filter` is the query filters to use. + /// + /// * `sort` is the sorting used for the channels matching the filters. + /// + /// * `presence` sets whether you'll receive user presence updates via the + /// websocket events. + /// + /// * `limit` is the limit to apply to the channel list. + /// + /// * `messageLimit` is the number of messages to fetch in each channel. + /// + /// * `memberLimit` is the number of members to fetch in each channel. StreamChannelListController({ required this.client, + ChannelEvents? channelEvents, this.filter, this.sort, this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, - this.onChannelDeleted = event_handler.onChannelDeleted, - this.onChannelHidden = event_handler.onChannelHidden, - this.onChannelTruncated = event_handler.onChannelTruncated, - this.onChannelUpdated = event_handler.onChannelUpdated, - this.onChannelVisible = event_handler.onChannelVisible, - this.onConnectionRecovered = event_handler.onConnectionRecovered, - this.onMessageNew = event_handler.onMessageNew, - this.onNotificationAddedToChannel = - event_handler.onNotificationAddedToChannel, - this.onNotificationMessageNew = event_handler.onNotificationMessageNew, - this.onNotificationRemovedFromChannel = - event_handler.onNotificationRemovedFromChannel, - this.onUserPresenceChanged = event_handler.onUserPresenceChanged, - }) : super(const PagedValue.loading()); + }) : channelEvents = channelEvents ?? ChannelEvents(), + super(const PagedValue.loading()) { + this.channelEvents.test(); + } /// Creates a [StreamChannelListController] from the passed [value]. StreamChannelListController.fromValue( PagedValue value, { required this.client, + required this.channelEvents, this.filter, this.sort, this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, - this.onChannelDeleted = event_handler.onChannelDeleted, - this.onChannelHidden = event_handler.onChannelHidden, - this.onChannelTruncated = event_handler.onChannelTruncated, - this.onChannelUpdated = event_handler.onChannelUpdated, - this.onChannelVisible = event_handler.onChannelVisible, - this.onConnectionRecovered = event_handler.onConnectionRecovered, - this.onMessageNew = event_handler.onMessageNew, - this.onNotificationAddedToChannel = - event_handler.onNotificationAddedToChannel, - this.onNotificationMessageNew = event_handler.onNotificationMessageNew, - this.onNotificationRemovedFromChannel = - event_handler.onNotificationRemovedFromChannel, - this.onUserPresenceChanged = event_handler.onUserPresenceChanged, }) : super(value); - /// The client to use for the channel list. + /// The channel events to use for the channels list. + final ChannelEvents channelEvents; + + /// The client to use for the channels list. final StreamChatClient client; /// The query filters to use. @@ -82,90 +86,15 @@ class StreamChannelListController extends PagedValueNotifier { /// If true you’ll receive user presence updates via the websocket events final bool presence; - /// The limit to apply to the channel list. + /// The limit to apply to the channel list. The default is set to + /// [defaultChannelPagedLimit]. final int limit; - /// Number of members to fetch in each channel - final int? memberLimit; - - /// Number of messages to fetch in each channel + /// Number of messages to fetch in each channel. final int? messageLimit; - /// Callback function which gets called for the event - /// [EventType.channelDeleted]. - /// - /// By default, calls [event_handler.onChannelDeleted] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onChannelDeleted; - - /// Callback function which gets called for the event - /// [EventType.channelHidden]. - /// - /// By default, calls [event_handler.onChannelHidden] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onChannelHidden; - - /// Callback function which gets called for the event - /// [EventType.channelTruncated]. - /// - /// By default, calls [event_handler.onChannelTruncated] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onChannelTruncated; - - /// Callback function which gets called for the event - /// [EventType.channelUpdated]. - /// - /// By default, calls [event_handler.onChannelUpdated] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onChannelUpdated; - - /// Callback function which gets called for the event - /// [EventType.channelVisible]. - /// - /// By default, calls [event_handler.onChannelVisible] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onChannelVisible; - - /// Callback function which gets called for the event - /// [EventType.connectionRecovered]. - /// - /// By default, calls [event_handler.onConnectionRecovered] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onConnectionRecovered; - - /// Callback function which gets called for the event [EventType.messageNew]. - /// - /// By default, calls [event_handler.onMessageNew] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onMessageNew; - - /// Callback function which gets called for the event - /// [EventType.notificationAddedToChannel]. - /// - /// By default, calls [event_handler.onNotificationAddedToChannel] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onNotificationAddedToChannel; - - /// Callback function which gets called for the event - /// [EventType.notificationMessageNew]. - /// - /// By default, calls [event_handler.onNotificationMessageNew] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onNotificationMessageNew; - - /// Callback function which gets called for the event - /// [EventType.notificationRemovedFromChannel]. - /// - /// By default, calls [event_handler.onNotificationRemovedFromChannel] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onNotificationRemovedFromChannel; - - /// Callback function which gets called for the event - /// 'user.presence.changed' and [EventType.userUpdated]. - /// - /// By default, calls [event_handler.onUserPresenceChanged] - /// with the [Event] and the [StreamChannelListController]. - final ChannelListEventHandler onUserPresenceChanged; + /// Number of members to fetch in each channel. + final int? memberLimit; @override Future doInitialLoad() async { @@ -185,7 +114,7 @@ class StreamChannelListController extends PagedValueNotifier { nextPageKey: nextKey, ); } - // start listening events + // start listening to events _subscribeToChannelListEvents(); } on StreamChatError catch (error) { value = PagedValue.error(error); @@ -254,30 +183,32 @@ class StreamChannelListController extends PagedValueNotifier { _channelEventSubscription = client.on().listen((event) { final eventType = event.type; if (eventType == EventType.channelDeleted) { - onChannelDeleted(event, this); + channelEvents.onChannelDeleted(event, this); } else if (eventType == EventType.channelHidden) { - onChannelHidden(event, this); + channelEvents.onChannelDeleted(event, this); } else if (eventType == EventType.channelTruncated) { - onChannelTruncated(event, this); + channelEvents.onChannelTruncated(event, this); } else if (eventType == EventType.channelUpdated) { - onChannelUpdated(event, this); + channelEvents.onChannelUpdated(event, this); } else if (eventType == EventType.channelVisible) { - onChannelVisible(event, this); + channelEvents.onChannelVisible(event, this); } else if (eventType == EventType.connectionRecovered) { - onConnectionRecovered(event, this); + channelEvents.onConnectionRecovered(event, this); } else if (eventType == EventType.connectionChanged) { - if (event.online != null) onConnectionRecovered(event, this); + if (event.online != null) { + channelEvents.onConnectionRecovered(event, this); + } } else if (eventType == EventType.messageNew) { - onMessageNew(event, this); + channelEvents.onMessageNew(event, this); } else if (eventType == EventType.notificationAddedToChannel) { - onNotificationAddedToChannel(event, this); + channelEvents.onNotificationAddedToChannel(event, this); } else if (eventType == EventType.notificationMessageNew) { - onNotificationMessageNew(event, this); + channelEvents.onNotificationMessageNew(event, this); } else if (eventType == EventType.notificationRemovedFromChannel) { - onNotificationRemovedFromChannel(event, this); + channelEvents.onNotificationRemovedFromChannel(event, this); } else if (eventType == 'user.presence.changed' || eventType == EventType.userUpdated) { - onUserPresenceChanged(event, this); + channelEvents.onUserPresenceChanged(event, this); } }); } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index ce82789a..b1e25b9e 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -47,6 +47,7 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; -export 'src/visible_footnote.dart'; -export 'src/v4/channel_list_view/stream_channel_list_view.dart'; +export 'src/v4/channel_list_view/channel_events.dart'; export 'src/v4/channel_list_view/stream_channel_list_controller.dart'; +export 'src/v4/channel_list_view/stream_channel_list_view.dart'; +export 'src/visible_footnote.dart'; From 5b0536349735c224dd78911af6fe819c952f999b Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Thu, 2 Dec 2021 16:50:20 +0100 Subject: [PATCH 031/201] refactor: rename ChannelEvents to ChannelEventHandlers --- ...vents.dart => channel_event_handlers.dart} | 6 +-- .../stream_channel_list_controller.dart | 48 +++++++++---------- .../lib/stream_chat_flutter.dart | 2 +- 3 files changed, 28 insertions(+), 28 deletions(-) rename packages/stream_chat_flutter/lib/src/v4/channel_list_view/{channel_events.dart => channel_event_handlers.dart} (96%) diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_events.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_event_handlers.dart similarity index 96% rename from packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_events.dart rename to packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_event_handlers.dart index 05c2bdbd..57b7d8c8 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_events.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_event_handlers.dart @@ -3,11 +3,11 @@ import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_event_handler.dart' as event_handler; -/// Contains methods that are called for certain [Event]s. These methods are -/// called from the [StreamChannelListController]. +/// Contains handlers that are called from [StreamChannelListController] for +/// certain [Event]s. /// /// This class can be mixed in or extended to create custom overrides. -class ChannelEvents { +class ChannelEventHandlers { /// Function which gets called for the event /// [EventType.channelDeleted]. /// diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index 3ea6a614..73cfa2ee 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:stream_chat/stream_chat.dart' hide Success; import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/channel_events.dart'; +import 'package:stream_chat_flutter/src/v4/channel_list_view/channel_event_handlers.dart'; /// The default channel page limit to load. const defaultChannelPagedLimit = 10; @@ -11,6 +11,7 @@ const defaultChannelPagedLimit = 10; /// /// This class lets you perform tasks such as: /// * Load initial data. +/// * Use channel events handlers. /// * Load more data using [loadMore]. /// * Replace the previously loaded channels. /// * Return/Create a new channel and start watching it. @@ -21,9 +22,9 @@ class StreamChannelListController extends PagedValueNotifier { /// /// * `client` is the Stream chat client to use for the channels list. /// - /// * `channelEvents` is the channel events to use for the channels list. - /// This class can be mixed in or extended to create custom overrides. See - /// [ChannelEvents] for advice. + /// * `channelEventHandlers` is the channel events to use for the channels + /// list. This class can be mixed in or extended to create custom overrides. + /// See [ChannelEventHandlers] for advice. /// /// * `filter` is the query filters to use. /// @@ -39,33 +40,32 @@ class StreamChannelListController extends PagedValueNotifier { /// * `memberLimit` is the number of members to fetch in each channel. StreamChannelListController({ required this.client, - ChannelEvents? channelEvents, + ChannelEventHandlers? channelEventHandlers, this.filter, this.sort, this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, - }) : channelEvents = channelEvents ?? ChannelEvents(), - super(const PagedValue.loading()) { - this.channelEvents.test(); - } + }) : _channelEventHandlers = channelEventHandlers ?? ChannelEventHandlers(), + super(const PagedValue.loading()); /// Creates a [StreamChannelListController] from the passed [value]. StreamChannelListController.fromValue( PagedValue value, { required this.client, - required this.channelEvents, + ChannelEventHandlers? channelEventHandlers, this.filter, this.sort, this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, - }) : super(value); + }) : _channelEventHandlers = channelEventHandlers ?? ChannelEventHandlers(), + super(value); /// The channel events to use for the channels list. - final ChannelEvents channelEvents; + final ChannelEventHandlers _channelEventHandlers; /// The client to use for the channels list. final StreamChatClient client; @@ -183,32 +183,32 @@ class StreamChannelListController extends PagedValueNotifier { _channelEventSubscription = client.on().listen((event) { final eventType = event.type; if (eventType == EventType.channelDeleted) { - channelEvents.onChannelDeleted(event, this); + _channelEventHandlers.onChannelDeleted(event, this); } else if (eventType == EventType.channelHidden) { - channelEvents.onChannelDeleted(event, this); + _channelEventHandlers.onChannelHidden(event, this); } else if (eventType == EventType.channelTruncated) { - channelEvents.onChannelTruncated(event, this); + _channelEventHandlers.onChannelTruncated(event, this); } else if (eventType == EventType.channelUpdated) { - channelEvents.onChannelUpdated(event, this); + _channelEventHandlers.onChannelUpdated(event, this); } else if (eventType == EventType.channelVisible) { - channelEvents.onChannelVisible(event, this); + _channelEventHandlers.onChannelVisible(event, this); } else if (eventType == EventType.connectionRecovered) { - channelEvents.onConnectionRecovered(event, this); + _channelEventHandlers.onConnectionRecovered(event, this); } else if (eventType == EventType.connectionChanged) { if (event.online != null) { - channelEvents.onConnectionRecovered(event, this); + _channelEventHandlers.onConnectionRecovered(event, this); } } else if (eventType == EventType.messageNew) { - channelEvents.onMessageNew(event, this); + _channelEventHandlers.onMessageNew(event, this); } else if (eventType == EventType.notificationAddedToChannel) { - channelEvents.onNotificationAddedToChannel(event, this); + _channelEventHandlers.onNotificationAddedToChannel(event, this); } else if (eventType == EventType.notificationMessageNew) { - channelEvents.onNotificationMessageNew(event, this); + _channelEventHandlers.onNotificationMessageNew(event, this); } else if (eventType == EventType.notificationRemovedFromChannel) { - channelEvents.onNotificationRemovedFromChannel(event, this); + _channelEventHandlers.onNotificationRemovedFromChannel(event, this); } else if (eventType == 'user.presence.changed' || eventType == EventType.userUpdated) { - channelEvents.onUserPresenceChanged(event, this); + _channelEventHandlers.onUserPresenceChanged(event, this); } }); } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index b1e25b9e..76e3bc0e 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -47,7 +47,7 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; -export 'src/v4/channel_list_view/channel_events.dart'; +export 'src/v4/channel_list_view/channel_event_handlers.dart'; export 'src/v4/channel_list_view/stream_channel_list_controller.dart'; export 'src/v4/channel_list_view/stream_channel_list_view.dart'; export 'src/visible_footnote.dart'; From d4bde539e6079134fb84d64f18beb5ff8ca1b2bd Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 3 Dec 2021 18:52:11 +0530 Subject: [PATCH 032/201] refactor(llc): minor event handler changes. Signed-off-by: xsahil03x --- .../channel_event_handlers.dart | 123 ----- .../stream_channel_list_controller.dart | 48 +- .../stream_channel_list_event_handler.dart | 492 +++++++----------- .../lib/stream_chat_flutter.dart | 2 +- 4 files changed, 224 insertions(+), 441 deletions(-) delete mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_event_handlers.dart diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_event_handlers.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_event_handlers.dart deleted file mode 100644 index 57b7d8c8..00000000 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/channel_event_handlers.dart +++ /dev/null @@ -1,123 +0,0 @@ -import 'package:stream_chat/stream_chat.dart' hide Success; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_event_handler.dart' - as event_handler; - -/// Contains handlers that are called from [StreamChannelListController] for -/// certain [Event]s. -/// -/// This class can be mixed in or extended to create custom overrides. -class ChannelEventHandlers { - /// Function which gets called for the event - /// [EventType.channelDeleted]. - /// - /// By default, calls [event_handler.onChannelDeleted] - /// with the [Event] and the [StreamChannelListController]. - void onChannelDeleted(Event event, StreamChannelListController controller) { - event_handler.onChannelDeleted(event, controller); - } - - /// Function which gets called for the event - /// [EventType.channelHidden]. - /// - /// By default, calls [event_handler.onChannelHidden] - /// with the [Event] and the [StreamChannelListController]. - void onChannelHidden(Event event, StreamChannelListController controller) { - event_handler.onChannelHidden(event, controller); - } - - /// Function which gets called for the event - /// [EventType.channelTruncated]. - /// - /// By default, calls [event_handler.onChannelTruncated] - /// with the [Event] and the [StreamChannelListController]. - void onChannelTruncated(Event event, StreamChannelListController controller) { - event_handler.onChannelTruncated(event, controller); - } - - /// Function which gets called for the event - /// [EventType.channelUpdated]. - /// - /// By default, calls [event_handler.onChannelUpdated] - /// with the [Event] and the [StreamChannelListController]. - void onChannelUpdated(Event event, StreamChannelListController controller) { - event_handler.onChannelUpdated(event, controller); - } - - /// Function which gets called for the event - /// [EventType.channelVisible]. - /// - /// By default, calls [event_handler.onChannelVisible] - /// with the [Event] and the [StreamChannelListController]. - void onChannelVisible(Event event, StreamChannelListController controller) { - event_handler.onChannelVisible(event, controller); - } - - /// Function which gets called for the event - /// [EventType.connectionRecovered]. - /// - /// By default, calls [event_handler.onConnectionRecovered] - /// with the [Event] and the [StreamChannelListController]. - void onConnectionRecovered( - Event event, - StreamChannelListController controller, - ) { - event_handler.onConnectionRecovered(event, controller); - } - - /// Function which gets called for the event [EventType.messageNew]. - /// - /// By default, calls [event_handler.onMessageNew] - /// with the [Event] and the [StreamChannelListController]. - void onMessageNew(Event event, StreamChannelListController controller) { - event_handler.onMessageNew(event, controller); - } - - /// Function which gets called for the event - /// [EventType.notificationAddedToChannel]. - /// - /// By default, calls [event_handler.onNotificationAddedToChannel] - /// with the [Event] and the [StreamChannelListController]. - void onNotificationAddedToChannel( - Event event, - StreamChannelListController controller, - ) { - event_handler.onNotificationAddedToChannel(event, controller); - } - - /// Function which gets called for the event - /// [EventType.notificationMessageNew]. - /// - /// By default, calls [event_handler.onNotificationMessageNew] - /// with the [Event] and the [StreamChannelListController]. - void onNotificationMessageNew( - Event event, - StreamChannelListController controller, - ) { - event_handler.onNotificationMessageNew(event, controller); - } - - /// Function which gets called for the event - /// [EventType.notificationRemovedFromChannel]. - /// - /// By default, calls [event_handler.onNotificationRemovedFromChannel] - /// with the [Event] and the [StreamChannelListController]. - void onNotificationRemovedFromChannel( - Event event, - StreamChannelListController controller, - ) { - event_handler.onNotificationRemovedFromChannel(event, controller); - } - - /// Function which gets called for the event - /// 'user.presence.changed' and [EventType.userUpdated]. - /// - /// By default, calls [event_handler.onUserPresenceChanged] - /// with the [Event] and the [StreamChannelListController]. - void onUserPresenceChanged( - Event event, - StreamChannelListController controller, - ) { - event_handler.onUserPresenceChanged(event, controller); - } -} diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index 73cfa2ee..5dcbeaa2 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:stream_chat/stream_chat.dart' hide Success; import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/channel_event_handlers.dart'; +import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_event_handler.dart'; /// The default channel page limit to load. const defaultChannelPagedLimit = 10; @@ -15,7 +15,6 @@ const defaultChannelPagedLimit = 10; /// * Load more data using [loadMore]. /// * Replace the previously loaded channels. /// * Return/Create a new channel and start watching it. -/// * Unsubscribe from all channel list events. /// * Pause and Resume all subscriptions added to this composite. class StreamChannelListController extends PagedValueNotifier { /// Creates a Stream channel list controller. @@ -24,7 +23,7 @@ class StreamChannelListController extends PagedValueNotifier { /// /// * `channelEventHandlers` is the channel events to use for the channels /// list. This class can be mixed in or extended to create custom overrides. - /// See [ChannelEventHandlers] for advice. + /// See [StreamChannelListEventHandler] for advice. /// /// * `filter` is the query filters to use. /// @@ -40,46 +39,51 @@ class StreamChannelListController extends PagedValueNotifier { /// * `memberLimit` is the number of members to fetch in each channel. StreamChannelListController({ required this.client, - ChannelEventHandlers? channelEventHandlers, + StreamChannelListEventHandler? eventHandler, this.filter, this.sort, this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, - }) : _channelEventHandlers = channelEventHandlers ?? ChannelEventHandlers(), + }) : _eventHandler = eventHandler ?? StreamChannelListEventHandler(), super(const PagedValue.loading()); /// Creates a [StreamChannelListController] from the passed [value]. StreamChannelListController.fromValue( PagedValue value, { required this.client, - ChannelEventHandlers? channelEventHandlers, + StreamChannelListEventHandler? eventHandler, this.filter, this.sort, this.presence = true, this.limit = defaultChannelPagedLimit, this.messageLimit, this.memberLimit, - }) : _channelEventHandlers = channelEventHandlers ?? ChannelEventHandlers(), + }) : _eventHandler = eventHandler ?? StreamChannelListEventHandler(), super(value); - /// The channel events to use for the channels list. - final ChannelEventHandlers _channelEventHandlers; - /// The client to use for the channels list. final StreamChatClient client; + /// The channel event handlers to use for the channels list. + final StreamChannelListEventHandler _eventHandler; + /// The query filters to use. + /// /// You can query on any of the custom fields you've defined on the [Channel]. + /// /// You can also filter other built-in channel fields. final Filter? filter; /// The sorting used for the channels matching the filters. + /// /// Sorting is based on field and direction, multiple sorting options /// can be provided. + /// /// You can sort based on last_updated, last_message_at, updated_at, /// created_at or member_count. + /// /// Direction can be ascending or descending. final List>? sort; @@ -183,32 +187,32 @@ class StreamChannelListController extends PagedValueNotifier { _channelEventSubscription = client.on().listen((event) { final eventType = event.type; if (eventType == EventType.channelDeleted) { - _channelEventHandlers.onChannelDeleted(event, this); + _eventHandler.onChannelDeleted(event, this); } else if (eventType == EventType.channelHidden) { - _channelEventHandlers.onChannelHidden(event, this); + _eventHandler.onChannelHidden(event, this); } else if (eventType == EventType.channelTruncated) { - _channelEventHandlers.onChannelTruncated(event, this); + _eventHandler.onChannelTruncated(event, this); } else if (eventType == EventType.channelUpdated) { - _channelEventHandlers.onChannelUpdated(event, this); + _eventHandler.onChannelUpdated(event, this); } else if (eventType == EventType.channelVisible) { - _channelEventHandlers.onChannelVisible(event, this); + _eventHandler.onChannelVisible(event, this); } else if (eventType == EventType.connectionRecovered) { - _channelEventHandlers.onConnectionRecovered(event, this); + _eventHandler.onConnectionRecovered(event, this); } else if (eventType == EventType.connectionChanged) { if (event.online != null) { - _channelEventHandlers.onConnectionRecovered(event, this); + _eventHandler.onConnectionRecovered(event, this); } } else if (eventType == EventType.messageNew) { - _channelEventHandlers.onMessageNew(event, this); + _eventHandler.onMessageNew(event, this); } else if (eventType == EventType.notificationAddedToChannel) { - _channelEventHandlers.onNotificationAddedToChannel(event, this); + _eventHandler.onNotificationAddedToChannel(event, this); } else if (eventType == EventType.notificationMessageNew) { - _channelEventHandlers.onNotificationMessageNew(event, this); + _eventHandler.onNotificationMessageNew(event, this); } else if (eventType == EventType.notificationRemovedFromChannel) { - _channelEventHandlers.onNotificationRemovedFromChannel(event, this); + _eventHandler.onNotificationRemovedFromChannel(event, this); } else if (eventType == 'user.presence.changed' || eventType == EventType.userUpdated) { - _channelEventHandlers.onUserPresenceChanged(event, this); + _eventHandler.onUserPresenceChanged(event, this); } }); } diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart index e35549a9..bd6cf50d 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart @@ -1,311 +1,213 @@ -import 'package:stream_chat/stream_chat.dart' show Event; +import 'package:stream_chat/stream_chat.dart' hide Success; import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -/// Handles [EventType.channelDeleted] event. +/// Contains handlers that are called from [StreamChannelListController] for +/// certain [Event]s. /// -/// This event is fired when a channel is deleted. -/// -/// By default, this removes the channel from the list of channels. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onChannelDeleted: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onChannelDeleted( - Event event, - StreamChannelListController controller, -) { - final channels = [...controller.currentItems]; +/// This class can be mixed in or extended to create custom overrides. +class StreamChannelListEventHandler { + /// Function which gets called for the event + /// [EventType.channelDeleted]. + /// + /// This event is fired when a channel is deleted. + /// + /// By default, this removes the channel from the list of channels. + void onChannelDeleted(Event event, StreamChannelListController controller) { + final channels = [...controller.currentItems]; - final updatedChannels = channels - ..removeWhere( - (it) => it.cid == (event.cid ?? event.channel?.cid), - ); + final updatedChannels = channels + ..removeWhere( + (it) => it.cid == (event.cid ?? event.channel?.cid), + ); - controller.channels = updatedChannels; -} - -/// Handles [EventType.channelHidden] event. -/// -/// This event is fired when a channel is hidden. -/// -/// By default, this removes the channel from the list of channels. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onChannelHidden: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onChannelHidden( - Event event, - StreamChannelListController controller, -) { - onChannelDeleted(event, controller); -} - -/// Handles [EventType.channelTruncated] event. -/// -/// This event is fired when a channel is truncated. -/// -/// By default, this refreshes the whole channel list. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onChannelTruncated: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onChannelTruncated( - Event event, - StreamChannelListController controller, -) { - controller.refresh(); -} - -/// Handles [EventType.channelUpdated] event. -/// -/// This event is fired when a channel is updated. -/// -/// By default, this updates the channel received in the event. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onChannelUpdated: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onChannelUpdated( - Event event, - StreamChannelListController controller, -) { - final eventChannel = event.channel; - if (eventChannel == null) return; - - final channels = [...controller.currentItems]; - final channelIndex = channels.indexWhere( - (it) => it.cid == (event.cid ?? eventChannel.cid), - ); - - if (channelIndex >= 0) { - final channelState = ChannelState(channel: eventChannel); - channels[channelIndex].state?.updateChannelState(channelState); + controller.channels = updatedChannels; } - controller.channels = channels; -} + /// Function which gets called for the event + /// [EventType.channelHidden]. + /// + /// This event is fired when a channel is hidden. + /// + /// By default, this removes the channel from the list of channels. + void onChannelHidden(Event event, StreamChannelListController controller) { + onChannelDeleted(event, controller); + } -/// Handles [EventType.channelVisible] event. -/// -/// This event is fired when a channel is made visible. -/// -/// By default, this adds the channel to the list of channels. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onChannelVisible: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onChannelVisible( - Event event, - StreamChannelListController controller, -) async { - final channelId = event.channelId; - final channelType = event.channelType; + /// Function which gets called for the event + /// [EventType.channelTruncated]. + /// + /// This event is fired when a channel is truncated. + /// + /// By default, this refreshes the whole channel list. + void onChannelTruncated(Event event, StreamChannelListController controller) { + controller.refresh(); + } - if (channelId == null || channelType == null) return; + /// Function which gets called for the event + /// [EventType.channelUpdated]. + /// + /// This event is fired when a channel is updated. + /// + /// By default, this updates the channel received in the event. + void onChannelUpdated(Event event, StreamChannelListController controller) { + final eventChannel = event.channel; + if (eventChannel == null) return; - final channel = await controller.getChannel( - id: channelId, - type: channelType, - ); - - final currentChannels = [...controller.currentItems]; - - final updatedChannels = [ - channel, - ...currentChannels..removeWhere((it) => it.cid == channel.cid), - ]; - - controller.channels = updatedChannels; -} - -/// Handles [EventType.connectionRecovered] event. -/// -/// This event is fired when the client web-socket connection recovers. -/// -/// By default, this refreshes the whole channel list. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onConnectionRecovered: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onConnectionRecovered( - Event event, - StreamChannelListController controller, -) { - controller.refresh(); -} - -/// Handles [EventType.messageNew] event. -/// -/// This event is fired when a new message is created in one of the channels -/// we are currently watching. -/// -/// By default, this moves the channel to the top of the list. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onMessageNew: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onMessageNew( - Event event, - StreamChannelListController controller, -) { - final channelCid = event.cid; - if (channelCid == null) return; - - final channels = [...controller.currentItems]; - - final channelIndex = channels.indexWhere((it) => it.cid == channelCid); - if (channelIndex <= 0) return; - - final channel = channels.removeAt(channelIndex); - channels.insert(0, channel); - - controller.channels = [...channels]; -} - -/// Handles [EventType.notificationAddedToChannel] event. -/// -/// This event is fired when a channel is added which we are not watching. -/// -/// By default, this adds the channel and moves it to the top of list. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onNotificationAddedToChannel: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onNotificationAddedToChannel( - Event event, - StreamChannelListController controller, -) { - onChannelVisible(event, controller); -} - -/// Handles [EventType.notificationMessageNew] event. -/// -/// This event is fired when a new message is created in a channel which we are -/// not currently watching. -/// -/// By default, this adds the channel and moves it to the top of list. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onNotificationMessageNew: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onNotificationMessageNew( - Event event, - StreamChannelListController controller, -) { - onChannelVisible(event, controller); -} - -/// Handles [EventType.notificationRemovedFromChannel] event. -/// -/// This event is fired when a user is removed from a channel which we are -/// not currently watching. -/// -/// By default, this removes the event channel from the list. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onNotificationRemovedFromChannel: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onNotificationRemovedFromChannel( - Event event, - StreamChannelListController controller, -) { - final channels = [...controller.currentItems]; - final updatedChannels = channels.where((it) => it.cid != event.channel?.cid); - final listChanged = channels.length != updatedChannels.length; - - if (!listChanged) return; - - controller.channels = [...updatedChannels]; -} - -/// Handles 'user.presence.changed' and [EventType.userUpdated] event. -/// -/// This event is fired when a user's presence changes or gets updated. -/// -/// By default, this updates the channel member with the event user. -/// -/// ```dart -/// StreamChannelListController( -/// client: client, -/// onUserPresenceChanged: (event, controller) { -/// // Do something -/// }, -/// ); -/// ``` -void onUserPresenceChanged( - Event event, - StreamChannelListController controller, -) { - final user = event.user; - if (user == null) return; - - final channels = [...controller.currentItems]; - - final updatedChannels = channels.map((channel) { - final members = [...channel.state!.members]; - final memberIndex = members.indexWhere( - (it) => user.id == (it.userId ?? it.user?.id), + final channels = [...controller.currentItems]; + final channelIndex = channels.indexWhere( + (it) => it.cid == (event.cid ?? eventChannel.cid), ); - if (memberIndex < 0) return channel; + if (channelIndex >= 0) { + final channelState = ChannelState(channel: eventChannel); + channels[channelIndex].state?.updateChannelState(channelState); + } - members[memberIndex] = members[memberIndex].copyWith(user: user); - final updatedState = ChannelState(members: [...members]); - channel.state!.updateChannelState(updatedState); + controller.channels = channels; + } - return channel; - }); + /// Function which gets called for the event + /// [EventType.channelVisible]. + /// + /// This event is fired when a channel is made visible. + /// + /// By default, this adds the channel to the list of channels. + void onChannelVisible( + Event event, + StreamChannelListController controller, + ) async { + final channelId = event.channelId; + final channelType = event.channelType; - controller.channels = [...updatedChannels]; + if (channelId == null || channelType == null) return; + + final channel = await controller.getChannel( + id: channelId, + type: channelType, + ); + + final currentChannels = [...controller.currentItems]; + + final updatedChannels = [ + channel, + ...currentChannels..removeWhere((it) => it.cid == channel.cid), + ]; + + controller.channels = updatedChannels; + } + + /// Function which gets called for the event + /// [EventType.connectionRecovered]. + /// + /// This event is fired when the client web-socket connection recovers. + /// + /// By default, this refreshes the whole channel list. + void onConnectionRecovered( + Event event, + StreamChannelListController controller, + ) { + controller.refresh(); + } + + /// Function which gets called for the event [EventType.messageNew]. + /// + /// This event is fired when a new message is created in one of the channels + /// we are currently watching. + /// + /// By default, this moves the channel to the top of the list. + void onMessageNew(Event event, StreamChannelListController controller) { + final channelCid = event.cid; + if (channelCid == null) return; + + final channels = [...controller.currentItems]; + + final channelIndex = channels.indexWhere((it) => it.cid == channelCid); + if (channelIndex <= 0) return; + + final channel = channels.removeAt(channelIndex); + channels.insert(0, channel); + + controller.channels = [...channels]; + } + + /// Function which gets called for the event + /// [EventType.notificationAddedToChannel]. + /// + /// This event is fired when a channel is added which we are not watching. + /// + /// By default, this adds the channel and moves it to the top of list. + void onNotificationAddedToChannel( + Event event, + StreamChannelListController controller, + ) { + onChannelVisible(event, controller); + } + + /// Function which gets called for the event + /// [EventType.notificationMessageNew]. + /// + /// This event is fired when a new message is created in a channel which we are + /// not currently watching. + /// + /// By default, this adds the channel and moves it to the top of list. + void onNotificationMessageNew( + Event event, + StreamChannelListController controller, + ) { + onChannelVisible(event, controller); + } + + /// Function which gets called for the event + /// [EventType.notificationRemovedFromChannel]. + /// + /// This event is fired when a user is removed from a channel which we are + /// not currently watching. + /// + /// By default, this removes the event channel from the list. + void onNotificationRemovedFromChannel( + Event event, + StreamChannelListController controller, + ) { + final channels = [...controller.currentItems]; + final updatedChannels = + channels.where((it) => it.cid != event.channel?.cid); + final listChanged = channels.length != updatedChannels.length; + + if (!listChanged) return; + + controller.channels = [...updatedChannels]; + } + + /// Function which gets called for the event + /// 'user.presence.changed' and [EventType.userUpdated]. + /// + /// This event is fired when a user's presence changes or gets updated. + /// + /// By default, this updates the channel member with the event user. + void onUserPresenceChanged( + Event event, + StreamChannelListController controller, + ) { + final user = event.user; + if (user == null) return; + + final channels = [...controller.currentItems]; + + final updatedChannels = channels.map((channel) { + final members = [...channel.state!.members]; + final memberIndex = members.indexWhere( + (it) => user.id == (it.userId ?? it.user?.id), + ); + + if (memberIndex < 0) return channel; + + members[memberIndex] = members[memberIndex].copyWith(user: user); + final updatedState = ChannelState(members: [...members]); + channel.state!.updateChannelState(updatedState); + + return channel; + }); + + controller.channels = [...updatedChannels]; + } } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 76e3bc0e..a9d1416b 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -47,7 +47,7 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; -export 'src/v4/channel_list_view/channel_event_handlers.dart'; export 'src/v4/channel_list_view/stream_channel_list_controller.dart'; +export 'src/v4/channel_list_view/stream_channel_list_event_handler.dart'; export 'src/v4/channel_list_view/stream_channel_list_view.dart'; export 'src/visible_footnote.dart'; From f3110e99ebfbf4ebc96cb6c0a994e126736f5269 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 6 Dec 2021 17:28:40 +0530 Subject: [PATCH 033/201] refactor(ui): add channel list empty and error state widgets. Signed-off-by: xsahil03x --- .../stream_channel_list_event_handler.dart | 2 +- .../stream_channel_list_view.dart | 106 +++++++++++++++++- 2 files changed, 103 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart index bd6cf50d..449dd982 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart @@ -1,4 +1,4 @@ -import 'package:stream_chat/stream_chat.dart' hide Success; +import 'package:stream_chat/stream_chat.dart' show ChannelState, Event; import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; /// Contains handlers that are called from [StreamChannelListController] for diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index af493815..67d4ad56 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -250,7 +250,12 @@ class _StreamChannelListViewState extends State { builder: (context, value, _) => value.when( (channels, nextPageKey, error) { if (channels.isEmpty) { - return const Center(child: Text('No channels')); + return const Center( + child: Padding( + padding: EdgeInsets.all(8), + child: StreamChannelListEmpty(), + ), + ); } return ListView.separated( @@ -321,7 +326,11 @@ class _StreamChannelListViewState extends State { separatorBuilder: widget.separatorBuilder, itemBuilder: (_, __) => const StreamChannelListLoadingTile(), ), - error: (error) => Center(child: Text('Error: $error')), + error: (error) => Center( + child: StreamChannelListError( + onPressed: _controller.refresh, + ), + ), ), ); } @@ -347,11 +356,11 @@ class ChannelListLoadMoreError extends StatelessWidget { /// Creates a new instance of [ChannelListLoadMoreError]. const ChannelListLoadMoreError({ Key? key, - required this.onTap, + this.onTap, }) : super(key: key); /// The callback to invoke when the user taps on the error indicator. - final GestureTapCallback onTap; + final GestureTapCallback? onTap; @override Widget build(BuildContext context) { @@ -395,3 +404,92 @@ class StreamChannelListSeparator extends StatelessWidget { ); } } + +/// A widget that is used to display an error screen +/// when [StreamChannelListController] fails to load initial channels. +class StreamChannelListError extends StatelessWidget { + /// Creates a new instance of [StreamChannelListError] widget. + const StreamChannelListError({ + Key? key, + this.onPressed, + }) : super(key: key); + + /// The callback to invoke when the user taps on the retry button. + final VoidCallback? onPressed; + + @override + Widget build(BuildContext context) => Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text.rich( + TextSpan( + children: [ + const WidgetSpan( + child: Padding( + padding: EdgeInsets.only(right: 2), + child: Icon(Icons.error_outline), + ), + ), + TextSpan(text: context.translations.loadingChannelsError), + ], + ), + style: Theme.of(context).textTheme.headline6, + ), + TextButton( + onPressed: onPressed, + child: Text(context.translations.retryLabel), + ), + ], + ); +} + +/// A widget that is used to display an empty state when +/// [StreamChannelListController] loads zero channels. +class StreamChannelListEmpty extends StatelessWidget { + /// Creates a new instance of [StreamChannelListEmpty] widget. + const StreamChannelListEmpty({ + Key? key, + this.onPressed, + }) : super(key: key); + + /// The callback to invoke when the user taps on the start a chat button. + final VoidCallback? onPressed; + + @override + Widget build(BuildContext context) { + final chatThemeData = StreamChatTheme.of(context); + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + const Spacer(), + StreamSvgIcon.message( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + const SizedBox(height: 28), + Text( + context.translations.letsStartChattingLabel, + style: chatThemeData.textTheme.headline, + ), + const SizedBox(height: 8), + Text( + context.translations.sendingFirstMessageLabel, + textAlign: TextAlign.center, + style: chatThemeData.textTheme.body.copyWith( + color: chatThemeData.colorTheme.textLowEmphasis, + ), + ), + const Spacer(), + TextButton( + onPressed: onPressed, + child: Text( + context.translations.startAChatLabel, + style: chatThemeData.textTheme.bodyBold.copyWith( + color: chatThemeData.colorTheme.accentPrimary, + ), + ), + ), + ], + ); + } +} From 093a66854641f331ad00eee68fb48cb10092a214 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 8 Dec 2021 17:48:57 +0530 Subject: [PATCH 034/201] refactor(ui): add stream_channel_info_bottom_sheet.dart Signed-off-by: xsahil03x --- .../lib/src/paged_value_notifier.dart | 6 +- .../v4/stream_channel_info_bottom_sheet.dart | 365 ++++++++++++++++++ .../lib/stream_chat_flutter.dart | 3 + 3 files changed, 372 insertions(+), 2 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart index d2f5b373..5ef37374 100644 --- a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart +++ b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart @@ -62,10 +62,12 @@ abstract class PagedValueNotifier /// Refresh the data presented by this [PagedValueNotifier]. /// + /// Resets the [value] to the initial value in case [resetValue] is true. + /// /// Note: This API is intended for UI-driven refresh signals, /// such as swipe-to-refresh. - Future refresh() { - value = _initialValue; + Future refresh({bool resetValue = true}) { + if (resetValue) value = _initialValue; return doInitialLoad(); } diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart new file mode 100644 index 00000000..51bda67d --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart @@ -0,0 +1,365 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter/src/channel_info.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/option_list_tile.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; +import 'package:stream_chat_flutter/src/theme/themes.dart'; +import 'package:stream_chat_flutter/src/user_avatar.dart'; +import 'package:stream_chat_flutter/src/v4/stream_channel_name.dart'; + +/// A [BottomSheet] that shows information about a [Channel]. +class StreamChannelInfoBottomSheet extends StatelessWidget { + /// Creates a new instance [StreamChannelInfoBottomSheet] widget. + StreamChannelInfoBottomSheet({ + Key? key, + required this.channel, + this.onMemberTap, + this.onViewInfoTap, + this.onLeaveChannelTap, + this.onDeleteConversationTap, + this.onCancelTap, + }) : assert( + channel.state != null, + 'Channel ${channel.id} is not initialized', + ), + super(key: key); + + /// The [Channel] to show information about. + final Channel channel; + + /// A callback that is called when a member is tapped. + final void Function(Member)? onMemberTap; + + /// A callback that is called when the "View Info" button is tapped. + final VoidCallback? onViewInfoTap; + + /// A callback that is called when the "Leave Channel" button is tapped. + /// + /// Only shown when the channel is a group channel. + final VoidCallback? onLeaveChannelTap; + + /// A callback that is called when the "Delete Conversation" button is tapped. + /// + /// Only shown when you are the `owner` of the channel. + final VoidCallback? onDeleteConversationTap; + + /// A callback that is called when the "Cancel" button is tapped. + final VoidCallback? onCancelTap; + + @override + Widget build(BuildContext context) { + final themeData = StreamChatTheme.of(context); + final colorTheme = themeData.colorTheme; + final channelPreviewTheme = ChannelPreviewTheme.of(context); + + final currentUser = channel.client.state.currentUser; + final isOneToOneChannel = channel.isDistinct && channel.memberCount == 2; + + final members = channel.state?.members ?? []; + + final isOwner = members.any( + (it) => it.user?.id == currentUser?.id && it.role == 'owner', + ); + + // remove current user in case it's 1-1 conversation + if (isOneToOneChannel) { + members.removeWhere((it) => it.user?.id == currentUser?.id); + } + + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox(height: 24), + Center( + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: StreamChannelName( + channel: channel, + textStyle: themeData.textTheme.headlineBold, + ), + ), + ), + const SizedBox(height: 5), + Center( + // TODO: Refactor ChannelInfo + child: ChannelInfo( + showTypingIndicator: false, + channel: channel, + textStyle: channelPreviewTheme.subtitleStyle, + ), + ), + const SizedBox(height: 17), + Container( + height: 94, + alignment: Alignment.center, + child: ListView.separated( + shrinkWrap: true, + itemCount: members.length, + scrollDirection: Axis.horizontal, + padding: const EdgeInsets.symmetric(horizontal: 8), + separatorBuilder: (context, index) => const SizedBox(width: 16), + itemBuilder: (context, index) { + final member = members[index]; + final user = member.user!; + return Column( + children: [ + UserAvatar( + user: user, + constraints: const BoxConstraints( + maxHeight: 64, + maxWidth: 64, + ), + borderRadius: BorderRadius.circular(32), + onlineIndicatorConstraints: BoxConstraints.tight( + const Size(12, 12), + ), + onTap: onMemberTap != null + ? (_) => onMemberTap!(member) + : null, + ), + const SizedBox(height: 6), + Text( + user.name, + style: themeData.textTheme.footnoteBold, + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ], + ); + }, + ), + ), + const SizedBox(height: 24), + OptionListTile( + leading: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: StreamSvgIcon.user( + color: colorTheme.textLowEmphasis, + ), + ), + title: context.translations.viewInfoLabel, + onTap: onViewInfoTap, + ), + if (!isOneToOneChannel) + OptionListTile( + title: context.translations.leaveGroupLabel, + leading: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: StreamSvgIcon.userRemove( + color: colorTheme.textLowEmphasis, + ), + ), + onTap: onLeaveChannelTap, + ), + if (isOwner) + OptionListTile( + leading: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: StreamSvgIcon.delete( + color: colorTheme.accentError, + ), + ), + title: context.translations.deleteConversationLabel, + titleColor: colorTheme.accentError, + onTap: onDeleteConversationTap, + ), + OptionListTile( + leading: Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: StreamSvgIcon.closeSmall( + color: colorTheme.textLowEmphasis, + ), + ), + title: context.translations.cancelLabel, + onTap: onCancelTap ?? Navigator.of(context).pop, + ), + ], + ); + } +} + +const _kDefaultChannelInfoBottomSheetShape = RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(32), + topRight: Radius.circular(32), + ), +); + +/// Shows a modal material design bottom sheet. +/// +/// A modal bottom sheet is an alternative to a menu or a dialog and prevents +/// the user from interacting with the rest of the app. +/// +/// A closely related widget is a persistent bottom sheet, which shows +/// information that supplements the primary content of the app without +/// preventing the use from interacting with the app. Persistent bottom sheets +/// can be created and displayed with the [showBottomSheet] function or the +/// [ScaffoldState.showBottomSheet] method. +/// +/// The `context` argument is used to look up the [Navigator] and [Theme] for +/// the bottom sheet. It is only used when the method is called. Its +/// corresponding widget can be safely removed from the tree before the bottom +/// sheet is closed. +/// +/// The `isScrollControlled` parameter specifies whether this is a route for +/// a bottom sheet that will utilize [DraggableScrollableSheet]. If you wish +/// to have a bottom sheet that has a scrollable child such as a [ListView] or +/// a [GridView] and have the bottom sheet be draggable, you should set this +/// parameter to true. +/// +/// The `useRootNavigator` parameter ensures that the root navigator is used to +/// display the [BottomSheet] when set to `true`. This is useful in the case +/// that a modal [BottomSheet] needs to be displayed above all other content +/// but the caller is inside another [Navigator]. +/// +/// The [isDismissible] parameter specifies whether the bottom sheet will be +/// dismissed when user taps on the scrim. +/// +/// The [enableDrag] parameter specifies whether the bottom sheet can be +/// dragged up and down and dismissed by swiping downwards. +/// +/// The optional [backgroundColor], [elevation], [shape], [clipBehavior], +/// [constraints] and [transitionAnimationController] +/// parameters can be passed in to customize the appearance and behavior of +/// modal bottom sheets (see the documentation for these on [BottomSheet] +/// for more details). +/// +/// The [transitionAnimationController] controls the bottom sheet's entrance and +/// exit animations if provided. +/// +/// The optional `routeSettings` parameter sets the [RouteSettings] of the modal bottom sheet +/// sheet. This is particularly useful in the case that a user wants to observe +/// [PopupRoute]s within a [NavigatorObserver]. +/// +/// Returns a `Future` that resolves to the value (if any) that was passed to +/// [Navigator.pop] when the modal bottom sheet was closed. +/// +/// See also: +/// +/// * [BottomSheet], which becomes the parent of the widget returned by the +/// function passed as the `builder` argument to [showModalBottomSheet]. +/// * [showBottomSheet] and [ScaffoldState.showBottomSheet], for showing +/// non-modal bottom sheets. +/// * [DraggableScrollableSheet], which allows you to create a bottom sheet +/// that grows and then becomes scrollable once it reaches its maximum size. +/// * +Future showChannelInfoModalBottomSheet({ + required BuildContext context, + required Channel channel, + Color? backgroundColor, + double? elevation, + BoxConstraints? constraints, + Color? barrierColor, + bool isScrollControlled = true, + bool useRootNavigator = false, + bool isDismissible = true, + bool enableDrag = true, + RouteSettings? routeSettings, + AnimationController? transitionAnimationController, + Clip? clipBehavior = Clip.hardEdge, + ShapeBorder? shape = _kDefaultChannelInfoBottomSheetShape, + void Function(Member)? onMemberTap, + VoidCallback? onViewInfoTap, + VoidCallback? onLeaveChannelTap, + VoidCallback? onDeleteConversationTap, + VoidCallback? onCancelTap, +}) => + showModalBottomSheet( + context: context, + backgroundColor: backgroundColor, + elevation: elevation, + shape: shape, + clipBehavior: clipBehavior, + constraints: constraints, + barrierColor: barrierColor, + isScrollControlled: isScrollControlled, + useRootNavigator: useRootNavigator, + isDismissible: isDismissible, + enableDrag: enableDrag, + routeSettings: routeSettings, + transitionAnimationController: transitionAnimationController, + builder: (BuildContext context) => StreamChannelInfoBottomSheet( + channel: channel, + onMemberTap: onMemberTap, + onViewInfoTap: onViewInfoTap, + onLeaveChannelTap: onLeaveChannelTap, + onDeleteConversationTap: onDeleteConversationTap, + onCancelTap: onCancelTap, + ), + ); + +/// Shows a material design bottom sheet in the nearest [Scaffold] ancestor. If +/// you wish to show a persistent bottom sheet, use [Scaffold.bottomSheet]. +/// +/// Returns a controller that can be used to close and otherwise manipulate the +/// bottom sheet. +/// +/// The optional [backgroundColor], [elevation], [shape], [clipBehavior], +/// [constraints] and [transitionAnimationController] +/// parameters can be passed in to customize the appearance and behavior of +/// persistent bottom sheets (see the documentation for these on [BottomSheet] +/// for more details). +/// +/// To rebuild the bottom sheet (e.g. if it is stateful), call +/// [PersistentBottomSheetController.setState] on the controller returned by +/// this method. +/// +/// The new bottom sheet becomes a [LocalHistoryEntry] for the enclosing +/// [ModalRoute] and a back button is added to the app bar of the [Scaffold] +/// that closes the bottom sheet. +/// +/// To create a persistent bottom sheet that is not a [LocalHistoryEntry] and +/// does not add a back button to the enclosing Scaffold's app bar, use the +/// [Scaffold.bottomSheet] constructor parameter. +/// +/// A closely related widget is a modal bottom sheet, which is an alternative +/// to a menu or a dialog and prevents the user from interacting with the rest +/// of the app. Modal bottom sheets can be created and displayed with the +/// [showModalBottomSheet] function. +/// +/// The `context` argument is used to look up the [Scaffold] for the bottom +/// sheet. It is only used when the method is called. Its corresponding widget +/// can be safely removed from the tree before the bottom sheet is closed. +/// +/// See also: +/// +/// * [BottomSheet], which becomes the parent of the widget returned by the +/// `builder`. +/// * [showModalBottomSheet], which can be used to display a modal bottom +/// sheet. +/// * [Scaffold.of], for information about how to obtain the [BuildContext]. +/// * +PersistentBottomSheetController showChannelInfoBottomSheet({ + required BuildContext context, + required Channel channel, + Color? backgroundColor, + double? elevation, + BoxConstraints? constraints, + AnimationController? transitionAnimationController, + Clip? clipBehavior = Clip.hardEdge, + ShapeBorder? shape = _kDefaultChannelInfoBottomSheetShape, + void Function(Member)? onMemberTap, + VoidCallback? onViewInfoTap, + VoidCallback? onLeaveChannelTap, + VoidCallback? onDeleteConversationTap, + VoidCallback? onCancelTap, +}) => + showBottomSheet( + context: context, + backgroundColor: backgroundColor, + elevation: elevation, + shape: shape, + clipBehavior: clipBehavior, + constraints: constraints, + transitionAnimationController: transitionAnimationController, + builder: (BuildContext context) => StreamChannelInfoBottomSheet( + channel: channel, + onMemberTap: onMemberTap, + onViewInfoTap: onViewInfoTap, + onLeaveChannelTap: onLeaveChannelTap, + onDeleteConversationTap: onDeleteConversationTap, + onCancelTap: onCancelTap, + ), + ); diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index a9d1416b..749a1d63 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -47,7 +47,10 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; + +// v4 export 'src/v4/channel_list_view/stream_channel_list_controller.dart'; export 'src/v4/channel_list_view/stream_channel_list_event_handler.dart'; export 'src/v4/channel_list_view/stream_channel_list_view.dart'; +export 'src/v4/stream_channel_info_bottom_sheet.dart'; export 'src/visible_footnote.dart'; From c301b51c8381e59e34f78656d1d6fb1df0c86d4e Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 8 Dec 2021 17:49:50 +0530 Subject: [PATCH 035/201] refactor(ui): improve channel list and controller Signed-off-by: xsahil03x --- .../stream_chat/lib/src/client/channel.dart | 8 ++ .../stream_channel_list_controller.dart | 29 ++++ .../stream_channel_list_tile.dart | 84 ++++++++--- .../stream_channel_list_view.dart | 136 ++++++++++-------- 4 files changed, 178 insertions(+), 79 deletions(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 51034d3a..e2660099 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1833,6 +1833,14 @@ class ChannelClientState { (watchers, users) => watchers!.map((e) => users[e.id] ?? e).toList(), ); + /// Channel member for the current user. + Member? get currentUserMember => members.firstWhereOrNull( + (m) => m.user?.id == _channel.client.state.currentUser?.id, + ); + + /// User role for the current user. + String? get currentUserRole => currentUserMember?.role; + /// Channel read list. List get read => _channelState.read; diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index 5dcbeaa2..c94ac616 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -176,6 +176,32 @@ class StreamChannelListController extends PagedValueNotifier { return channel; } + /// Leaves the [channel] and updates the list. + Future leaveChannel(Channel channel) async { + final user = client.state.currentUser; + assert(user != null, 'You must be logged in to leave a channel.'); + await channel.removeMembers([user!.id]); + } + + /// Deletes the [channel] and updates the list. + Future deleteChannel(Channel channel) async { + await channel.delete(); + } + + /// Mutes the [channel] and updates the list. + Future muteChannel(Channel channel) async { + await channel.mute(); + } + + /// Un-mutes the [channel] and updates the list. + Future unmuteChannel(Channel channel) async { + await channel.unmute(); + } + + /// Event listener, which can be set in order to listen + /// [client] web-socket events. + bool Function(Event event)? eventListener; + StreamSubscription? _channelEventSubscription; // Subscribes to the channel list events. @@ -185,6 +211,9 @@ class StreamChannelListController extends PagedValueNotifier { } _channelEventSubscription = client.on().listen((event) { + // Returns early if the event is already handled by the listener. + if (eventListener?.call(event) ?? false) return; + final eventType = event.type; if (eventType == EventType.channelDeleted) { _eventHandler.onChannelDeleted(event, this); diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index a3d0f67a..d58e1441 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -31,10 +31,14 @@ class StreamChannelListTile extends StatelessWidget { this.leading, this.title, this.subtitle, + this.trailing, this.onTap, this.onLongPress, + this.tileColor, this.visualDensity = VisualDensity.compact, this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), + this.unreadIndicatorBuilder, + this.sendingIndicatorBuilder, }) : assert( channel.state != null, 'Channel ${channel.id} is not initialized', @@ -53,12 +57,23 @@ class StreamChannelListTile extends StatelessWidget { /// Additional content displayed below the title. final Widget? subtitle; + /// A widget to display at the end of tile. + final Widget? trailing; + /// Called when the user taps this list tile. final GestureTapCallback? onTap; /// Called when the user long-presses on this list tile. final GestureLongPressCallback? onLongPress; + /// {@template flutter.material.ListTile.tileColor} + /// Defines the background color of `ListTile` when [selected] is false. + /// + /// When the value is null, the `tileColor` is set to [ListTileTheme.tileColor] + /// if it's not null and to [Colors.transparent] if it's null. + /// {@endtemplate} + final Color? tileColor; + /// Defines how compact the list tile's layout will be. /// /// {@macro flutter.material.themedata.visualDensity} @@ -77,6 +92,40 @@ class StreamChannelListTile extends StatelessWidget { /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. final EdgeInsetsGeometry contentPadding; + /// The widget builder for the unread indicator. + final WidgetBuilder? unreadIndicatorBuilder; + + /// The widget builder for the sending indicator. + /// + /// `Message` is the last message in the channel, Use it to determine the + /// status using [Message.status]. + final Widget Function(BuildContext, Message)? sendingIndicatorBuilder; + + /// Creates a copy of this tile but with the given fields replaced with + /// the new values. + StreamChannelListTile copyWith({ + Key? key, + Channel? channel, + Widget? leading, + Widget? title, + Widget? subtitle, + VoidCallback? onTap, + VoidCallback? onLongPress, + VisualDensity? visualDensity, + EdgeInsetsGeometry? contentPadding, + }) => + StreamChannelListTile( + key: key ?? this.key, + channel: channel ?? this.channel, + leading: leading ?? this.leading, + title: title ?? this.title, + subtitle: subtitle ?? this.subtitle, + onTap: onTap ?? this.onTap, + onLongPress: onLongPress ?? this.onLongPress, + visualDensity: visualDensity ?? this.visualDensity, + contentPadding: contentPadding ?? this.contentPadding, + ); + @override Widget build(BuildContext context) { final channelState = channel.state!; @@ -101,6 +150,12 @@ class StreamChannelListTile extends StatelessWidget { textStyle: channelPreviewTheme.subtitleStyle, ); + final trailing = this.trailing ?? + ChannelLastMessageDate( + channel: channel, + textStyle: channelPreviewTheme.lastMessageAtStyle, + ); + return BetterStreamBuilder( stream: channel.isMutedStream, initialData: channel.isMuted, @@ -113,6 +168,7 @@ class StreamChannelListTile extends StatelessWidget { visualDensity: visualDensity, contentPadding: contentPadding, leading: leading, + tileColor: tileColor, title: Row( children: [ Expanded(child: title), @@ -125,7 +181,8 @@ class StreamChannelListTile extends StatelessWidget { !members.any((it) => it.user!.id == currentUser.id)) { return const Offstage(); } - return UnreadIndicator(cid: channel.cid); + return unreadIndicatorBuilder?.call(context) ?? + UnreadIndicator(cid: channel.cid); }, ), ], @@ -154,24 +211,19 @@ class StreamChannelListTile extends StatelessWidget { return Padding( padding: const EdgeInsets.only(right: 4), - child: SendingIndicator( - message: lastMessage, - size: channelPreviewTheme.indicatorIconSize, - isMessageRead: channelState.read - .where((it) => it.user.id != currentUser.id) - .where( - (it) => it.lastRead.isAfter(lastMessage.createdAt), - ) - .isNotEmpty, - ), + child: + sendingIndicatorBuilder?.call(context, lastMessage) ?? + SendingIndicator( + message: lastMessage, + size: channelPreviewTheme.indicatorIconSize, + isMessageRead: channelState + .currentUserRead!.lastRead + .isAfter(lastMessage.createdAt), + ), ); }, ), - ChannelLastMessageDate( - channel: channel, - textStyle: channelPreviewTheme.lastMessageAtStyle, - ), - // trailing ?? _buildDate(context), + trailing, ], ), ), diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index 67d4ad56..1527493e 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -19,6 +19,7 @@ Widget defaultSeparatorBuilder(BuildContext context, int index) => typedef StreamChannelListViewItemBuilder = Widget Function( BuildContext context, Channel channel, + StreamChannelListTile defaultWidget, ); /// A [ListView] that shows a list of [Channel]s, @@ -51,6 +52,9 @@ class StreamChannelListView extends StatefulWidget { required this.controller, this.itemBuilder, this.separatorBuilder = defaultSeparatorBuilder, + this.emptyBuilder, + this.loadingBuilder, + this.errorBuilder, this.onChannelTap, this.onChannelLongPress, this.padding, @@ -71,13 +75,29 @@ class StreamChannelListView extends StatefulWidget { /// A builder that is called to build items in the [ListView]. /// - /// The `index` parameter is the index of the list tile in the list and the - /// `channel` parameter is the [Channel] at that position. + /// The `channel` parameter is the [Channel] at this position in the list + /// and the `defaultWidget` is the default widget used + /// i.e: [StreamChannelListTile]. final StreamChannelListViewItemBuilder? itemBuilder; /// A builder that is called to build the list separator. final IndexedWidgetBuilder separatorBuilder; + /// A builder that is called to build the empty state of the list. + /// + /// If not provider, [StreamChannelListEmptyWidget] will be used. + final WidgetBuilder? emptyBuilder; + + /// A builder that is called to build the loading state of the list. + /// + /// If not provided, [StreamChannelListLoadingTile] will be used. + final WidgetBuilder? loadingBuilder; + + /// A builder that is called to build the error state of the list. + /// + /// If not provided, [StreamChannelListErrorWidget] will be used. + final Widget Function(BuildContext, StreamChatError)? errorBuilder; + /// Called when the user taps this list tile. final void Function(Channel)? onChannelTap; @@ -250,12 +270,13 @@ class _StreamChannelListViewState extends State { builder: (context, value, _) => value.when( (channels, nextPageKey, error) { if (channels.isEmpty) { - return const Center( - child: Padding( - padding: EdgeInsets.all(8), - child: StreamChannelListEmpty(), - ), - ); + return widget.emptyBuilder?.call(context) ?? + const Center( + child: Padding( + padding: EdgeInsets.all(8), + child: StreamChannelListEmptyWidget(), + ), + ); } return ListView.separated( @@ -290,47 +311,61 @@ class _StreamChannelListViewState extends State { if (index == channels.length) { if (error != null) { - return ChannelListLoadMoreError( + return StreamChannelListLoadMoreError( onTap: _controller.retry, ); } return const Center( child: Padding( padding: EdgeInsets.all(16), - child: ChannelListLoadMoreIndicator(), + child: StreamChannelListLoadMoreIndicator(), ), ); } final channel = channels[index]; - final itemBuilder = widget.itemBuilder; - if (itemBuilder != null) return itemBuilder(context, channel); final onTap = widget.onChannelTap; final onLongPress = widget.onChannelLongPress; - return StreamChannelListTile( + final streamChannelListTile = StreamChannelListTile( channel: channel, onTap: onTap == null ? null : () => onTap(channel), onLongPress: onLongPress == null ? null : () => onLongPress(channel), ); + + final itemBuilder = widget.itemBuilder; + + if (itemBuilder != null) { + return itemBuilder( + context, + channel, + streamChannelListTile, + ); + } + + return streamChannelListTile; }, ); }, - loading: () => ListView.separated( - padding: widget.padding, - physics: widget.physics, - reverse: widget.reverse, - itemCount: 25, - separatorBuilder: widget.separatorBuilder, - itemBuilder: (_, __) => const StreamChannelListLoadingTile(), - ), - error: (error) => Center( - child: StreamChannelListError( - onPressed: _controller.refresh, - ), - ), + loading: () => + widget.loadingBuilder?.call(context) ?? + ListView.separated( + padding: widget.padding, + physics: widget.physics, + reverse: widget.reverse, + itemCount: 25, + separatorBuilder: widget.separatorBuilder, + itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + ), + error: (error) => + widget.errorBuilder?.call(context, error) ?? + Center( + child: StreamChannelListErrorWidget( + onPressed: _controller.refresh, + ), + ), ), ); } @@ -338,9 +373,9 @@ class _StreamChannelListViewState extends State { /// A [StreamChannelListTile] that can be used in a [ListView] to show a /// loading tile while waiting for the [StreamChannelListController] to load /// more channels. -class ChannelListLoadMoreIndicator extends StatelessWidget { - /// Creates a new instance of [ChannelListLoadMoreIndicator]. - const ChannelListLoadMoreIndicator({Key? key}) : super(key: key); +class StreamChannelListLoadMoreIndicator extends StatelessWidget { + /// Creates a new instance of [StreamChannelListLoadMoreIndicator]. + const StreamChannelListLoadMoreIndicator({Key? key}) : super(key: key); @override Widget build(BuildContext context) => const SizedBox( @@ -352,9 +387,9 @@ class ChannelListLoadMoreIndicator extends StatelessWidget { /// A [StreamChannelListTile] that is used to display the error indicator when /// loading more channels fails. -class ChannelListLoadMoreError extends StatelessWidget { - /// Creates a new instance of [ChannelListLoadMoreError]. - const ChannelListLoadMoreError({ +class StreamChannelListLoadMoreError extends StatelessWidget { + /// Creates a new instance of [StreamChannelListLoadMoreError]. + const StreamChannelListLoadMoreError({ Key? key, this.onTap, }) : super(key: key); @@ -407,9 +442,9 @@ class StreamChannelListSeparator extends StatelessWidget { /// A widget that is used to display an error screen /// when [StreamChannelListController] fails to load initial channels. -class StreamChannelListError extends StatelessWidget { - /// Creates a new instance of [StreamChannelListError] widget. - const StreamChannelListError({ +class StreamChannelListErrorWidget extends StatelessWidget { + /// Creates a new instance of [StreamChannelListErrorWidget] widget. + const StreamChannelListErrorWidget({ Key? key, this.onPressed, }) : super(key: key); @@ -445,15 +480,9 @@ class StreamChannelListError extends StatelessWidget { /// A widget that is used to display an empty state when /// [StreamChannelListController] loads zero channels. -class StreamChannelListEmpty extends StatelessWidget { - /// Creates a new instance of [StreamChannelListEmpty] widget. - const StreamChannelListEmpty({ - Key? key, - this.onPressed, - }) : super(key: key); - - /// The callback to invoke when the user taps on the start a chat button. - final VoidCallback? onPressed; +class StreamChannelListEmptyWidget extends StatelessWidget { + /// Creates a new instance of [StreamChannelListEmptyWidget] widget. + const StreamChannelListEmptyWidget({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -461,7 +490,6 @@ class StreamChannelListEmpty extends StatelessWidget { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - const Spacer(), StreamSvgIcon.message( size: 148, color: chatThemeData.colorTheme.disabled, @@ -471,24 +499,6 @@ class StreamChannelListEmpty extends StatelessWidget { context.translations.letsStartChattingLabel, style: chatThemeData.textTheme.headline, ), - const SizedBox(height: 8), - Text( - context.translations.sendingFirstMessageLabel, - textAlign: TextAlign.center, - style: chatThemeData.textTheme.body.copyWith( - color: chatThemeData.colorTheme.textLowEmphasis, - ), - ), - const Spacer(), - TextButton( - onPressed: onPressed, - child: Text( - context.translations.startAChatLabel, - style: chatThemeData.textTheme.bodyBold.copyWith( - color: chatThemeData.colorTheme.accentPrimary, - ), - ), - ), ], ); } From 51e7c873cb1cd89fc7193ac9bda000da311ac22a Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 8 Dec 2021 17:55:55 +0530 Subject: [PATCH 036/201] refactor(ui): minor doc changes Signed-off-by: xsahil03x --- .../v4/channel_list_view/stream_channel_list_controller.dart | 3 +++ .../lib/src/v4/channel_list_view/stream_channel_list_tile.dart | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index c94ac616..488452bd 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -200,6 +200,9 @@ class StreamChannelListController extends PagedValueNotifier { /// Event listener, which can be set in order to listen /// [client] web-socket events. + /// + /// Return `true` if the event is handled. Return `false` to + /// allow the event to be handled internally. bool Function(Event event)? eventListener; StreamSubscription? _channelEventSubscription; diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index d58e1441..685c556c 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -67,7 +67,7 @@ class StreamChannelListTile extends StatelessWidget { final GestureLongPressCallback? onLongPress; /// {@template flutter.material.ListTile.tileColor} - /// Defines the background color of `ListTile` when [selected] is false. + /// Defines the background color of `ListTile`. /// /// When the value is null, the `tileColor` is set to [ListTileTheme.tileColor] /// if it's not null and to [Colors.transparent] if it's null. From ff2c8801d5a515220154f89e35b1236bec15aeaf Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 10 Dec 2021 10:00:30 +0100 Subject: [PATCH 037/201] minor updates --- .../lib/src/client/retry_queue.dart | 1 + packages/stream_chat/lib/stream_chat.dart | 1 + .../lib/src/message_input/message_input.dart | 119 +++++++++--------- .../lib/src/message_input_controller.dart | 13 +- 4 files changed, 70 insertions(+), 64 deletions(-) diff --git a/packages/stream_chat/lib/src/client/retry_queue.dart b/packages/stream_chat/lib/src/client/retry_queue.dart index e1b6df70..7c3157b2 100644 --- a/packages/stream_chat/lib/src/client/retry_queue.dart +++ b/packages/stream_chat/lib/src/client/retry_queue.dart @@ -118,6 +118,7 @@ class RetryQueue { } catch (e) { if (e is! StreamChatNetworkError || !e.isRetriable) { _messageQueue.removeMessage(message); + _sendFailedEvent(message); return true; } // retry logic diff --git a/packages/stream_chat/lib/stream_chat.dart b/packages/stream_chat/lib/stream_chat.dart index 571d78f5..367b27af 100644 --- a/packages/stream_chat/lib/stream_chat.dart +++ b/packages/stream_chat/lib/stream_chat.dart @@ -7,6 +7,7 @@ export 'package:dio/src/options.dart'; export 'package:dio/src/options.dart' show ProgressCallback; export 'package:logging/logging.dart' show Logger, Level; export 'package:rate_limiter/rate_limiter.dart'; +export 'package:uuid/uuid.dart'; export './src/core/api/attachment_file_uploader.dart' show AttachmentFileUploader; diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index aa18fce5..56bedd57 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -421,72 +421,69 @@ class MessageInputState extends State { Widget build(BuildContext context) { Widget child = ValueListenableBuilder( valueListenable: messageInputController, - builder: (context, value, wid) { - print('VALUE ${value.text}'); - return DecoratedBox( - decoration: BoxDecoration( - color: _messageInputTheme.inputBackgroundColor, - ), - child: SafeArea( - child: GestureDetector( - onPanUpdate: (details) { - if (details.delta.dy > 0) { - _focusNode.unfocus(); - if (_openFilePickerSection) { - setState(() { - _openFilePickerSection = false; - }); - } + builder: (context, value, wid) => DecoratedBox( + decoration: BoxDecoration( + color: _messageInputTheme.inputBackgroundColor, + ), + child: SafeArea( + child: GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy > 0) { + _focusNode.unfocus(); + if (_openFilePickerSection) { + setState(() { + _openFilePickerSection = false; + }); } - }, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (_hasQuotedMessage) - Padding( - padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: StreamSvgIcon.reply( - color: _streamChatTheme.colorTheme.disabled, - ), - ), - Text( - context.translations.replyToMessageLabel, - style: const TextStyle(fontWeight: FontWeight.bold), - ), - IconButton( - visualDensity: VisualDensity.compact, - icon: StreamSvgIcon.closeSmall(), - onPressed: widget.onQuotedMessageCleared, - ), - ], - ), - ), + } + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (_hasQuotedMessage) Padding( - padding: const EdgeInsets.symmetric(vertical: 8), - child: _buildTextField(context), - ), - if (messageInputController.value.parentId != null && - !widget.hideSendAsDm) - Padding( - padding: const EdgeInsets.only( - right: 12, - left: 12, - bottom: 12, - ), - child: _buildDmCheckbox(), + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon.reply( + color: _streamChatTheme.colorTheme.disabled, + ), + ), + Text( + context.translations.replyToMessageLabel, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: widget.onQuotedMessageCleared, + ), + ], ), - _buildFilePickerSection(), - ], - ), + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: _buildTextField(context), + ), + if (messageInputController.value.parentId != null && + !widget.hideSendAsDm) + Padding( + padding: const EdgeInsets.only( + right: 12, + left: 12, + bottom: 12, + ), + child: _buildDmCheckbox(), + ), + _buildFilePickerSection(), + ], ), ), - ); - }, + ), + ), ); if (_isEditing) { child = Material( diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 4d1565da..0c6a8719 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -88,7 +88,7 @@ class MessageInputController extends ValueNotifier { /// String get text => _textEditingController.text; - final Message _initialMessage; + Message _initialMessage; /// set message(Message message) { @@ -206,13 +206,20 @@ class MessageInputController extends ValueNotifier { } /// Set the [value] to the initial [Message] value. - void reset() => value = _initialMessage; + void reset({bool resetId = true}) { + if (resetId) { + _initialMessage = _initialMessage.copyWith( + id: const Uuid().v4(), + ); + } + value = _initialMessage; + } @override void dispose() { - super.dispose(); removeListener(_textEditingSyncer); _textEditingController.dispose(); + super.dispose(); } } From 0ec6e1c40fe794cc8d13923f9467834a96c98cd9 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 10 Dec 2021 15:15:58 +0100 Subject: [PATCH 038/201] minor updates --- .../lib/src/message_input/message_input.dart | 4 +- .../lib/src/message_input_controller.dart | 50 ++++++++++++------- .../stream_chat_flutter_core/pubspec.yaml | 2 +- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 56bedd57..5a3e51e8 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -419,9 +419,9 @@ class MessageInputState extends State { @override Widget build(BuildContext context) { - Widget child = ValueListenableBuilder( + Widget child = MessageValueListenableBuilder( valueListenable: messageInputController, - builder: (context, value, wid) => DecoratedBox( + builder: (context, value, _) => DecoratedBox( decoration: BoxDecoration( color: _messageInputTheme.inputBackgroundColor, ), diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 0c6a8719..59dfbff7 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -4,6 +4,10 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat/stream_chat.dart'; +/// A value listenable builder related to a [Message] +typedef MessageValueListenableBuilder = ValueListenableBuilder; + +/// A function that returns true if the message is valid and can be sent. typedef MessageValidator = bool Function(Message message); /// Controller for storing and mutating a [Message] value. @@ -81,21 +85,24 @@ class MessageInputController extends ValueNotifier { } } - /// + /// Returns the current message associated with this controller. + Message get message => value; + + /// Returns the controller of the text field linked to this controller. TextEditingController get textEditingController => _textEditingController; final TextEditingController _textEditingController; - /// + /// Returns the text of the message. String get text => _textEditingController.text; Message _initialMessage; - /// + /// Sets the message. set message(Message message) { value = message; } - /// + /// Sets a command for the message. set command(Command command) { value = value.copyWith( command: command.name, @@ -103,6 +110,7 @@ class MessageInputController extends ValueNotifier { ); } + /// Sets the text of the message. set text(String newText) { var newTextWithCommand = newText; if (value.command != null) { @@ -113,79 +121,83 @@ class MessageInputController extends ValueNotifier { value = value.copyWith(text: newTextWithCommand); } - /// + /// Returns the baseOffset of the text field. int get baseOffset => textEditingController.selection.baseOffset; - /// + /// Returns the start of the selection of the text field. int get selectionStart => textEditingController.selection.start; + /// Sets the showInChannel flag of the message. set showInChannel(bool newValue) { value = value.copyWith(showInChannel: newValue); } - /// + /// Returns true if the message is in a thread and + /// should be shown in the main channel as well. bool get showInChannel => value.showInChannel ?? false; - /// + /// Returns the attachments of the message. List get attachments => value.attachments; + /// Sets the list of [attachments] for the message. set attachments(List attachments) { value = value.copyWith(attachments: attachments); } - /// + /// Adds a new attachment to the message. void addAttachment(Attachment attachment) { attachments = [...attachments, attachment]; } - /// + /// Adds a new attachment at the specified [index]. void addAttachmentAt(int index, Attachment attachment) { attachments = [...attachments]..insert(index, attachment); } - /// + /// Removes the specified [attachment] from the message. void removeAttachment(Attachment attachment) { attachments = [...attachments]..remove(attachment); } - /// + /// Remove the attachment with the given [attachmentId]. void removeAttachmentById(String attachmentId) { attachments = [...attachments]..removeWhere((it) => it.id == attachmentId); } - /// + /// Removes the attachment at the given [index]. void removeAttachmentAt(int index) { attachments = [...attachments]..removeAt(index); } - /// + /// Clears the message attachments. void clearAttachments() { attachments = []; } - /// + /// Returns the list of mentioned users in the message. List get mentionedUsers => value.mentionedUsers; + /// Sets the mentioned users. set mentionedUsers(List users) { value = value.copyWith(mentionedUsers: users); } - /// + /// Adds a user to the list of mentioned users. void addMentionedUser(User user) { mentionedUsers = [...mentionedUsers, user]; } - /// + /// Removes the specified [user] from the mentioned users list. void removeMentionedUser(User user) { mentionedUsers = [...mentionedUsers]..remove(user); } - /// + /// Removes the mentioned user with the given [userId]. void removeMentionedUserById(String userId) { mentionedUsers = [...mentionedUsers]..removeWhere((it) => it.id == userId); } - /// + /// Removes all mentioned users from the message. void clearMentionedUsers() { mentionedUsers = []; } diff --git a/packages/stream_chat_flutter_core/pubspec.yaml b/packages/stream_chat_flutter_core/pubspec.yaml index 1b1734be..fb9307c1 100644 --- a/packages/stream_chat_flutter_core/pubspec.yaml +++ b/packages/stream_chat_flutter_core/pubspec.yaml @@ -6,7 +6,7 @@ repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.14.0 <3.0.0' flutter: ">=1.17.0" dependencies: From b39c013e3584c9786b76fef04d2aa6b3732c30c4 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 10 Dec 2021 15:53:28 +0100 Subject: [PATCH 039/201] add basic test and fix default validator --- .../lib/src/message_input_controller.dart | 2 +- .../test/message_input_controller_test.dart | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 packages/stream_chat_flutter_core/test/message_input_controller_test.dart diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 59dfbff7..3944d59b 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -63,7 +63,7 @@ class MessageInputController extends ValueNotifier { bool get isValid => validator(value); static bool _defaultValidator(Message message) => - message.text?.isNotEmpty != true && message.attachments.isEmpty; + message.text?.isNotEmpty == true || message.attachments.isNotEmpty; void _textEditingSyncer() { final cleanText = value.command == null diff --git a/packages/stream_chat_flutter_core/test/message_input_controller_test.dart b/packages/stream_chat_flutter_core/test/message_input_controller_test.dart new file mode 100644 index 00000000..842a58bb --- /dev/null +++ b/packages/stream_chat_flutter_core/test/message_input_controller_test.dart @@ -0,0 +1,30 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +void main() { + testWidgets( + 'should instantiate a new MessageInputController with default validator' + ' and empty message', + (tester) async { + final controller = MessageInputController(); + + expect(controller.isValid, false); + controller.text = 'test'; + expect(controller.isValid, true); + }, + ); + + testWidgets( + 'should instantiate a new MessageInputController with default validator' + ' and specified message', + (tester) async { + final message = Message(text: 'test'); + final controller = MessageInputController( + message: message, + ); + + expect(controller.message, message); + expect(controller.isValid, true); + }, + ); +} From 42ed167091882a0dd428765ab69850485361431a Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Fri, 10 Dec 2021 17:35:58 +0100 Subject: [PATCH 040/201] chore: docs and linting improvements --- .../lib/src/client/retry_queue.dart | 21 ++--- .../lib/src/core/models/message.dart | 85 ++++++++++--------- .../lib/src/message_input/message_input.dart | 70 +++++++-------- .../stream_attachment_picker.dart | 11 ++- .../stream_message_text_field.dart | 59 +++++++------ .../lib/src/message_input_controller.dart | 25 +++--- 6 files changed, 129 insertions(+), 142 deletions(-) diff --git a/packages/stream_chat/lib/src/client/retry_queue.dart b/packages/stream_chat/lib/src/client/retry_queue.dart index 7c3157b2..ad140ad6 100644 --- a/packages/stream_chat/lib/src/client/retry_queue.dart +++ b/packages/stream_chat/lib/src/client/retry_queue.dart @@ -1,18 +1,13 @@ import 'dart:async'; import 'package:collection/collection.dart'; -import 'package:logging/logging.dart'; import 'package:rxdart/rxdart.dart'; -import 'package:stream_chat/src/client/channel.dart'; import 'package:stream_chat/src/client/retry_policy.dart'; -import 'package:stream_chat/src/core/error/error.dart'; -import 'package:stream_chat/src/core/models/message.dart'; -import 'package:stream_chat/src/event_type.dart'; import 'package:stream_chat/stream_chat.dart'; -/// The retry queue associated to a channel +/// The retry queue associated to a channel. class RetryQueue { - /// Instantiate a new RetryQueue object + /// Instantiate a new RetryQueue object. RetryQueue({ required this.channel, this.logger, @@ -22,13 +17,13 @@ class RetryQueue { _listenFailedEvents(); } - /// The channel of this queue + /// The channel of this queue. final Channel channel; - /// The client associated with this [channel] + /// The client associated with this [channel]. final StreamChatClient client; - /// The logger associated to this queue + /// The logger associated to this queue. final Logger? logger; late final RetryPolicy _retryPolicy; @@ -68,7 +63,7 @@ class RetryQueue { }).addTo(_compositeSubscription); } - /// Add a list of messages + /// Add a list of messages. void add(List messages) { if (messages.isEmpty) return; if (!_messageQueue.containsAllMessage(messages)) { @@ -180,10 +175,10 @@ class RetryQueue { } } - /// Whether our [_messageQueue] has messages or not + /// Whether our [_messageQueue] has messages or not. bool get hasMessages => _messageQueue.isNotEmpty; - /// Call this method to dispose this object + /// Call this method to dispose this object. void dispose() { _messageQueue.clear(); _compositeSubscription.dispose(); diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index 85bf8a96..f1408d45 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -14,7 +14,7 @@ class _PinExpires { const _pinExpires = _PinExpires(); -/// Enum defining the status of a sending message +/// Enum defining the status of a sending message. enum MessageSendingStatus { /// Message is being sent sending, @@ -40,10 +40,10 @@ enum MessageSendingStatus { sent, } -/// The class that contains the information about a message +/// The class that contains the information about a message. @JsonSerializable() class Message extends Equatable { - /// Constructor used for json serialization + /// Constructor used for json serialization. Message({ String? id, this.text, @@ -65,13 +65,13 @@ class Message extends Equatable { this.command, DateTime? createdAt, DateTime? updatedAt, + this.deletedAt, this.user, this.pinned = false, this.pinnedAt, DateTime? pinExpires, this.pinnedBy, this.extraData = const {}, - this.deletedAt, this.status = MessageSendingStatus.sending, this.i18n, }) : id = id ?? const Uuid().v4(), @@ -80,7 +80,7 @@ class Message extends Equatable { _updatedAt = updatedAt, _quotedMessageId = quotedMessageId; - /// Create a new instance from a json + /// Create a new instance from JSON. factory Message.fromJson(Map json) => _$MessageFromJson( Serializer.moveToExtraDataFromRoot(json, topLevelFields), ).copyWith( @@ -91,14 +91,14 @@ class Message extends Equatable { /// the message is added. final String id; - /// The text of this message + /// The text of this message. final String? text; - /// The status of a sending message + /// The status of a sending message. @JsonKey(ignore: true) final MessageSendingStatus status; - /// The message type + /// The message type. @JsonKey( includeIfNull: false, toJson: Serializer.readOnly, @@ -110,15 +110,15 @@ class Message extends Equatable { @JsonKey(includeIfNull: false) final List attachments; - /// The list of user mentioned in the message + /// The list of user mentioned in the message. @JsonKey(toJson: User.toIds) final List mentionedUsers; - /// A map describing the count of number of every reaction + /// A map describing the count of number of every reaction. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final Map? reactionCounts; - /// A map describing the count of score of every reaction + /// A map describing the count of score of every reaction. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final Map? reactionScores; @@ -133,7 +133,7 @@ class Message extends Equatable { /// The ID of the parent message, if the message is a thread reply. final String? parentId; - /// A quoted reply message + /// A quoted reply message. @JsonKey(toJson: Serializer.readOnly) final Message? quotedMessage; @@ -153,10 +153,10 @@ class Message extends Equatable { /// Check if this message needs to show in the channel. final bool? showInChannel; - /// If true the message is silent + /// If true the message is silent. final bool silent; - /// If true the message is shadowed + /// If true the message is shadowed. @JsonKey( includeIfNull: false, toJson: Serializer.readOnly, @@ -169,6 +169,10 @@ class Message extends Equatable { final DateTime? _createdAt; + /// Reserved field indicating when the message was deleted. + @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) + final DateTime? deletedAt; + /// Reserved field indicating when the message was created. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) DateTime get createdAt => _createdAt ?? DateTime.now(); @@ -179,48 +183,45 @@ class Message extends Equatable { @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) DateTime get updatedAt => _updatedAt ?? DateTime.now(); - /// User who sent the message + /// User who sent the message. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final User? user; - /// If true the message is pinned + /// If true the message is pinned. final bool pinned; - /// Reserved field indicating when the message was pinned + /// Reserved field indicating when the message was pinned. @JsonKey(toJson: Serializer.readOnly) final DateTime? pinnedAt; - /// Reserved field indicating when the message will expire + /// Reserved field indicating when the message will expire. /// - /// if `null` message has no expiry + /// If `null` message has no expiry. final DateTime? pinExpires; - /// Reserved field indicating who pinned the message + /// Reserved field indicating who pinned the message. @JsonKey(toJson: Serializer.readOnly) final User? pinnedBy; - /// Message custom extraData + /// Message custom extraData. @JsonKey(includeIfNull: false) final Map extraData; - /// True if the message is a system info + /// True if the message is a system info. bool get isSystem => type == 'system'; - /// True if the message has been deleted + /// True if the message has been deleted. bool get isDeleted => type == 'deleted'; - /// True if the message is ephemeral + /// True if the message is ephemeral. bool get isEphemeral => type == 'ephemeral'; - /// Reserved field indicating when the message was deleted. - @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - final DateTime? deletedAt; - /// A Map of translations. @JsonKey(includeIfNull: false) final Map? i18n; /// Known top level fields. + /// /// Useful for [Serializer] methods. static const topLevelFields = [ 'id', @@ -253,7 +254,7 @@ class Message extends Equatable { 'i18n', ]; - /// Serialize to json + /// Serialize to json. Map toJson() => Serializer.moveFromExtraDataToRoot( _$MessageToJson(this), ); @@ -265,6 +266,8 @@ class Message extends Equatable { String? type, List? attachments, List? mentionedUsers, + bool? silent, + bool? shadowed, Map? reactionCounts, Map? reactionScores, List? latestReactions, @@ -275,8 +278,6 @@ class Message extends Equatable { int? replyCount, List? threadParticipants, bool? showInChannel, - bool? shadowed, - bool? silent, String? command, DateTime? createdAt, DateTime? updatedAt, @@ -304,6 +305,8 @@ class Message extends Equatable { type: type ?? this.type, attachments: attachments ?? this.attachments, mentionedUsers: mentionedUsers ?? this.mentionedUsers, + silent: silent ?? this.silent, + shadowed: shadowed ?? this.shadowed, reactionCounts: reactionCounts ?? this.reactionCounts, reactionScores: reactionScores ?? this.reactionScores, latestReactions: latestReactions ?? this.latestReactions, @@ -316,18 +319,16 @@ class Message extends Equatable { showInChannel: showInChannel ?? this.showInChannel, command: command ?? this.command, createdAt: createdAt ?? _createdAt, - silent: silent ?? this.silent, - extraData: extraData ?? this.extraData, - user: user ?? this.user, - shadowed: shadowed ?? this.shadowed, updatedAt: updatedAt ?? _updatedAt, deletedAt: deletedAt ?? this.deletedAt, - status: status ?? this.status, + user: user ?? this.user, pinned: pinned ?? this.pinned, pinnedAt: pinnedAt ?? this.pinnedAt, - pinnedBy: pinnedBy ?? this.pinnedBy, pinExpires: pinExpires == _pinExpires ? this.pinExpires : pinExpires as DateTime?, + pinnedBy: pinnedBy ?? this.pinnedBy, + extraData: extraData ?? this.extraData, + status: status ?? this.status, i18n: i18n ?? this.i18n, ); } @@ -340,6 +341,8 @@ class Message extends Equatable { type: other.type, attachments: other.attachments, mentionedUsers: other.mentionedUsers, + silent: other.silent, + shadowed: other.shadowed, reactionCounts: other.reactionCounts, reactionScores: other.reactionScores, latestReactions: other.latestReactions, @@ -352,17 +355,15 @@ class Message extends Equatable { showInChannel: other.showInChannel, command: other.command, createdAt: other.createdAt, - silent: other.silent, - extraData: other.extraData, - user: other.user, - shadowed: other.shadowed, updatedAt: other.updatedAt, deletedAt: other.deletedAt, - status: other.status, + user: other.user, pinned: other.pinned, pinnedAt: other.pinnedAt, pinExpires: other.pinExpires, pinnedBy: other.pinnedBy, + extraData: other.extraData, + status: other.status, i18n: other.i18n, ); diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 5a3e51e8..26886d87 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -4,7 +4,6 @@ import 'dart:math'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:collection/collection.dart'; import 'package:file_picker/file_picker.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -14,16 +13,12 @@ import 'package:stream_chat_flutter/src/commands_overlay.dart'; import 'package:stream_chat_flutter/src/emoji/emoji.dart'; import 'package:stream_chat_flutter/src/emoji_overlay.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/message_list_view.dart'; import 'package:stream_chat_flutter/src/multi_overlay.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/user_mentions_overlay.dart'; import 'package:stream_chat_flutter/src/video_service.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'package:video_compress/video_compress.dart'; export 'package:video_compress/video_compress.dart' show VideoQuality; @@ -42,13 +37,14 @@ typedef ErrorListener = void Function( /// /// This callback should not throw. /// -/// It exists merely for showing custom error, and should not be used otherwise. +/// It exists merely for showing a custom error, and should not be used +/// otherwise. typedef AttachmentLimitExceedListener = void Function( int limit, String error, ); -/// Builder for attachment thumbnails +/// Builder for attachment thumbnails. typedef AttachmentThumbnailBuilder = Widget Function( BuildContext, Attachment, @@ -77,8 +73,8 @@ typedef ActionButtonBuilder = Widget Function( IconButton defaultActionButton, ); -/// Widget builder for widgets that require may required data from the -/// [MessageInputController] +/// Widget builder for widgets that may require data from the +/// [MessageInputController]. typedef MessageRelatedBuilder = Widget Function( BuildContext context, MessageInputController messageInputController, @@ -91,7 +87,7 @@ typedef AttachmentsPickerBuilder = Widget Function( StreamAttachmentPicker defaultPicker, ); -/// Location for actions on the [MessageInput] +/// Location for actions on the [MessageInput]. enum ActionsLocation { /// Align to left left, @@ -106,7 +102,7 @@ enum ActionsLocation { rightInside, } -/// Default attachments for widget +/// Default attachments for widget. enum DefaultAttachmentTypes { /// Image Attachment image, @@ -118,7 +114,7 @@ enum DefaultAttachmentTypes { file, } -/// Available locations for the sendMessage button relative to the textField +/// Available locations for the `sendMessage` button relative to the textField. enum SendButtonLocation { /// inside the textField inside, @@ -131,17 +127,17 @@ const _kMinMediaPickerSize = 360.0; const _kDefaultMaxAttachmentSize = 20971520; // 20MB in Bytes -/// Inactive state +/// Inactive state: /// /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input_paint.png) /// -/// Focused state +/// Focused state: /// /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input2.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input2_paint.png) /// -/// Widget used to enter the message and add attachments +/// Widget used to enter a message and add attachments: /// /// ```dart /// class ChannelPage extends StatelessWidget { @@ -176,8 +172,7 @@ const _kDefaultMaxAttachmentSize = 20971520; // 20MB in Bytes /// as the bottom widget. /// /// The widget renders the ui based on the first ancestor of -/// type [StreamChatTheme]. -/// Modify it to change the widget appearance. +/// type [StreamChatTheme]. Modify it to change the widget appearance. class MessageInput extends StatefulWidget { /// Instantiate a new MessageInput const MessageInput({ @@ -218,61 +213,60 @@ class MessageInput extends StatefulWidget { this.shouldKeepFocusAfterMessage, }) : super(key: key); - /// List of options for showing overlays + /// List of options for showing overlays. final List customOverlays; - /// Video quality to use when compressing the videos + /// Video quality to use when compressing the videos. final VideoQuality compressedVideoQuality; - /// Frame rate to use when compressing the videos + /// Frame rate to use when compressing the videos. final int compressedVideoFrameRate; - /// Max attachment size in bytes - /// Defaults to 20 MB - /// do not set it if you're using our default CDN + /// Max attachment size in bytes: + /// - Defaults to 20 MB + /// - Do not set it if you're using our default CDN final int maxAttachmentSize; - /// Function called after sending the message + /// Function called after sending the message. final void Function(Message)? onMessageSent; - /// Function called right before sending the message - /// Use this to transform the message + /// Function called right before sending the message. + /// + /// Use this to transform the message. final FutureOr Function(Message)? preMessageSending; - /// Maximum Height for the TextField to grow before it starts scrolling + /// Maximum Height for the TextField to grow before it starts scrolling. final double maxHeight; - /// The keyboard type assigned to the TextField + /// The keyboard type assigned to the TextField. final TextInputType keyboardType; - /// If true the attachments button will not be displayed + /// If true the attachments button will not be displayed. final bool disableAttachments; - /// Use this property to hide/show the commands button + /// Use this property to hide/show the commands button. final bool showCommandsButton; - /// Hide send as dm checkbox + /// Hide send as dm checkbox. final bool hideSendAsDm; - /// The text controller of the TextField + /// The text controller of the TextField. final MessageInputController? messageInputController; - /// List of action widgets + /// List of action widgets. final List actions; - /// The location of the custom actions + /// The location of the custom actions. final ActionsLocation actionsLocation; - /// Map that defines a thumbnail builder for an attachment type + /// Map that defines a thumbnail builder for an attachment type. final Map? attachmentThumbnailBuilders; - /// The focus node associated to the TextField + /// The focus node associated to the TextField. final FocusNode? focusNode; - /// final Message? quotedMessage; - /// final VoidCallback? onQuotedMessageCleared; /// The location of the send button diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 066ed780..88fbab74 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -21,7 +21,6 @@ typedef CustomAttachmentIconBuilder = Widget Function( bool active, ); -/// class StreamAttachmentPicker extends StatefulWidget { final bool isOpen; final double pickerSize; @@ -32,15 +31,15 @@ class StreamAttachmentPicker extends StatefulWidget { final ValueChanged? onError; final FilePickerCallback onFilePicked; - /// Video quality to use when compressing the videos + /// Video quality to use when compressing the videos. final VideoQuality compressedVideoQuality; - /// Frame rate to use when compressing the videos + /// Frame rate to use when compressing the videos. final int compressedVideoFrameRate; - /// Max attachment size in bytes - /// Defaults to 20 MB - /// do not set it if you're using our default CDN + /// Max attachment size in bytes: + /// - Defaults to 20 MB + /// - Do not set it if you're using our default CDN final int maxAttachmentSize; final List allowedAttachmentTypes; diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart index 37b4f683..e5ffde94 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart @@ -21,8 +21,8 @@ export 'package:flutter/services.dart' class StreamMessageTextField extends StatefulWidget { /// Creates a Material Design text field. /// - /// If [decoration] is non-null (which is the default), the text field requires - /// one of its ancestors to be a [Material] widget. + /// If [decoration] is non-null (which is the default), the text field + /// requires one of its ancestors to be a [Material] widget. /// /// To remove the decoration entirely (including the extra padding introduced /// by the decoration to save space for the labels), set the [decoration] to @@ -115,7 +115,7 @@ class StreamMessageTextField extends StatefulWidget { this.selectionHeightStyle = ui.BoxHeightStyle.tight, this.selectionWidthStyle = ui.BoxWidthStyle.tight, this.keyboardAppearance, - this.scrollPadding = const EdgeInsets.all(20.0), + this.scrollPadding = const EdgeInsets.all(20), this.dragStartBehavior = DragStartBehavior.start, this.enableInteractiveSelection = true, this.selectionControls, @@ -127,34 +127,24 @@ class StreamMessageTextField extends StatefulWidget { this.autofillHints, this.restorationId, this.enableIMEPersonalizedLearning = true, - }) : assert(textAlign != null), - assert(readOnly != null), - assert(autofocus != null), - assert(obscuringCharacter != null && obscuringCharacter.length == 1), - assert(obscureText != null), - assert(autocorrect != null), + }) : assert(obscuringCharacter.length == 1, + '`obscuringCharacter.length` must be 1'), smartDashesType = smartDashesType ?? (obscureText ? SmartDashesType.disabled : SmartDashesType.enabled), smartQuotesType = smartQuotesType ?? (obscureText ? SmartQuotesType.disabled : SmartQuotesType.enabled), - assert(enableSuggestions != null), - assert(enableInteractiveSelection != null), - assert(maxLengthEnforced != null), assert( maxLengthEnforced || maxLengthEnforcement == null, 'maxLengthEnforced is deprecated, use only maxLengthEnforcement', ), - assert(scrollPadding != null), - assert(dragStartBehavior != null), - assert(selectionHeightStyle != null), - assert(selectionWidthStyle != null), - assert(maxLines == null || maxLines > 0), - assert(minLines == null || minLines > 0), + assert(maxLines == null || maxLines > 0, + '`maxLines` needs to be left as null or bigger than 0'), + assert(minLines == null || minLines > 0, + '`minLines` needs to be left as null or bigger than 0'), assert( (maxLines == null) || (minLines == null) || (maxLines >= minLines), "minLines can't be greater than maxLines", ), - assert(expands != null), assert( !expands || (maxLines == null && minLines == null), 'minLines and maxLines must be null when expands is true.', @@ -164,14 +154,15 @@ class StreamMessageTextField extends StatefulWidget { assert(maxLength == null || maxLength == TextField.noMaxLength || maxLength > 0), - // Assert the following instead of setting it directly to avoid surprising the user by silently changing the value they set. + + // Assert the following instead of setting it directly to avoid + // surprising the user by silently changing the value they set. assert( !identical(textInputAction, TextInputAction.newline) || maxLines == 1 || !identical(keyboardType, TextInputType.text), - 'Use keyboardType TextInputType.multiline when using TextInputAction.newline on a multiline TextField.', + '''Use keyboardType TextInputType.multiline when using TextInputAction.newline on a multiline TextField.''', ), - assert(enableIMEPersonalizedLearning != null), keyboardType = keyboardType ?? (maxLines == 1 ? TextInputType.text : TextInputType.multiline), toolbarOptions = toolbarOptions ?? @@ -230,7 +221,8 @@ class StreamMessageTextField extends StatefulWidget { /// cause the focus to change, and will not make the keyboard visible. /// /// This widget builds an [EditableText] and will ensure that the keyboard is - /// showing when it is tapped by calling [EditableTextState.requestKeyboard()]. + /// showing when it is tapped by calling + /// [EditableTextState.requestKeyboard()]. final FocusNode? focusNode; /// The decoration to show around the text field. @@ -330,16 +322,20 @@ class StreamMessageTextField extends StatefulWidget { /// If set, a character counter will be displayed below the /// field showing how many characters have been entered. If set to a number /// greater than 0, it will also display the maximum number allowed. If set - /// to [TextField.noMaxLength] then only the current character count is displayed. + /// to [TextField.noMaxLength] then only the current character count is + /// displayed. /// /// After [maxLength] characters have been input, additional input /// is ignored, unless [maxLengthEnforcement] is set to /// [MaxLengthEnforcement.none]. /// - /// The text field enforces the length with a [LengthLimitingTextInputFormatter], - /// which is evaluated after the supplied [inputFormatters], if any. + /// The text field enforces the length with a + /// [LengthLimitingTextInputFormatter], which is evaluated after the supplied + /// [inputFormatters], if any. + /// + /// This value must be either null, [TextField.noMaxLength], or greater than + /// 0. /// - /// This value must be either null, [TextField.noMaxLength], or greater than 0. /// If null (the default) then there is no limit to the number of characters /// that can be entered. If set to [TextField.noMaxLength], then no limit will /// be enforced, but the number of characters entered will still be displayed. @@ -446,7 +442,8 @@ class StreamMessageTextField extends StatefulWidget { /// /// This setting is only honored on iOS devices. /// - /// If unset, defaults to the brightness of [ThemeData.primaryColorBrightness]. + /// If unset, defaults to the brightness of + /// [ThemeData.primaryColorBrightness]. final Brightness? keyboardAppearance; /// {@macro flutter.widgets.editableText.scrollPadding} @@ -490,14 +487,16 @@ class StreamMessageTextField extends StatefulWidget { /// widget. /// /// If [mouseCursor] is a [MaterialStateProperty], - /// [MaterialStateProperty.resolve] is used for the following [MaterialState]s: + /// [MaterialStateProperty.resolve] is used for the following + /// [MaterialState]s: /// /// * [MaterialState.error]. /// * [MaterialState.hovered]. /// * [MaterialState.focused]. /// * [MaterialState.disabled]. /// - /// If this property is null, [MaterialStateMouseCursor.textable] will be used. + /// If this property is null, [MaterialStateMouseCursor.textable] will be + /// used. /// /// The [mouseCursor] is the only property of [TextField] that controls the /// appearance of the mouse pointer. All other properties related to "cursor" diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 59dfbff7..d0658f57 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -4,7 +4,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat/stream_chat.dart'; -/// A value listenable builder related to a [Message] +/// A value listenable builder related to a [Message]. +/// +/// Pass in a [MessageInputController] as the `valueListenable`. typedef MessageValueListenableBuilder = ValueListenableBuilder; /// A function that returns true if the message is valid and can be sent. @@ -35,7 +37,7 @@ class MessageInputController extends ValueNotifier { validator: validator ?? _defaultValidator, ); - /// Creates a controller for an editable text field from an initial + /// Creates a controller for an editable text field from initial /// [attachments]. factory MessageInputController.fromAttachments( List attachments, { @@ -127,7 +129,7 @@ class MessageInputController extends ValueNotifier { /// Returns the start of the selection of the text field. int get selectionStart => textEditingController.selection.start; - /// Sets the showInChannel flag of the message. + /// Sets the [showInChannel] flag of the message. set showInChannel(bool newValue) { value = value.copyWith(showInChannel: newValue); } @@ -202,14 +204,14 @@ class MessageInputController extends ValueNotifier { mentionedUsers = []; } - /// Set the [value] to empty. + /// Sets the [message], or [value], to empty. /// /// After calling this function, [text], [attachments] and [mentionedUsers] - /// all will be empty. + /// will all be empty. /// /// Calling this will notify all the listeners of this /// [MessageInputController] that they need to update - /// (it calls [notifyListeners]). For this reason, + /// (calls [notifyListeners]). For this reason, /// this method should only be called between frames, e.g. in response to user /// actions, not during the build, layout, or paint phases. void clear() { @@ -217,7 +219,7 @@ class MessageInputController extends ValueNotifier { _textEditingController.clear(); } - /// Set the [value] to the initial [Message] value. + /// Sets the [value] to the initial [Message] value. void reset({bool resetId = true}) { if (resetId) { _initialMessage = _initialMessage.copyWith( @@ -246,16 +248,13 @@ class RestorableMessageInputController extends RestorableChangeNotifier { /// Creates a [RestorableMessageInputController]. /// - /// This constructor treats a null `text` argument as if it were the empty - /// string. + /// This constructor creates a default [Message] when no `message` argument + /// is supplied. RestorableMessageInputController({Message? message}) : _initialValue = message ?? Message(); /// Creates a [RestorableMessageInputController] from an initial - /// [TextEditingValue]. - /// - /// This constructor treats a null `value` argument as if it were - /// [TextEditingValue.empty]. + /// [text] value. factory RestorableMessageInputController.fromText(String? text) => RestorableMessageInputController(message: Message(text: text)); From 527ac4563f10ad9c2e9de8f5dee6d94699703903 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 13 Dec 2021 11:33:46 +0100 Subject: [PATCH 041/201] fix tests --- .../lib/src/core/models/message.dart | 16 +++----- .../test/src/client/channel_test.dart | 37 +++++++++++++++---- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index 85bf8a96..82bc7e28 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -76,8 +76,8 @@ class Message extends Equatable { this.i18n, }) : id = id ?? const Uuid().v4(), pinExpires = pinExpires?.toUtc(), - _createdAt = createdAt, - _updatedAt = updatedAt, + createdAt = createdAt ?? DateTime.now(), + updatedAt = updatedAt ?? DateTime.now(), _quotedMessageId = quotedMessageId; /// Create a new instance from a json @@ -167,17 +167,13 @@ class Message extends Equatable { @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final String? command; - final DateTime? _createdAt; - /// Reserved field indicating when the message was created. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - DateTime get createdAt => _createdAt ?? DateTime.now(); - - final DateTime? _updatedAt; + final DateTime createdAt; /// Reserved field indicating when the message was updated last time. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - DateTime get updatedAt => _updatedAt ?? DateTime.now(); + final DateTime updatedAt; /// User who sent the message @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) @@ -315,12 +311,12 @@ class Message extends Equatable { threadParticipants: threadParticipants ?? this.threadParticipants, showInChannel: showInChannel ?? this.showInChannel, command: command ?? this.command, - createdAt: createdAt ?? _createdAt, + createdAt: createdAt ?? this.createdAt, silent: silent ?? this.silent, extraData: extraData ?? this.extraData, user: user ?? this.user, shadowed: shadowed ?? this.shadowed, - updatedAt: updatedAt ?? _updatedAt, + updatedAt: updatedAt ?? this.updatedAt, deletedAt: deletedAt ?? this.deletedAt, status: status ?? this.status, pinned: pinned ?? this.pinned, diff --git a/packages/stream_chat/test/src/client/channel_test.dart b/packages/stream_chat/test/src/client/channel_test.dart index c217431a..60e8dd93 100644 --- a/packages/stream_chat/test/src/client/channel_test.dart +++ b/packages/stream_chat/test/src/client/channel_test.dart @@ -244,9 +244,13 @@ void main() { group('`.sendMessage`', () { test('should work fine', () async { - final message = Message(id: 'test-message-id'); + final message = Message( + id: 'test-message-id', + user: client.state.currentUser, + ); - final sendMessageResponse = SendMessageResponse()..message = message; + final sendMessageResponse = SendMessageResponse() + ..message = message.copyWith(status: MessageSendingStatus.sent); when(() => client.sendMessage( any(that: isSameMessageAs(message)), @@ -329,6 +333,7 @@ void main() { .map((it) => it.copyWith(uploadState: const UploadState.success())) .toList(growable: false), + status: MessageSendingStatus.sent, )); expectLater( @@ -455,7 +460,10 @@ void main() { group('`.updateMessage`', () { test('should work fine', () async { - final message = Message(id: 'test-message-id'); + final message = Message( + id: 'test-message-id', + status: MessageSendingStatus.sent, + ); final updateMessageResponse = UpdateMessageResponse() ..message = message; @@ -530,6 +538,7 @@ void main() { any(that: isSameMessageAs(message)), )).thenAnswer((_) async => UpdateMessageResponse() ..message = message.copyWith( + status: MessageSendingStatus.sent, attachments: attachments .map((it) => it.copyWith(uploadState: const UploadState.success())) @@ -678,7 +687,7 @@ void main() { [ isSameMessageAs( updateMessageResponse.message.copyWith( - status: MessageSendingStatus.sent, + status: MessageSendingStatus.sending, ), matchText: true, matchSendingStatus: true, @@ -707,7 +716,10 @@ void main() { group('`.deleteMessage`', () { test('should work fine', () async { const messageId = 'test-message-id'; - final message = Message(id: messageId); + final message = Message( + id: messageId, + status: MessageSendingStatus.sent, + ); when(() => client.deleteMessage(messageId)) .thenAnswer((_) async => EmptyResponse()); @@ -1077,7 +1089,10 @@ void main() { group('`.sendReaction`', () { test('should work fine', () async { const type = 'test-reaction-type'; - final message = Message(id: 'test-message-id'); + final message = Message( + id: 'test-message-id', + status: MessageSendingStatus.sent, + ); final reaction = Reaction(type: type, messageId: message.id); @@ -1120,7 +1135,10 @@ void main() { 'should restore previous message if `client.sendReaction` throws', () async { const type = 'test-reaction-type'; - final message = Message(id: 'test-message-id'); + final message = Message( + id: 'test-message-id', + status: MessageSendingStatus.sent, + ); final reaction = Reaction(type: type, messageId: message.id); @@ -1181,6 +1199,7 @@ void main() { latestReactions: [prevReaction], reactionScores: const {prevType: 1}, reactionCounts: const {prevType: 1}, + status: MessageSendingStatus.sent, ); const type = 'test-reaction-type-2'; @@ -1212,7 +1231,7 @@ void main() { emitsInOrder([ [ isSameMessageAs( - newMessage.copyWith(status: MessageSendingStatus.sent), + newMessage, matchReactions: true, matchSendingStatus: true, ), @@ -1255,6 +1274,7 @@ void main() { latestReactions: [reaction], reactionScores: const {type: 1}, reactionCounts: const {type: 1}, + status: MessageSendingStatus.sent, ); when(() => client.deleteReaction(messageId, type)) @@ -1302,6 +1322,7 @@ void main() { latestReactions: [reaction], reactionScores: const {type: 1}, reactionCounts: const {type: 1}, + status: MessageSendingStatus.sent, ); when(() => client.deleteReaction(messageId, type)) From b372f7b3f8470dc799f67dc02a60231805db04d2 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 13 Dec 2021 11:44:33 +0100 Subject: [PATCH 042/201] revert message.dart --- .../stream_chat/lib/src/core/models/message.dart | 16 ++++++++++------ .../lib/src/message_input/message_input.dart | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index 82bc7e28..85bf8a96 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -76,8 +76,8 @@ class Message extends Equatable { this.i18n, }) : id = id ?? const Uuid().v4(), pinExpires = pinExpires?.toUtc(), - createdAt = createdAt ?? DateTime.now(), - updatedAt = updatedAt ?? DateTime.now(), + _createdAt = createdAt, + _updatedAt = updatedAt, _quotedMessageId = quotedMessageId; /// Create a new instance from a json @@ -167,13 +167,17 @@ class Message extends Equatable { @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) final String? command; + final DateTime? _createdAt; + /// Reserved field indicating when the message was created. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - final DateTime createdAt; + DateTime get createdAt => _createdAt ?? DateTime.now(); + + final DateTime? _updatedAt; /// Reserved field indicating when the message was updated last time. @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - final DateTime updatedAt; + DateTime get updatedAt => _updatedAt ?? DateTime.now(); /// User who sent the message @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) @@ -311,12 +315,12 @@ class Message extends Equatable { threadParticipants: threadParticipants ?? this.threadParticipants, showInChannel: showInChannel ?? this.showInChannel, command: command ?? this.command, - createdAt: createdAt ?? this.createdAt, + createdAt: createdAt ?? _createdAt, silent: silent ?? this.silent, extraData: extraData ?? this.extraData, user: user ?? this.user, shadowed: shadowed ?? this.shadowed, - updatedAt: updatedAt ?? this.updatedAt, + updatedAt: updatedAt ?? _updatedAt, deletedAt: deletedAt ?? this.deletedAt, status: status ?? this.status, pinned: pinned ?? this.pinned, diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 5a3e51e8..99acb33a 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -1526,7 +1526,7 @@ class MessageInputState extends State { Future sendMessage() async { var message = messageInputController.value; - if (messageInputController.isValid) { + if (!messageInputController.isValid) { return; } From 67f9700b4a3149eab56cfaaec4e4bb0eac8b1949 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 13 Dec 2021 17:17:23 +0100 Subject: [PATCH 043/201] restoration wip --- .../lib/src/message_input/message_input.dart | 204 +++++++++++------- .../stream_attachment_picker.dart | 16 +- .../stream_message_send_button.dart | 33 ++- .../stream_message_text_field.dart | 26 +-- .../lib/src/channels_bloc.dart | 1 - .../lib/src/message_input_controller.dart | 27 +-- .../lib/src/message_list_core.dart | 1 - .../test/src/mapper/message_mapper_test.dart | 1 - .../mapper/pinned_message_mapper_test.dart | 1 - 9 files changed, 171 insertions(+), 139 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index b7eb4cf2..caceba36 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -23,6 +23,9 @@ import 'package:video_compress/video_compress.dart'; export 'package:video_compress/video_compress.dart' show VideoQuality; +/// A function that returns true if the message is valid and can be sent. +typedef MessageValidator = bool Function(Message message); + /// A callback that can be passed to [MessageInput.onError]. /// /// This callback should not throw. @@ -211,6 +214,8 @@ class MessageInput extends StatefulWidget { this.attachmentsPickerBuilder, this.sendButtonBuilder, this.shouldKeepFocusAfterMessage, + this.validator = _defaultValidator, + this.restorationId, }) : super(key: key); /// List of options for showing overlays. @@ -265,8 +270,10 @@ class MessageInput extends StatefulWidget { /// The focus node associated to the TextField. final FocusNode? focusNode; + /// The message that is being quoted. final Message? quotedMessage; + /// Callback invoked when the quoted message is cleared. final VoidCallback? onQuotedMessageCleared; /// The location of the send button @@ -325,6 +332,15 @@ class MessageInput extends StatefulWidget { /// The default behaviour keeps focus until a command is enabled. final bool? shouldKeepFocusAfterMessage; + /// A callback function that validates the message. + final MessageValidator validator; + + /// Restoration ID to save and restore the state of the MessageInput. + final String? restorationId; + + static bool _defaultValidator(Message message) => + message.text?.isNotEmpty == true || message.attachments.isNotEmpty; + @override MessageInputState createState() => MessageInputState(); @@ -341,40 +357,77 @@ class MessageInput extends StatefulWidget { } /// State of [MessageInput] -class MessageInputState extends State { +class MessageInputState extends State + with RestorationMixin { final _imagePicker = ImagePicker(); late final _focusNode = widget.focusNode ?? FocusNode(); bool _inputEnabled = true; - bool get _commandEnabled => messageInputController.value.command != null; + bool get _commandEnabled => _effectiveController.value.command != null; bool _showCommandsOverlay = false; bool _showMentionsOverlay = false; bool _actionsShrunk = false; bool _openFilePickerSection = false; - /// The editing controller passed to the input TextField - late final MessageInputController messageInputController = - widget.messageInputController ?? MessageInputController(); - late StreamChatThemeData _streamChatTheme; late MessageInputThemeData _messageInputTheme; bool get _hasQuotedMessage => - messageInputController.value.quotedMessage != null; - - bool get _messageIsPresent => messageInputController.text.trim().isNotEmpty; + _effectiveController.value.quotedMessage != null; bool get _isEditing => - messageInputController.value.status != MessageSendingStatus.sending; + _effectiveController.value.status != MessageSendingStatus.sending; + + RestorableMessageInputController? _controller; + MessageInputController get _effectiveController => + widget.messageInputController ?? _controller!.value; + + void _createLocalController([Message? message]) { + assert(_controller == null, ''); + _controller = RestorableMessageInputController(message: message); + print('_controller?.value: ${_controller?.value}'); + } + + void _registerController() { + assert(_controller != null, ''); + registerForRestoration(_controller!, 'messageInputController'); + } @override void initState() { super.initState(); - messageInputController.textEditingController - .addListener(_onChangedDebounced); + if (widget.messageInputController == null) { + _createLocalController(); + print('_controller?.value: ${_controller?.value}'); + } + _effectiveController.textEditingController.addListener(_onChangedDebounced); _focusNode.addListener(_focusNodeListener); } + @override + void didUpdateWidget(covariant MessageInput oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.messageInputController == null && + oldWidget.messageInputController != null) { + _createLocalController(oldWidget.messageInputController!.value); + } else if (widget.messageInputController != null && + oldWidget.messageInputController == null) { + unregisterFromRestoration(_controller!); + _controller!.dispose(); + _controller = null; + } + } + + @override + void restoreState(RestorationBucket? oldBucket, bool initialRestore) { + if (_controller != null) { + _registerController(); + } + } + + @override + String? get restorationId => widget.restorationId; + void _focusNodeListener() { if (_focusNode.hasFocus) { _openFilePickerSection = false; @@ -414,7 +467,7 @@ class MessageInputState extends State { @override Widget build(BuildContext context) { Widget child = MessageValueListenableBuilder( - valueListenable: messageInputController, + valueListenable: _effectiveController, builder: (context, value, _) => DecoratedBox( decoration: BoxDecoration( color: _messageInputTheme.inputBackgroundColor, @@ -462,7 +515,7 @@ class MessageInputState extends State { padding: const EdgeInsets.symmetric(vertical: 8), child: _buildTextField(context), ), - if (messageInputController.value.parentId != null && + if (_effectiveController.value.parentId != null && !widget.hideSendAsDm) Padding( padding: const EdgeInsets.only( @@ -496,12 +549,12 @@ class MessageInputState extends State { ), OverlayOptions( visible: _focusNode.hasFocus && - messageInputController.text.isNotEmpty && - messageInputController.baseOffset > 0 && - messageInputController.text + _effectiveController.text.isNotEmpty && + _effectiveController.baseOffset > 0 && + _effectiveController.text .substring( 0, - messageInputController.baseOffset, + _effectiveController.baseOffset, ) .contains(':'), widget: _buildEmojiOverlay(), @@ -537,7 +590,7 @@ class MessageInputState extends State { height: 16, width: 16, foregroundDecoration: BoxDecoration( - border: messageInputController.showInChannel + border: _effectiveController.showInChannel ? null : Border.all( color: _streamChatTheme.colorTheme.textHighEmphasis @@ -549,18 +602,18 @@ class MessageInputState extends State { child: Center( child: Material( borderRadius: BorderRadius.circular(3), - color: messageInputController.showInChannel + color: _effectiveController.showInChannel ? _streamChatTheme.colorTheme.accentPrimary : _streamChatTheme.colorTheme.barsBg, child: InkWell( onTap: () { - messageInputController.showInChannel = - !messageInputController.showInChannel; + _effectiveController.showInChannel = + !_effectiveController.showInChannel; }, child: AnimatedCrossFade( duration: const Duration(milliseconds: 300), reverseDuration: const Duration(milliseconds: 300), - crossFadeState: messageInputController.showInChannel + crossFadeState: _effectiveController.showInChannel ? CrossFadeState.showFirst : CrossFadeState.showSecond, firstChild: StreamSvgIcon.check( @@ -591,13 +644,13 @@ class MessageInputState extends State { Widget _buildSendButton(BuildContext context) { if (widget.sendButtonBuilder != null) { - return widget.sendButtonBuilder!(context, messageInputController); + return widget.sendButtonBuilder!(context, _effectiveController); } return StreamMessageSendButton( onSendMessage: sendMessage, timeOut: _timeOut, - isIdle: !_messageIsPresent && messageInputController.attachments.isEmpty, + isIdle: !widget.validator(_effectiveController.message), isEditEnabled: _isEditing, idleSendButton: widget.idleSendButton, activeSendButton: widget.activeSendButton, @@ -696,7 +749,7 @@ class MessageInputState extends State { maxLines: null, onSubmitted: (_) => sendMessage(), keyboardType: widget.keyboardType, - controller: messageInputController, + controller: _effectiveController, focusNode: _focusNode, style: _messageInputTheme.inputTextStyle, autofocus: widget.autofocus, @@ -768,7 +821,7 @@ class MessageInputState extends State { size: 16, ), Text( - messageInputController.value.command!.toUpperCase(), + _effectiveController.value.command!.toUpperCase(), style: _streamChatTheme.textTheme.footnoteBold.copyWith( color: Colors.white, @@ -802,7 +855,7 @@ class MessageInputState extends State { height: 24, width: 24, ), - onPressed: messageInputController.clear, + onPressed: _effectiveController.clear, ), ), if (!_commandEnabled && @@ -817,14 +870,14 @@ class MessageInputState extends State { late final _onChangedDebounced = debounce( () { - var value = messageInputController.text; + var value = _effectiveController.text; if (!mounted) return; value = value.trim(); final channel = StreamChannel.of(context).channel; if (value.isNotEmpty) { channel - .keyStroke(messageInputController.value.parentId) + .keyStroke(_effectiveController.value.parentId) // ignore: no-empty-block .catchError((e) {}); } @@ -846,10 +899,10 @@ class MessageInputState extends State { ); String _getHint(BuildContext context) { - if (_commandEnabled && messageInputController.value.command == 'giphy') { + if (_commandEnabled && _effectiveController.value.command == 'giphy') { return context.translations.searchGifLabel; } - if (messageInputController.attachments.isNotEmpty) { + if (_effectiveController.attachments.isNotEmpty) { return context.translations.addACommentOrSendLabel; } if (_timeOut != 0) { @@ -861,16 +914,16 @@ class MessageInputState extends State { void _checkEmoji(String s, BuildContext context) { if (s.isNotEmpty && - messageInputController.baseOffset > 0 && - messageInputController.text + _effectiveController.baseOffset > 0 && + _effectiveController.text .substring( 0, - messageInputController.baseOffset, + _effectiveController.baseOffset, ) .contains(':')) { - final textToSelection = messageInputController.text.substring( + final textToSelection = _effectiveController.text.substring( 0, - messageInputController.selectionStart, + _effectiveController.selectionStart, ); final splits = textToSelection.split(':'); final query = splits[splits.length - 2].toLowerCase(); @@ -884,11 +937,11 @@ class MessageInputState extends State { void _checkMentions(String s, BuildContext context) { if (s.isNotEmpty && - messageInputController.baseOffset > 0 && - messageInputController.text + _effectiveController.baseOffset > 0 && + _effectiveController.text .substring( 0, - messageInputController.baseOffset, + _effectiveController.baseOffset, ) .split(' ') .last @@ -925,7 +978,7 @@ class MessageInputState extends State { } Widget _buildCommandsOverlayEntry() { - final text = messageInputController.text.trimLeft(); + final text = _effectiveController.text.trimLeft(); final renderObject = context.findRenderObject() as RenderBox?; if (renderObject == null) { @@ -941,7 +994,7 @@ class MessageInputState extends State { Widget _buildFilePickerSection() { final picker = StreamAttachmentPicker( - messageInputController: messageInputController, + messageInputController: _effectiveController, onFilePicked: pickFile, isOpen: _openFilePickerSection, pickerSize: _openFilePickerSection ? _kMinMediaPickerSize : 0, @@ -950,18 +1003,13 @@ class MessageInputState extends State { maxAttachmentSize: widget.maxAttachmentSize, compressedVideoQuality: widget.compressedVideoQuality, compressedVideoFrameRate: widget.compressedVideoFrameRate, - onChangeInputState: (val) { - setState(() { - _inputEnabled = val; - }); - }, onError: _showErrorAlert, ); if (_openFilePickerSection && widget.attachmentsPickerBuilder != null) { return widget.attachmentsPickerBuilder!( context, - messageInputController, + _effectiveController, picker, ); } @@ -971,14 +1019,14 @@ class MessageInputState extends State { Widget _buildMentionsOverlayEntry() { final channel = StreamChannel.of(context).channel; - if (messageInputController.selectionStart < 0 || channel.state == null) { + if (_effectiveController.selectionStart < 0 || channel.state == null) { return const Offstage(); } - final splits = messageInputController.text + final splits = _effectiveController.text .substring( 0, - messageInputController.selectionStart, + _effectiveController.selectionStart, ) .split('@'); final query = splits.last.toLowerCase(); @@ -1007,13 +1055,13 @@ class MessageInputState extends State { size: Size(renderObject.size.width - 16, 400), mentionsTileBuilder: tileBuilder, onMentionUserTap: (user) { - messageInputController.addMentionedUser(user); + _effectiveController.addMentionedUser(user); splits[splits.length - 1] = user.name; final rejoin = splits.join('@'); - messageInputController.text = rejoin + - messageInputController.text.substring( - messageInputController.selectionStart, + _effectiveController.text = rejoin + + _effectiveController.text.substring( + _effectiveController.selectionStart, ); _onChangedDebounced.cancel(); @@ -1023,14 +1071,14 @@ class MessageInputState extends State { } Widget _buildEmojiOverlay() { - if (messageInputController.baseOffset < 0) { + if (_effectiveController.baseOffset < 0) { return const Offstage(); } - final splits = messageInputController.text + final splits = _effectiveController.text .substring( 0, - messageInputController.baseOffset, + _effectiveController.baseOffset, ) .split(':'); @@ -1050,14 +1098,14 @@ class MessageInputState extends State { void _chooseEmoji(List splits, Emoji emoji) { final rejoin = splits.sublist(0, splits.length - 1).join(':') + emoji.char!; - messageInputController.text = rejoin + - messageInputController.text.substring( - messageInputController.selectionStart, + _effectiveController.text = rejoin + + _effectiveController.text.substring( + _effectiveController.selectionStart, ); } void _setCommand(Command c) { - messageInputController + _effectiveController ..clear() ..command = c; setState(() { @@ -1079,11 +1127,11 @@ class MessageInputState extends State { } Widget _buildAttachments() { - if (messageInputController.attachments.isEmpty) return const Offstage(); - final fileAttachments = messageInputController.attachments + if (_effectiveController.attachments.isEmpty) return const Offstage(); + final fileAttachments = _effectiveController.attachments .where((it) => it.type == 'file') .toList(growable: false); - final remainingAttachments = messageInputController.attachments + final remainingAttachments = _effectiveController.attachments .where((it) => it.type != 'file') .toList(growable: false); return Column( @@ -1168,9 +1216,8 @@ class MessageInputState extends State { focusElevation: 0, hoverElevation: 0, onPressed: () { - messageInputController.value = - messageInputController.value.copyWith( - attachments: messageInputController.attachments + _effectiveController.value = _effectiveController.value.copyWith( + attachments: _effectiveController.attachments .where((it) => it.id != attachment.id) .toList(), ); @@ -1252,7 +1299,7 @@ class MessageInputState extends State { } Widget _buildCommandButton(BuildContext context) { - final s = messageInputController.text.trim(); + final s = _effectiveController.text.trim(); final defaultButton = IconButton( icon: StreamSvgIcon.lightning( color: s.isNotEmpty @@ -1386,8 +1433,7 @@ class MessageInputState extends State { /// Adds an attachment to the [messageInputController.attachments] map void _addAttachments(Iterable attachments) { final limit = widget.attachmentLimit; - final length = - messageInputController.attachments.length + attachments.length; + final length = _effectiveController.attachments.length + attachments.length; if (length > limit) { final onAttachmentLimitExceed = widget.onAttachmentLimitExceed; if (onAttachmentLimitExceed != null) { @@ -1401,7 +1447,7 @@ class MessageInputState extends State { ); } for (final attachment in attachments) { - messageInputController.addAttachment(attachment); + _effectiveController.addAttachment(attachment); } } @@ -1518,17 +1564,13 @@ class MessageInputState extends State { /// Sends the current message Future sendMessage() async { - var message = messageInputController.value; - - if (!messageInputController.isValid) { - return; - } + var message = _effectiveController.value; var shouldKeepFocus = widget.shouldKeepFocusAfterMessage; shouldKeepFocus ??= !_commandEnabled; - messageInputController.reset(); + _effectiveController.reset(); widget.onQuotedMessageCleared?.call(); if (widget.preMessageSending != null) { @@ -1557,7 +1599,7 @@ class MessageInputState extends State { final resp = await sendingFuture; if (resp.message?.type == 'error') { - messageInputController.value = message; + _effectiveController.value = message; } _startSlowMode(); widget.onMessageSent?.call(resp.message); @@ -1638,9 +1680,9 @@ class MessageInputState extends State { @override void dispose() { - messageInputController.textEditingController + _effectiveController.textEditingController .removeListener(_onChangedDebounced); - messageInputController.dispose(); + _controller?.dispose(); _focusNode.removeListener(_focusNodeListener); _stopSlowMode(); _onChangedDebounced.cancel(); diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 88fbab74..7f6a6f6e 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -21,13 +21,23 @@ typedef CustomAttachmentIconBuilder = Widget Function( bool active, ); +/// A widget that allows to pick an attachment. class StreamAttachmentPicker extends StatefulWidget { + /// True if the picker is open. final bool isOpen; + + /// The picker size in height. final double pickerSize; + + /// The [MessageInputController] linked to this picker. final MessageInputController messageInputController; + + /// The limit of attachments that can be picked. final int attachmentLimit; + + /// The callback for when the attachment limit is exceeded. final AttachmentLimitExceedListener? onAttachmentLimitExceeded; - final ValueChanged? onChangeInputState; + final ValueChanged? onError; final FilePickerCallback onFilePicked; @@ -42,8 +52,10 @@ class StreamAttachmentPicker extends StatefulWidget { /// - Do not set it if you're using our default CDN final int maxAttachmentSize; + /// The list of attachment types that can be picked. final List allowedAttachmentTypes; + /// The list of custom attachment types that can be picked. final List customAttachmentTypes; const StreamAttachmentPicker({ @@ -57,7 +69,6 @@ class StreamAttachmentPicker extends StatefulWidget { this.maxAttachmentSize = 20971520, this.compressedVideoQuality = VideoQuality.DefaultQuality, this.compressedVideoFrameRate = 30, - this.onChangeInputState, this.onError, this.allowedAttachmentTypes = const [ DefaultAttachmentTypes.image, @@ -98,7 +109,6 @@ class StreamAttachmentPicker extends StatefulWidget { compressedVideoQuality ?? this.compressedVideoQuality, compressedVideoFrameRate: compressedVideoFrameRate ?? this.compressedVideoFrameRate, - onChangeInputState: onChangeInputState ?? this.onChangeInputState, onError: onError ?? this.onError, allowedAttachmentTypes: allowedAttachmentTypes ?? this.allowedAttachmentTypes, diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart index ec03a58c..9916f6f7 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart @@ -1,15 +1,11 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// A widget that displays a sending button. class StreamMessageSendButton extends StatelessWidget { - final int timeOut; - final bool isIdle; - final bool isCommandEnabled; - final bool isEditEnabled; - final Widget? idleSendButton; - final Widget? activeSendButton; - final VoidCallback onSendMessage; - + /// Returns a [StreamMessageSendButton] with the given [timeOut], [isIdle], + /// [isCommandEnabled], [isEditEnabled], [idleSendButton], [activeSendButton], + /// [onSendMessage]. const StreamMessageSendButton({ Key? key, this.timeOut = 0, @@ -21,6 +17,27 @@ class StreamMessageSendButton extends StatelessWidget { required this.onSendMessage, }) : super(key: key); + /// Time out related to slow mode. + final int timeOut; + + /// If true the button will be disabled. + final bool isIdle; + + /// True if a command is being sent. + final bool isCommandEnabled; + + /// True if in editing mode. + final bool isEditEnabled; + + /// The widget to display when the button is disabled. + final Widget? idleSendButton; + + /// The widget to display when the button is enabled. + final Widget? activeSendButton; + + /// The callback to call when the button is pressed. + final VoidCallback onSendMessage; + @override Widget build(BuildContext context) { final _streamChatTheme = StreamChatTheme.of(context); diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart index e5ffde94..af2548a4 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart @@ -18,6 +18,7 @@ export 'package:flutter/services.dart' SmartQuotesType, SmartDashesType; +/// A widget the wraps the [TextField] and adds some StreamChat specifics. class StreamMessageTextField extends StatefulWidget { /// Creates a Material Design text field. /// @@ -47,10 +48,6 @@ class StreamMessageTextField extends StatefulWidget { /// which is evaluated after the supplied [inputFormatters], if any. /// The [maxLength] value must be either null or greater than zero. /// - /// If [maxLengthEnforced] is set to false, then more than [maxLength] - /// characters may be entered, and the error counter and divider will - /// switch to the [decoration].errorStyle when the limit is exceeded. - /// /// The text cursor is not shown if [showCursor] is false or if [showCursor] /// is null (the default) and [readOnly] is true. /// @@ -60,7 +57,7 @@ class StreamMessageTextField extends StatefulWidget { /// must not be null. /// /// The [textAlign], [autofocus], [obscureText], [readOnly], [autocorrect], - /// [maxLengthEnforced], [scrollPadding], [maxLines], [maxLength], + /// [scrollPadding], [maxLines], [maxLength], /// [selectionHeightStyle], [selectionWidthStyle], [enableSuggestions], and /// [enableIMEPersonalizedLearning] arguments must not be null. /// @@ -151,9 +148,11 @@ class StreamMessageTextField extends StatefulWidget { ), assert(!obscureText || maxLines == 1, 'Obscured fields cannot be multiline.'), - assert(maxLength == null || - maxLength == TextField.noMaxLength || - maxLength > 0), + assert( + maxLength == null || + maxLength == TextField.noMaxLength || + maxLength > 0, + '`maxLength` needs to be null or a positive integer'), // Assert the following instead of setting it directly to avoid // surprising the user by silently changing the value they set. @@ -343,12 +342,6 @@ class StreamMessageTextField extends StatefulWidget { /// Whitespace characters (e.g. newline, space, tab) are included in the /// character count. /// - /// If [maxLengthEnforced] is set to false or [maxLengthEnforcement] is - /// [MaxLengthEnforcement.none], then more than [maxLength] - /// characters may be entered, but the error counter and divider will switch - /// to the [decoration]'s [InputDecoration.errorStyle] when the limit is - /// exceeded. - /// /// {@macro flutter.services.lengthLimitingTextInputFormatter.maxLength} final int? maxLength; @@ -611,10 +604,6 @@ class StreamMessageTextField extends StatefulWidget { properties.add( DiagnosticsProperty('expands', expands, defaultValue: false)); properties.add(IntProperty('maxLength', maxLength, defaultValue: null)); - properties.add(FlagProperty('maxLengthEnforced', - value: maxLengthEnforced, - defaultValue: true, - ifFalse: 'maxLength not enforced')); properties.add(EnumProperty( 'maxLengthEnforcement', maxLengthEnforcement, defaultValue: null)); @@ -742,7 +731,6 @@ class _StreamMessageTextFieldState extends State minLines: widget.minLines, expands: widget.expands, maxLength: widget.maxLength, - maxLengthEnforced: widget.maxLengthEnforced, maxLengthEnforcement: widget.maxLengthEnforcement, onEditingComplete: widget.onEditingComplete, onSubmitted: widget.onSubmitted, diff --git a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart index 0e8d48bc..6514d66b 100644 --- a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; import 'package:stream_chat/stream_chat.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 7aad03e6..2b718939 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -9,9 +9,6 @@ import 'package:stream_chat/stream_chat.dart'; /// Pass in a [MessageInputController] as the `valueListenable`. typedef MessageValueListenableBuilder = ValueListenableBuilder; -/// A function that returns true if the message is valid and can be sent. -typedef MessageValidator = bool Function(Message message); - /// Controller for storing and mutating a [Message] value. class MessageInputController extends ValueNotifier { /// Creates a controller for an editable text field. @@ -20,37 +17,28 @@ class MessageInputController extends ValueNotifier { /// message. factory MessageInputController({ Message? message, - MessageValidator? validator, }) => MessageInputController._( initialMessage: message ?? Message(), - validator: validator ?? _defaultValidator, ); /// Creates a controller for an editable text field from an initial [text]. - factory MessageInputController.fromText( - String? text, { - MessageValidator? validator, - }) => + factory MessageInputController.fromText(String? text) => MessageInputController._( initialMessage: Message(text: text), - validator: validator ?? _defaultValidator, ); /// Creates a controller for an editable text field from initial /// [attachments]. factory MessageInputController.fromAttachments( - List attachments, { - MessageValidator? validator, - }) => + List attachments, + ) => MessageInputController._( initialMessage: Message(attachments: attachments), - validator: validator ?? _defaultValidator, ); MessageInputController._({ required Message initialMessage, - this.validator = _defaultValidator, }) : _textEditingController = TextEditingController(text: initialMessage.text), _initialMessage = initialMessage, @@ -58,15 +46,6 @@ class MessageInputController extends ValueNotifier { addListener(_textEditingSyncer); } - /// A callback function that validates the message. - final MessageValidator validator; - - /// Checks if the message is valid. - bool get isValid => validator(value); - - static bool _defaultValidator(Message message) => - message.text?.isNotEmpty == true || message.attachments.isNotEmpty; - void _textEditingSyncer() { final cleanText = value.command == null ? value.text diff --git a/packages/stream_chat_flutter_core/lib/src/message_list_core.dart b/packages/stream_chat_flutter_core/lib/src/message_list_core.dart index 74e40d7f..a28d6d73 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_list_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_list_core.dart @@ -2,7 +2,6 @@ import 'dart:async'; import 'package:collection/collection.dart'; import 'package:flutter/cupertino.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_flutter_core/src/better_stream_builder.dart'; diff --git a/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart b/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart index d2ea8b93..8a06f02d 100644 --- a/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart +++ b/packages/stream_chat_persistence/test/src/mapper/message_mapper_test.dart @@ -157,7 +157,6 @@ void main() { (prev, curr) => prev?..update(curr.type, (value) => value + 1, ifAbsent: () => 1), ), - status: MessageSendingStatus.sending, updatedAt: DateTime.now(), extraData: const {'extra_test_data': 'extraData'}, user: user, diff --git a/packages/stream_chat_persistence/test/src/mapper/pinned_message_mapper_test.dart b/packages/stream_chat_persistence/test/src/mapper/pinned_message_mapper_test.dart index 9c2378fd..9c4d99a2 100644 --- a/packages/stream_chat_persistence/test/src/mapper/pinned_message_mapper_test.dart +++ b/packages/stream_chat_persistence/test/src/mapper/pinned_message_mapper_test.dart @@ -147,7 +147,6 @@ void main() { (prev, curr) => prev?..update(curr.type, (value) => value + 1, ifAbsent: () => 1), ), - status: MessageSendingStatus.sending, updatedAt: DateTime.now(), extraData: const {'extra_test_data': 'extraData'}, user: user, From 9f8c5114959d24a4c9b03feceb562253d20c920c Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Mon, 13 Dec 2021 23:14:00 +0530 Subject: [PATCH 044/201] fix: registration --- .../lib/src/message_input/message_input.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index caceba36..b9aa00eb 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -385,7 +385,7 @@ class MessageInputState extends State void _createLocalController([Message? message]) { assert(_controller == null, ''); _controller = RestorableMessageInputController(message: message); - print('_controller?.value: ${_controller?.value}'); + _registerController(); } void _registerController() { From a49a0ed7c943c31c8797019c14a75b01cccc2d6f Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Mon, 13 Dec 2021 23:17:24 +0530 Subject: [PATCH 045/201] removed print --- .../stream_chat_flutter/lib/src/message_input/message_input.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index b9aa00eb..2fc2795a 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -398,7 +398,6 @@ class MessageInputState extends State super.initState(); if (widget.messageInputController == null) { _createLocalController(); - print('_controller?.value: ${_controller?.value}'); } _effectiveController.textEditingController.addListener(_onChangedDebounced); _focusNode.addListener(_focusNodeListener); From ce20c247d7a74e87a2d6133224e16333dab2af38 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 14 Dec 2021 15:15:02 +0100 Subject: [PATCH 046/201] fix emoji overlay --- .../lib/src/message_input/message_input.dart | 209 +++++++++--------- 1 file changed, 108 insertions(+), 101 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 2fc2795a..9787b39e 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -464,109 +464,109 @@ class MessageInputState extends State void _stopSlowMode() => _slowModeTimer?.cancel(); @override - Widget build(BuildContext context) { - Widget child = MessageValueListenableBuilder( - valueListenable: _effectiveController, - builder: (context, value, _) => DecoratedBox( - decoration: BoxDecoration( - color: _messageInputTheme.inputBackgroundColor, - ), - child: SafeArea( - child: GestureDetector( - onPanUpdate: (details) { - if (details.delta.dy > 0) { - _focusNode.unfocus(); - if (_openFilePickerSection) { - setState(() { - _openFilePickerSection = false; - }); - } - } - }, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (_hasQuotedMessage) - Padding( - padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: StreamSvgIcon.reply( - color: _streamChatTheme.colorTheme.disabled, - ), - ), - Text( - context.translations.replyToMessageLabel, - style: const TextStyle(fontWeight: FontWeight.bold), - ), - IconButton( - visualDensity: VisualDensity.compact, - icon: StreamSvgIcon.closeSmall(), - onPressed: widget.onQuotedMessageCleared, - ), - ], - ), - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 8), - child: _buildTextField(context), - ), - if (_effectiveController.value.parentId != null && - !widget.hideSendAsDm) - Padding( - padding: const EdgeInsets.only( - right: 12, - left: 12, - bottom: 12, - ), - child: _buildDmCheckbox(), - ), - _buildFilePickerSection(), - ], + Widget build(BuildContext context) => MessageValueListenableBuilder( + valueListenable: _effectiveController, + builder: (context, value, _) { + Widget child = DecoratedBox( + decoration: BoxDecoration( + color: _messageInputTheme.inputBackgroundColor, ), - ), - ), - ), - ); - if (_isEditing) { - child = Material( - elevation: 8, - child: child, + child: SafeArea( + child: GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy > 0) { + _focusNode.unfocus(); + if (_openFilePickerSection) { + setState(() { + _openFilePickerSection = false; + }); + } + } + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (_hasQuotedMessage) + Padding( + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon.reply( + color: _streamChatTheme.colorTheme.disabled, + ), + ), + Text( + context.translations.replyToMessageLabel, + style: + const TextStyle(fontWeight: FontWeight.bold), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: widget.onQuotedMessageCleared, + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: _buildTextField(context), + ), + if (_effectiveController.value.parentId != null && + !widget.hideSendAsDm) + Padding( + padding: const EdgeInsets.only( + right: 12, + left: 12, + bottom: 12, + ), + child: _buildDmCheckbox(), + ), + _buildFilePickerSection(), + ], + ), + ), + ), + ); + if (_isEditing) { + child = Material( + elevation: 8, + child: child, + ); + } + return MultiOverlay( + childAnchor: Alignment.topCenter, + overlayAnchor: Alignment.bottomCenter, + overlayOptions: [ + OverlayOptions( + visible: _showCommandsOverlay, + widget: _buildCommandsOverlayEntry(), + ), + OverlayOptions( + visible: _focusNode.hasFocus && + _effectiveController.text.isNotEmpty && + _effectiveController.baseOffset > 0 && + _effectiveController.text + .substring( + 0, + _effectiveController.baseOffset, + ) + .contains(':'), + widget: _buildEmojiOverlay(), + ), + OverlayOptions( + visible: _showMentionsOverlay, + widget: _buildMentionsOverlayEntry(), + ), + ...widget.customOverlays, + ], + child: child, + ); + }, ); - } - - return MultiOverlay( - childAnchor: Alignment.topCenter, - overlayAnchor: Alignment.bottomCenter, - overlayOptions: [ - OverlayOptions( - visible: _showCommandsOverlay, - widget: _buildCommandsOverlayEntry(), - ), - OverlayOptions( - visible: _focusNode.hasFocus && - _effectiveController.text.isNotEmpty && - _effectiveController.baseOffset > 0 && - _effectiveController.text - .substring( - 0, - _effectiveController.baseOffset, - ) - .contains(':'), - widget: _buildEmojiOverlay(), - ), - OverlayOptions( - visible: _showMentionsOverlay, - widget: _buildMentionsOverlayEntry(), - ), - ...widget.customOverlays, - ], - child: child, - ); - } Flex _buildTextField(BuildContext context) => Flex( direction: Axis.horizontal, @@ -646,6 +646,9 @@ class MessageInputState extends State return widget.sendButtonBuilder!(context, _effectiveController); } + print( + 'widget.validator(_effectiveController.message): ${widget.validator(_effectiveController.message)}'); + return StreamMessageSendButton( onSendMessage: sendMessage, timeOut: _timeOut, @@ -711,6 +714,7 @@ class MessageInputState extends State } Expanded _buildTextInput(BuildContext context) { + print('build text input'); final margin = (widget.sendButtonLocation == SendButtonLocation.inside ? const EdgeInsets.only(right: 8) : EdgeInsets.zero) + @@ -869,6 +873,7 @@ class MessageInputState extends State late final _onChangedDebounced = debounce( () { + print('onchangeddebounce'); var value = _effectiveController.text; if (!mounted) return; value = value.trim(); @@ -888,6 +893,7 @@ class MessageInputState extends State setState(() { _actionsShrunk = value.isNotEmpty && actionsLength > 1; }); + print('CHECK COMMANDS 00'); _checkCommands(value, context); _checkMentions(value, context); @@ -959,6 +965,7 @@ class MessageInputState extends State void _checkCommands(String s, BuildContext context) { if (s.startsWith('/')) { + print('CHECK COMMANDS'); final allCommands = StreamChannel.of(context).channel.config?.commands; final command = allCommands?.firstWhereOrNull((it) => it.name == s.substring(1)); From ec28d00e81f0f0d411cf4bedbff4b850404a0625 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 15 Dec 2021 10:51:28 +0100 Subject: [PATCH 047/201] fix message input quoted message --- .../lib/src/core/models/message.dart | 45 ++++++++++++++----- .../lib/src/message_input/message_input.dart | 44 +++++++++--------- .../stream_message_text_field.dart | 2 +- .../lib/src/message_input_controller.dart | 21 ++++++++- .../test/message_input_controller_test.dart | 24 ++-------- 5 files changed, 81 insertions(+), 55 deletions(-) diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index f1408d45..a7d21c03 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -8,11 +8,11 @@ import 'package:uuid/uuid.dart'; part 'message.g.dart'; -class _PinExpires { - const _PinExpires(); +class _NullConst { + const _NullConst(); } -const _pinExpires = _PinExpires(); +const _nullConst = _NullConst(); /// Enum defining the status of a sending message. enum MessageSendingStatus { @@ -273,8 +273,8 @@ class Message extends Equatable { List? latestReactions, List? ownReactions, String? parentId, - Message? quotedMessage, - String? quotedMessageId, + Object? quotedMessage = _nullConst, + Object? quotedMessageId = _nullConst, int? replyCount, List? threadParticipants, bool? showInChannel, @@ -285,7 +285,7 @@ class Message extends Equatable { User? user, bool? pinned, DateTime? pinnedAt, - Object? pinExpires = _pinExpires, + Object? pinExpires = _nullConst, User? pinnedBy, Map? extraData, MessageSendingStatus? status, @@ -294,11 +294,32 @@ class Message extends Equatable { assert(() { if (pinExpires is! DateTime && pinExpires != null && - pinExpires is! _PinExpires) { + pinExpires is! _NullConst) { throw ArgumentError('`pinExpires` can only be set as DateTime or null'); } return true; }(), 'Validate type for pinExpires'); + + assert(() { + if (quotedMessage is! Message && + quotedMessage != null && + quotedMessage is! _NullConst) { + throw ArgumentError( + '`quotedMessage` can only be set as Message or null'); + } + return true; + }(), 'Validate type for quotedMessage'); + + assert(() { + if (quotedMessageId is! String && + quotedMessageId != null && + quotedMessageId is! _NullConst) { + throw ArgumentError( + '`quotedMessage` can only be set as String or null'); + } + return true; + }(), 'Validate type for quotedMessage'); + return Message( id: id ?? this.id, text: text ?? this.text, @@ -312,8 +333,12 @@ class Message extends Equatable { latestReactions: latestReactions ?? this.latestReactions, ownReactions: ownReactions ?? this.ownReactions, parentId: parentId ?? this.parentId, - quotedMessage: quotedMessage ?? this.quotedMessage, - quotedMessageId: quotedMessageId ?? _quotedMessageId, + quotedMessage: quotedMessage == _nullConst + ? this.quotedMessage + : quotedMessage as Message?, + quotedMessageId: quotedMessageId == _nullConst + ? _quotedMessageId + : quotedMessageId as String?, replyCount: replyCount ?? this.replyCount, threadParticipants: threadParticipants ?? this.threadParticipants, showInChannel: showInChannel ?? this.showInChannel, @@ -325,7 +350,7 @@ class Message extends Equatable { pinned: pinned ?? this.pinned, pinnedAt: pinnedAt ?? this.pinnedAt, pinExpires: - pinExpires == _pinExpires ? this.pinExpires : pinExpires as DateTime?, + pinExpires == _nullConst ? this.pinExpires : pinExpires as DateTime?, pinnedBy: pinnedBy ?? this.pinnedBy, extraData: extraData ?? this.extraData, status: status ?? this.status, diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 9787b39e..2ba5c038 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -190,8 +190,6 @@ class MessageInput extends StatefulWidget { this.actionsLocation = ActionsLocation.left, this.attachmentThumbnailBuilders, this.focusNode, - this.quotedMessage, - this.onQuotedMessageCleared, this.sendButtonLocation = SendButtonLocation.outside, this.autofocus = false, this.hideSendAsDm = false, @@ -270,12 +268,6 @@ class MessageInput extends StatefulWidget { /// The focus node associated to the TextField. final FocusNode? focusNode; - /// The message that is being quoted. - final Message? quotedMessage; - - /// Callback invoked when the quoted message is cleared. - final VoidCallback? onQuotedMessageCleared; - /// The location of the send button final SendButtonLocation sendButtonLocation; @@ -385,12 +377,19 @@ class MessageInputState extends State void _createLocalController([Message? message]) { assert(_controller == null, ''); _controller = RestorableMessageInputController(message: message); - _registerController(); } void _registerController() { assert(_controller != null, ''); - registerForRestoration(_controller!, 'messageInputController'); + + registerForRestoration( + _controller!, + widget.restorationId ?? 'messageInputController', + ); + _effectiveController.textEditingController + .removeListener(_onChangedDebounced); + _effectiveController.textEditingController.addListener(_onChangedDebounced); + if (!_isEditing && _timeOut <= 0) _startSlowMode(); } @override @@ -398,8 +397,13 @@ class MessageInputState extends State super.initState(); if (widget.messageInputController == null) { _createLocalController(); + } else { + _effectiveController.textEditingController + .removeListener(_onChangedDebounced); + _effectiveController.textEditingController + .addListener(_onChangedDebounced); + if (!_isEditing && _timeOut <= 0) _startSlowMode(); } - _effectiveController.textEditingController.addListener(_onChangedDebounced); _focusNode.addListener(_focusNodeListener); } @@ -506,7 +510,10 @@ class MessageInputState extends State IconButton( visualDensity: VisualDensity.compact, icon: StreamSvgIcon.closeSmall(), - onPressed: widget.onQuotedMessageCleared, + onPressed: () { + _effectiveController.clearQuotedMessage(); + _focusNode.unfocus(); + }, ), ], ), @@ -646,9 +653,6 @@ class MessageInputState extends State return widget.sendButtonBuilder!(context, _effectiveController); } - print( - 'widget.validator(_effectiveController.message): ${widget.validator(_effectiveController.message)}'); - return StreamMessageSendButton( onSendMessage: sendMessage, timeOut: _timeOut, @@ -714,7 +718,6 @@ class MessageInputState extends State } Expanded _buildTextInput(BuildContext context) { - print('build text input'); final margin = (widget.sendButtonLocation == SendButtonLocation.inside ? const EdgeInsets.only(right: 8) : EdgeInsets.zero) + @@ -873,7 +876,6 @@ class MessageInputState extends State late final _onChangedDebounced = debounce( () { - print('onchangeddebounce'); var value = _effectiveController.text; if (!mounted) return; value = value.trim(); @@ -893,7 +895,6 @@ class MessageInputState extends State setState(() { _actionsShrunk = value.isNotEmpty && actionsLength > 1; }); - print('CHECK COMMANDS 00'); _checkCommands(value, context); _checkMentions(value, context); @@ -965,7 +966,6 @@ class MessageInputState extends State void _checkCommands(String s, BuildContext context) { if (s.startsWith('/')) { - print('CHECK COMMANDS'); final allCommands = StreamChannel.of(context).channel.config?.commands; final command = allCommands?.firstWhereOrNull((it) => it.name == s.substring(1)); @@ -1121,12 +1121,12 @@ class MessageInputState extends State Widget _buildReplyToMessage() { if (!_hasQuotedMessage) return const Offstage(); - final containsUrl = widget.quotedMessage!.attachments + final containsUrl = _effectiveController.value.quotedMessage!.attachments .any((element) => element.titleLink != null); return QuotedMessageWidget( reverse: true, showBorder: !containsUrl, - message: widget.quotedMessage!, + message: _effectiveController.value.quotedMessage!, messageTheme: _streamChatTheme.otherMessageTheme, padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), ); @@ -1577,7 +1577,6 @@ class MessageInputState extends State shouldKeepFocus ??= !_commandEnabled; _effectiveController.reset(); - widget.onQuotedMessageCleared?.call(); if (widget.preMessageSending != null) { message = await widget.preMessageSending!(message); @@ -1699,7 +1698,6 @@ class MessageInputState extends State void didChangeDependencies() { _streamChatTheme = StreamChatTheme.of(context); _messageInputTheme = MessageInputTheme.of(context); - if (!_isEditing && _timeOut <= 0) _startSlowMode(); super.didChangeDependencies(); } diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart index af2548a4..e7d765d9 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart @@ -697,7 +697,7 @@ class _StreamMessageTextFieldState extends State void _registerController() { assert(_controller != null, ''); - registerForRestoration(_controller!, 'controller'); + registerForRestoration(_controller!, restorationId ?? 'controller'); } @override diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 2b718939..29bd2db2 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -40,7 +40,10 @@ class MessageInputController extends ValueNotifier { MessageInputController._({ required Message initialMessage, }) : _textEditingController = - TextEditingController(text: initialMessage.text), + TextEditingController.fromValue(TextEditingValue( + text: initialMessage.text ?? '', + composing: TextRange.collapsed(initialMessage.text?.length ?? 0), + )), _initialMessage = initialMessage, super(initialMessage) { addListener(_textEditingSyncer); @@ -83,6 +86,22 @@ class MessageInputController extends ValueNotifier { value = message; } + /// Sets the message that's being quoted. + set quotedMessage(Message message) { + value = value.copyWith( + quotedMessage: message, + quotedMessageId: message.id, + ); + } + + /// Clears the quoted message. + void clearQuotedMessage() { + value = value.copyWith( + quotedMessageId: null, + quotedMessage: null, + ); + } + /// Sets a command for the message. set command(Command command) { value = value.copyWith( diff --git a/packages/stream_chat_flutter_core/test/message_input_controller_test.dart b/packages/stream_chat_flutter_core/test/message_input_controller_test.dart index 842a58bb..5e7934bd 100644 --- a/packages/stream_chat_flutter_core/test/message_input_controller_test.dart +++ b/packages/stream_chat_flutter_core/test/message_input_controller_test.dart @@ -3,28 +3,12 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; void main() { testWidgets( - 'should instantiate a new MessageInputController with default validator' - ' and empty message', + 'should instantiate a new MessageInputController with empty message', (tester) async { - final controller = MessageInputController(); + final controller = MessageInputController()..text = 'test'; - expect(controller.isValid, false); - controller.text = 'test'; - expect(controller.isValid, true); - }, - ); - - testWidgets( - 'should instantiate a new MessageInputController with default validator' - ' and specified message', - (tester) async { - final message = Message(text: 'test'); - final controller = MessageInputController( - message: message, - ); - - expect(controller.message, message); - expect(controller.isValid, true); + expect(controller.text, 'test'); + expect(controller.message.text, 'test'); }, ); } From 099e9046143bd3f5aa817d9d77b80ba783ad3a1e Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 17 Dec 2021 21:50:34 +0530 Subject: [PATCH 048/201] fixed bugs --- .../lib/src/message_input/message_input.dart | 2 +- .../lib/src/message_input/stream_attachment_picker.dart | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 2ba5c038..e55fac19 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -538,7 +538,7 @@ class MessageInputState extends State ), ), ); - if (_isEditing) { + if (!_isEditing) { child = Material( elevation: 8, child: child, diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 7f6a6f6e..93c86d72 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -334,8 +334,10 @@ class _StreamAttachmentPickerState extends State { onMediaSelected: (media) { if (messageInputController.attachments .any((e) => e.id == media.id)) { - setState(() => messageInputController.attachments - .removeWhere((e) => e.id == media.id)); + messageInputController + .removeAttachmentById(media.id); + // setState(() => messageInputController.attachments + // .removeWhere((e) => e.id == media.id)); } else { _addAssetAttachment(media); } From e19cc87362cceb06c1ac5dd72cf25c824085d7e3 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 20 Dec 2021 16:11:12 +0530 Subject: [PATCH 049/201] feat(ui): add support for OG Attachment preview. Signed-off-by: xsahil03x --- .../stream_chat/lib/src/client/channel.dart | 14 +- .../stream_chat/lib/src/client/client.dart | 14 +- .../lib/src/core/api/message_api.dart | 14 +- .../lib/src/core/models/attachment.dart | 43 ++++ .../lib/src/message_input/message_input.dart | 185 +++++++++++++++--- 5 files changed, 231 insertions(+), 39 deletions(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 51034d3a..1925e325 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -493,6 +493,7 @@ class Channel { Future sendMessage( Message message, { bool skipPush = false, + bool skipEnrichUrl = false, }) async { _checkInitialized(); // Cancelling previous completer in case it's called again in the process @@ -540,6 +541,7 @@ class Channel { id!, type, skipPush: skipPush, + skipEnrichUrl: skipEnrichUrl, ); state!.addMessage(response.message); if (cooldown > 0) cooldownStartedAt = DateTime.now(); @@ -556,7 +558,10 @@ class Channel { /// /// Waits for a [_messageAttachmentsUploadCompleter] to complete /// before actually updating the message. - Future updateMessage(Message message) async { + Future updateMessage( + Message message, { + bool skipEnrichUrl = false, + }) async { final originalMessage = message; // Cancelling previous completer in case it's called again in the process @@ -594,7 +599,10 @@ class Channel { message = await attachmentsUploadCompleter.future; } - final response = await _client.updateMessage(message); + final response = await _client.updateMessage( + message, + skipEnrichUrl: skipEnrichUrl, + ); final m = response.message.copyWith( ownReactions: message.ownReactions, @@ -624,12 +632,14 @@ class Channel { Message message, { Map? set, List? unset, + bool skipEnrichUrl = false, }) async { try { final response = await _client.partialUpdateMessage( message.id, set: set, unset: unset, + skipEnrichUrl: skipEnrichUrl, ); final updatedMessage = response.message.copyWith( diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index b2ae3657..141bad48 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -1169,12 +1169,14 @@ class StreamChatClient { String channelId, String channelType, { bool skipPush = false, + bool skipEnrichUrl = false, }) => _chatApi.message.sendMessage( channelId, channelType, message, skipPush: skipPush, + skipEnrichUrl: skipEnrichUrl, ); /// Lists all the message replies for the [parentId] @@ -1198,8 +1200,14 @@ class StreamChatClient { ); /// Update the given message - Future updateMessage(Message message) => - _chatApi.message.updateMessage(message); + Future updateMessage( + Message message, { + bool skipEnrichUrl = false, + }) => + _chatApi.message.updateMessage( + message, + skipEnrichUrl: skipEnrichUrl, + ); /// Partially update the given [messageId] /// Use [set] to define values to be set @@ -1208,11 +1216,13 @@ class StreamChatClient { String messageId, { Map? set, List? unset, + bool skipEnrichUrl = false, }) => _chatApi.message.partialUpdateMessage( messageId, set: set, unset: unset, + skipEnrichUrl: skipEnrichUrl, ); /// Deletes the given message diff --git a/packages/stream_chat/lib/src/core/api/message_api.dart b/packages/stream_chat/lib/src/core/api/message_api.dart index 8894e14c..20cdfc51 100644 --- a/packages/stream_chat/lib/src/core/api/message_api.dart +++ b/packages/stream_chat/lib/src/core/api/message_api.dart @@ -16,12 +16,14 @@ class MessageApi { String channelType, Message message, { bool skipPush = false, + bool skipEnrichUrl = false, }) async { final response = await _client.post( '/channels/$channelType/$channelId/message', data: { 'message': message, 'skip_push': skipPush, + 'skip_enrich_url': skipEnrichUrl, }, ); return SendMessageResponse.fromJson(response.data); @@ -51,11 +53,15 @@ class MessageApi { /// Updates the given [message] Future updateMessage( - Message message, - ) async { + Message message, { + bool skipEnrichUrl = false, + }) async { final response = await _client.post( '/messages/${message.id}', - data: {'message': message}, + data: { + 'message': message, + 'skip_enrich_url': skipEnrichUrl, + }, ); return UpdateMessageResponse.fromJson(response.data); } @@ -67,12 +73,14 @@ class MessageApi { String messageId, { Map? set, List? unset, + bool skipEnrichUrl = false, }) async { final response = await _client.put( '/messages/$messageId', data: { if (set != null) 'set': set, if (unset != null) 'unset': unset, + 'skip_enrich_url': skipEnrichUrl, }, ); return UpdateMessageResponse.fromJson(response.data); diff --git a/packages/stream_chat/lib/src/core/models/attachment.dart b/packages/stream_chat/lib/src/core/models/attachment.dart index 09fe1083..325dbe11 100644 --- a/packages/stream_chat/lib/src/core/models/attachment.dart +++ b/packages/stream_chat/lib/src/core/models/attachment.dart @@ -2,6 +2,7 @@ import 'package:equatable/equatable.dart'; import 'package:json_annotation/json_annotation.dart'; +import 'package:stream_chat/src/core/api/responses.dart'; import 'package:stream_chat/src/core/models/action.dart'; import 'package:stream_chat/src/core/models/attachment_file.dart'; import 'package:stream_chat/src/core/util/serializer.dart'; @@ -66,6 +67,21 @@ class Attachment extends Equatable { topLevelFields + dbSpecificTopLevelFields, )); + factory Attachment.fromOGAttachment(OGAttachmentResponse ogAttachment) => + Attachment( + type: ogAttachment.type, + title: ogAttachment.title, + titleLink: ogAttachment.titleLink, + text: ogAttachment.text, + imageUrl: ogAttachment.imageUrl, + thumbUrl: ogAttachment.thumbUrl, + authorName: ogAttachment.authorName, + authorLink: ogAttachment.authorLink, + assetUrl: ogAttachment.assetUrl, + ogScrapeUrl: ogAttachment.ogScrapeUrl, + uploadState: const UploadState.success(), + ); + ///The attachment type based on the URL resource. This can be: audio, ///image or video final String? type; @@ -229,6 +245,33 @@ class Attachment extends Equatable { extraData: extraData ?? this.extraData, ); + Attachment merge(Attachment? other) { + if (other == null) return this; + return copyWith( + type: other.type, + titleLink: other.titleLink, + title: other.title, + thumbUrl: other.thumbUrl, + text: other.text, + pretext: other.pretext, + ogScrapeUrl: other.ogScrapeUrl, + imageUrl: other.imageUrl, + footerIcon: other.footerIcon, + footer: other.footer, + fields: other.fields, + fallback: other.fallback, + color: other.color, + authorName: other.authorName, + authorLink: other.authorLink, + authorIcon: other.authorIcon, + assetUrl: other.assetUrl, + actions: other.actions, + file: other.file, + uploadState: other.uploadState, + extraData: other.extraData, + ); + } + @override List get props => [ id, diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 2ba5c038..46072348 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -354,6 +354,7 @@ class MessageInputState extends State final _imagePicker = ImagePicker(); late final _focusNode = widget.focusNode ?? FocusNode(); bool _inputEnabled = true; + bool get _commandEnabled => _effectiveController.value.command != null; bool _showCommandsOverlay = false; bool _showMentionsOverlay = false; @@ -371,6 +372,7 @@ class MessageInputState extends State _effectiveController.value.status != MessageSendingStatus.sending; RestorableMessageInputController? _controller; + MessageInputController get _effectiveController => widget.messageInputController ?? _controller!.value; @@ -517,6 +519,14 @@ class MessageInputState extends State ), ], ), + ) + else if (_ogAttachment != null) + OGAttachmentPreview( + attachment: _ogAttachment!, + onDismissPreviewPressed: () { + setState(() => _ogAttachment = null); + _focusNode.unfocus(); + }, ), Padding( padding: const EdgeInsets.symmetric(vertical: 8), @@ -538,7 +548,7 @@ class MessageInputState extends State ), ), ); - if (_isEditing) { + if (!_isEditing) { child = Material( elevation: 8, child: child, @@ -896,6 +906,7 @@ class MessageInputState extends State _actionsShrunk = value.isNotEmpty && actionsLength > 1; }); + _checkContainsUrlDebounced.call([value, context]); _checkCommands(value, context); _checkMentions(value, context); _checkEmoji(value, context); @@ -918,14 +929,52 @@ class MessageInputState extends State return context.translations.writeAMessageLabel; } - void _checkEmoji(String s, BuildContext context) { - if (s.isNotEmpty && + Attachment? _ogAttachment; + String? _lastSearchedContainsUrlText; + CancelableOperation? _enrichUrlOperation; + + late final _checkContainsUrlDebounced = debounce( + (String value, BuildContext context) async { + // Cancel the previous operation if it's still running + _enrichUrlOperation?.cancel(); + + // If the text is same as the last time, don't do anything + if (_lastSearchedContainsUrlText == value) return; + _lastSearchedContainsUrlText = value; + + final regex = + RegExp(r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+'); + final matchedUrls = regex.allMatches(value); + if (matchedUrls.isEmpty) return; + + final firstMatchedUrl = matchedUrls.first.group(0)!; + + // If the parsed url matches the ogAttachment url, don't do anything + if (_ogAttachment?.titleLink == firstMatchedUrl) return; + + final client = StreamChat.of(context).client; + + _enrichUrlOperation = CancelableOperation.fromFuture( + client.enrichUrl(firstMatchedUrl).then((ogAttachment) { + final attachment = Attachment.fromOGAttachment(ogAttachment); + setState(() => _ogAttachment = attachment); + }).onError((error, stackTrace) { + // Reset the ogAttachment if there was an error + setState(() => _ogAttachment = null); + if (error != null) { + widget.onError?.call(error, stackTrace); + } + }), + ); + }, + const Duration(seconds: 1), + ); + + void _checkEmoji(String value, BuildContext context) { + if (value.isNotEmpty && _effectiveController.baseOffset > 0 && _effectiveController.text - .substring( - 0, - _effectiveController.baseOffset, - ) + .substring(0, _effectiveController.baseOffset) .contains(':')) { final textToSelection = _effectiveController.text.substring( 0, @@ -941,14 +990,11 @@ class MessageInputState extends State } } - void _checkMentions(String s, BuildContext context) { - if (s.isNotEmpty && + void _checkMentions(String value, BuildContext context) { + if (value.isNotEmpty && _effectiveController.baseOffset > 0 && _effectiveController.text - .substring( - 0, - _effectiveController.baseOffset, - ) + .substring(0, _effectiveController.baseOffset) .split(' ') .last .contains('@')) { @@ -964,11 +1010,11 @@ class MessageInputState extends State } } - void _checkCommands(String s, BuildContext context) { - if (s.startsWith('/')) { + void _checkCommands(String value, BuildContext context) { + if (value.startsWith('/')) { final allCommands = StreamChannel.of(context).channel.config?.commands; final command = - allCommands?.firstWhereOrNull((it) => it.name == s.substring(1)); + allCommands?.firstWhereOrNull((it) => it.name == value.substring(1)); if (command != null) { return _setCommand(command); } else if (!_showCommandsOverlay) { @@ -1030,10 +1076,7 @@ class MessageInputState extends State } final splits = _effectiveController.text - .substring( - 0, - _effectiveController.selectionStart, - ) + .substring(0, _effectiveController.selectionStart) .split('@'); final query = splits.last.toLowerCase(); @@ -1082,10 +1125,7 @@ class MessageInputState extends State } final splits = _effectiveController.text - .substring( - 0, - _effectiveController.baseOffset, - ) + .substring(0, _effectiveController.baseOffset) .split(':'); final query = splits.last.toLowerCase(); @@ -1222,11 +1262,7 @@ class MessageInputState extends State focusElevation: 0, hoverElevation: 0, onPressed: () { - _effectiveController.value = _effectiveController.value.copyWith( - attachments: _effectiveController.attachments - .where((it) => it.id != attachment.id) - .toList(), - ); + _effectiveController.removeAttachmentById(attachment.id); }, fillColor: _streamChatTheme.colorTheme.textHighEmphasis.withOpacity(0.5), @@ -1572,10 +1608,19 @@ class MessageInputState extends State Future sendMessage() async { var message = _effectiveController.value; + // Add ogAttachment if present + final skipEnrichUrl = _ogAttachment == null; + if (!skipEnrichUrl) { + message = message.copyWith( + attachments: [...message.attachments, _ogAttachment!], + ); + } + var shouldKeepFocus = widget.shouldKeepFocusAfterMessage; shouldKeepFocus ??= !_commandEnabled; + _ogAttachment = null; _effectiveController.reset(); if (widget.preMessageSending != null) { @@ -1590,10 +1635,16 @@ class MessageInputState extends State try { Future sendingFuture; - if (!_isEditing) { - sendingFuture = channel.sendMessage(message); + if (_isEditing) { + sendingFuture = channel.updateMessage( + message, + skipEnrichUrl: skipEnrichUrl, + ); } else { - sendingFuture = channel.updateMessage(message); + sendingFuture = channel.sendMessage( + message, + skipEnrichUrl: skipEnrichUrl, + ); } if (shouldKeepFocus) { @@ -1702,3 +1753,73 @@ class MessageInputState extends State super.didChangeDependencies(); } } + +class OGAttachmentPreview extends StatelessWidget { + const OGAttachmentPreview({ + Key? key, + required this.attachment, + this.onDismissPreviewPressed, + }) : super(key: key); + + final Attachment attachment; + final VoidCallback? onDismissPreviewPressed; + + @override + Widget build(BuildContext context) { + final chatTheme = StreamChatTheme.of(context); + final textTheme = chatTheme.textTheme; + final colorTheme = chatTheme.colorTheme; + + final attachmentTitle = attachment.title; + final attachmentText = attachment.text; + + return Row( + children: [ + Padding( + padding: const EdgeInsets.all(8.0), + child: Icon( + Icons.link, + color: colorTheme.accentPrimary, + ), + ), + Expanded( + child: Container( + decoration: BoxDecoration( + border: Border( + left: BorderSide( + color: colorTheme.accentPrimary, + width: 2, + ), + ), + ), + padding: const EdgeInsets.only(left: 6), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (attachmentTitle != null) + Text( + attachmentTitle.trim(), + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: textTheme.body.copyWith(fontWeight: FontWeight.w700), + ), + if (attachmentText != null) + Text( + attachmentText, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: textTheme.body.copyWith(fontWeight: FontWeight.w400), + ), + ], + ), + ), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: onDismissPreviewPressed, + ), + ], + ); + } +} From 50e9cb38e9033a95ee5f27baffc4dc1ec5f645cc Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 20 Dec 2021 16:40:58 +0530 Subject: [PATCH 050/201] chore(ui): minor fixes Signed-off-by: xsahil03x --- .../lib/src/message_input/message_input.dart | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 46072348..a28754d3 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -942,10 +942,15 @@ class MessageInputState extends State if (_lastSearchedContainsUrlText == value) return; _lastSearchedContainsUrlText = value; - final regex = - RegExp(r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+'); - final matchedUrls = regex.allMatches(value); - if (matchedUrls.isEmpty) return; + final matchedUrls = + RegExp(r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+') + .allMatches(value); + + // Reset the og attachment if the text doesn't contain any url + if (matchedUrls.isEmpty) { + setState(() => _ogAttachment = null); + return; + } final firstMatchedUrl = matchedUrls.first.group(0)!; @@ -955,19 +960,20 @@ class MessageInputState extends State final client = StreamChat.of(context).client; _enrichUrlOperation = CancelableOperation.fromFuture( - client.enrichUrl(firstMatchedUrl).then((ogAttachment) { + client.enrichUrl(firstMatchedUrl), + ).then( + (ogAttachment) { final attachment = Attachment.fromOGAttachment(ogAttachment); setState(() => _ogAttachment = attachment); - }).onError((error, stackTrace) { + }, + onError: (error, stackTrace) { // Reset the ogAttachment if there was an error setState(() => _ogAttachment = null); - if (error != null) { - widget.onError?.call(error, stackTrace); - } - }), + widget.onError?.call(error, stackTrace); + }, ); }, - const Duration(seconds: 1), + const Duration(milliseconds: 650), ); void _checkEmoji(String value, BuildContext context) { From 56e030f40c83ab8cb86f9e0ac88ce657e72ececf Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 20 Dec 2021 18:25:56 +0530 Subject: [PATCH 051/201] feat(ui, core): handle ogAttachment modification via message_input_controller.dart. Signed-off-by: xsahil03x --- .../lib/src/message_input/message_input.dart | 47 +++--------- .../lib/src/message_input_controller.dart | 64 +++++++++++++---- .../src/message_text_field_controller.dart | 72 +++++++++++++++++++ 3 files changed, 133 insertions(+), 50 deletions(-) create mode 100644 packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index a28754d3..7e02e4b3 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -335,17 +335,6 @@ class MessageInput extends StatefulWidget { @override MessageInputState createState() => MessageInputState(); - - /// Use this method to get the current [StreamChatState] instance - static MessageInputState of(BuildContext context) { - MessageInputState? messageInputState; - messageInputState = context.findAncestorStateOfType(); - assert( - messageInputState != null, - 'You must have a MessageInput widget as ancestor of your widget tree', - ); - return messageInputState!; - } } /// State of [MessageInput] @@ -520,11 +509,11 @@ class MessageInputState extends State ], ), ) - else if (_ogAttachment != null) + else if (_effectiveController.ogAttachment != null) OGAttachmentPreview( - attachment: _ogAttachment!, + attachment: _effectiveController.ogAttachment!, onDismissPreviewPressed: () { - setState(() => _ogAttachment = null); + _effectiveController.clearOGAttachment(); _focusNode.unfocus(); }, ), @@ -929,7 +918,6 @@ class MessageInputState extends State return context.translations.writeAMessageLabel; } - Attachment? _ogAttachment; String? _lastSearchedContainsUrlText; CancelableOperation? _enrichUrlOperation; @@ -948,14 +936,16 @@ class MessageInputState extends State // Reset the og attachment if the text doesn't contain any url if (matchedUrls.isEmpty) { - setState(() => _ogAttachment = null); + _effectiveController.clearOGAttachment(); return; } final firstMatchedUrl = matchedUrls.first.group(0)!; // If the parsed url matches the ogAttachment url, don't do anything - if (_ogAttachment?.titleLink == firstMatchedUrl) return; + if (_effectiveController.ogAttachment?.titleLink == firstMatchedUrl) { + return; + } final client = StreamChat.of(context).client; @@ -964,11 +954,11 @@ class MessageInputState extends State ).then( (ogAttachment) { final attachment = Attachment.fromOGAttachment(ogAttachment); - setState(() => _ogAttachment = attachment); + _effectiveController.setOGAttachment(attachment); }, onError: (error, stackTrace) { // Reset the ogAttachment if there was an error - setState(() => _ogAttachment = null); + _effectiveController.clearOGAttachment(); widget.onError?.call(error, stackTrace); }, ); @@ -1470,14 +1460,6 @@ class MessageInputState extends State } } - /// Add an attachment to the sending message - /// Use this to add custom type attachments - /// - /// Note: Only meant to be used from outside the state. - void addAttachment(Attachment attachment) { - _addAttachments([attachment]); - } - /// Adds an attachment to the [messageInputController.attachments] map void _addAttachments(Iterable attachments) { final limit = widget.attachmentLimit; @@ -1612,21 +1594,14 @@ class MessageInputState extends State /// Sends the current message Future sendMessage() async { - var message = _effectiveController.value; + final skipEnrichUrl = _effectiveController.ogAttachment == null; - // Add ogAttachment if present - final skipEnrichUrl = _ogAttachment == null; - if (!skipEnrichUrl) { - message = message.copyWith( - attachments: [...message.attachments, _ogAttachment!], - ); - } + var message = _effectiveController.value; var shouldKeepFocus = widget.shouldKeepFocusAfterMessage; shouldKeepFocus ??= !_commandEnabled; - _ogAttachment = null; _effectiveController.reset(); if (widget.preMessageSending != null) { diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 29bd2db2..f218b9ca 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -1,8 +1,9 @@ import 'dart:convert'; +import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter_core/src/message_text_field_controller.dart'; /// A value listenable builder related to a [Message]. /// @@ -17,33 +18,46 @@ class MessageInputController extends ValueNotifier { /// message. factory MessageInputController({ Message? message, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: message ?? Message(), + textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from an initial [text]. - factory MessageInputController.fromText(String? text) => + factory MessageInputController.fromText( + String? text, { + Map? textPatternStyle, + }) => MessageInputController._( initialMessage: Message(text: text), + textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from initial /// [attachments]. factory MessageInputController.fromAttachments( - List attachments, - ) => + List attachments, { + Map? textPatternStyle, + }) => MessageInputController._( initialMessage: Message(attachments: attachments), + textPatternStyle: textPatternStyle, ); MessageInputController._({ required Message initialMessage, - }) : _textEditingController = - TextEditingController.fromValue(TextEditingValue( - text: initialMessage.text ?? '', - composing: TextRange.collapsed(initialMessage.text?.length ?? 0), - )), + Map? textPatternStyle, + }) : _textEditingController = MessageTextFieldController.fromValue( + initialMessage.text == null + ? const TextEditingValue() + : TextEditingValue( + text: initialMessage.text!, + composing: TextRange.collapsed(initialMessage.text!.length), + ), + textPatternStyle: textPatternStyle, + ), _initialMessage = initialMessage, super(initialMessage) { addListener(_textEditingSyncer); @@ -73,8 +87,9 @@ class MessageInputController extends ValueNotifier { Message get message => value; /// Returns the controller of the text field linked to this controller. - TextEditingController get textEditingController => _textEditingController; - final TextEditingController _textEditingController; + MessageTextFieldController get textEditingController => + _textEditingController; + final MessageTextFieldController _textEditingController; /// Returns the text of the message. String get text => _textEditingController.text; @@ -174,6 +189,28 @@ class MessageInputController extends ValueNotifier { attachments = []; } + // Only used to store the value locally in order to remove it if we call + // [clearOGAttachment] or [setOGAttachment] again. + Attachment? _ogAttachment; + + /// Returns the og attachment of the message if set + Attachment? get ogAttachment => + attachments.firstWhereOrNull((it) => it.id == _ogAttachment?.id); + + /// Sets the og attachment in the message. + void setOGAttachment(Attachment attachment) { + attachments = [...attachments] + ..remove(_ogAttachment) + ..insert(0, attachment); + _ogAttachment = attachment; + } + + /// Removes the og attachment. + void clearOGAttachment() { + attachments = [...attachments]..remove(_ogAttachment); + _ogAttachment = null; + } + /// Returns the list of mentioned users in the message. List get mentionedUsers => value.mentionedUsers; @@ -220,9 +257,8 @@ class MessageInputController extends ValueNotifier { /// Sets the [value] to the initial [Message] value. void reset({bool resetId = true}) { if (resetId) { - _initialMessage = _initialMessage.copyWith( - id: const Uuid().v4(), - ); + final newId = const Uuid().v4(); + _initialMessage = _initialMessage.copyWith(id: newId); } value = _initialMessage; } diff --git a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart new file mode 100644 index 00000000..82a60709 --- /dev/null +++ b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +class MessageTextFieldController extends TextEditingController { + MessageTextFieldController({ + String? text, + this.textPatternStyle, + }) : super(text: text); + + MessageTextFieldController.fromValue( + TextEditingValue? value, { + this.textPatternStyle, + }) : super.fromValue(value); + + final Map? textPatternStyle; + + /// + @override + TextSpan buildTextSpan({ + required BuildContext context, + TextStyle? style, + required bool withComposing, + }) { + final pattern = textPatternStyle; + if (pattern == null) { + return super.buildTextSpan( + context: context, + style: style, + withComposing: withComposing, + ); + } + + return TextSpan(text: text, style: style).splitMapJoin( + RegExp(pattern.keys.map((it) => it.pattern).join('|')), + onMatch: (match) { + final text = match[0]!; + final key = pattern.keys.firstWhere((it) => it.hasMatch(text)); + return TextSpan( + text: text, + style: pattern[key], + ); + }, + ); + } +} + +extension _TextSpanX on TextSpan { + TextSpan splitMapJoin( + Pattern pattern, { + TextSpan Function(Match)? onMatch, + TextSpan Function(TextSpan)? onNonMatch, + }) { + final children = []; + + toPlainText().splitMapJoin( + pattern, + onMatch: (match) { + final span = TextSpan(text: match.group(0), style: style); + final updated = onMatch?.call(match); + children.add(updated ?? span); + return span.toPlainText(); + }, + onNonMatch: (text) { + final span = TextSpan(text: text, style: style); + final updatedSpan = onNonMatch?.call(span); + children.add(updatedSpan ?? span); + return span.toPlainText(); + }, + ); + + return TextSpan(style: style, children: children); + } +} From 0c2ce9c955e8e1621fb0132780dc1d297508967b Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Mon, 20 Dec 2021 19:29:03 +0530 Subject: [PATCH 052/201] fixed docs --- .../lib/src/core/models/message.dart | 6 +- .../test/src/client/channel_test.dart | 1 - .../stream_attachment_picker.dart | 93 +++++++++++-------- .../stream_message_text_field.dart | 7 +- .../lib/stream_chat_flutter.dart | 8 +- 5 files changed, 66 insertions(+), 49 deletions(-) diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index a7d21c03..1004b7a0 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -305,7 +305,8 @@ class Message extends Equatable { quotedMessage != null && quotedMessage is! _NullConst) { throw ArgumentError( - '`quotedMessage` can only be set as Message or null'); + '`quotedMessage` can only be set as Message or null', + ); } return true; }(), 'Validate type for quotedMessage'); @@ -315,7 +316,8 @@ class Message extends Equatable { quotedMessageId != null && quotedMessageId is! _NullConst) { throw ArgumentError( - '`quotedMessage` can only be set as String or null'); + '`quotedMessage` can only be set as String or null', + ); } return true; }(), 'Validate type for quotedMessage'); diff --git a/packages/stream_chat/test/src/client/channel_test.dart b/packages/stream_chat/test/src/client/channel_test.dart index 60e8dd93..7eb68b79 100644 --- a/packages/stream_chat/test/src/client/channel_test.dart +++ b/packages/stream_chat/test/src/client/channel_test.dart @@ -756,7 +756,6 @@ void main() { const messageId = 'test-message-id'; final message = Message( id: messageId, - status: MessageSendingStatus.sending, ); expectLater( diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 93c86d72..6f03c976 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -23,41 +23,8 @@ typedef CustomAttachmentIconBuilder = Widget Function( /// A widget that allows to pick an attachment. class StreamAttachmentPicker extends StatefulWidget { - /// True if the picker is open. - final bool isOpen; - - /// The picker size in height. - final double pickerSize; - - /// The [MessageInputController] linked to this picker. - final MessageInputController messageInputController; - - /// The limit of attachments that can be picked. - final int attachmentLimit; - - /// The callback for when the attachment limit is exceeded. - final AttachmentLimitExceedListener? onAttachmentLimitExceeded; - - final ValueChanged? onError; - final FilePickerCallback onFilePicked; - - /// Video quality to use when compressing the videos. - final VideoQuality compressedVideoQuality; - - /// Frame rate to use when compressing the videos. - final int compressedVideoFrameRate; - - /// Max attachment size in bytes: - /// - Defaults to 20 MB - /// - Do not set it if you're using our default CDN - final int maxAttachmentSize; - - /// The list of attachment types that can be picked. - final List allowedAttachmentTypes; - - /// The list of custom attachment types that can be picked. - final List customAttachmentTypes; - + /// Default constructor for [StreamAttachmentPicker] which creates the Stream + /// attachment picker widget. const StreamAttachmentPicker({ Key? key, required this.messageInputController, @@ -78,6 +45,46 @@ class StreamAttachmentPicker extends StatefulWidget { this.customAttachmentTypes = const [], }) : super(key: key); + /// True if the picker is open. + final bool isOpen; + + /// The picker size in height. + final double pickerSize; + + /// The [MessageInputController] linked to this picker. + final MessageInputController messageInputController; + + /// The limit of attachments that can be picked. + final int attachmentLimit; + + /// The callback for when the attachment limit is exceeded. + final AttachmentLimitExceedListener? onAttachmentLimitExceeded; + + /// Callback for when an error occurs in the attachment picker. + final ValueChanged? onError; + + /// Callback for when file is picked. + final FilePickerCallback onFilePicked; + + /// Video quality to use when compressing the videos. + final VideoQuality compressedVideoQuality; + + /// Frame rate to use when compressing the videos. + final int compressedVideoFrameRate; + + /// Max attachment size in bytes: + /// - Defaults to 20 MB + /// - Do not set it if you're using our default CDN + final int maxAttachmentSize; + + /// The list of attachment types that can be picked. + final List allowedAttachmentTypes; + + /// The list of custom attachment types that can be picked. + final List customAttachmentTypes; + + /// Used to create a new copy of [StreamAttachmentPicker] with modified + /// properties. StreamAttachmentPicker copyWith({ Key? key, MessageInputController? messageInputController, @@ -549,14 +556,22 @@ class _PickerWidgetState extends State<_PickerWidget> { } } +/// Class which holds data for a custom attachment type in the attachment picker class CustomAttachmentType { - String type; - CustomAttachmentIconBuilder iconBuilder; - WidgetBuilder pickerBuilder; - + /// Default constructor for creating a custom attachment for the attachment + /// picker. CustomAttachmentType({ required this.type, required this.iconBuilder, required this.pickerBuilder, }); + + /// Type name. + String type; + + /// Builds the icon in the attachment picker top row. + CustomAttachmentIconBuilder iconBuilder; + + /// Builds content in the attachment builder when icon is selected. + WidgetBuilder pickerBuilder; } diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart index e7d765d9..af06f53b 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart @@ -1,4 +1,4 @@ -// ignore_for_file: prefer-trailing-comma, cascade_invocations +// ignore_for_file: prefer-trailing-comma, cascade_invocations, lines_longer_than_80_chars import 'dart:ui' as ui show BoxHeightStyle, BoxWidthStyle; @@ -44,7 +44,8 @@ class StreamMessageTextField extends StatefulWidget { /// After [maxLength] characters have been input, additional input /// is ignored, unless [maxLengthEnforcement] is set to /// [MaxLengthEnforcement.none]. - /// The text field enforces the length with a [LengthLimitingTextInputFormatter], + /// The text field enforces the length with a + /// [LengthLimitingTextInputFormatter], /// which is evaluated after the supplied [inputFormatters], if any. /// The [maxLength] value must be either null or greater than zero. /// @@ -633,7 +634,7 @@ class StreamMessageTextField extends StatefulWidget { defaultValue: null)); properties.add(DiagnosticsProperty( 'scrollPadding', scrollPadding, - defaultValue: const EdgeInsets.all(20.0))); + defaultValue: const EdgeInsets.all(20))); properties.add(FlagProperty('selectionEnabled', value: selectionEnabled, defaultValue: true, diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index b39a2eea..a4e9d715 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -23,16 +23,16 @@ export 'src/localization/stream_chat_localizations.dart'; export 'src/localization/translations.dart' show DefaultTranslations; export 'src/mention_tile.dart'; export 'src/message_action.dart'; +export 'src/message_input/countdown_button.dart'; export 'src/message_input/message_input.dart'; +export 'src/message_input/stream_attachment_picker.dart'; +export 'src/message_input/stream_message_send_button.dart'; +export 'src/message_input/stream_message_text_field.dart'; export 'src/message_list_view.dart'; export 'src/message_search_item.dart'; export 'src/message_search_list_view.dart'; export 'src/message_text.dart'; export 'src/message_widget.dart'; -export 'src/message_input/countdown_button.dart'; -export 'src/message_input/stream_attachment_picker.dart'; -export 'src/message_input/stream_message_send_button.dart'; -export 'src/message_input/stream_message_text_field.dart'; export 'src/option_list_tile.dart'; export 'src/reaction_icon.dart'; export 'src/reaction_picker.dart'; From 8b6c732844c31ffa09e01ea91eeb4e02422fd607 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Tue, 21 Dec 2021 14:11:23 +0530 Subject: [PATCH 053/201] feat(ui, core): minor fixes and improvements Signed-off-by: xsahil03x --- .../lib/src/message_input/message_input.dart | 112 ++++++++++-------- .../lib/src/message_input_controller.dart | 9 +- 2 files changed, 68 insertions(+), 53 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 7e02e4b3..be63b10b 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -895,7 +895,7 @@ class MessageInputState extends State _actionsShrunk = value.isNotEmpty && actionsLength > 1; }); - _checkContainsUrlDebounced.call([value, context]); + _checkContainsUrl(value, context); _checkCommands(value, context); _checkMentions(value, context); _checkEmoji(value, context); @@ -920,52 +920,65 @@ class MessageInputState extends State String? _lastSearchedContainsUrlText; CancelableOperation? _enrichUrlOperation; - - late final _checkContainsUrlDebounced = debounce( - (String value, BuildContext context) async { - // Cancel the previous operation if it's still running - _enrichUrlOperation?.cancel(); - - // If the text is same as the last time, don't do anything - if (_lastSearchedContainsUrlText == value) return; - _lastSearchedContainsUrlText = value; - - final matchedUrls = - RegExp(r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+') - .allMatches(value); - - // Reset the og attachment if the text doesn't contain any url - if (matchedUrls.isEmpty) { - _effectiveController.clearOGAttachment(); - return; - } - - final firstMatchedUrl = matchedUrls.first.group(0)!; - - // If the parsed url matches the ogAttachment url, don't do anything - if (_effectiveController.ogAttachment?.titleLink == firstMatchedUrl) { - return; - } - - final client = StreamChat.of(context).client; - - _enrichUrlOperation = CancelableOperation.fromFuture( - client.enrichUrl(firstMatchedUrl), - ).then( - (ogAttachment) { - final attachment = Attachment.fromOGAttachment(ogAttachment); - _effectiveController.setOGAttachment(attachment); - }, - onError: (error, stackTrace) { - // Reset the ogAttachment if there was an error - _effectiveController.clearOGAttachment(); - widget.onError?.call(error, stackTrace); - }, - ); - }, - const Duration(milliseconds: 650), + final _urlRegex = RegExp( + r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+', ); + void _checkContainsUrl(String value, BuildContext context) async { + // Cancel the previous operation if it's still running + _enrichUrlOperation?.cancel(); + + // If the text is same as the last time, don't do anything + if (_lastSearchedContainsUrlText == value) return; + _lastSearchedContainsUrlText = value; + + final matchedUrls = _urlRegex.allMatches(value); + + // Reset the og attachment if the text doesn't contain any url + if (matchedUrls.isEmpty) { + _effectiveController.clearOGAttachment(); + return; + } + + final firstMatchedUrl = matchedUrls.first.group(0)!; + + // If the parsed url matches the ogAttachment url, don't do anything + if (_effectiveController.ogAttachment?.titleLink == firstMatchedUrl) { + return; + } + + final client = StreamChat.of(context).client; + + _enrichUrlOperation = CancelableOperation.fromFuture( + _enrichUrl(firstMatchedUrl, client), + ).then( + (ogAttachment) { + final attachment = Attachment.fromOGAttachment(ogAttachment); + _effectiveController.setOGAttachment(attachment); + }, + onError: (error, stackTrace) { + // Reset the ogAttachment if there was an error + _effectiveController.clearOGAttachment(); + widget.onError?.call(error, stackTrace); + }, + ); + } + + final _ogAttachmentCache = {}; + + Future _enrichUrl( + String url, + StreamChatClient client, + ) async { + var response = _ogAttachmentCache[url]; + if (response == null) { + final client = StreamChat.of(context).client; + response = await client.enrichUrl(url); + _ogAttachmentCache[url] = response; + } + return response; + } + void _checkEmoji(String value, BuildContext context) { if (value.isNotEmpty && _effectiveController.baseOffset > 0 && @@ -1169,11 +1182,14 @@ class MessageInputState extends State } Widget _buildAttachments() { - if (_effectiveController.attachments.isEmpty) return const Offstage(); - final fileAttachments = _effectiveController.attachments + final nonOGAttachments = _effectiveController.attachments.where( + (it) => it.titleLink == null, + ); + if (nonOGAttachments.isEmpty) return const Offstage(); + final fileAttachments = nonOGAttachments .where((it) => it.type == 'file') .toList(growable: false); - final remainingAttachments = _effectiveController.attachments + final remainingAttachments = nonOGAttachments .where((it) => it.type != 'file') .toList(growable: false); return Column( diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index f218b9ca..6af8db6e 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -66,10 +66,7 @@ class MessageInputController extends ValueNotifier { void _textEditingSyncer() { final cleanText = value.command == null ? value.text - : value.text?.replaceFirst( - '/${value.command} ', - '', - ); + : value.text?.replaceFirst('/${value.command} ', ''); if (cleanText != _textEditingController.text) { final previousOffset = _textEditingController.value.selection.start; @@ -207,7 +204,9 @@ class MessageInputController extends ValueNotifier { /// Removes the og attachment. void clearOGAttachment() { - attachments = [...attachments]..remove(_ogAttachment); + if (_ogAttachment != null) { + removeAttachment(_ogAttachment!); + } _ogAttachment = null; } From 3f0eb33d6e0067099fdf4f15a84e8617e793f09a Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 21 Dec 2021 15:56:53 +0530 Subject: [PATCH 054/201] cleanup --- .../lib/src/message_input/stream_attachment_picker.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 6f03c976..909f9561 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -343,8 +343,6 @@ class _StreamAttachmentPickerState extends State { .any((e) => e.id == media.id)) { messageInputController .removeAttachmentById(media.id); - // setState(() => messageInputController.attachments - // .removeWhere((e) => e.id == media.id)); } else { _addAssetAttachment(media); } From 3c6f345c2d6c53eb470774536b6f87b54084e19e Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 21 Dec 2021 16:20:32 +0530 Subject: [PATCH 055/201] fixed tests for modal --- .../test/src/message_action_modal_test.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart index 9210ac49..cfd6f4ec 100644 --- a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart @@ -3,6 +3,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:stream_chat_flutter/src/message_actions_modal.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'mocks.dart'; @@ -37,6 +38,7 @@ void main() { user: User( id: 'user-id', ), + status: MessageSendingStatus.sent, ), messageWidget: const Text( 'test', @@ -196,6 +198,7 @@ void main() { user: User( id: 'user-id', ), + status: MessageSendingStatus.sent, ), messageTheme: streamTheme.ownMessageTheme, ), @@ -242,6 +245,7 @@ void main() { user: User( id: 'user-id', ), + status: MessageSendingStatus.sent, ), messageTheme: streamTheme.ownMessageTheme, ), From 9652c977a27e770981128d06dc2e758770a12b30 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 27 Dec 2021 18:00:48 +0100 Subject: [PATCH 056/201] fix tests --- packages/stream_chat/lib/src/core/models/message.dart | 4 ++-- .../lib/src/message_input/stream_message_text_field.dart | 1 - .../test/src/attachment_actions_modal_test.dart | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat/lib/src/core/models/message.dart b/packages/stream_chat/lib/src/core/models/message.dart index 1004b7a0..017bb06f 100644 --- a/packages/stream_chat/lib/src/core/models/message.dart +++ b/packages/stream_chat/lib/src/core/models/message.dart @@ -414,8 +414,8 @@ class Message extends Equatable { shadowed, silent, command, - createdAt, - updatedAt, + _createdAt, + _updatedAt, deletedAt, user, pinned, diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart index af06f53b..61466aaf 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart @@ -703,7 +703,6 @@ class _StreamMessageTextFieldState extends State @override Widget build(BuildContext context) => TextField( - key: widget.key, controller: _effectiveController.textEditingController, onChanged: (newText) { _effectiveController.text = newText; diff --git a/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart b/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart index c8832f6f..3b711a85 100644 --- a/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart @@ -3,7 +3,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:stream_chat_flutter/src/attachment_actions_modal.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'mocks.dart'; From 8278e1f7452dddfebfb12d791a7e6bbc31848fe7 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 29 Dec 2021 11:42:08 +0100 Subject: [PATCH 057/201] fix analysis --- .../lib/src/message_input/message_input.dart | 7 ++++++- .../lib/src/message_text_field_controller.dart | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index be63b10b..d0d5e882 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -1751,14 +1751,19 @@ class MessageInputState extends State } } +/// Preview of an Open Graph attachment. class OGAttachmentPreview extends StatelessWidget { + /// Returns a new instance of [OGAttachmentPreview] const OGAttachmentPreview({ Key? key, required this.attachment, this.onDismissPreviewPressed, }) : super(key: key); + /// The attachment to be rendered. final Attachment attachment; + + /// Called when the dismiss button is pressed. final VoidCallback? onDismissPreviewPressed; @override @@ -1773,7 +1778,7 @@ class OGAttachmentPreview extends StatelessWidget { return Row( children: [ Padding( - padding: const EdgeInsets.all(8.0), + padding: const EdgeInsets.all(8), child: Icon( Icons.link, color: colorTheme.accentPrimary, diff --git a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart index 82a60709..30065ff4 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart @@ -1,19 +1,24 @@ import 'package:flutter/material.dart'; +/// Controller for the [StreamTextField] widget. class MessageTextFieldController extends TextEditingController { + /// Returns a new MessageTextFieldController MessageTextFieldController({ String? text, this.textPatternStyle, }) : super(text: text); + /// Returns a new MessageTextFieldController with the given text [value]. MessageTextFieldController.fromValue( TextEditingValue? value, { this.textPatternStyle, }) : super.fromValue(value); + /// A map of style to apply to the text matching the RegExp patterns. final Map? textPatternStyle; - /// + /// Builds a [TextSpan] from the current text, + /// highlighting the matches for [textPatternStyle]. @override TextSpan buildTextSpan({ required BuildContext context, From e85b1a8b3f7f24417e08b12c348fb1207024e602 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 29 Dec 2021 15:19:27 +0100 Subject: [PATCH 058/201] move message input controllers to ui --- .../lib/src/message_input}/message_input_controller.dart | 3 +-- .../lib/src/message_input}/message_text_field_controller.dart | 0 .../lib/src/message_input/stream_message_text_field.dart | 2 +- packages/stream_chat_flutter/lib/stream_chat_flutter.dart | 2 ++ .../test/src/message_input}/message_input_controller_test.dart | 2 +- .../stream_chat_flutter_core/lib/stream_chat_flutter_core.dart | 1 - 6 files changed, 5 insertions(+), 5 deletions(-) rename packages/{stream_chat_flutter_core/lib/src => stream_chat_flutter/lib/src/message_input}/message_input_controller.dart (98%) rename packages/{stream_chat_flutter_core/lib/src => stream_chat_flutter/lib/src/message_input}/message_text_field_controller.dart (100%) rename packages/{stream_chat_flutter_core/test => stream_chat_flutter/test/src/message_input}/message_input_controller_test.dart (82%) diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart similarity index 98% rename from packages/stream_chat_flutter_core/lib/src/message_input_controller.dart rename to packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart index 6af8db6e..45599239 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart @@ -2,8 +2,7 @@ import 'dart:convert'; import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; -import 'package:stream_chat/stream_chat.dart'; -import 'package:stream_chat_flutter_core/src/message_text_field_controller.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// A value listenable builder related to a [Message]. /// diff --git a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart b/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart similarity index 100% rename from packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart rename to packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart index 61466aaf..8e4a34eb 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart @@ -8,7 +8,7 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; export 'package:flutter/services.dart' show diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index a4e9d715..ad3f968d 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -25,6 +25,8 @@ export 'src/mention_tile.dart'; export 'src/message_action.dart'; export 'src/message_input/countdown_button.dart'; export 'src/message_input/message_input.dart'; +export 'src/message_input/message_input_controller.dart'; +export 'src/message_input/message_text_field_controller.dart'; export 'src/message_input/stream_attachment_picker.dart'; export 'src/message_input/stream_message_send_button.dart'; export 'src/message_input/stream_message_text_field.dart'; diff --git a/packages/stream_chat_flutter_core/test/message_input_controller_test.dart b/packages/stream_chat_flutter/test/src/message_input/message_input_controller_test.dart similarity index 82% rename from packages/stream_chat_flutter_core/test/message_input_controller_test.dart rename to packages/stream_chat_flutter/test/src/message_input/message_input_controller_test.dart index 5e7934bd..1b496784 100644 --- a/packages/stream_chat_flutter_core/test/message_input_controller_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input/message_input_controller_test.dart @@ -1,5 +1,5 @@ import 'package:flutter_test/flutter_test.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() { testWidgets( diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index bf191ace..8bd41c76 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -7,7 +7,6 @@ export 'src/better_stream_builder.dart'; export 'src/channel_list_core.dart' hide ChannelListCoreState; export 'src/channels_bloc.dart'; export 'src/lazy_load_scroll_view.dart'; -export 'src/message_input_controller.dart'; export 'src/message_list_core.dart' hide MessageListCoreState; export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; From fbf8694f582d277da6ead368e3408d20dbc18d51 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 3 Jan 2022 09:20:47 +0100 Subject: [PATCH 059/201] use a function for textPatternStyle and add default to theme --- .../message_input_controller.dart | 8 ++++---- .../message_text_field_controller.dart | 18 ++++++++++++++---- .../lib/src/stream_chat_theme.dart | 1 + .../lib/src/theme/message_input_theme.dart | 18 +++++++++++++++--- 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart index 45599239..185c875c 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart @@ -17,7 +17,7 @@ class MessageInputController extends ValueNotifier { /// message. factory MessageInputController({ Message? message, - Map? textPatternStyle, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: message ?? Message(), @@ -27,7 +27,7 @@ class MessageInputController extends ValueNotifier { /// Creates a controller for an editable text field from an initial [text]. factory MessageInputController.fromText( String? text, { - Map? textPatternStyle, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: Message(text: text), @@ -38,7 +38,7 @@ class MessageInputController extends ValueNotifier { /// [attachments]. factory MessageInputController.fromAttachments( List attachments, { - Map? textPatternStyle, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: Message(attachments: attachments), @@ -47,7 +47,7 @@ class MessageInputController extends ValueNotifier { MessageInputController._({ required Message initialMessage, - Map? textPatternStyle, + Map? textPatternStyle, }) : _textEditingController = MessageTextFieldController.fromValue( initialMessage.text == null ? const TextEditingValue() diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart b/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart index 30065ff4..12ec4831 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart @@ -1,4 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// A function that takes a [BuildContext] and returns a [TextStyle]. +typedef TextStyleBuilder = TextStyle Function(BuildContext context); /// Controller for the [StreamTextField] widget. class MessageTextFieldController extends TextEditingController { @@ -15,7 +19,7 @@ class MessageTextFieldController extends TextEditingController { }) : super.fromValue(value); /// A map of style to apply to the text matching the RegExp patterns. - final Map? textPatternStyle; + final Map? textPatternStyle; /// Builds a [TextSpan] from the current text, /// highlighting the matches for [textPatternStyle]. @@ -25,8 +29,14 @@ class MessageTextFieldController extends TextEditingController { TextStyle? style, required bool withComposing, }) { - final pattern = textPatternStyle; - if (pattern == null) { + final pattern = textPatternStyle ?? + { + RegExp(r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+'): + (context) => TextStyle( + color: MessageInputTheme.of(context).linkHighlightColor, + ), + }; + if (pattern.isEmpty) { return super.buildTextSpan( context: context, style: style, @@ -41,7 +51,7 @@ class MessageTextFieldController extends TextEditingController { final key = pattern.keys.firstWhere((it) => it.hasMatch(text)); return TextSpan( text: text, - style: pattern[key], + style: pattern[key]?.call(context), ); }, ); diff --git a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart index f3818b2e..8a210b96 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart @@ -259,6 +259,7 @@ class StreamChatThemeData { sendButtonIdleColor: colorTheme.disabled, inputBackgroundColor: colorTheme.barsBg, inputTextStyle: textTheme.body, + linkHighlightColor: colorTheme.accentPrimary, idleBorderGradient: LinearGradient( colors: [ colorTheme.disabled, diff --git a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart index 26a995a9..1348af37 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart @@ -65,6 +65,7 @@ class MessageInputThemeData with Diagnosticable { this.idleBorderGradient, this.borderRadius, this.expandButtonColor, + this.linkHighlightColor, }); /// Duration of the [MessageInput] send button animation @@ -73,6 +74,9 @@ class MessageInputThemeData with Diagnosticable { /// Background color of [MessageInput] send button final Color? sendButtonColor; + /// Color of a link + final Color? linkHighlightColor; + /// Background color of [MessageInput] action buttons final Color? actionButtonColor; @@ -110,6 +114,7 @@ class MessageInputThemeData with Diagnosticable { Color? actionButtonColor, Color? sendButtonColor, Color? actionButtonIdleColor, + Color? linkHighlightColor, Color? sendButtonIdleColor, Color? expandButtonColor, TextStyle? inputTextStyle, @@ -133,6 +138,7 @@ class MessageInputThemeData with Diagnosticable { activeBorderGradient: activeBorderGradient ?? this.activeBorderGradient, idleBorderGradient: idleBorderGradient ?? this.idleBorderGradient, borderRadius: borderRadius ?? this.borderRadius, + linkHighlightColor: linkHighlightColor ?? this.linkHighlightColor, ); /// Linearly interpolate from one [MessageInputThemeData] to another. @@ -161,6 +167,8 @@ class MessageInputThemeData with Diagnosticable { Color.lerp(a.sendButtonIdleColor, b.sendButtonIdleColor, t), sendAnimationDuration: a.sendAnimationDuration, inputDecoration: a.inputDecoration, + linkHighlightColor: + Color.lerp(a.linkHighlightColor, b.linkHighlightColor, t), ); /// Merges [this] [MessageInputThemeData] with the [other] @@ -181,6 +189,7 @@ class MessageInputThemeData with Diagnosticable { idleBorderGradient: other.idleBorderGradient, borderRadius: other.borderRadius, expandButtonColor: other.expandButtonColor, + linkHighlightColor: other.linkHighlightColor, ); } @@ -200,7 +209,8 @@ class MessageInputThemeData with Diagnosticable { inputDecoration == other.inputDecoration && idleBorderGradient == other.idleBorderGradient && activeBorderGradient == other.activeBorderGradient && - borderRadius == other.borderRadius; + borderRadius == other.borderRadius && + linkHighlightColor == other.linkHighlightColor; @override int get hashCode => @@ -215,7 +225,8 @@ class MessageInputThemeData with Diagnosticable { inputDecoration.hashCode ^ idleBorderGradient.hashCode ^ activeBorderGradient.hashCode ^ - borderRadius.hashCode; + borderRadius.hashCode ^ + linkHighlightColor.hashCode; @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { @@ -232,6 +243,7 @@ class MessageInputThemeData with Diagnosticable { ..add(DiagnosticsProperty('activeBorderGradient', activeBorderGradient)) ..add(DiagnosticsProperty('idleBorderGradient', idleBorderGradient)) ..add(DiagnosticsProperty('borderRadius', borderRadius)) - ..add(ColorProperty('expandButtonColor', expandButtonColor)); + ..add(ColorProperty('expandButtonColor', expandButtonColor)) + ..add(ColorProperty('linkHighlightColor', linkHighlightColor)); } } From dbcdd5aea6e59adb006d03c30691f268ee757681 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 3 Jan 2022 09:34:19 +0100 Subject: [PATCH 060/201] fix tests --- .../test/src/core/api/message_api_test.dart | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat/test/src/core/api/message_api_test.dart b/packages/stream_chat/test/src/core/api/message_api_test.dart index e89491a2..ed7fefd6 100644 --- a/packages/stream_chat/test/src/core/api/message_api_test.dart +++ b/packages/stream_chat/test/src/core/api/message_api_test.dart @@ -32,6 +32,7 @@ void main() { data: { 'message': message, 'skip_push': false, + 'skip_enrich_url': false, }, )).thenAnswer((_) async => successResponse(path, data: { 'message': message.toJson(), @@ -58,6 +59,7 @@ void main() { data: { 'message': message, 'skip_push': true, + 'skip_enrich_url': false, }, )).thenAnswer((_) async => successResponse(path, data: { 'message': message.toJson(), @@ -137,7 +139,10 @@ void main() { when(() => client.post( path, - data: {'message': message}, + data: { + 'message': message, + 'skip_enrich_url': false, + }, )).thenAnswer( (_) async => successResponse(path, data: {'message': message.toJson()}), ); @@ -162,7 +167,11 @@ void main() { when(() => client.put( path, - data: {'set': set, 'unset': unset}, + data: { + 'set': set, + 'unset': unset, + 'skip_enrich_url': false, + }, )).thenAnswer( (_) async => successResponse(path, data: {'message': message.toJson()}), ); @@ -180,7 +189,11 @@ void main() { verify(() => client.put( path, - data: {'set': set, 'unset': unset}, + data: { + 'set': set, + 'unset': unset, + 'skip_enrich_url': false, + }, )).called(1); verifyNoMoreInteractions(client); }); From 504e72deca272a9a7f941c8bb9aed93448a1ec53 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 3 Jan 2022 16:11:46 +0100 Subject: [PATCH 061/201] add TLD validity check --- .../lib/src/message_input/message_input.dart | 4 +- .../message_text_field_controller.dart | 20 +- .../lib/src/message_input/tld.dart | 1498 +++++++++++++++++ 3 files changed, 1516 insertions(+), 6 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/message_input/tld.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index d0d5e882..180c3d12 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -13,6 +13,7 @@ import 'package:stream_chat_flutter/src/commands_overlay.dart'; import 'package:stream_chat_flutter/src/emoji/emoji.dart'; import 'package:stream_chat_flutter/src/emoji_overlay.dart'; import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/message_input/tld.dart'; import 'package:stream_chat_flutter/src/multi_overlay.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; import 'package:stream_chat_flutter/src/user_mentions_overlay.dart'; @@ -932,7 +933,8 @@ class MessageInputState extends State if (_lastSearchedContainsUrlText == value) return; _lastSearchedContainsUrlText = value; - final matchedUrls = _urlRegex.allMatches(value); + final matchedUrls = _urlRegex.allMatches(value).toList() + ..removeWhere((it) => it.group(0)?.split('.').last.isValidTLD() == false); // Reset the og attachment if the text doesn't contain any url if (matchedUrls.isEmpty) { diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart b/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart index 12ec4831..4a6c3708 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart @@ -1,8 +1,12 @@ import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/message_input/tld.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// A function that takes a [BuildContext] and returns a [TextStyle]. -typedef TextStyleBuilder = TextStyle Function(BuildContext context); +typedef TextStyleBuilder = TextStyle? Function( + BuildContext context, + String text, +); /// Controller for the [StreamTextField] widget. class MessageTextFieldController extends TextEditingController { @@ -32,9 +36,12 @@ class MessageTextFieldController extends TextEditingController { final pattern = textPatternStyle ?? { RegExp(r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+'): - (context) => TextStyle( - color: MessageInputTheme.of(context).linkHighlightColor, - ), + (context, text) { + if (!text.split('.').last.isValidTLD()) return null; + return TextStyle( + color: MessageInputTheme.of(context).linkHighlightColor, + ); + }, }; if (pattern.isEmpty) { return super.buildTextSpan( @@ -51,7 +58,10 @@ class MessageTextFieldController extends TextEditingController { final key = pattern.keys.firstWhere((it) => it.hasMatch(text)); return TextSpan( text: text, - style: pattern[key]?.call(context), + style: pattern[key]?.call( + context, + text, + ), ); }, ); diff --git a/packages/stream_chat_flutter/lib/src/message_input/tld.dart b/packages/stream_chat_flutter/lib/src/message_input/tld.dart new file mode 100644 index 00000000..504aa17b --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/message_input/tld.dart @@ -0,0 +1,1498 @@ +/// Extension on String adding utilities checking TLD validity. +extension TLDString on String { + /// Returns true if the string is a valid TLD. + bool isValidTLD() => tlds.contains(toUpperCase()); +} + +/// List of valid TLDs. +/// https://data.iana.org/TLD/tlds-alpha-by-domain.txt +const tlds = [ + 'AAA', + 'AARP', + 'ABARTH', + 'ABB', + 'ABBOTT', + 'ABBVIE', + 'ABC', + 'ABLE', + 'ABOGADO', + 'ABUDHABI', + 'AC', + 'ACADEMY', + 'ACCENTURE', + 'ACCOUNTANT', + 'ACCOUNTANTS', + 'ACO', + 'ACTOR', + 'AD', + 'ADAC', + 'ADS', + 'ADULT', + 'AE', + 'AEG', + 'AERO', + 'AETNA', + 'AF', + 'AFL', + 'AFRICA', + 'AG', + 'AGAKHAN', + 'AGENCY', + 'AI', + 'AIG', + 'AIRBUS', + 'AIRFORCE', + 'AIRTEL', + 'AKDN', + 'AL', + 'ALFAROMEO', + 'ALIBABA', + 'ALIPAY', + 'ALLFINANZ', + 'ALLSTATE', + 'ALLY', + 'ALSACE', + 'ALSTOM', + 'AM', + 'AMAZON', + 'AMERICANEXPRESS', + 'AMERICANFAMILY', + 'AMEX', + 'AMFAM', + 'AMICA', + 'AMSTERDAM', + 'ANALYTICS', + 'ANDROID', + 'ANQUAN', + 'ANZ', + 'AO', + 'AOL', + 'APARTMENTS', + 'APP', + 'APPLE', + 'AQ', + 'AQUARELLE', + 'AR', + 'ARAB', + 'ARAMCO', + 'ARCHI', + 'ARMY', + 'ARPA', + 'ART', + 'ARTE', + 'AS', + 'ASDA', + 'ASIA', + 'ASSOCIATES', + 'AT', + 'ATHLETA', + 'ATTORNEY', + 'AU', + 'AUCTION', + 'AUDI', + 'AUDIBLE', + 'AUDIO', + 'AUSPOST', + 'AUTHOR', + 'AUTO', + 'AUTOS', + 'AVIANCA', + 'AW', + 'AWS', + 'AX', + 'AXA', + 'AZ', + 'AZURE', + 'BA', + 'BABY', + 'BAIDU', + 'BANAMEX', + 'BANANAREPUBLIC', + 'BAND', + 'BANK', + 'BAR', + 'BARCELONA', + 'BARCLAYCARD', + 'BARCLAYS', + 'BAREFOOT', + 'BARGAINS', + 'BASEBALL', + 'BASKETBALL', + 'BAUHAUS', + 'BAYERN', + 'BB', + 'BBC', + 'BBT', + 'BBVA', + 'BCG', + 'BCN', + 'BD', + 'BE', + 'BEATS', + 'BEAUTY', + 'BEER', + 'BENTLEY', + 'BERLIN', + 'BEST', + 'BESTBUY', + 'BET', + 'BF', + 'BG', + 'BH', + 'BHARTI', + 'BI', + 'BIBLE', + 'BID', + 'BIKE', + 'BING', + 'BINGO', + 'BIO', + 'BIZ', + 'BJ', + 'BLACK', + 'BLACKFRIDAY', + 'BLOCKBUSTER', + 'BLOG', + 'BLOOMBERG', + 'BLUE', + 'BM', + 'BMS', + 'BMW', + 'BN', + 'BNPPARIBAS', + 'BO', + 'BOATS', + 'BOEHRINGER', + 'BOFA', + 'BOM', + 'BOND', + 'BOO', + 'BOOK', + 'BOOKING', + 'BOSCH', + 'BOSTIK', + 'BOSTON', + 'BOT', + 'BOUTIQUE', + 'BOX', + 'BR', + 'BRADESCO', + 'BRIDGESTONE', + 'BROADWAY', + 'BROKER', + 'BROTHER', + 'BRUSSELS', + 'BS', + 'BT', + 'BUDAPEST', + 'BUGATTI', + 'BUILD', + 'BUILDERS', + 'BUSINESS', + 'BUY', + 'BUZZ', + 'BV', + 'BW', + 'BY', + 'BZ', + 'BZH', + 'CA', + 'CAB', + 'CAFE', + 'CAL', + 'CALL', + 'CALVINKLEIN', + 'CAM', + 'CAMERA', + 'CAMP', + 'CANCERRESEARCH', + 'CANON', + 'CAPETOWN', + 'CAPITAL', + 'CAPITALONE', + 'CAR', + 'CARAVAN', + 'CARDS', + 'CARE', + 'CAREER', + 'CAREERS', + 'CARS', + 'CASA', + 'CASE', + 'CASH', + 'CASINO', + 'CAT', + 'CATERING', + 'CATHOLIC', + 'CBA', + 'CBN', + 'CBRE', + 'CBS', + 'CC', + 'CD', + 'CENTER', + 'CEO', + 'CERN', + 'CF', + 'CFA', + 'CFD', + 'CG', + 'CH', + 'CHANEL', + 'CHANNEL', + 'CHARITY', + 'CHASE', + 'CHAT', + 'CHEAP', + 'CHINTAI', + 'CHRISTMAS', + 'CHROME', + 'CHURCH', + 'CI', + 'CIPRIANI', + 'CIRCLE', + 'CISCO', + 'CITADEL', + 'CITI', + 'CITIC', + 'CITY', + 'CITYEATS', + 'CK', + 'CL', + 'CLAIMS', + 'CLEANING', + 'CLICK', + 'CLINIC', + 'CLINIQUE', + 'CLOTHING', + 'CLOUD', + 'CLUB', + 'CLUBMED', + 'CM', + 'CN', + 'CO', + 'COACH', + 'CODES', + 'COFFEE', + 'COLLEGE', + 'COLOGNE', + 'COM', + 'COMCAST', + 'COMMBANK', + 'COMMUNITY', + 'COMPANY', + 'COMPARE', + 'COMPUTER', + 'COMSEC', + 'CONDOS', + 'CONSTRUCTION', + 'CONSULTING', + 'CONTACT', + 'CONTRACTORS', + 'COOKING', + 'COOKINGCHANNEL', + 'COOL', + 'COOP', + 'CORSICA', + 'COUNTRY', + 'COUPON', + 'COUPONS', + 'COURSES', + 'CPA', + 'CR', + 'CREDIT', + 'CREDITCARD', + 'CREDITUNION', + 'CRICKET', + 'CROWN', + 'CRS', + 'CRUISE', + 'CRUISES', + 'CSC', + 'CU', + 'CUISINELLA', + 'CV', + 'CW', + 'CX', + 'CY', + 'CYMRU', + 'CYOU', + 'CZ', + 'DABUR', + 'DAD', + 'DANCE', + 'DATA', + 'DATE', + 'DATING', + 'DATSUN', + 'DAY', + 'DCLK', + 'DDS', + 'DE', + 'DEAL', + 'DEALER', + 'DEALS', + 'DEGREE', + 'DELIVERY', + 'DELL', + 'DELOITTE', + 'DELTA', + 'DEMOCRAT', + 'DENTAL', + 'DENTIST', + 'DESI', + 'DESIGN', + 'DEV', + 'DHL', + 'DIAMONDS', + 'DIET', + 'DIGITAL', + 'DIRECT', + 'DIRECTORY', + 'DISCOUNT', + 'DISCOVER', + 'DISH', + 'DIY', + 'DJ', + 'DK', + 'DM', + 'DNP', + 'DO', + 'DOCS', + 'DOCTOR', + 'DOG', + 'DOMAINS', + 'DOT', + 'DOWNLOAD', + 'DRIVE', + 'DTV', + 'DUBAI', + 'DUNLOP', + 'DUPONT', + 'DURBAN', + 'DVAG', + 'DVR', + 'DZ', + 'EARTH', + 'EAT', + 'EC', + 'ECO', + 'EDEKA', + 'EDU', + 'EDUCATION', + 'EE', + 'EG', + 'EMAIL', + 'EMERCK', + 'ENERGY', + 'ENGINEER', + 'ENGINEERING', + 'ENTERPRISES', + 'EPSON', + 'EQUIPMENT', + 'ER', + 'ERICSSON', + 'ERNI', + 'ES', + 'ESQ', + 'ESTATE', + 'ET', + 'ETISALAT', + 'EU', + 'EUROVISION', + 'EUS', + 'EVENTS', + 'EXCHANGE', + 'EXPERT', + 'EXPOSED', + 'EXPRESS', + 'EXTRASPACE', + 'FAGE', + 'FAIL', + 'FAIRWINDS', + 'FAITH', + 'FAMILY', + 'FAN', + 'FANS', + 'FARM', + 'FARMERS', + 'FASHION', + 'FAST', + 'FEDEX', + 'FEEDBACK', + 'FERRARI', + 'FERRERO', + 'FI', + 'FIAT', + 'FIDELITY', + 'FIDO', + 'FILM', + 'FINAL', + 'FINANCE', + 'FINANCIAL', + 'FIRE', + 'FIRESTONE', + 'FIRMDALE', + 'FISH', + 'FISHING', + 'FIT', + 'FITNESS', + 'FJ', + 'FK', + 'FLICKR', + 'FLIGHTS', + 'FLIR', + 'FLORIST', + 'FLOWERS', + 'FLY', + 'FM', + 'FO', + 'FOO', + 'FOOD', + 'FOODNETWORK', + 'FOOTBALL', + 'FORD', + 'FOREX', + 'FORSALE', + 'FORUM', + 'FOUNDATION', + 'FOX', + 'FR', + 'FREE', + 'FRESENIUS', + 'FRL', + 'FROGANS', + 'FRONTDOOR', + 'FRONTIER', + 'FTR', + 'FUJITSU', + 'FUN', + 'FUND', + 'FURNITURE', + 'FUTBOL', + 'FYI', + 'GA', + 'GAL', + 'GALLERY', + 'GALLO', + 'GALLUP', + 'GAME', + 'GAMES', + 'GAP', + 'GARDEN', + 'GAY', + 'GB', + 'GBIZ', + 'GD', + 'GDN', + 'GE', + 'GEA', + 'GENT', + 'GENTING', + 'GEORGE', + 'GF', + 'GG', + 'GGEE', + 'GH', + 'GI', + 'GIFT', + 'GIFTS', + 'GIVES', + 'GIVING', + 'GL', + 'GLASS', + 'GLE', + 'GLOBAL', + 'GLOBO', + 'GM', + 'GMAIL', + 'GMBH', + 'GMO', + 'GMX', + 'GN', + 'GODADDY', + 'GOLD', + 'GOLDPOINT', + 'GOLF', + 'GOO', + 'GOODYEAR', + 'GOOG', + 'GOOGLE', + 'GOP', + 'GOT', + 'GOV', + 'GP', + 'GQ', + 'GR', + 'GRAINGER', + 'GRAPHICS', + 'GRATIS', + 'GREEN', + 'GRIPE', + 'GROCERY', + 'GROUP', + 'GS', + 'GT', + 'GU', + 'GUARDIAN', + 'GUCCI', + 'GUGE', + 'GUIDE', + 'GUITARS', + 'GURU', + 'GW', + 'GY', + 'HAIR', + 'HAMBURG', + 'HANGOUT', + 'HAUS', + 'HBO', + 'HDFC', + 'HDFCBANK', + 'HEALTH', + 'HEALTHCARE', + 'HELP', + 'HELSINKI', + 'HERE', + 'HERMES', + 'HGTV', + 'HIPHOP', + 'HISAMITSU', + 'HITACHI', + 'HIV', + 'HK', + 'HKT', + 'HM', + 'HN', + 'HOCKEY', + 'HOLDINGS', + 'HOLIDAY', + 'HOMEDEPOT', + 'HOMEGOODS', + 'HOMES', + 'HOMESENSE', + 'HONDA', + 'HORSE', + 'HOSPITAL', + 'HOST', + 'HOSTING', + 'HOT', + 'HOTELES', + 'HOTELS', + 'HOTMAIL', + 'HOUSE', + 'HOW', + 'HR', + 'HSBC', + 'HT', + 'HU', + 'HUGHES', + 'HYATT', + 'HYUNDAI', + 'IBM', + 'ICBC', + 'ICE', + 'ICU', + 'ID', + 'IE', + 'IEEE', + 'IFM', + 'IKANO', + 'IL', + 'IM', + 'IMAMAT', + 'IMDB', + 'IMMO', + 'IMMOBILIEN', + 'IN', + 'INC', + 'INDUSTRIES', + 'INFINITI', + 'INFO', + 'ING', + 'INK', + 'INSTITUTE', + 'INSURANCE', + 'INSURE', + 'INT', + 'INTERNATIONAL', + 'INTUIT', + 'INVESTMENTS', + 'IO', + 'IPIRANGA', + 'IQ', + 'IR', + 'IRISH', + 'IS', + 'ISMAILI', + 'IST', + 'ISTANBUL', + 'IT', + 'ITAU', + 'ITV', + 'JAGUAR', + 'JAVA', + 'JCB', + 'JE', + 'JEEP', + 'JETZT', + 'JEWELRY', + 'JIO', + 'JLL', + 'JM', + 'JMP', + 'JNJ', + 'JO', + 'JOBS', + 'JOBURG', + 'JOT', + 'JOY', + 'JP', + 'JPMORGAN', + 'JPRS', + 'JUEGOS', + 'JUNIPER', + 'KAUFEN', + 'KDDI', + 'KE', + 'KERRYHOTELS', + 'KERRYLOGISTICS', + 'KERRYPROPERTIES', + 'KFH', + 'KG', + 'KH', + 'KI', + 'KIA', + 'KIM', + 'KINDER', + 'KINDLE', + 'KITCHEN', + 'KIWI', + 'KM', + 'KN', + 'KOELN', + 'KOMATSU', + 'KOSHER', + 'KP', + 'KPMG', + 'KPN', + 'KR', + 'KRD', + 'KRED', + 'KUOKGROUP', + 'KW', + 'KY', + 'KYOTO', + 'KZ', + 'LA', + 'LACAIXA', + 'LAMBORGHINI', + 'LAMER', + 'LANCASTER', + 'LANCIA', + 'LAND', + 'LANDROVER', + 'LANXESS', + 'LASALLE', + 'LAT', + 'LATINO', + 'LATROBE', + 'LAW', + 'LAWYER', + 'LB', + 'LC', + 'LDS', + 'LEASE', + 'LECLERC', + 'LEFRAK', + 'LEGAL', + 'LEGO', + 'LEXUS', + 'LGBT', + 'LI', + 'LIDL', + 'LIFE', + 'LIFEINSURANCE', + 'LIFESTYLE', + 'LIGHTING', + 'LIKE', + 'LILLY', + 'LIMITED', + 'LIMO', + 'LINCOLN', + 'LINDE', + 'LINK', + 'LIPSY', + 'LIVE', + 'LIVING', + 'LK', + 'LLC', + 'LLP', + 'LOAN', + 'LOANS', + 'LOCKER', + 'LOCUS', + 'LOFT', + 'LOL', + 'LONDON', + 'LOTTE', + 'LOTTO', + 'LOVE', + 'LPL', + 'LPLFINANCIAL', + 'LR', + 'LS', + 'LT', + 'LTD', + 'LTDA', + 'LU', + 'LUNDBECK', + 'LUXE', + 'LUXURY', + 'LV', + 'LY', + 'MA', + 'MACYS', + 'MADRID', + 'MAIF', + 'MAISON', + 'MAKEUP', + 'MAN', + 'MANAGEMENT', + 'MANGO', + 'MAP', + 'MARKET', + 'MARKETING', + 'MARKETS', + 'MARRIOTT', + 'MARSHALLS', + 'MASERATI', + 'MATTEL', + 'MBA', + 'MC', + 'MCKINSEY', + 'MD', + 'ME', + 'MED', + 'MEDIA', + 'MEET', + 'MELBOURNE', + 'MEME', + 'MEMORIAL', + 'MEN', + 'MENU', + 'MERCKMSD', + 'MG', + 'MH', + 'MIAMI', + 'MICROSOFT', + 'MIL', + 'MINI', + 'MINT', + 'MIT', + 'MITSUBISHI', + 'MK', + 'ML', + 'MLB', + 'MLS', + 'MM', + 'MMA', + 'MN', + 'MO', + 'MOBI', + 'MOBILE', + 'MODA', + 'MOE', + 'MOI', + 'MOM', + 'MONASH', + 'MONEY', + 'MONSTER', + 'MORMON', + 'MORTGAGE', + 'MOSCOW', + 'MOTO', + 'MOTORCYCLES', + 'MOV', + 'MOVIE', + 'MP', + 'MQ', + 'MR', + 'MS', + 'MSD', + 'MT', + 'MTN', + 'MTR', + 'MU', + 'MUSEUM', + 'MUSIC', + 'MUTUAL', + 'MV', + 'MW', + 'MX', + 'MY', + 'MZ', + 'NA', + 'NAB', + 'NAGOYA', + 'NAME', + 'NATURA', + 'NAVY', + 'NBA', + 'NC', + 'NE', + 'NEC', + 'NET', + 'NETBANK', + 'NETFLIX', + 'NETWORK', + 'NEUSTAR', + 'NEW', + 'NEWS', + 'NEXT', + 'NEXTDIRECT', + 'NEXUS', + 'NF', + 'NFL', + 'NG', + 'NGO', + 'NHK', + 'NI', + 'NICO', + 'NIKE', + 'NIKON', + 'NINJA', + 'NISSAN', + 'NISSAY', + 'NL', + 'NO', + 'NOKIA', + 'NORTHWESTERNMUTUAL', + 'NORTON', + 'NOW', + 'NOWRUZ', + 'NOWTV', + 'NP', + 'NR', + 'NRA', + 'NRW', + 'NTT', + 'NU', + 'NYC', + 'NZ', + 'OBI', + 'OBSERVER', + 'OFFICE', + 'OKINAWA', + 'OLAYAN', + 'OLAYANGROUP', + 'OLDNAVY', + 'OLLO', + 'OM', + 'OMEGA', + 'ONE', + 'ONG', + 'ONL', + 'ONLINE', + 'OOO', + 'OPEN', + 'ORACLE', + 'ORANGE', + 'ORG', + 'ORGANIC', + 'ORIGINS', + 'OSAKA', + 'OTSUKA', + 'OTT', + 'OVH', + 'PA', + 'PAGE', + 'PANASONIC', + 'PARIS', + 'PARS', + 'PARTNERS', + 'PARTS', + 'PARTY', + 'PASSAGENS', + 'PAY', + 'PCCW', + 'PE', + 'PET', + 'PF', + 'PFIZER', + 'PG', + 'PH', + 'PHARMACY', + 'PHD', + 'PHILIPS', + 'PHONE', + 'PHOTO', + 'PHOTOGRAPHY', + 'PHOTOS', + 'PHYSIO', + 'PICS', + 'PICTET', + 'PICTURES', + 'PID', + 'PIN', + 'PING', + 'PINK', + 'PIONEER', + 'PIZZA', + 'PK', + 'PL', + 'PLACE', + 'PLAY', + 'PLAYSTATION', + 'PLUMBING', + 'PLUS', + 'PM', + 'PN', + 'PNC', + 'POHL', + 'POKER', + 'POLITIE', + 'PORN', + 'POST', + 'PR', + 'PRAMERICA', + 'PRAXI', + 'PRESS', + 'PRIME', + 'PRO', + 'PROD', + 'PRODUCTIONS', + 'PROF', + 'PROGRESSIVE', + 'PROMO', + 'PROPERTIES', + 'PROPERTY', + 'PROTECTION', + 'PRU', + 'PRUDENTIAL', + 'PS', + 'PT', + 'PUB', + 'PW', + 'PWC', + 'PY', + 'QA', + 'QPON', + 'QUEBEC', + 'QUEST', + 'RACING', + 'RADIO', + 'RE', + 'READ', + 'REALESTATE', + 'REALTOR', + 'REALTY', + 'RECIPES', + 'RED', + 'REDSTONE', + 'REDUMBRELLA', + 'REHAB', + 'REISE', + 'REISEN', + 'REIT', + 'RELIANCE', + 'REN', + 'RENT', + 'RENTALS', + 'REPAIR', + 'REPORT', + 'REPUBLICAN', + 'REST', + 'RESTAURANT', + 'REVIEW', + 'REVIEWS', + 'REXROTH', + 'RICH', + 'RICHARDLI', + 'RICOH', + 'RIL', + 'RIO', + 'RIP', + 'RO', + 'ROCHER', + 'ROCKS', + 'RODEO', + 'ROGERS', + 'ROOM', + 'RS', + 'RSVP', + 'RU', + 'RUGBY', + 'RUHR', + 'RUN', + 'RW', + 'RWE', + 'RYUKYU', + 'SA', + 'SAARLAND', + 'SAFE', + 'SAFETY', + 'SAKURA', + 'SALE', + 'SALON', + 'SAMSCLUB', + 'SAMSUNG', + 'SANDVIK', + 'SANDVIKCOROMANT', + 'SANOFI', + 'SAP', + 'SARL', + 'SAS', + 'SAVE', + 'SAXO', + 'SB', + 'SBI', + 'SBS', + 'SC', + 'SCA', + 'SCB', + 'SCHAEFFLER', + 'SCHMIDT', + 'SCHOLARSHIPS', + 'SCHOOL', + 'SCHULE', + 'SCHWARZ', + 'SCIENCE', + 'SCOT', + 'SD', + 'SE', + 'SEARCH', + 'SEAT', + 'SECURE', + 'SECURITY', + 'SEEK', + 'SELECT', + 'SENER', + 'SERVICES', + 'SES', + 'SEVEN', + 'SEW', + 'SEX', + 'SEXY', + 'SFR', + 'SG', + 'SH', + 'SHANGRILA', + 'SHARP', + 'SHAW', + 'SHELL', + 'SHIA', + 'SHIKSHA', + 'SHOES', + 'SHOP', + 'SHOPPING', + 'SHOUJI', + 'SHOW', + 'SHOWTIME', + 'SI', + 'SILK', + 'SINA', + 'SINGLES', + 'SITE', + 'SJ', + 'SK', + 'SKI', + 'SKIN', + 'SKY', + 'SKYPE', + 'SL', + 'SLING', + 'SM', + 'SMART', + 'SMILE', + 'SN', + 'SNCF', + 'SO', + 'SOCCER', + 'SOCIAL', + 'SOFTBANK', + 'SOFTWARE', + 'SOHU', + 'SOLAR', + 'SOLUTIONS', + 'SONG', + 'SONY', + 'SOY', + 'SPA', + 'SPACE', + 'SPORT', + 'SPOT', + 'SR', + 'SRL', + 'SS', + 'ST', + 'STADA', + 'STAPLES', + 'STAR', + 'STATEBANK', + 'STATEFARM', + 'STC', + 'STCGROUP', + 'STOCKHOLM', + 'STORAGE', + 'STORE', + 'STREAM', + 'STUDIO', + 'STUDY', + 'STYLE', + 'SU', + 'SUCKS', + 'SUPPLIES', + 'SUPPLY', + 'SUPPORT', + 'SURF', + 'SURGERY', + 'SUZUKI', + 'SV', + 'SWATCH', + 'SWISS', + 'SX', + 'SY', + 'SYDNEY', + 'SYSTEMS', + 'SZ', + 'TAB', + 'TAIPEI', + 'TALK', + 'TAOBAO', + 'TARGET', + 'TATAMOTORS', + 'TATAR', + 'TATTOO', + 'TAX', + 'TAXI', + 'TC', + 'TCI', + 'TD', + 'TDK', + 'TEAM', + 'TECH', + 'TECHNOLOGY', + 'TEL', + 'TEMASEK', + 'TENNIS', + 'TEVA', + 'TF', + 'TG', + 'TH', + 'THD', + 'THEATER', + 'THEATRE', + 'TIAA', + 'TICKETS', + 'TIENDA', + 'TIFFANY', + 'TIPS', + 'TIRES', + 'TIROL', + 'TJ', + 'TJMAXX', + 'TJX', + 'TK', + 'TKMAXX', + 'TL', + 'TM', + 'TMALL', + 'TN', + 'TO', + 'TODAY', + 'TOKYO', + 'TOOLS', + 'TOP', + 'TORAY', + 'TOSHIBA', + 'TOTAL', + 'TOURS', + 'TOWN', + 'TOYOTA', + 'TOYS', + 'TR', + 'TRADE', + 'TRADING', + 'TRAINING', + 'TRAVEL', + 'TRAVELCHANNEL', + 'TRAVELERS', + 'TRAVELERSINSURANCE', + 'TRUST', + 'TRV', + 'TT', + 'TUBE', + 'TUI', + 'TUNES', + 'TUSHU', + 'TV', + 'TVS', + 'TW', + 'TZ', + 'UA', + 'UBANK', + 'UBS', + 'UG', + 'UK', + 'UNICOM', + 'UNIVERSITY', + 'UNO', + 'UOL', + 'UPS', + 'US', + 'UY', + 'UZ', + 'VA', + 'VACATIONS', + 'VANA', + 'VANGUARD', + 'VC', + 'VE', + 'VEGAS', + 'VENTURES', + 'VERISIGN', + 'VERSICHERUNG', + 'VET', + 'VG', + 'VI', + 'VIAJES', + 'VIDEO', + 'VIG', + 'VIKING', + 'VILLAS', + 'VIN', + 'VIP', + 'VIRGIN', + 'VISA', + 'VISION', + 'VIVA', + 'VIVO', + 'VLAANDEREN', + 'VN', + 'VODKA', + 'VOLKSWAGEN', + 'VOLVO', + 'VOTE', + 'VOTING', + 'VOTO', + 'VOYAGE', + 'VU', + 'VUELOS', + 'WALES', + 'WALMART', + 'WALTER', + 'WANG', + 'WANGGOU', + 'WATCH', + 'WATCHES', + 'WEATHER', + 'WEATHERCHANNEL', + 'WEBCAM', + 'WEBER', + 'WEBSITE', + 'WED', + 'WEDDING', + 'WEIBO', + 'WEIR', + 'WF', + 'WHOSWHO', + 'WIEN', + 'WIKI', + 'WILLIAMHILL', + 'WIN', + 'WINDOWS', + 'WINE', + 'WINNERS', + 'WME', + 'WOLTERSKLUWER', + 'WOODSIDE', + 'WORK', + 'WORKS', + 'WORLD', + 'WOW', + 'WS', + 'WTC', + 'WTF', + 'XBOX', + 'XEROX', + 'XFINITY', + 'XIHUAN', + 'XIN', + 'XN--11B4C3D', + 'XN--1CK2E1B', + 'XN--1QQW23A', + 'XN--2SCRJ9C', + 'XN--30RR7Y', + 'XN--3BST00M', + 'XN--3DS443G', + 'XN--3E0B707E', + 'XN--3HCRJ9C', + 'XN--3PXU8K', + 'XN--42C2D9A', + 'XN--45BR5CYL', + 'XN--45BRJ9C', + 'XN--45Q11C', + 'XN--4DBRK0CE', + 'XN--4GBRIM', + 'XN--54B7FTA0CC', + 'XN--55QW42G', + 'XN--55QX5D', + 'XN--5SU34J936BGSG', + 'XN--5TZM5G', + 'XN--6FRZ82G', + 'XN--6QQ986B3XL', + 'XN--80ADXHKS', + 'XN--80AO21A', + 'XN--80AQECDR1A', + 'XN--80ASEHDB', + 'XN--80ASWG', + 'XN--8Y0A063A', + 'XN--90A3AC', + 'XN--90AE', + 'XN--90AIS', + 'XN--9DBQ2A', + 'XN--9ET52U', + 'XN--9KRT00A', + 'XN--B4W605FERD', + 'XN--BCK1B9A5DRE4C', + 'XN--C1AVG', + 'XN--C2BR7G', + 'XN--CCK2B3B', + 'XN--CCKWCXETD', + 'XN--CG4BKI', + 'XN--CLCHC0EA0B2G2A9GCD', + 'XN--CZR694B', + 'XN--CZRS0T', + 'XN--CZRU2D', + 'XN--D1ACJ3B', + 'XN--D1ALF', + 'XN--E1A4C', + 'XN--ECKVDTC9D', + 'XN--EFVY88H', + 'XN--FCT429K', + 'XN--FHBEI', + 'XN--FIQ228C5HS', + 'XN--FIQ64B', + 'XN--FIQS8S', + 'XN--FIQZ9S', + 'XN--FJQ720A', + 'XN--FLW351E', + 'XN--FPCRJ9C3D', + 'XN--FZC2C9E2C', + 'XN--FZYS8D69UVGM', + 'XN--G2XX48C', + 'XN--GCKR3F0F', + 'XN--GECRJ9C', + 'XN--GK3AT1E', + 'XN--H2BREG3EVE', + 'XN--H2BRJ9C', + 'XN--H2BRJ9C8C', + 'XN--HXT814E', + 'XN--I1B6B1A6A2E', + 'XN--IMR513N', + 'XN--IO0A7I', + 'XN--J1AEF', + 'XN--J1AMH', + 'XN--J6W193G', + 'XN--JLQ480N2RG', + 'XN--JLQ61U9W7B', + 'XN--JVR189M', + 'XN--KCRX77D1X4A', + 'XN--KPRW13D', + 'XN--KPRY57D', + 'XN--KPUT3I', + 'XN--L1ACC', + 'XN--LGBBAT1AD8J', + 'XN--MGB9AWBF', + 'XN--MGBA3A3EJT', + 'XN--MGBA3A4F16A', + 'XN--MGBA7C0BBN0A', + 'XN--MGBAAKC7DVF', + 'XN--MGBAAM7A8H', + 'XN--MGBAB2BD', + 'XN--MGBAH1A3HJKRD', + 'XN--MGBAI9AZGQP6J', + 'XN--MGBAYH7GPA', + 'XN--MGBBH1A', + 'XN--MGBBH1A71E', + 'XN--MGBC0A9AZCG', + 'XN--MGBCA7DZDO', + 'XN--MGBCPQ6GPA1A', + 'XN--MGBERP4A5D4AR', + 'XN--MGBGU82A', + 'XN--MGBI4ECEXP', + 'XN--MGBPL2FH', + 'XN--MGBT3DHD', + 'XN--MGBTX2B', + 'XN--MGBX4CD0AB', + 'XN--MIX891F', + 'XN--MK1BU44C', + 'XN--MXTQ1M', + 'XN--NGBC5AZD', + 'XN--NGBE9E0A', + 'XN--NGBRX', + 'XN--NODE', + 'XN--NQV7F', + 'XN--NQV7FS00EMA', + 'XN--NYQY26A', + 'XN--O3CW4H', + 'XN--OGBPF8FL', + 'XN--OTU796D', + 'XN--P1ACF', + 'XN--P1AI', + 'XN--PGBS0DH', + 'XN--PSSY2U', + 'XN--Q7CE6A', + 'XN--Q9JYB4C', + 'XN--QCKA1PMC', + 'XN--QXA6A', + 'XN--QXAM', + 'XN--RHQV96G', + 'XN--ROVU88B', + 'XN--RVC1E0AM3E', + 'XN--S9BRJ9C', + 'XN--SES554G', + 'XN--T60B56A', + 'XN--TCKWE', + 'XN--TIQ49XQYJ', + 'XN--UNUP4Y', + 'XN--VERMGENSBERATER-CTB', + 'XN--VERMGENSBERATUNG-PWB', + 'XN--VHQUV', + 'XN--VUQ861B', + 'XN--W4R85EL8FHU5DNRA', + 'XN--W4RS40L', + 'XN--WGBH1C', + 'XN--WGBL6A', + 'XN--XHQ521B', + 'XN--XKC2AL3HYE2A', + 'XN--XKC2DL3A5EE0H', + 'XN--Y9A3AQ', + 'XN--YFRO4I67O', + 'XN--YGBI2AMMX', + 'XN--ZFR164B', + 'XXX', + 'XYZ', + 'YACHTS', + 'YAHOO', + 'YAMAXUN', + 'YANDEX', + 'YE', + 'YODOBASHI', + 'YOGA', + 'YOKOHAMA', + 'YOU', + 'YOUTUBE', + 'YT', + 'YUN', + 'ZA', + 'ZAPPOS', + 'ZARA', + 'ZERO', + 'ZIP', + 'ZM', + 'ZONE', + 'ZUERICH', + 'ZW', +]; From 631ab689900e48bb5eb50f44b92650b5cd650d38 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 4 Jan 2022 14:37:34 +0530 Subject: [PATCH 062/201] make the tld non-linear-searchy --- .../lib/src/message_input/tld.dart | 3037 +++++++++-------- 1 file changed, 1546 insertions(+), 1491 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/tld.dart b/packages/stream_chat_flutter/lib/src/message_input/tld.dart index 504aa17b..2bfa5257 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/tld.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/tld.dart @@ -1,1498 +1,1553 @@ /// Extension on String adding utilities checking TLD validity. extension TLDString on String { /// Returns true if the string is a valid TLD. - bool isValidTLD() => tlds.contains(toUpperCase()); + bool isValidTLD() => + isNotEmpty && + tlds.containsKey(this[0].toUpperCase()) && + tlds[this[0].toUpperCase()]!.contains(toUpperCase()); } /// List of valid TLDs. /// https://data.iana.org/TLD/tlds-alpha-by-domain.txt -const tlds = [ - 'AAA', - 'AARP', - 'ABARTH', - 'ABB', - 'ABBOTT', - 'ABBVIE', - 'ABC', - 'ABLE', - 'ABOGADO', - 'ABUDHABI', - 'AC', - 'ACADEMY', - 'ACCENTURE', - 'ACCOUNTANT', - 'ACCOUNTANTS', - 'ACO', - 'ACTOR', - 'AD', - 'ADAC', - 'ADS', - 'ADULT', - 'AE', - 'AEG', - 'AERO', - 'AETNA', - 'AF', - 'AFL', - 'AFRICA', - 'AG', - 'AGAKHAN', - 'AGENCY', - 'AI', - 'AIG', - 'AIRBUS', - 'AIRFORCE', - 'AIRTEL', - 'AKDN', - 'AL', - 'ALFAROMEO', - 'ALIBABA', - 'ALIPAY', - 'ALLFINANZ', - 'ALLSTATE', - 'ALLY', - 'ALSACE', - 'ALSTOM', - 'AM', - 'AMAZON', - 'AMERICANEXPRESS', - 'AMERICANFAMILY', - 'AMEX', - 'AMFAM', - 'AMICA', - 'AMSTERDAM', - 'ANALYTICS', - 'ANDROID', - 'ANQUAN', - 'ANZ', - 'AO', - 'AOL', - 'APARTMENTS', - 'APP', - 'APPLE', - 'AQ', - 'AQUARELLE', - 'AR', - 'ARAB', - 'ARAMCO', - 'ARCHI', - 'ARMY', - 'ARPA', - 'ART', - 'ARTE', - 'AS', - 'ASDA', - 'ASIA', - 'ASSOCIATES', - 'AT', - 'ATHLETA', - 'ATTORNEY', - 'AU', - 'AUCTION', - 'AUDI', - 'AUDIBLE', - 'AUDIO', - 'AUSPOST', - 'AUTHOR', - 'AUTO', - 'AUTOS', - 'AVIANCA', - 'AW', - 'AWS', - 'AX', - 'AXA', - 'AZ', - 'AZURE', - 'BA', - 'BABY', - 'BAIDU', - 'BANAMEX', - 'BANANAREPUBLIC', - 'BAND', - 'BANK', - 'BAR', - 'BARCELONA', - 'BARCLAYCARD', - 'BARCLAYS', - 'BAREFOOT', - 'BARGAINS', - 'BASEBALL', - 'BASKETBALL', - 'BAUHAUS', - 'BAYERN', - 'BB', - 'BBC', - 'BBT', - 'BBVA', - 'BCG', - 'BCN', - 'BD', - 'BE', - 'BEATS', - 'BEAUTY', - 'BEER', - 'BENTLEY', - 'BERLIN', - 'BEST', - 'BESTBUY', - 'BET', - 'BF', - 'BG', - 'BH', - 'BHARTI', - 'BI', - 'BIBLE', - 'BID', - 'BIKE', - 'BING', - 'BINGO', - 'BIO', - 'BIZ', - 'BJ', - 'BLACK', - 'BLACKFRIDAY', - 'BLOCKBUSTER', - 'BLOG', - 'BLOOMBERG', - 'BLUE', - 'BM', - 'BMS', - 'BMW', - 'BN', - 'BNPPARIBAS', - 'BO', - 'BOATS', - 'BOEHRINGER', - 'BOFA', - 'BOM', - 'BOND', - 'BOO', - 'BOOK', - 'BOOKING', - 'BOSCH', - 'BOSTIK', - 'BOSTON', - 'BOT', - 'BOUTIQUE', - 'BOX', - 'BR', - 'BRADESCO', - 'BRIDGESTONE', - 'BROADWAY', - 'BROKER', - 'BROTHER', - 'BRUSSELS', - 'BS', - 'BT', - 'BUDAPEST', - 'BUGATTI', - 'BUILD', - 'BUILDERS', - 'BUSINESS', - 'BUY', - 'BUZZ', - 'BV', - 'BW', - 'BY', - 'BZ', - 'BZH', - 'CA', - 'CAB', - 'CAFE', - 'CAL', - 'CALL', - 'CALVINKLEIN', - 'CAM', - 'CAMERA', - 'CAMP', - 'CANCERRESEARCH', - 'CANON', - 'CAPETOWN', - 'CAPITAL', - 'CAPITALONE', - 'CAR', - 'CARAVAN', - 'CARDS', - 'CARE', - 'CAREER', - 'CAREERS', - 'CARS', - 'CASA', - 'CASE', - 'CASH', - 'CASINO', - 'CAT', - 'CATERING', - 'CATHOLIC', - 'CBA', - 'CBN', - 'CBRE', - 'CBS', - 'CC', - 'CD', - 'CENTER', - 'CEO', - 'CERN', - 'CF', - 'CFA', - 'CFD', - 'CG', - 'CH', - 'CHANEL', - 'CHANNEL', - 'CHARITY', - 'CHASE', - 'CHAT', - 'CHEAP', - 'CHINTAI', - 'CHRISTMAS', - 'CHROME', - 'CHURCH', - 'CI', - 'CIPRIANI', - 'CIRCLE', - 'CISCO', - 'CITADEL', - 'CITI', - 'CITIC', - 'CITY', - 'CITYEATS', - 'CK', - 'CL', - 'CLAIMS', - 'CLEANING', - 'CLICK', - 'CLINIC', - 'CLINIQUE', - 'CLOTHING', - 'CLOUD', - 'CLUB', - 'CLUBMED', - 'CM', - 'CN', - 'CO', - 'COACH', - 'CODES', - 'COFFEE', - 'COLLEGE', - 'COLOGNE', - 'COM', - 'COMCAST', - 'COMMBANK', - 'COMMUNITY', - 'COMPANY', - 'COMPARE', - 'COMPUTER', - 'COMSEC', - 'CONDOS', - 'CONSTRUCTION', - 'CONSULTING', - 'CONTACT', - 'CONTRACTORS', - 'COOKING', - 'COOKINGCHANNEL', - 'COOL', - 'COOP', - 'CORSICA', - 'COUNTRY', - 'COUPON', - 'COUPONS', - 'COURSES', - 'CPA', - 'CR', - 'CREDIT', - 'CREDITCARD', - 'CREDITUNION', - 'CRICKET', - 'CROWN', - 'CRS', - 'CRUISE', - 'CRUISES', - 'CSC', - 'CU', - 'CUISINELLA', - 'CV', - 'CW', - 'CX', - 'CY', - 'CYMRU', - 'CYOU', - 'CZ', - 'DABUR', - 'DAD', - 'DANCE', - 'DATA', - 'DATE', - 'DATING', - 'DATSUN', - 'DAY', - 'DCLK', - 'DDS', - 'DE', - 'DEAL', - 'DEALER', - 'DEALS', - 'DEGREE', - 'DELIVERY', - 'DELL', - 'DELOITTE', - 'DELTA', - 'DEMOCRAT', - 'DENTAL', - 'DENTIST', - 'DESI', - 'DESIGN', - 'DEV', - 'DHL', - 'DIAMONDS', - 'DIET', - 'DIGITAL', - 'DIRECT', - 'DIRECTORY', - 'DISCOUNT', - 'DISCOVER', - 'DISH', - 'DIY', - 'DJ', - 'DK', - 'DM', - 'DNP', - 'DO', - 'DOCS', - 'DOCTOR', - 'DOG', - 'DOMAINS', - 'DOT', - 'DOWNLOAD', - 'DRIVE', - 'DTV', - 'DUBAI', - 'DUNLOP', - 'DUPONT', - 'DURBAN', - 'DVAG', - 'DVR', - 'DZ', - 'EARTH', - 'EAT', - 'EC', - 'ECO', - 'EDEKA', - 'EDU', - 'EDUCATION', - 'EE', - 'EG', - 'EMAIL', - 'EMERCK', - 'ENERGY', - 'ENGINEER', - 'ENGINEERING', - 'ENTERPRISES', - 'EPSON', - 'EQUIPMENT', - 'ER', - 'ERICSSON', - 'ERNI', - 'ES', - 'ESQ', - 'ESTATE', - 'ET', - 'ETISALAT', - 'EU', - 'EUROVISION', - 'EUS', - 'EVENTS', - 'EXCHANGE', - 'EXPERT', - 'EXPOSED', - 'EXPRESS', - 'EXTRASPACE', - 'FAGE', - 'FAIL', - 'FAIRWINDS', - 'FAITH', - 'FAMILY', - 'FAN', - 'FANS', - 'FARM', - 'FARMERS', - 'FASHION', - 'FAST', - 'FEDEX', - 'FEEDBACK', - 'FERRARI', - 'FERRERO', - 'FI', - 'FIAT', - 'FIDELITY', - 'FIDO', - 'FILM', - 'FINAL', - 'FINANCE', - 'FINANCIAL', - 'FIRE', - 'FIRESTONE', - 'FIRMDALE', - 'FISH', - 'FISHING', - 'FIT', - 'FITNESS', - 'FJ', - 'FK', - 'FLICKR', - 'FLIGHTS', - 'FLIR', - 'FLORIST', - 'FLOWERS', - 'FLY', - 'FM', - 'FO', - 'FOO', - 'FOOD', - 'FOODNETWORK', - 'FOOTBALL', - 'FORD', - 'FOREX', - 'FORSALE', - 'FORUM', - 'FOUNDATION', - 'FOX', - 'FR', - 'FREE', - 'FRESENIUS', - 'FRL', - 'FROGANS', - 'FRONTDOOR', - 'FRONTIER', - 'FTR', - 'FUJITSU', - 'FUN', - 'FUND', - 'FURNITURE', - 'FUTBOL', - 'FYI', - 'GA', - 'GAL', - 'GALLERY', - 'GALLO', - 'GALLUP', - 'GAME', - 'GAMES', - 'GAP', - 'GARDEN', - 'GAY', - 'GB', - 'GBIZ', - 'GD', - 'GDN', - 'GE', - 'GEA', - 'GENT', - 'GENTING', - 'GEORGE', - 'GF', - 'GG', - 'GGEE', - 'GH', - 'GI', - 'GIFT', - 'GIFTS', - 'GIVES', - 'GIVING', - 'GL', - 'GLASS', - 'GLE', - 'GLOBAL', - 'GLOBO', - 'GM', - 'GMAIL', - 'GMBH', - 'GMO', - 'GMX', - 'GN', - 'GODADDY', - 'GOLD', - 'GOLDPOINT', - 'GOLF', - 'GOO', - 'GOODYEAR', - 'GOOG', - 'GOOGLE', - 'GOP', - 'GOT', - 'GOV', - 'GP', - 'GQ', - 'GR', - 'GRAINGER', - 'GRAPHICS', - 'GRATIS', - 'GREEN', - 'GRIPE', - 'GROCERY', - 'GROUP', - 'GS', - 'GT', - 'GU', - 'GUARDIAN', - 'GUCCI', - 'GUGE', - 'GUIDE', - 'GUITARS', - 'GURU', - 'GW', - 'GY', - 'HAIR', - 'HAMBURG', - 'HANGOUT', - 'HAUS', - 'HBO', - 'HDFC', - 'HDFCBANK', - 'HEALTH', - 'HEALTHCARE', - 'HELP', - 'HELSINKI', - 'HERE', - 'HERMES', - 'HGTV', - 'HIPHOP', - 'HISAMITSU', - 'HITACHI', - 'HIV', - 'HK', - 'HKT', - 'HM', - 'HN', - 'HOCKEY', - 'HOLDINGS', - 'HOLIDAY', - 'HOMEDEPOT', - 'HOMEGOODS', - 'HOMES', - 'HOMESENSE', - 'HONDA', - 'HORSE', - 'HOSPITAL', - 'HOST', - 'HOSTING', - 'HOT', - 'HOTELES', - 'HOTELS', - 'HOTMAIL', - 'HOUSE', - 'HOW', - 'HR', - 'HSBC', - 'HT', - 'HU', - 'HUGHES', - 'HYATT', - 'HYUNDAI', - 'IBM', - 'ICBC', - 'ICE', - 'ICU', - 'ID', - 'IE', - 'IEEE', - 'IFM', - 'IKANO', - 'IL', - 'IM', - 'IMAMAT', - 'IMDB', - 'IMMO', - 'IMMOBILIEN', - 'IN', - 'INC', - 'INDUSTRIES', - 'INFINITI', - 'INFO', - 'ING', - 'INK', - 'INSTITUTE', - 'INSURANCE', - 'INSURE', - 'INT', - 'INTERNATIONAL', - 'INTUIT', - 'INVESTMENTS', - 'IO', - 'IPIRANGA', - 'IQ', - 'IR', - 'IRISH', - 'IS', - 'ISMAILI', - 'IST', - 'ISTANBUL', - 'IT', - 'ITAU', - 'ITV', - 'JAGUAR', - 'JAVA', - 'JCB', - 'JE', - 'JEEP', - 'JETZT', - 'JEWELRY', - 'JIO', - 'JLL', - 'JM', - 'JMP', - 'JNJ', - 'JO', - 'JOBS', - 'JOBURG', - 'JOT', - 'JOY', - 'JP', - 'JPMORGAN', - 'JPRS', - 'JUEGOS', - 'JUNIPER', - 'KAUFEN', - 'KDDI', - 'KE', - 'KERRYHOTELS', - 'KERRYLOGISTICS', - 'KERRYPROPERTIES', - 'KFH', - 'KG', - 'KH', - 'KI', - 'KIA', - 'KIM', - 'KINDER', - 'KINDLE', - 'KITCHEN', - 'KIWI', - 'KM', - 'KN', - 'KOELN', - 'KOMATSU', - 'KOSHER', - 'KP', - 'KPMG', - 'KPN', - 'KR', - 'KRD', - 'KRED', - 'KUOKGROUP', - 'KW', - 'KY', - 'KYOTO', - 'KZ', - 'LA', - 'LACAIXA', - 'LAMBORGHINI', - 'LAMER', - 'LANCASTER', - 'LANCIA', - 'LAND', - 'LANDROVER', - 'LANXESS', - 'LASALLE', - 'LAT', - 'LATINO', - 'LATROBE', - 'LAW', - 'LAWYER', - 'LB', - 'LC', - 'LDS', - 'LEASE', - 'LECLERC', - 'LEFRAK', - 'LEGAL', - 'LEGO', - 'LEXUS', - 'LGBT', - 'LI', - 'LIDL', - 'LIFE', - 'LIFEINSURANCE', - 'LIFESTYLE', - 'LIGHTING', - 'LIKE', - 'LILLY', - 'LIMITED', - 'LIMO', - 'LINCOLN', - 'LINDE', - 'LINK', - 'LIPSY', - 'LIVE', - 'LIVING', - 'LK', - 'LLC', - 'LLP', - 'LOAN', - 'LOANS', - 'LOCKER', - 'LOCUS', - 'LOFT', - 'LOL', - 'LONDON', - 'LOTTE', - 'LOTTO', - 'LOVE', - 'LPL', - 'LPLFINANCIAL', - 'LR', - 'LS', - 'LT', - 'LTD', - 'LTDA', - 'LU', - 'LUNDBECK', - 'LUXE', - 'LUXURY', - 'LV', - 'LY', - 'MA', - 'MACYS', - 'MADRID', - 'MAIF', - 'MAISON', - 'MAKEUP', - 'MAN', - 'MANAGEMENT', - 'MANGO', - 'MAP', - 'MARKET', - 'MARKETING', - 'MARKETS', - 'MARRIOTT', - 'MARSHALLS', - 'MASERATI', - 'MATTEL', - 'MBA', - 'MC', - 'MCKINSEY', - 'MD', - 'ME', - 'MED', - 'MEDIA', - 'MEET', - 'MELBOURNE', - 'MEME', - 'MEMORIAL', - 'MEN', - 'MENU', - 'MERCKMSD', - 'MG', - 'MH', - 'MIAMI', - 'MICROSOFT', - 'MIL', - 'MINI', - 'MINT', - 'MIT', - 'MITSUBISHI', - 'MK', - 'ML', - 'MLB', - 'MLS', - 'MM', - 'MMA', - 'MN', - 'MO', - 'MOBI', - 'MOBILE', - 'MODA', - 'MOE', - 'MOI', - 'MOM', - 'MONASH', - 'MONEY', - 'MONSTER', - 'MORMON', - 'MORTGAGE', - 'MOSCOW', - 'MOTO', - 'MOTORCYCLES', - 'MOV', - 'MOVIE', - 'MP', - 'MQ', - 'MR', - 'MS', - 'MSD', - 'MT', - 'MTN', - 'MTR', - 'MU', - 'MUSEUM', - 'MUSIC', - 'MUTUAL', - 'MV', - 'MW', - 'MX', - 'MY', - 'MZ', - 'NA', - 'NAB', - 'NAGOYA', - 'NAME', - 'NATURA', - 'NAVY', - 'NBA', - 'NC', - 'NE', - 'NEC', - 'NET', - 'NETBANK', - 'NETFLIX', - 'NETWORK', - 'NEUSTAR', - 'NEW', - 'NEWS', - 'NEXT', - 'NEXTDIRECT', - 'NEXUS', - 'NF', - 'NFL', - 'NG', - 'NGO', - 'NHK', - 'NI', - 'NICO', - 'NIKE', - 'NIKON', - 'NINJA', - 'NISSAN', - 'NISSAY', - 'NL', - 'NO', - 'NOKIA', - 'NORTHWESTERNMUTUAL', - 'NORTON', - 'NOW', - 'NOWRUZ', - 'NOWTV', - 'NP', - 'NR', - 'NRA', - 'NRW', - 'NTT', - 'NU', - 'NYC', - 'NZ', - 'OBI', - 'OBSERVER', - 'OFFICE', - 'OKINAWA', - 'OLAYAN', - 'OLAYANGROUP', - 'OLDNAVY', - 'OLLO', - 'OM', - 'OMEGA', - 'ONE', - 'ONG', - 'ONL', - 'ONLINE', - 'OOO', - 'OPEN', - 'ORACLE', - 'ORANGE', - 'ORG', - 'ORGANIC', - 'ORIGINS', - 'OSAKA', - 'OTSUKA', - 'OTT', - 'OVH', - 'PA', - 'PAGE', - 'PANASONIC', - 'PARIS', - 'PARS', - 'PARTNERS', - 'PARTS', - 'PARTY', - 'PASSAGENS', - 'PAY', - 'PCCW', - 'PE', - 'PET', - 'PF', - 'PFIZER', - 'PG', - 'PH', - 'PHARMACY', - 'PHD', - 'PHILIPS', - 'PHONE', - 'PHOTO', - 'PHOTOGRAPHY', - 'PHOTOS', - 'PHYSIO', - 'PICS', - 'PICTET', - 'PICTURES', - 'PID', - 'PIN', - 'PING', - 'PINK', - 'PIONEER', - 'PIZZA', - 'PK', - 'PL', - 'PLACE', - 'PLAY', - 'PLAYSTATION', - 'PLUMBING', - 'PLUS', - 'PM', - 'PN', - 'PNC', - 'POHL', - 'POKER', - 'POLITIE', - 'PORN', - 'POST', - 'PR', - 'PRAMERICA', - 'PRAXI', - 'PRESS', - 'PRIME', - 'PRO', - 'PROD', - 'PRODUCTIONS', - 'PROF', - 'PROGRESSIVE', - 'PROMO', - 'PROPERTIES', - 'PROPERTY', - 'PROTECTION', - 'PRU', - 'PRUDENTIAL', - 'PS', - 'PT', - 'PUB', - 'PW', - 'PWC', - 'PY', - 'QA', - 'QPON', - 'QUEBEC', - 'QUEST', - 'RACING', - 'RADIO', - 'RE', - 'READ', - 'REALESTATE', - 'REALTOR', - 'REALTY', - 'RECIPES', - 'RED', - 'REDSTONE', - 'REDUMBRELLA', - 'REHAB', - 'REISE', - 'REISEN', - 'REIT', - 'RELIANCE', - 'REN', - 'RENT', - 'RENTALS', - 'REPAIR', - 'REPORT', - 'REPUBLICAN', - 'REST', - 'RESTAURANT', - 'REVIEW', - 'REVIEWS', - 'REXROTH', - 'RICH', - 'RICHARDLI', - 'RICOH', - 'RIL', - 'RIO', - 'RIP', - 'RO', - 'ROCHER', - 'ROCKS', - 'RODEO', - 'ROGERS', - 'ROOM', - 'RS', - 'RSVP', - 'RU', - 'RUGBY', - 'RUHR', - 'RUN', - 'RW', - 'RWE', - 'RYUKYU', - 'SA', - 'SAARLAND', - 'SAFE', - 'SAFETY', - 'SAKURA', - 'SALE', - 'SALON', - 'SAMSCLUB', - 'SAMSUNG', - 'SANDVIK', - 'SANDVIKCOROMANT', - 'SANOFI', - 'SAP', - 'SARL', - 'SAS', - 'SAVE', - 'SAXO', - 'SB', - 'SBI', - 'SBS', - 'SC', - 'SCA', - 'SCB', - 'SCHAEFFLER', - 'SCHMIDT', - 'SCHOLARSHIPS', - 'SCHOOL', - 'SCHULE', - 'SCHWARZ', - 'SCIENCE', - 'SCOT', - 'SD', - 'SE', - 'SEARCH', - 'SEAT', - 'SECURE', - 'SECURITY', - 'SEEK', - 'SELECT', - 'SENER', - 'SERVICES', - 'SES', - 'SEVEN', - 'SEW', - 'SEX', - 'SEXY', - 'SFR', - 'SG', - 'SH', - 'SHANGRILA', - 'SHARP', - 'SHAW', - 'SHELL', - 'SHIA', - 'SHIKSHA', - 'SHOES', - 'SHOP', - 'SHOPPING', - 'SHOUJI', - 'SHOW', - 'SHOWTIME', - 'SI', - 'SILK', - 'SINA', - 'SINGLES', - 'SITE', - 'SJ', - 'SK', - 'SKI', - 'SKIN', - 'SKY', - 'SKYPE', - 'SL', - 'SLING', - 'SM', - 'SMART', - 'SMILE', - 'SN', - 'SNCF', - 'SO', - 'SOCCER', - 'SOCIAL', - 'SOFTBANK', - 'SOFTWARE', - 'SOHU', - 'SOLAR', - 'SOLUTIONS', - 'SONG', - 'SONY', - 'SOY', - 'SPA', - 'SPACE', - 'SPORT', - 'SPOT', - 'SR', - 'SRL', - 'SS', - 'ST', - 'STADA', - 'STAPLES', - 'STAR', - 'STATEBANK', - 'STATEFARM', - 'STC', - 'STCGROUP', - 'STOCKHOLM', - 'STORAGE', - 'STORE', - 'STREAM', - 'STUDIO', - 'STUDY', - 'STYLE', - 'SU', - 'SUCKS', - 'SUPPLIES', - 'SUPPLY', - 'SUPPORT', - 'SURF', - 'SURGERY', - 'SUZUKI', - 'SV', - 'SWATCH', - 'SWISS', - 'SX', - 'SY', - 'SYDNEY', - 'SYSTEMS', - 'SZ', - 'TAB', - 'TAIPEI', - 'TALK', - 'TAOBAO', - 'TARGET', - 'TATAMOTORS', - 'TATAR', - 'TATTOO', - 'TAX', - 'TAXI', - 'TC', - 'TCI', - 'TD', - 'TDK', - 'TEAM', - 'TECH', - 'TECHNOLOGY', - 'TEL', - 'TEMASEK', - 'TENNIS', - 'TEVA', - 'TF', - 'TG', - 'TH', - 'THD', - 'THEATER', - 'THEATRE', - 'TIAA', - 'TICKETS', - 'TIENDA', - 'TIFFANY', - 'TIPS', - 'TIRES', - 'TIROL', - 'TJ', - 'TJMAXX', - 'TJX', - 'TK', - 'TKMAXX', - 'TL', - 'TM', - 'TMALL', - 'TN', - 'TO', - 'TODAY', - 'TOKYO', - 'TOOLS', - 'TOP', - 'TORAY', - 'TOSHIBA', - 'TOTAL', - 'TOURS', - 'TOWN', - 'TOYOTA', - 'TOYS', - 'TR', - 'TRADE', - 'TRADING', - 'TRAINING', - 'TRAVEL', - 'TRAVELCHANNEL', - 'TRAVELERS', - 'TRAVELERSINSURANCE', - 'TRUST', - 'TRV', - 'TT', - 'TUBE', - 'TUI', - 'TUNES', - 'TUSHU', - 'TV', - 'TVS', - 'TW', - 'TZ', - 'UA', - 'UBANK', - 'UBS', - 'UG', - 'UK', - 'UNICOM', - 'UNIVERSITY', - 'UNO', - 'UOL', - 'UPS', - 'US', - 'UY', - 'UZ', - 'VA', - 'VACATIONS', - 'VANA', - 'VANGUARD', - 'VC', - 'VE', - 'VEGAS', - 'VENTURES', - 'VERISIGN', - 'VERSICHERUNG', - 'VET', - 'VG', - 'VI', - 'VIAJES', - 'VIDEO', - 'VIG', - 'VIKING', - 'VILLAS', - 'VIN', - 'VIP', - 'VIRGIN', - 'VISA', - 'VISION', - 'VIVA', - 'VIVO', - 'VLAANDEREN', - 'VN', - 'VODKA', - 'VOLKSWAGEN', - 'VOLVO', - 'VOTE', - 'VOTING', - 'VOTO', - 'VOYAGE', - 'VU', - 'VUELOS', - 'WALES', - 'WALMART', - 'WALTER', - 'WANG', - 'WANGGOU', - 'WATCH', - 'WATCHES', - 'WEATHER', - 'WEATHERCHANNEL', - 'WEBCAM', - 'WEBER', - 'WEBSITE', - 'WED', - 'WEDDING', - 'WEIBO', - 'WEIR', - 'WF', - 'WHOSWHO', - 'WIEN', - 'WIKI', - 'WILLIAMHILL', - 'WIN', - 'WINDOWS', - 'WINE', - 'WINNERS', - 'WME', - 'WOLTERSKLUWER', - 'WOODSIDE', - 'WORK', - 'WORKS', - 'WORLD', - 'WOW', - 'WS', - 'WTC', - 'WTF', - 'XBOX', - 'XEROX', - 'XFINITY', - 'XIHUAN', - 'XIN', - 'XN--11B4C3D', - 'XN--1CK2E1B', - 'XN--1QQW23A', - 'XN--2SCRJ9C', - 'XN--30RR7Y', - 'XN--3BST00M', - 'XN--3DS443G', - 'XN--3E0B707E', - 'XN--3HCRJ9C', - 'XN--3PXU8K', - 'XN--42C2D9A', - 'XN--45BR5CYL', - 'XN--45BRJ9C', - 'XN--45Q11C', - 'XN--4DBRK0CE', - 'XN--4GBRIM', - 'XN--54B7FTA0CC', - 'XN--55QW42G', - 'XN--55QX5D', - 'XN--5SU34J936BGSG', - 'XN--5TZM5G', - 'XN--6FRZ82G', - 'XN--6QQ986B3XL', - 'XN--80ADXHKS', - 'XN--80AO21A', - 'XN--80AQECDR1A', - 'XN--80ASEHDB', - 'XN--80ASWG', - 'XN--8Y0A063A', - 'XN--90A3AC', - 'XN--90AE', - 'XN--90AIS', - 'XN--9DBQ2A', - 'XN--9ET52U', - 'XN--9KRT00A', - 'XN--B4W605FERD', - 'XN--BCK1B9A5DRE4C', - 'XN--C1AVG', - 'XN--C2BR7G', - 'XN--CCK2B3B', - 'XN--CCKWCXETD', - 'XN--CG4BKI', - 'XN--CLCHC0EA0B2G2A9GCD', - 'XN--CZR694B', - 'XN--CZRS0T', - 'XN--CZRU2D', - 'XN--D1ACJ3B', - 'XN--D1ALF', - 'XN--E1A4C', - 'XN--ECKVDTC9D', - 'XN--EFVY88H', - 'XN--FCT429K', - 'XN--FHBEI', - 'XN--FIQ228C5HS', - 'XN--FIQ64B', - 'XN--FIQS8S', - 'XN--FIQZ9S', - 'XN--FJQ720A', - 'XN--FLW351E', - 'XN--FPCRJ9C3D', - 'XN--FZC2C9E2C', - 'XN--FZYS8D69UVGM', - 'XN--G2XX48C', - 'XN--GCKR3F0F', - 'XN--GECRJ9C', - 'XN--GK3AT1E', - 'XN--H2BREG3EVE', - 'XN--H2BRJ9C', - 'XN--H2BRJ9C8C', - 'XN--HXT814E', - 'XN--I1B6B1A6A2E', - 'XN--IMR513N', - 'XN--IO0A7I', - 'XN--J1AEF', - 'XN--J1AMH', - 'XN--J6W193G', - 'XN--JLQ480N2RG', - 'XN--JLQ61U9W7B', - 'XN--JVR189M', - 'XN--KCRX77D1X4A', - 'XN--KPRW13D', - 'XN--KPRY57D', - 'XN--KPUT3I', - 'XN--L1ACC', - 'XN--LGBBAT1AD8J', - 'XN--MGB9AWBF', - 'XN--MGBA3A3EJT', - 'XN--MGBA3A4F16A', - 'XN--MGBA7C0BBN0A', - 'XN--MGBAAKC7DVF', - 'XN--MGBAAM7A8H', - 'XN--MGBAB2BD', - 'XN--MGBAH1A3HJKRD', - 'XN--MGBAI9AZGQP6J', - 'XN--MGBAYH7GPA', - 'XN--MGBBH1A', - 'XN--MGBBH1A71E', - 'XN--MGBC0A9AZCG', - 'XN--MGBCA7DZDO', - 'XN--MGBCPQ6GPA1A', - 'XN--MGBERP4A5D4AR', - 'XN--MGBGU82A', - 'XN--MGBI4ECEXP', - 'XN--MGBPL2FH', - 'XN--MGBT3DHD', - 'XN--MGBTX2B', - 'XN--MGBX4CD0AB', - 'XN--MIX891F', - 'XN--MK1BU44C', - 'XN--MXTQ1M', - 'XN--NGBC5AZD', - 'XN--NGBE9E0A', - 'XN--NGBRX', - 'XN--NODE', - 'XN--NQV7F', - 'XN--NQV7FS00EMA', - 'XN--NYQY26A', - 'XN--O3CW4H', - 'XN--OGBPF8FL', - 'XN--OTU796D', - 'XN--P1ACF', - 'XN--P1AI', - 'XN--PGBS0DH', - 'XN--PSSY2U', - 'XN--Q7CE6A', - 'XN--Q9JYB4C', - 'XN--QCKA1PMC', - 'XN--QXA6A', - 'XN--QXAM', - 'XN--RHQV96G', - 'XN--ROVU88B', - 'XN--RVC1E0AM3E', - 'XN--S9BRJ9C', - 'XN--SES554G', - 'XN--T60B56A', - 'XN--TCKWE', - 'XN--TIQ49XQYJ', - 'XN--UNUP4Y', - 'XN--VERMGENSBERATER-CTB', - 'XN--VERMGENSBERATUNG-PWB', - 'XN--VHQUV', - 'XN--VUQ861B', - 'XN--W4R85EL8FHU5DNRA', - 'XN--W4RS40L', - 'XN--WGBH1C', - 'XN--WGBL6A', - 'XN--XHQ521B', - 'XN--XKC2AL3HYE2A', - 'XN--XKC2DL3A5EE0H', - 'XN--Y9A3AQ', - 'XN--YFRO4I67O', - 'XN--YGBI2AMMX', - 'XN--ZFR164B', - 'XXX', - 'XYZ', - 'YACHTS', - 'YAHOO', - 'YAMAXUN', - 'YANDEX', - 'YE', - 'YODOBASHI', - 'YOGA', - 'YOKOHAMA', - 'YOU', - 'YOUTUBE', - 'YT', - 'YUN', - 'ZA', - 'ZAPPOS', - 'ZARA', - 'ZERO', - 'ZIP', - 'ZM', - 'ZONE', - 'ZUERICH', - 'ZW', -]; +const tlds = { + 'A': [ + 'AAA', + 'AARP', + 'ABARTH', + 'ABB', + 'ABBOTT', + 'ABBVIE', + 'ABC', + 'ABLE', + 'ABOGADO', + 'ABUDHABI', + 'AC', + 'ACADEMY', + 'ACCENTURE', + 'ACCOUNTANT', + 'ACCOUNTANTS', + 'ACO', + 'ACTOR', + 'AD', + 'ADAC', + 'ADS', + 'ADULT', + 'AE', + 'AEG', + 'AERO', + 'AETNA', + 'AF', + 'AFL', + 'AFRICA', + 'AG', + 'AGAKHAN', + 'AGENCY', + 'AI', + 'AIG', + 'AIRBUS', + 'AIRFORCE', + 'AIRTEL', + 'AKDN', + 'AL', + 'ALFAROMEO', + 'ALIBABA', + 'ALIPAY', + 'ALLFINANZ', + 'ALLSTATE', + 'ALLY', + 'ALSACE', + 'ALSTOM', + 'AM', + 'AMAZON', + 'AMERICANEXPRESS', + 'AMERICANFAMILY', + 'AMEX', + 'AMFAM', + 'AMICA', + 'AMSTERDAM', + 'ANALYTICS', + 'ANDROID', + 'ANQUAN', + 'ANZ', + 'AO', + 'AOL', + 'APARTMENTS', + 'APP', + 'APPLE', + 'AQ', + 'AQUARELLE', + 'AR', + 'ARAB', + 'ARAMCO', + 'ARCHI', + 'ARMY', + 'ARPA', + 'ART', + 'ARTE', + 'AS', + 'ASDA', + 'ASIA', + 'ASSOCIATES', + 'AT', + 'ATHLETA', + 'ATTORNEY', + 'AU', + 'AUCTION', + 'AUDI', + 'AUDIBLE', + 'AUDIO', + 'AUSPOST', + 'AUTHOR', + 'AUTO', + 'AUTOS', + 'AVIANCA', + 'AW', + 'AWS', + 'AX', + 'AXA', + 'AZ', + 'AZURE', + ], + 'B': [ + 'BA', + 'BABY', + 'BAIDU', + 'BANAMEX', + 'BANANAREPUBLIC', + 'BAND', + 'BANK', + 'BAR', + 'BARCELONA', + 'BARCLAYCARD', + 'BARCLAYS', + 'BAREFOOT', + 'BARGAINS', + 'BASEBALL', + 'BASKETBALL', + 'BAUHAUS', + 'BAYERN', + 'BB', + 'BBC', + 'BBT', + 'BBVA', + 'BCG', + 'BCN', + 'BD', + 'BE', + 'BEATS', + 'BEAUTY', + 'BEER', + 'BENTLEY', + 'BERLIN', + 'BEST', + 'BESTBUY', + 'BET', + 'BF', + 'BG', + 'BH', + 'BHARTI', + 'BI', + 'BIBLE', + 'BID', + 'BIKE', + 'BING', + 'BINGO', + 'BIO', + 'BIZ', + 'BJ', + 'BLACK', + 'BLACKFRIDAY', + 'BLOCKBUSTER', + 'BLOG', + 'BLOOMBERG', + 'BLUE', + 'BM', + 'BMS', + 'BMW', + 'BN', + 'BNPPARIBAS', + 'BO', + 'BOATS', + 'BOEHRINGER', + 'BOFA', + 'BOM', + 'BOND', + 'BOO', + 'BOOK', + 'BOOKING', + 'BOSCH', + 'BOSTIK', + 'BOSTON', + 'BOT', + 'BOUTIQUE', + 'BOX', + 'BR', + 'BRADESCO', + 'BRIDGESTONE', + 'BROADWAY', + 'BROKER', + 'BROTHER', + 'BRUSSELS', + 'BS', + 'BT', + 'BUDAPEST', + 'BUGATTI', + 'BUILD', + 'BUILDERS', + 'BUSINESS', + 'BUY', + 'BUZZ', + 'BV', + 'BW', + 'BY', + 'BZ', + 'BZH', + ], + 'C': [ + 'CA', + 'CAB', + 'CAFE', + 'CAL', + 'CALL', + 'CALVINKLEIN', + 'CAM', + 'CAMERA', + 'CAMP', + 'CANCERRESEARCH', + 'CANON', + 'CAPETOWN', + 'CAPITAL', + 'CAPITALONE', + 'CAR', + 'CARAVAN', + 'CARDS', + 'CARE', + 'CAREER', + 'CAREERS', + 'CARS', + 'CASA', + 'CASE', + 'CASH', + 'CASINO', + 'CAT', + 'CATERING', + 'CATHOLIC', + 'CBA', + 'CBN', + 'CBRE', + 'CBS', + 'CC', + 'CD', + 'CENTER', + 'CEO', + 'CERN', + 'CF', + 'CFA', + 'CFD', + 'CG', + 'CH', + 'CHANEL', + 'CHANNEL', + 'CHARITY', + 'CHASE', + 'CHAT', + 'CHEAP', + 'CHINTAI', + 'CHRISTMAS', + 'CHROME', + 'CHURCH', + 'CI', + 'CIPRIANI', + 'CIRCLE', + 'CISCO', + 'CITADEL', + 'CITI', + 'CITIC', + 'CITY', + 'CITYEATS', + 'CK', + 'CL', + 'CLAIMS', + 'CLEANING', + 'CLICK', + 'CLINIC', + 'CLINIQUE', + 'CLOTHING', + 'CLOUD', + 'CLUB', + 'CLUBMED', + 'CM', + 'CN', + 'CO', + 'COACH', + 'CODES', + 'COFFEE', + 'COLLEGE', + 'COLOGNE', + 'COM', + 'COMCAST', + 'COMMBANK', + 'COMMUNITY', + 'COMPANY', + 'COMPARE', + 'COMPUTER', + 'COMSEC', + 'CONDOS', + 'CONSTRUCTION', + 'CONSULTING', + 'CONTACT', + 'CONTRACTORS', + 'COOKING', + 'COOKINGCHANNEL', + 'COOL', + 'COOP', + 'CORSICA', + 'COUNTRY', + 'COUPON', + 'COUPONS', + 'COURSES', + 'CPA', + 'CR', + 'CREDIT', + 'CREDITCARD', + 'CREDITUNION', + 'CRICKET', + 'CROWN', + 'CRS', + 'CRUISE', + 'CRUISES', + 'CSC', + 'CU', + 'CUISINELLA', + 'CV', + 'CW', + 'CX', + 'CY', + 'CYMRU', + 'CYOU', + 'CZ', + ], + 'D': [ + 'DABUR', + 'DAD', + 'DANCE', + 'DATA', + 'DATE', + 'DATING', + 'DATSUN', + 'DAY', + 'DCLK', + 'DDS', + 'DE', + 'DEAL', + 'DEALER', + 'DEALS', + 'DEGREE', + 'DELIVERY', + 'DELL', + 'DELOITTE', + 'DELTA', + 'DEMOCRAT', + 'DENTAL', + 'DENTIST', + 'DESI', + 'DESIGN', + 'DEV', + 'DHL', + 'DIAMONDS', + 'DIET', + 'DIGITAL', + 'DIRECT', + 'DIRECTORY', + 'DISCOUNT', + 'DISCOVER', + 'DISH', + 'DIY', + 'DJ', + 'DK', + 'DM', + 'DNP', + 'DO', + 'DOCS', + 'DOCTOR', + 'DOG', + 'DOMAINS', + 'DOT', + 'DOWNLOAD', + 'DRIVE', + 'DTV', + 'DUBAI', + 'DUNLOP', + 'DUPONT', + 'DURBAN', + 'DVAG', + 'DVR', + 'DZ', + ], + 'E': [ + 'EARTH', + 'EAT', + 'EC', + 'ECO', + 'EDEKA', + 'EDU', + 'EDUCATION', + 'EE', + 'EG', + 'EMAIL', + 'EMERCK', + 'ENERGY', + 'ENGINEER', + 'ENGINEERING', + 'ENTERPRISES', + 'EPSON', + 'EQUIPMENT', + 'ER', + 'ERICSSON', + 'ERNI', + 'ES', + 'ESQ', + 'ESTATE', + 'ET', + 'ETISALAT', + 'EU', + 'EUROVISION', + 'EUS', + 'EVENTS', + 'EXCHANGE', + 'EXPERT', + 'EXPOSED', + 'EXPRESS', + 'EXTRASPACE', + ], + 'F': [ + 'FAGE', + 'FAIL', + 'FAIRWINDS', + 'FAITH', + 'FAMILY', + 'FAN', + 'FANS', + 'FARM', + 'FARMERS', + 'FASHION', + 'FAST', + 'FEDEX', + 'FEEDBACK', + 'FERRARI', + 'FERRERO', + 'FI', + 'FIAT', + 'FIDELITY', + 'FIDO', + 'FILM', + 'FINAL', + 'FINANCE', + 'FINANCIAL', + 'FIRE', + 'FIRESTONE', + 'FIRMDALE', + 'FISH', + 'FISHING', + 'FIT', + 'FITNESS', + 'FJ', + 'FK', + 'FLICKR', + 'FLIGHTS', + 'FLIR', + 'FLORIST', + 'FLOWERS', + 'FLY', + 'FM', + 'FO', + 'FOO', + 'FOOD', + 'FOODNETWORK', + 'FOOTBALL', + 'FORD', + 'FOREX', + 'FORSALE', + 'FORUM', + 'FOUNDATION', + 'FOX', + 'FR', + 'FREE', + 'FRESENIUS', + 'FRL', + 'FROGANS', + 'FRONTDOOR', + 'FRONTIER', + 'FTR', + 'FUJITSU', + 'FUN', + 'FUND', + 'FURNITURE', + 'FUTBOL', + 'FYI', + ], + 'G': [ + 'GA', + 'GAL', + 'GALLERY', + 'GALLO', + 'GALLUP', + 'GAME', + 'GAMES', + 'GAP', + 'GARDEN', + 'GAY', + 'GB', + 'GBIZ', + 'GD', + 'GDN', + 'GE', + 'GEA', + 'GENT', + 'GENTING', + 'GEORGE', + 'GF', + 'GG', + 'GGEE', + 'GH', + 'GI', + 'GIFT', + 'GIFTS', + 'GIVES', + 'GIVING', + 'GL', + 'GLASS', + 'GLE', + 'GLOBAL', + 'GLOBO', + 'GM', + 'GMAIL', + 'GMBH', + 'GMO', + 'GMX', + 'GN', + 'GODADDY', + 'GOLD', + 'GOLDPOINT', + 'GOLF', + 'GOO', + 'GOODYEAR', + 'GOOG', + 'GOOGLE', + 'GOP', + 'GOT', + 'GOV', + 'GP', + 'GQ', + 'GR', + 'GRAINGER', + 'GRAPHICS', + 'GRATIS', + 'GREEN', + 'GRIPE', + 'GROCERY', + 'GROUP', + 'GS', + 'GT', + 'GU', + 'GUARDIAN', + 'GUCCI', + 'GUGE', + 'GUIDE', + 'GUITARS', + 'GURU', + 'GW', + 'GY', + ], + 'H': [ + 'HAIR', + 'HAMBURG', + 'HANGOUT', + 'HAUS', + 'HBO', + 'HDFC', + 'HDFCBANK', + 'HEALTH', + 'HEALTHCARE', + 'HELP', + 'HELSINKI', + 'HERE', + 'HERMES', + 'HGTV', + 'HIPHOP', + 'HISAMITSU', + 'HITACHI', + 'HIV', + 'HK', + 'HKT', + 'HM', + 'HN', + 'HOCKEY', + 'HOLDINGS', + 'HOLIDAY', + 'HOMEDEPOT', + 'HOMEGOODS', + 'HOMES', + 'HOMESENSE', + 'HONDA', + 'HORSE', + 'HOSPITAL', + 'HOST', + 'HOSTING', + 'HOT', + 'HOTELES', + 'HOTELS', + 'HOTMAIL', + 'HOUSE', + 'HOW', + 'HR', + 'HSBC', + 'HT', + 'HU', + 'HUGHES', + 'HYATT', + 'HYUNDAI', + ], + 'I': [ + 'IBM', + 'ICBC', + 'ICE', + 'ICU', + 'ID', + 'IE', + 'IEEE', + 'IFM', + 'IKANO', + 'IL', + 'IM', + 'IMAMAT', + 'IMDB', + 'IMMO', + 'IMMOBILIEN', + 'IN', + 'INC', + 'INDUSTRIES', + 'INFINITI', + 'INFO', + 'ING', + 'INK', + 'INSTITUTE', + 'INSURANCE', + 'INSURE', + 'INT', + 'INTERNATIONAL', + 'INTUIT', + 'INVESTMENTS', + 'IO', + 'IPIRANGA', + 'IQ', + 'IR', + 'IRISH', + 'IS', + 'ISMAILI', + 'IST', + 'ISTANBUL', + 'IT', + 'ITAU', + 'ITV', + ], + 'J': [ + 'JAGUAR', + 'JAVA', + 'JCB', + 'JE', + 'JEEP', + 'JETZT', + 'JEWELRY', + 'JIO', + 'JLL', + 'JM', + 'JMP', + 'JNJ', + 'JO', + 'JOBS', + 'JOBURG', + 'JOT', + 'JOY', + 'JP', + 'JPMORGAN', + 'JPRS', + 'JUEGOS', + 'JUNIPER', + ], + 'K': [ + 'KAUFEN', + 'KDDI', + 'KE', + 'KERRYHOTELS', + 'KERRYLOGISTICS', + 'KERRYPROPERTIES', + 'KFH', + 'KG', + 'KH', + 'KI', + 'KIA', + 'KIM', + 'KINDER', + 'KINDLE', + 'KITCHEN', + 'KIWI', + 'KM', + 'KN', + 'KOELN', + 'KOMATSU', + 'KOSHER', + 'KP', + 'KPMG', + 'KPN', + 'KR', + 'KRD', + 'KRED', + 'KUOKGROUP', + 'KW', + 'KY', + 'KYOTO', + 'KZ', + ], + 'L': [ + 'LA', + 'LACAIXA', + 'LAMBORGHINI', + 'LAMER', + 'LANCASTER', + 'LANCIA', + 'LAND', + 'LANDROVER', + 'LANXESS', + 'LASALLE', + 'LAT', + 'LATINO', + 'LATROBE', + 'LAW', + 'LAWYER', + 'LB', + 'LC', + 'LDS', + 'LEASE', + 'LECLERC', + 'LEFRAK', + 'LEGAL', + 'LEGO', + 'LEXUS', + 'LGBT', + 'LI', + 'LIDL', + 'LIFE', + 'LIFEINSURANCE', + 'LIFESTYLE', + 'LIGHTING', + 'LIKE', + 'LILLY', + 'LIMITED', + 'LIMO', + 'LINCOLN', + 'LINDE', + 'LINK', + 'LIPSY', + 'LIVE', + 'LIVING', + 'LK', + 'LLC', + 'LLP', + 'LOAN', + 'LOANS', + 'LOCKER', + 'LOCUS', + 'LOFT', + 'LOL', + 'LONDON', + 'LOTTE', + 'LOTTO', + 'LOVE', + 'LPL', + 'LPLFINANCIAL', + 'LR', + 'LS', + 'LT', + 'LTD', + 'LTDA', + 'LU', + 'LUNDBECK', + 'LUXE', + 'LUXURY', + 'LV', + 'LY', + ], + 'M': [ + 'MA', + 'MACYS', + 'MADRID', + 'MAIF', + 'MAISON', + 'MAKEUP', + 'MAN', + 'MANAGEMENT', + 'MANGO', + 'MAP', + 'MARKET', + 'MARKETING', + 'MARKETS', + 'MARRIOTT', + 'MARSHALLS', + 'MASERATI', + 'MATTEL', + 'MBA', + 'MC', + 'MCKINSEY', + 'MD', + 'ME', + 'MED', + 'MEDIA', + 'MEET', + 'MELBOURNE', + 'MEME', + 'MEMORIAL', + 'MEN', + 'MENU', + 'MERCKMSD', + 'MG', + 'MH', + 'MIAMI', + 'MICROSOFT', + 'MIL', + 'MINI', + 'MINT', + 'MIT', + 'MITSUBISHI', + 'MK', + 'ML', + 'MLB', + 'MLS', + 'MM', + 'MMA', + 'MN', + 'MO', + 'MOBI', + 'MOBILE', + 'MODA', + 'MOE', + 'MOI', + 'MOM', + 'MONASH', + 'MONEY', + 'MONSTER', + 'MORMON', + 'MORTGAGE', + 'MOSCOW', + 'MOTO', + 'MOTORCYCLES', + 'MOV', + 'MOVIE', + 'MP', + 'MQ', + 'MR', + 'MS', + 'MSD', + 'MT', + 'MTN', + 'MTR', + 'MU', + 'MUSEUM', + 'MUSIC', + 'MUTUAL', + 'MV', + 'MW', + 'MX', + 'MY', + 'MZ', + ], + 'N': [ + 'NA', + 'NAB', + 'NAGOYA', + 'NAME', + 'NATURA', + 'NAVY', + 'NBA', + 'NC', + 'NE', + 'NEC', + 'NET', + 'NETBANK', + 'NETFLIX', + 'NETWORK', + 'NEUSTAR', + 'NEW', + 'NEWS', + 'NEXT', + 'NEXTDIRECT', + 'NEXUS', + 'NF', + 'NFL', + 'NG', + 'NGO', + 'NHK', + 'NI', + 'NICO', + 'NIKE', + 'NIKON', + 'NINJA', + 'NISSAN', + 'NISSAY', + 'NL', + 'NO', + 'NOKIA', + 'NORTHWESTERNMUTUAL', + 'NORTON', + 'NOW', + 'NOWRUZ', + 'NOWTV', + 'NP', + 'NR', + 'NRA', + 'NRW', + 'NTT', + 'NU', + 'NYC', + 'NZ', + ], + 'O': [ + 'OBI', + 'OBSERVER', + 'OFFICE', + 'OKINAWA', + 'OLAYAN', + 'OLAYANGROUP', + 'OLDNAVY', + 'OLLO', + 'OM', + 'OMEGA', + 'ONE', + 'ONG', + 'ONL', + 'ONLINE', + 'OOO', + 'OPEN', + 'ORACLE', + 'ORANGE', + 'ORG', + 'ORGANIC', + 'ORIGINS', + 'OSAKA', + 'OTSUKA', + 'OTT', + 'OVH', + ], + 'P': [ + 'PA', + 'PAGE', + 'PANASONIC', + 'PARIS', + 'PARS', + 'PARTNERS', + 'PARTS', + 'PARTY', + 'PASSAGENS', + 'PAY', + 'PCCW', + 'PE', + 'PET', + 'PF', + 'PFIZER', + 'PG', + 'PH', + 'PHARMACY', + 'PHD', + 'PHILIPS', + 'PHONE', + 'PHOTO', + 'PHOTOGRAPHY', + 'PHOTOS', + 'PHYSIO', + 'PICS', + 'PICTET', + 'PICTURES', + 'PID', + 'PIN', + 'PING', + 'PINK', + 'PIONEER', + 'PIZZA', + 'PK', + 'PL', + 'PLACE', + 'PLAY', + 'PLAYSTATION', + 'PLUMBING', + 'PLUS', + 'PM', + 'PN', + 'PNC', + 'POHL', + 'POKER', + 'POLITIE', + 'PORN', + 'POST', + 'PR', + 'PRAMERICA', + 'PRAXI', + 'PRESS', + 'PRIME', + 'PRO', + 'PROD', + 'PRODUCTIONS', + 'PROF', + 'PROGRESSIVE', + 'PROMO', + 'PROPERTIES', + 'PROPERTY', + 'PROTECTION', + 'PRU', + 'PRUDENTIAL', + 'PS', + 'PT', + 'PUB', + 'PW', + 'PWC', + 'PY', + ], + 'Q': [ + 'QA', + 'QPON', + 'QUEBEC', + 'QUEST', + ], + 'R': [ + 'RACING', + 'RADIO', + 'RE', + 'READ', + 'REALESTATE', + 'REALTOR', + 'REALTY', + 'RECIPES', + 'RED', + 'REDSTONE', + 'REDUMBRELLA', + 'REHAB', + 'REISE', + 'REISEN', + 'REIT', + 'RELIANCE', + 'REN', + 'RENT', + 'RENTALS', + 'REPAIR', + 'REPORT', + 'REPUBLICAN', + 'REST', + 'RESTAURANT', + 'REVIEW', + 'REVIEWS', + 'REXROTH', + 'RICH', + 'RICHARDLI', + 'RICOH', + 'RIL', + 'RIO', + 'RIP', + 'RO', + 'ROCHER', + 'ROCKS', + 'RODEO', + 'ROGERS', + 'ROOM', + 'RS', + 'RSVP', + 'RU', + 'RUGBY', + 'RUHR', + 'RUN', + 'RW', + 'RWE', + 'RYUKYU', + ], + 'S': [ + 'SA', + 'SAARLAND', + 'SAFE', + 'SAFETY', + 'SAKURA', + 'SALE', + 'SALON', + 'SAMSCLUB', + 'SAMSUNG', + 'SANDVIK', + 'SANDVIKCOROMANT', + 'SANOFI', + 'SAP', + 'SARL', + 'SAS', + 'SAVE', + 'SAXO', + 'SB', + 'SBI', + 'SBS', + 'SC', + 'SCA', + 'SCB', + 'SCHAEFFLER', + 'SCHMIDT', + 'SCHOLARSHIPS', + 'SCHOOL', + 'SCHULE', + 'SCHWARZ', + 'SCIENCE', + 'SCOT', + 'SD', + 'SE', + 'SEARCH', + 'SEAT', + 'SECURE', + 'SECURITY', + 'SEEK', + 'SELECT', + 'SENER', + 'SERVICES', + 'SES', + 'SEVEN', + 'SEW', + 'SEX', + 'SEXY', + 'SFR', + 'SG', + 'SH', + 'SHANGRILA', + 'SHARP', + 'SHAW', + 'SHELL', + 'SHIA', + 'SHIKSHA', + 'SHOES', + 'SHOP', + 'SHOPPING', + 'SHOUJI', + 'SHOW', + 'SHOWTIME', + 'SI', + 'SILK', + 'SINA', + 'SINGLES', + 'SITE', + 'SJ', + 'SK', + 'SKI', + 'SKIN', + 'SKY', + 'SKYPE', + 'SL', + 'SLING', + 'SM', + 'SMART', + 'SMILE', + 'SN', + 'SNCF', + 'SO', + 'SOCCER', + 'SOCIAL', + 'SOFTBANK', + 'SOFTWARE', + 'SOHU', + 'SOLAR', + 'SOLUTIONS', + 'SONG', + 'SONY', + 'SOY', + 'SPA', + 'SPACE', + 'SPORT', + 'SPOT', + 'SR', + 'SRL', + 'SS', + 'ST', + 'STADA', + 'STAPLES', + 'STAR', + 'STATEBANK', + 'STATEFARM', + 'STC', + 'STCGROUP', + 'STOCKHOLM', + 'STORAGE', + 'STORE', + 'STREAM', + 'STUDIO', + 'STUDY', + 'STYLE', + 'SU', + 'SUCKS', + 'SUPPLIES', + 'SUPPLY', + 'SUPPORT', + 'SURF', + 'SURGERY', + 'SUZUKI', + 'SV', + 'SWATCH', + 'SWISS', + 'SX', + 'SY', + 'SYDNEY', + 'SYSTEMS', + 'SZ', + ], + 'T': [ + 'TAB', + 'TAIPEI', + 'TALK', + 'TAOBAO', + 'TARGET', + 'TATAMOTORS', + 'TATAR', + 'TATTOO', + 'TAX', + 'TAXI', + 'TC', + 'TCI', + 'TD', + 'TDK', + 'TEAM', + 'TECH', + 'TECHNOLOGY', + 'TEL', + 'TEMASEK', + 'TENNIS', + 'TEVA', + 'TF', + 'TG', + 'TH', + 'THD', + 'THEATER', + 'THEATRE', + 'TIAA', + 'TICKETS', + 'TIENDA', + 'TIFFANY', + 'TIPS', + 'TIRES', + 'TIROL', + 'TJ', + 'TJMAXX', + 'TJX', + 'TK', + 'TKMAXX', + 'TL', + 'TM', + 'TMALL', + 'TN', + 'TO', + 'TODAY', + 'TOKYO', + 'TOOLS', + 'TOP', + 'TORAY', + 'TOSHIBA', + 'TOTAL', + 'TOURS', + 'TOWN', + 'TOYOTA', + 'TOYS', + 'TR', + 'TRADE', + 'TRADING', + 'TRAINING', + 'TRAVEL', + 'TRAVELCHANNEL', + 'TRAVELERS', + 'TRAVELERSINSURANCE', + 'TRUST', + 'TRV', + 'TT', + 'TUBE', + 'TUI', + 'TUNES', + 'TUSHU', + 'TV', + 'TVS', + 'TW', + 'TZ', + ], + 'U': [ + 'UA', + 'UBANK', + 'UBS', + 'UG', + 'UK', + 'UNICOM', + 'UNIVERSITY', + 'UNO', + 'UOL', + 'UPS', + 'US', + 'UY', + 'UZ', + ], + 'V': [ + 'VA', + 'VACATIONS', + 'VANA', + 'VANGUARD', + 'VC', + 'VE', + 'VEGAS', + 'VENTURES', + 'VERISIGN', + 'VERSICHERUNG', + 'VET', + 'VG', + 'VI', + 'VIAJES', + 'VIDEO', + 'VIG', + 'VIKING', + 'VILLAS', + 'VIN', + 'VIP', + 'VIRGIN', + 'VISA', + 'VISION', + 'VIVA', + 'VIVO', + 'VLAANDEREN', + 'VN', + 'VODKA', + 'VOLKSWAGEN', + 'VOLVO', + 'VOTE', + 'VOTING', + 'VOTO', + 'VOYAGE', + 'VU', + 'VUELOS', + ], + 'W': [ + 'WALES', + 'WALMART', + 'WALTER', + 'WANG', + 'WANGGOU', + 'WATCH', + 'WATCHES', + 'WEATHER', + 'WEATHERCHANNEL', + 'WEBCAM', + 'WEBER', + 'WEBSITE', + 'WED', + 'WEDDING', + 'WEIBO', + 'WEIR', + 'WF', + 'WHOSWHO', + 'WIEN', + 'WIKI', + 'WILLIAMHILL', + 'WIN', + 'WINDOWS', + 'WINE', + 'WINNERS', + 'WME', + 'WOLTERSKLUWER', + 'WOODSIDE', + 'WORK', + 'WORKS', + 'WORLD', + 'WOW', + 'WS', + 'WTC', + 'WTF', + ], + 'X': [ + 'XBOX', + 'XEROX', + 'XFINITY', + 'XIHUAN', + 'XIN', + 'XN--11B4C3D', + 'XN--1CK2E1B', + 'XN--1QQW23A', + 'XN--2SCRJ9C', + 'XN--30RR7Y', + 'XN--3BST00M', + 'XN--3DS443G', + 'XN--3E0B707E', + 'XN--3HCRJ9C', + 'XN--3PXU8K', + 'XN--42C2D9A', + 'XN--45BR5CYL', + 'XN--45BRJ9C', + 'XN--45Q11C', + 'XN--4DBRK0CE', + 'XN--4GBRIM', + 'XN--54B7FTA0CC', + 'XN--55QW42G', + 'XN--55QX5D', + 'XN--5SU34J936BGSG', + 'XN--5TZM5G', + 'XN--6FRZ82G', + 'XN--6QQ986B3XL', + 'XN--80ADXHKS', + 'XN--80AO21A', + 'XN--80AQECDR1A', + 'XN--80ASEHDB', + 'XN--80ASWG', + 'XN--8Y0A063A', + 'XN--90A3AC', + 'XN--90AE', + 'XN--90AIS', + 'XN--9DBQ2A', + 'XN--9ET52U', + 'XN--9KRT00A', + 'XN--B4W605FERD', + 'XN--BCK1B9A5DRE4C', + 'XN--C1AVG', + 'XN--C2BR7G', + 'XN--CCK2B3B', + 'XN--CCKWCXETD', + 'XN--CG4BKI', + 'XN--CLCHC0EA0B2G2A9GCD', + 'XN--CZR694B', + 'XN--CZRS0T', + 'XN--CZRU2D', + 'XN--D1ACJ3B', + 'XN--D1ALF', + 'XN--E1A4C', + 'XN--ECKVDTC9D', + 'XN--EFVY88H', + 'XN--FCT429K', + 'XN--FHBEI', + 'XN--FIQ228C5HS', + 'XN--FIQ64B', + 'XN--FIQS8S', + 'XN--FIQZ9S', + 'XN--FJQ720A', + 'XN--FLW351E', + 'XN--FPCRJ9C3D', + 'XN--FZC2C9E2C', + 'XN--FZYS8D69UVGM', + 'XN--G2XX48C', + 'XN--GCKR3F0F', + 'XN--GECRJ9C', + 'XN--GK3AT1E', + 'XN--H2BREG3EVE', + 'XN--H2BRJ9C', + 'XN--H2BRJ9C8C', + 'XN--HXT814E', + 'XN--I1B6B1A6A2E', + 'XN--IMR513N', + 'XN--IO0A7I', + 'XN--J1AEF', + 'XN--J1AMH', + 'XN--J6W193G', + 'XN--JLQ480N2RG', + 'XN--JLQ61U9W7B', + 'XN--JVR189M', + 'XN--KCRX77D1X4A', + 'XN--KPRW13D', + 'XN--KPRY57D', + 'XN--KPUT3I', + 'XN--L1ACC', + 'XN--LGBBAT1AD8J', + 'XN--MGB9AWBF', + 'XN--MGBA3A3EJT', + 'XN--MGBA3A4F16A', + 'XN--MGBA7C0BBN0A', + 'XN--MGBAAKC7DVF', + 'XN--MGBAAM7A8H', + 'XN--MGBAB2BD', + 'XN--MGBAH1A3HJKRD', + 'XN--MGBAI9AZGQP6J', + 'XN--MGBAYH7GPA', + 'XN--MGBBH1A', + 'XN--MGBBH1A71E', + 'XN--MGBC0A9AZCG', + 'XN--MGBCA7DZDO', + 'XN--MGBCPQ6GPA1A', + 'XN--MGBERP4A5D4AR', + 'XN--MGBGU82A', + 'XN--MGBI4ECEXP', + 'XN--MGBPL2FH', + 'XN--MGBT3DHD', + 'XN--MGBTX2B', + 'XN--MGBX4CD0AB', + 'XN--MIX891F', + 'XN--MK1BU44C', + 'XN--MXTQ1M', + 'XN--NGBC5AZD', + 'XN--NGBE9E0A', + 'XN--NGBRX', + 'XN--NODE', + 'XN--NQV7F', + 'XN--NQV7FS00EMA', + 'XN--NYQY26A', + 'XN--O3CW4H', + 'XN--OGBPF8FL', + 'XN--OTU796D', + 'XN--P1ACF', + 'XN--P1AI', + 'XN--PGBS0DH', + 'XN--PSSY2U', + 'XN--Q7CE6A', + 'XN--Q9JYB4C', + 'XN--QCKA1PMC', + 'XN--QXA6A', + 'XN--QXAM', + 'XN--RHQV96G', + 'XN--ROVU88B', + 'XN--RVC1E0AM3E', + 'XN--S9BRJ9C', + 'XN--SES554G', + 'XN--T60B56A', + 'XN--TCKWE', + 'XN--TIQ49XQYJ', + 'XN--UNUP4Y', + 'XN--VERMGENSBERATER-CTB', + 'XN--VERMGENSBERATUNG-PWB', + 'XN--VHQUV', + 'XN--VUQ861B', + 'XN--W4R85EL8FHU5DNRA', + 'XN--W4RS40L', + 'XN--WGBH1C', + 'XN--WGBL6A', + 'XN--XHQ521B', + 'XN--XKC2AL3HYE2A', + 'XN--XKC2DL3A5EE0H', + 'XN--Y9A3AQ', + 'XN--YFRO4I67O', + 'XN--YGBI2AMMX', + 'XN--ZFR164B', + 'XXX', + 'XYZ', + ], + 'Y': [ + 'YACHTS', + 'YAHOO', + 'YAMAXUN', + 'YANDEX', + 'YE', + 'YODOBASHI', + 'YOGA', + 'YOKOHAMA', + 'YOU', + 'YOUTUBE', + 'YT', + 'YUN', + ], + 'Z': [ + 'ZA', + 'ZAPPOS', + 'ZARA', + 'ZERO', + 'ZIP', + 'ZM', + 'ZONE', + 'ZUERICH', + 'ZW', + ], +}; From fa5e993d299e10e4a52d5360e2f98672e0a3c884 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 4 Jan 2022 15:29:03 +0530 Subject: [PATCH 063/201] tried fix for mip bug --- .../lib/src/message_input/message_input.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 180c3d12..43806c5b 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -938,7 +938,9 @@ class MessageInputState extends State // Reset the og attachment if the text doesn't contain any url if (matchedUrls.isEmpty) { - _effectiveController.clearOGAttachment(); + _effectiveController + ..text = value + ..clearOGAttachment(); return; } From 5d163b9a860f90fa3d740483a1baabebcf94f4fd Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 5 Jan 2022 11:18:46 +0100 Subject: [PATCH 064/201] add missing permissions and ui --- .../stream_chat/lib/src/client/channel.dart | 12 + .../stream_chat/lib/src/permission_type.dart | 12 + .../lib/src/channel_info.dart | 3 +- .../lib/src/channel_list_view.dart | 10 +- .../lib/src/localization/translations.dart | 7 + .../lib/src/message_actions_modal.dart | 13 +- .../lib/src/message_input/message_input.dart | 220 ++++++++++-------- .../lib/src/message_list_view.dart | 4 +- .../lib/src/message_reactions_modal.dart | 8 +- .../lib/src/message_widget.dart | 7 + 10 files changed, 171 insertions(+), 125 deletions(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 258122a7..db39628b 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -300,6 +300,18 @@ class Channel { return data; } + /// List of user permissions on this channel + List get ownCapabilities => + state?._channelState.channel?.ownCapabilities ?? []; + + /// List of user permissions on this channel + Stream> get ownCapabilitiesStream { + _checkInitialized(); + return state!.channelStateStream + .map((cs) => cs.channel?.ownCapabilities ?? []) + .distinct(); + } + /// Channel extra data as a stream. Stream> get extraDataStream { _checkInitialized(); diff --git a/packages/stream_chat/lib/src/permission_type.dart b/packages/stream_chat/lib/src/permission_type.dart index b0e2e73f..931f2848 100644 --- a/packages/stream_chat/lib/src/permission_type.dart +++ b/packages/stream_chat/lib/src/permission_type.dart @@ -5,6 +5,9 @@ class PermissionType { /// and user has CreateMessage permission. static const String sendMessage = 'send-message'; + /// Capability required to receive connect events in the channel + static const String connectEvents = 'connect-events'; + /// Capability required to send a message /// Reactions are enabled for the channel, channel is not frozen /// (or user has UseFrozenChannel permission) and user has @@ -32,10 +35,19 @@ class PermissionType { /// User has RemoveOwnChannelMembership or UpdateChannelMembers permission static const String leaveChannel = 'leave-channel'; + /// Ability to receive read events + static const String readEvents = 'read-events'; + /// Capability required to pin a message in a channel /// Corresponds to PinMessage permission static const String pinMessage = 'pin-message'; + /// Capability required to quote a message in a channel + static const String quoteMessage = 'quote-message'; + + /// Capability required to flag a message in a channel + static const String flagMessage = 'flag-message'; + /// User has ability to delete any message in the channel /// User has DeleteMessage permission /// which applies to any message in the channel diff --git a/packages/stream_chat_flutter/lib/src/channel_info.dart b/packages/stream_chat_flutter/lib/src/channel_info.dart index 62bfd1de..791805af 100644 --- a/packages/stream_chat_flutter/lib/src/channel_info.dart +++ b/packages/stream_chat_flutter/lib/src/channel_info.dart @@ -61,7 +61,8 @@ class ChannelInfo extends StatelessWidget { var text = context.translations.membersCountText(memberCount); final onlineCount = members?.where((m) => m.user?.online == true).length ?? 0; - if (onlineCount > 0) { + if (channel.ownCapabilities.contains(PermissionType.connectEvents) && + onlineCount > 0) { text += ', ${context.translations.watchersCountText(onlineCount)}'; } alternativeWidget = Text( diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index fd59489a..bf59991e 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -560,14 +560,8 @@ class _ChannelListViewState extends State { ); }, ), - if ([ - 'admin', - 'owner', - ].contains(channel.state!.members - .firstWhereOrNull( - (m) => m.userId == channel.client.state.currentUser?.id, - ) - ?.role)) + if (channel.ownCapabilities + .contains(PermissionType.deleteChannel)) IconSlideAction( color: backgroundColor, iconWidget: StreamSvgIcon.delete( diff --git a/packages/stream_chat_flutter/lib/src/localization/translations.dart b/packages/stream_chat_flutter/lib/src/localization/translations.dart index 8039ac47..5dfaf60b 100644 --- a/packages/stream_chat_flutter/lib/src/localization/translations.dart +++ b/packages/stream_chat_flutter/lib/src/localization/translations.dart @@ -93,6 +93,9 @@ abstract class Translations { /// The label for search Gif String get searchGifLabel; + /// The label for the MessageInput hint when permission denied on sendMessage + String get sendMessagePermissionError; + /// The label for add a comment or send in case of /// attachments inside [MessageInput] String get addACommentOrSendLabel; @@ -377,6 +380,10 @@ class DefaultTranslations implements Translations { return 'Pinned by ${pinnedBy.name}'; } + @override + String get sendMessagePermissionError => + 'You don\'t have permission to send messages'; + @override String get emptyMessagesText => 'There are no messages currently'; diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index 115069d9..fa5c3c04 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -191,7 +191,9 @@ class _MessageActionsModalState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - if (widget.showReplyMessage && + if (_userPermissions + .contains(PermissionType.quoteMessage) && + widget.showReplyMessage && widget.message.status == MessageSendingStatus.sent) _buildReplyButton(context), if ((widget.showThreadReplyMessage ?? @@ -207,7 +209,10 @@ class _MessageActionsModalState extends State { _isMyMessage && hasEditPermission) _buildEditMessage(context), if (widget.showCopyMessage) _buildCopyButton(context), - if (widget.showFlagButton) _buildFlagButton(context), + if (_userPermissions + .contains(PermissionType.flagMessage) && + widget.showFlagButton) + _buildFlagButton(context), if (widget.showPinButton ?? _userPermissions .contains(PermissionType.pinMessage)) @@ -680,9 +685,7 @@ class _MessageActionsModalState extends State { @override void didChangeDependencies() { final newStreamChannel = StreamChannel.of(context); - _userPermissions = - newStreamChannel.channel.state?.channelState.channel?.ownCapabilities ?? - []; + _userPermissions = newStreamChannel.channel.ownCapabilities; _isMyMessage = widget.message.user!.id == newStreamChannel.channel.client.state.currentUser!.id; super.didChangeDependencies(); diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index e55fac19..6e4102af 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -468,112 +468,127 @@ class MessageInputState extends State void _stopSlowMode() => _slowModeTimer?.cancel(); @override - Widget build(BuildContext context) => MessageValueListenableBuilder( - valueListenable: _effectiveController, - builder: (context, value, _) { - Widget child = DecoratedBox( - decoration: BoxDecoration( - color: _messageInputTheme.inputBackgroundColor, - ), - child: SafeArea( - child: GestureDetector( - onPanUpdate: (details) { - if (details.delta.dy > 0) { - _focusNode.unfocus(); - if (_openFilePickerSection) { - setState(() { - _openFilePickerSection = false; - }); - } + Widget build(BuildContext context) { + if (!StreamChannel.of(context) + .channel + .ownCapabilities + .contains(PermissionType.sendMessage)) { + return SizedBox( + height: 50, + child: FittedBox( + child: Text( + context.translations.sendMessagePermissionError, + style: _messageInputTheme.inputTextStyle, + ), + ), + ); + } + return MessageValueListenableBuilder( + valueListenable: _effectiveController, + builder: (context, value, _) { + Widget child = DecoratedBox( + decoration: BoxDecoration( + color: _messageInputTheme.inputBackgroundColor, + ), + child: SafeArea( + child: GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy > 0) { + _focusNode.unfocus(); + if (_openFilePickerSection) { + setState(() { + _openFilePickerSection = false; + }); } - }, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (_hasQuotedMessage) - Padding( - padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: StreamSvgIcon.reply( - color: _streamChatTheme.colorTheme.disabled, - ), - ), - Text( - context.translations.replyToMessageLabel, - style: - const TextStyle(fontWeight: FontWeight.bold), - ), - IconButton( - visualDensity: VisualDensity.compact, - icon: StreamSvgIcon.closeSmall(), - onPressed: () { - _effectiveController.clearQuotedMessage(); - _focusNode.unfocus(); - }, - ), - ], - ), - ), + } + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (_hasQuotedMessage) Padding( - padding: const EdgeInsets.symmetric(vertical: 8), - child: _buildTextField(context), - ), - if (_effectiveController.value.parentId != null && - !widget.hideSendAsDm) - Padding( - padding: const EdgeInsets.only( - right: 12, - left: 12, - bottom: 12, - ), - child: _buildDmCheckbox(), + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon.reply( + color: _streamChatTheme.colorTheme.disabled, + ), + ), + Text( + context.translations.replyToMessageLabel, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: () { + _effectiveController.clearQuotedMessage(); + _focusNode.unfocus(); + }, + ), + ], ), - _buildFilePickerSection(), - ], - ), + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: _buildTextField(context), + ), + if (_effectiveController.value.parentId != null && + !widget.hideSendAsDm) + Padding( + padding: const EdgeInsets.only( + right: 12, + left: 12, + bottom: 12, + ), + child: _buildDmCheckbox(), + ), + _buildFilePickerSection(), + ], ), ), - ); - if (!_isEditing) { - child = Material( - elevation: 8, - child: child, - ); - } - return MultiOverlay( - childAnchor: Alignment.topCenter, - overlayAnchor: Alignment.bottomCenter, - overlayOptions: [ - OverlayOptions( - visible: _showCommandsOverlay, - widget: _buildCommandsOverlayEntry(), - ), - OverlayOptions( - visible: _focusNode.hasFocus && - _effectiveController.text.isNotEmpty && - _effectiveController.baseOffset > 0 && - _effectiveController.text - .substring( - 0, - _effectiveController.baseOffset, - ) - .contains(':'), - widget: _buildEmojiOverlay(), - ), - OverlayOptions( - visible: _showMentionsOverlay, - widget: _buildMentionsOverlayEntry(), - ), - ...widget.customOverlays, - ], + ), + ); + if (!_isEditing) { + child = Material( + elevation: 8, child: child, ); - }, - ); + } + return MultiOverlay( + childAnchor: Alignment.topCenter, + overlayAnchor: Alignment.bottomCenter, + overlayOptions: [ + OverlayOptions( + visible: _showCommandsOverlay, + widget: _buildCommandsOverlayEntry(), + ), + OverlayOptions( + visible: _focusNode.hasFocus && + _effectiveController.text.isNotEmpty && + _effectiveController.baseOffset > 0 && + _effectiveController.text + .substring( + 0, + _effectiveController.baseOffset, + ) + .contains(':'), + widget: _buildEmojiOverlay(), + ), + OverlayOptions( + visible: _showMentionsOverlay, + widget: _buildMentionsOverlayEntry(), + ), + ...widget.customOverlays, + ], + child: child, + ); + }, + ); + } Flex _buildTextField(BuildContext context) => Flex( direction: Axis.horizontal, @@ -701,7 +716,9 @@ class MessageInputState extends State ? const Offstage() : Wrap( children: [ - if (!widget.disableAttachments) + if (!widget.disableAttachments && + channel.ownCapabilities + .contains(PermissionType.uploadFile)) _buildAttachmentButton(context), if (widget.showCommandsButton && !_isEditing && @@ -881,7 +898,8 @@ class MessageInputState extends State value = value.trim(); final channel = StreamChannel.of(context).channel; - if (value.isNotEmpty) { + if (channel.ownCapabilities.contains(PermissionType.sendTypingEvents) && + value.isNotEmpty) { channel .keyStroke(_effectiveController.value.parentId) // ignore: no-empty-block diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 4531b797..f70acd52 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -1296,9 +1296,7 @@ class _MessageListViewState extends State { void didChangeDependencies() { final newStreamChannel = StreamChannel.of(context); _streamTheme = StreamChatTheme.of(context); - _userPermissions = - newStreamChannel.channel.state?.channelState.channel?.ownCapabilities ?? - []; + _userPermissions = newStreamChannel.channel.ownCapabilities; if (newStreamChannel != streamChannel) { streamChannel = newStreamChannel; diff --git a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart index 4b85412c..37c8afff 100644 --- a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart @@ -45,13 +45,7 @@ class MessageReactionsModal extends StatelessWidget { Widget build(BuildContext context) { final size = MediaQuery.of(context).size; final user = StreamChat.of(context).currentUser; - final _userPermissions = StreamChannel.of(context) - .channel - .state - ?.channelState - .channel - ?.ownCapabilities ?? - []; + final _userPermissions = StreamChannel.of(context).channel.ownCapabilities; final hasReactionPermission = _userPermissions.contains(PermissionType.sendReaction); diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index 60bacc29..d48c5099 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -1250,6 +1250,13 @@ class _MessageWidgetState extends State final channel = StreamChannel.of(context).channel; + if (!channel.ownCapabilities.contains(PermissionType.readEvents)) { + return SendingIndicator( + message: message, + size: style!.fontSize, + ); + } + return BetterStreamBuilder>( stream: channel.state?.readStream, initialData: channel.state?.read, From abac011876ca75adebf99a259a523b9928f26ac9 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 5 Jan 2022 11:41:31 +0100 Subject: [PATCH 065/201] add missing permissions and ui --- .../example/ios/Runner.xcodeproj/project.pbxproj | 4 ++-- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../lib/src/message_input/message_input.dart | 9 ++++++--- .../stream_chat_flutter/lib/src/message_list_view.dart | 5 ++++- packages/stream_chat_flutter/lib/src/message_widget.dart | 9 ++++++--- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj index 1721e6f1..4b1a8d5d 100644 --- a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cf..3db53b6e 100644 --- a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ .channel .ownCapabilities .contains(PermissionType.sendMessage)) { - return SizedBox( - height: 50, - child: FittedBox( + return SafeArea( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 24, + vertical: 15, + ), child: Text( context.translations.sendMessagePermissionError, style: _messageInputTheme.inputTextStyle, diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index f70acd52..8a22920e 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -1147,7 +1147,10 @@ class _MessageListViewState extends State { }, showEditMessage: isMyMessage, showDeleteMessage: isMyMessage, - showThreadReplyMessage: !isThreadMessage, + showThreadReplyMessage: !isThreadMessage && + streamChannel?.channel.ownCapabilities + .contains(PermissionType.sendReply) == + true, showFlagButton: !isMyMessage, borderSide: borderSide, onThreadTap: _onThreadTap, diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index d48c5099..2e97c9da 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -1095,7 +1095,8 @@ class _MessageWidgetState extends State showSendingIndicator: false, padding: const EdgeInsets.all(0), showReactionPickerIndicator: widget.showReactions && - (widget.message.status == MessageSendingStatus.sent), + (widget.message.status == MessageSendingStatus.sent) && + channel.ownCapabilities.contains(PermissionType.sendReaction), showPinHighlight: false, showUserAvatar: widget.message.user!.id == channel.client.state.currentUser!.id @@ -1151,7 +1152,8 @@ class _MessageWidgetState extends State showSendingIndicator: false, padding: const EdgeInsets.all(0), showReactionPickerIndicator: widget.showReactions && - (widget.message.status == MessageSendingStatus.sent), + (widget.message.status == MessageSendingStatus.sent) && + channel.ownCapabilities.contains(PermissionType.sendReaction), showPinHighlight: false, showUserAvatar: widget.message.user!.id == channel.client.state.currentUser!.id @@ -1162,7 +1164,8 @@ class _MessageWidgetState extends State messageTheme: widget.messageTheme, reverse: widget.reverse, message: widget.message, - showReactions: widget.showReactions, + showReactions: widget.showReactions && + channel.ownCapabilities.contains(PermissionType.sendReaction), ), ), ); From ea8055988e8419f2968e92a1581fa679a3155b0c Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 6 Jan 2022 16:45:52 +0530 Subject: [PATCH 066/201] added localizations --- .../stream_chat_localizations/example/lib/add_new_lang.dart | 4 ++++ .../lib/src/stream_chat_localizations_en.dart | 4 ++++ .../lib/src/stream_chat_localizations_es.dart | 4 ++++ .../lib/src/stream_chat_localizations_fr.dart | 4 ++++ .../lib/src/stream_chat_localizations_hi.dart | 3 +++ .../lib/src/stream_chat_localizations_it.dart | 4 ++++ .../lib/src/stream_chat_localizations_ja.dart | 3 +++ .../lib/src/stream_chat_localizations_ko.dart | 3 +++ 8 files changed, 29 insertions(+) diff --git a/packages/stream_chat_localizations/example/lib/add_new_lang.dart b/packages/stream_chat_localizations/example/lib/add_new_lang.dart index 6fa7689b..da6adb9b 100644 --- a/packages/stream_chat_localizations/example/lib/add_new_lang.dart +++ b/packages/stream_chat_localizations/example/lib/add_new_lang.dart @@ -84,6 +84,10 @@ class NnStreamChatLocalizations extends GlobalStreamChatLocalizations { return 'Pinned by ${pinnedBy.name}'; } + @override + String get sendMessagePermissionError => + 'You don\'t have permission to send messages'; + @override String get emptyMessagesText => 'There are no messages currently'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart index c1106cab..9e5955af 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart @@ -60,6 +60,10 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations { return 'Pinned by ${pinnedBy.name}'; } + @override + String get sendMessagePermissionError => + 'You don\'t have permission to send messages'; + @override String get emptyMessagesText => 'There are no messages currently'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart index 49e66184..abf87000 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart @@ -61,6 +61,10 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations { return 'Fijado por ${pinnedBy.name}'; } + @override + String get sendMessagePermissionError => + 'No tienes permiso para enviar mensajes'; + @override String get emptyMessagesText => 'Actualmente no hay mensajes'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart index 0057b7cc..2713105f 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart @@ -61,6 +61,10 @@ class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations { return 'Épinglé par ${pinnedBy.name}'; } + @override + String get sendMessagePermissionError => + 'Vous n\'êtes pas autorisé à envoyer des messages'; + @override String get emptyMessagesText => "Il n'y a pas de messages actuellement"; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart index 0d7e1ec0..25fcd3e2 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart @@ -60,6 +60,9 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations { return '${pinnedBy.name} द्वारा पिन किया गया'; } + @override + String get sendMessagePermissionError => 'आपको संदेश भेजने की अनुमति नहीं है'; + @override String get emptyMessagesText => 'वर्तमान में कोई संदेश नहीं है'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart index 18e961d6..0d53d035 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart @@ -60,6 +60,10 @@ class StreamChatLocalizationsIt extends GlobalStreamChatLocalizations { return 'Messo in evidenza da ${pinnedBy.name}'; } + @override + String get sendMessagePermissionError => + 'Non hai l\'autorizzazione per inviare messaggi'; + @override String get emptyMessagesText => 'Non c\'é nessun messaggio al momento'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart index 8b58630d..b327ea5e 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart @@ -60,6 +60,9 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { return '${pinnedBy.name}のピン'; } + @override + String get sendMessagePermissionError => 'メッセージを送信する権限がありません'; + @override String get emptyMessagesText => '現在、メッセージはありません。'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart index 3693bc11..d866f0dd 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart @@ -60,6 +60,9 @@ class StreamChatLocalizationsKo extends GlobalStreamChatLocalizations { return '${pinnedBy.name}의 핀'; } + @override + String get sendMessagePermissionError => '메시지를 보낼 수 있는 권한이 없습니다'; + @override String get emptyMessagesText => '현재 메시지가 없습니다'; From 11ad0150cea1583a8536cbe90eb6fb84e099bf14 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 6 Jan 2022 17:00:18 +0530 Subject: [PATCH 067/201] added bottom sheet capabilities --- .../stream_chat_flutter/lib/src/channel_bottom_sheet.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart b/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart index 74661c08..92726939 100644 --- a/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart +++ b/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart @@ -155,7 +155,9 @@ class _ChannelBottomSheetState extends State { title: context.translations.viewInfoLabel, onTap: widget.onViewInfoTap, ), - if (!channel.isDistinct) + if (!channel.isDistinct && + channel.ownCapabilities + .contains(PermissionType.leaveChannel)) OptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), @@ -174,7 +176,9 @@ class _ChannelBottomSheetState extends State { }); }, ), - if (isOwner) + if (isOwner && + channel.ownCapabilities + .contains(PermissionType.deleteChannel)) OptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), From 8492d5ed3232532a0a9a4b9587713f66c78d9611 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 6 Jan 2022 17:03:31 +0530 Subject: [PATCH 068/201] added mute channel permission --- packages/stream_chat/lib/src/permission_type.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/stream_chat/lib/src/permission_type.dart b/packages/stream_chat/lib/src/permission_type.dart index 931f2848..993351b7 100644 --- a/packages/stream_chat/lib/src/permission_type.dart +++ b/packages/stream_chat/lib/src/permission_type.dart @@ -35,6 +35,9 @@ class PermissionType { /// User has RemoveOwnChannelMembership or UpdateChannelMembers permission static const String leaveChannel = 'leave-channel'; + /// User can mute channel + static const String muteChannel = 'mute-channel'; + /// Ability to receive read events static const String readEvents = 'read-events'; From dcbdfc32eadd34673cec6383a5ed7975203c7b6b Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 11 Jan 2022 12:48:42 +0530 Subject: [PATCH 069/201] added mip didUpdateWidget for focusnode --- packages/stream_chat_flutter/CHANGELOG.md | 4 ++++ .../lib/src/message_input/message_input.dart | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 258e4cc5..db9fef23 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -12,6 +12,10 @@ - Videos can now be auto-played in `FullScreenMedia` +🔄 Changed + +- Add `didUpdateWidget` override in `MessageInput` widget to handle changes to `focusNode`. + ## 3.3.2 - Updated `stream_chat_flutter_core` dependency to [`3.3.1`](https://pub.dev/packages/stream_chat_flutter_core/changelog). diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index e55fac19..c9443007 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -352,7 +352,7 @@ class MessageInput extends StatefulWidget { class MessageInputState extends State with RestorationMixin { final _imagePicker = ImagePicker(); - late final _focusNode = widget.focusNode ?? FocusNode(); + late var _focusNode = widget.focusNode ?? FocusNode(); bool _inputEnabled = true; bool get _commandEnabled => _effectiveController.value.command != null; bool _showCommandsOverlay = false; @@ -419,6 +419,13 @@ class MessageInputState extends State _controller!.dispose(); _controller = null; } + + // Update _focusNode + if (widget.focusNode != null && oldWidget.focusNode != widget.focusNode) { + _focusNode.removeListener(_focusNodeListener); + _focusNode = widget.focusNode!; + _focusNode.addListener(_focusNodeListener); + } } @override From 8bd826d08d58b98d2766d60d1cf384999e8c9e45 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 11 Jan 2022 12:50:02 +0530 Subject: [PATCH 070/201] change var to focusnode --- .../lib/src/message_input/message_input.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index c9443007..54170b4c 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -352,7 +352,7 @@ class MessageInput extends StatefulWidget { class MessageInputState extends State with RestorationMixin { final _imagePicker = ImagePicker(); - late var _focusNode = widget.focusNode ?? FocusNode(); + late FocusNode _focusNode = widget.focusNode ?? FocusNode(); bool _inputEnabled = true; bool get _commandEnabled => _effectiveController.value.command != null; bool _showCommandsOverlay = false; From e21d32941adcd4f36323757ae6905b4cc82ad434 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Tue, 11 Jan 2022 16:07:11 +0530 Subject: [PATCH 071/201] add listener to effective controller --- .../lib/src/message_input/message_input.dart | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 54170b4c..adcb046a 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -398,11 +398,7 @@ class MessageInputState extends State if (widget.messageInputController == null) { _createLocalController(); } else { - _effectiveController.textEditingController - .removeListener(_onChangedDebounced); - _effectiveController.textEditingController - .addListener(_onChangedDebounced); - if (!_isEditing && _timeOut <= 0) _startSlowMode(); + _initialiseEffectiveController(); } _focusNode.addListener(_focusNodeListener); } @@ -418,6 +414,7 @@ class MessageInputState extends State unregisterFromRestoration(_controller!); _controller!.dispose(); _controller = null; + _initialiseEffectiveController(); } // Update _focusNode @@ -447,6 +444,13 @@ class MessageInputState extends State int _timeOut = 0; Timer? _slowModeTimer; + void _initialiseEffectiveController() { + _effectiveController.textEditingController + .removeListener(_onChangedDebounced); + _effectiveController.textEditingController.addListener(_onChangedDebounced); + if (!_isEditing && _timeOut <= 0) _startSlowMode(); + } + void _startSlowMode() { if (!mounted) { return; From bbfdb655e62943beba6ad41980316df14e0261a0 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 13 Jan 2022 17:30:36 +0530 Subject: [PATCH 072/201] fmt --- .../lib/src/message_input/message_input.dart | 211 +++++++++--------- 1 file changed, 105 insertions(+), 106 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 53e75ad8..ce7a1693 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -490,119 +490,118 @@ class MessageInputState extends State ); } return MessageValueListenableBuilder( - valueListenable: _effectiveController, - builder: (context, value, _) { - Widget child = DecoratedBox( - decoration: BoxDecoration( - color: _messageInputTheme.inputBackgroundColor, - ), - child: SafeArea( - child: GestureDetector( - onPanUpdate: (details) { - if (details.delta.dy > 0) { - _focusNode.unfocus(); - if (_openFilePickerSection) { - setState(() { - _openFilePickerSection = false; - }); - } + valueListenable: _effectiveController, + builder: (context, value, _) { + Widget child = DecoratedBox( + decoration: BoxDecoration( + color: _messageInputTheme.inputBackgroundColor, + ), + child: SafeArea( + child: GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy > 0) { + _focusNode.unfocus(); + if (_openFilePickerSection) { + setState(() { + _openFilePickerSection = false; + }); } - }, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - if (_hasQuotedMessage) - Padding( - padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: StreamSvgIcon.reply( - color: _streamChatTheme.colorTheme.disabled, - ), - ), - Text( - context.translations.replyToMessageLabel, - style: - const TextStyle(fontWeight: FontWeight.bold), - ), - IconButton( - visualDensity: VisualDensity.compact, - icon: StreamSvgIcon.closeSmall(), - onPressed: () { - _effectiveController.clearQuotedMessage(); - _focusNode.unfocus(); - }, - ), - ], - ), - ) - else if (_effectiveController.ogAttachment != null) - OGAttachmentPreview( - attachment: _effectiveController.ogAttachment!, - onDismissPreviewPressed: () { - _effectiveController.clearOGAttachment(); - _focusNode.unfocus(); - }, - ), + } + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (_hasQuotedMessage) Padding( - padding: const EdgeInsets.symmetric(vertical: 8), - child: _buildTextField(context), - ), - if (_effectiveController.value.parentId != null && - !widget.hideSendAsDm) - Padding( - padding: const EdgeInsets.only( - right: 12, - left: 12, - bottom: 12, - ), - child: _buildDmCheckbox(), + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon.reply( + color: _streamChatTheme.colorTheme.disabled, + ), + ), + Text( + context.translations.replyToMessageLabel, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: () { + _effectiveController.clearQuotedMessage(); + _focusNode.unfocus(); + }, + ), + ], ), - _buildFilePickerSection(), - ], - ), + ) + else if (_effectiveController.ogAttachment != null) + OGAttachmentPreview( + attachment: _effectiveController.ogAttachment!, + onDismissPreviewPressed: () { + _effectiveController.clearOGAttachment(); + _focusNode.unfocus(); + }, + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: _buildTextField(context), + ), + if (_effectiveController.value.parentId != null && + !widget.hideSendAsDm) + Padding( + padding: const EdgeInsets.only( + right: 12, + left: 12, + bottom: 12, + ), + child: _buildDmCheckbox(), + ), + _buildFilePickerSection(), + ], ), ), - ); - if (!_isEditing) { - child = Material( - elevation: 8, - child: child, - ); - } - return MultiOverlay( - childAnchor: Alignment.topCenter, - overlayAnchor: Alignment.bottomCenter, - overlayOptions: [ - OverlayOptions( - visible: _showCommandsOverlay, - widget: _buildCommandsOverlayEntry(), - ), - OverlayOptions( - visible: _focusNode.hasFocus && - _effectiveController.text.isNotEmpty && - _effectiveController.baseOffset > 0 && - _effectiveController.text - .substring( - 0, - _effectiveController.baseOffset, - ) - .contains(':'), - widget: _buildEmojiOverlay(), - ), - OverlayOptions( - visible: _showMentionsOverlay, - widget: _buildMentionsOverlayEntry(), - ), - ...widget.customOverlays, - ], + ), + ); + if (!_isEditing) { + child = Material( + elevation: 8, child: child, ); - }, - ); + } + return MultiOverlay( + childAnchor: Alignment.topCenter, + overlayAnchor: Alignment.bottomCenter, + overlayOptions: [ + OverlayOptions( + visible: _showCommandsOverlay, + widget: _buildCommandsOverlayEntry(), + ), + OverlayOptions( + visible: _focusNode.hasFocus && + _effectiveController.text.isNotEmpty && + _effectiveController.baseOffset > 0 && + _effectiveController.text + .substring( + 0, + _effectiveController.baseOffset, + ) + .contains(':'), + widget: _buildEmojiOverlay(), + ), + OverlayOptions( + visible: _showMentionsOverlay, + widget: _buildMentionsOverlayEntry(), + ), + ...widget.customOverlays, + ], + child: child, + ); + }, + ); } Flex _buildTextField(BuildContext context) => Flex( From f2ab29d8c64ad7de7df52066528ec4f04c8f7997 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Thu, 13 Jan 2022 18:08:30 +0530 Subject: [PATCH 073/201] analysis --- packages/stream_chat_flutter/lib/src/channel_list_view.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index bf59991e..c6c3ec35 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -1,4 +1,3 @@ -import 'package:collection/collection.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; From 6729ef1debfea88dc5df82f1438bc95daadd77fa Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 14 Jan 2022 16:36:30 +0530 Subject: [PATCH 074/201] test fixes --- .../lib/src/extension.dart | 1 + .../lib/src/message_actions_modal.dart | 31 ++-- .../test/src/message_action_modal_test.dart | 155 +++++++++++------- .../src/message_reactions_modal_test.dart | 38 +++-- .../stream_chat_flutter/test/src/mocks.dart | 3 + 5 files changed, 136 insertions(+), 92 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/extension.dart b/packages/stream_chat_flutter/lib/src/extension.dart index 73956da6..187865f9 100644 --- a/packages/stream_chat_flutter/lib/src/extension.dart +++ b/packages/stream_chat_flutter/lib/src/extension.dart @@ -46,6 +46,7 @@ extension IterableX on Iterable { /// Useful extension for [PlatformFile] extension PlatformFileX on PlatformFile { /// Converts the [PlatformFile] into [AttachmentFile] + //ignore: avoid_redundant_argument_values AttachmentFile get toAttachmentFile => AttachmentFile( path: kIsWeb ? null : path, name: name, diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index fa5c3c04..37396832 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -28,7 +28,7 @@ class MessageActionsModal extends StatefulWidget { this.showReplyMessage = true, this.showResendMessage = true, this.showThreadReplyMessage, - this.showFlagButton = true, + this.showFlagButton, this.showPinButton, this.editMessageInputBuilder, this.reverse = false, @@ -73,13 +73,13 @@ class MessageActionsModal extends StatefulWidget { final bool showResendMessage; /// Flag for showing reply action - final bool showReplyMessage; + final bool? showReplyMessage; /// Flag for showing thread reply action final bool? showThreadReplyMessage; /// Flag for showing flag action - final bool showFlagButton; + final bool? showFlagButton; /// Flag for showing pin action final bool? showPinButton; @@ -191,14 +191,15 @@ class _MessageActionsModalState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - if (_userPermissions - .contains(PermissionType.quoteMessage) && - widget.showReplyMessage && - widget.message.status == MessageSendingStatus.sent) + if (widget.showReplyMessage ?? + (_userPermissions + .contains(PermissionType.quoteMessage) && + widget.message.status == + MessageSendingStatus.sent)) _buildReplyButton(context), - if ((widget.showThreadReplyMessage ?? + if (widget.showThreadReplyMessage ?? _userPermissions - .contains(PermissionType.sendReply)) && + .contains(PermissionType.sendReply) && (widget.message.status == MessageSendingStatus.sent) && widget.message.parentId == null) @@ -209,16 +210,16 @@ class _MessageActionsModalState extends State { _isMyMessage && hasEditPermission) _buildEditMessage(context), if (widget.showCopyMessage) _buildCopyButton(context), - if (_userPermissions - .contains(PermissionType.flagMessage) && - widget.showFlagButton) + if (widget.showFlagButton ?? + _userPermissions + .contains(PermissionType.flagMessage)) _buildFlagButton(context), if (widget.showPinButton ?? _userPermissions .contains(PermissionType.pinMessage)) _buildPinButton(context), if (widget.showDeleteMessage ?? - _isMyMessage && hasDeletePermission) + (_isMyMessage && hasDeletePermission)) _buildDeleteButton(context), ...widget.customActions .map((action) => _buildCustomAction( @@ -686,8 +687,8 @@ class _MessageActionsModalState extends State { void didChangeDependencies() { final newStreamChannel = StreamChannel.of(context); _userPermissions = newStreamChannel.channel.ownCapabilities; - _isMyMessage = widget.message.user!.id == - newStreamChannel.channel.client.state.currentUser!.id; + _isMyMessage = + widget.message.user?.id == StreamChat.of(context).currentUser?.id; super.didChangeDependencies(); } } diff --git a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart index 92d0a6a6..72b08757 100644 --- a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart @@ -19,6 +19,7 @@ void main() { (WidgetTester tester) async { final client = MockClient(); final clientState = MockClientState(); + final channel = MockChannel(); when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); @@ -32,19 +33,25 @@ void main() { streamChatThemeData: streamTheme, client: client, child: SizedBox( - child: MessageActionsModal( - message: Message( - text: 'test', - user: User( - id: 'user-id', + child: StreamChannel( + channel: channel, + child: MessageActionsModal( + message: Message( + text: 'test', + user: User( + id: 'user-id', + ), + status: MessageSendingStatus.sent, ), - status: MessageSendingStatus.sent, + messageWidget: const Text( + 'test', + key: Key('MessageWidget'), + ), + messageTheme: streamTheme.ownMessageTheme, + showThreadReplyMessage: true, + showEditMessage: true, + showDeleteMessage: true, ), - messageWidget: const Text( - 'test', - key: Key('MessageWidget'), - ), - messageTheme: streamTheme.ownMessageTheme, ), ), ), @@ -66,6 +73,7 @@ void main() { (WidgetTester tester) async { final client = MockClient(); final clientState = MockClientState(); + final channel = MockChannel(); when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); @@ -79,20 +87,23 @@ void main() { streamChatThemeData: streamTheme, client: client, child: SizedBox( - child: MessageActionsModal( - showCopyMessage: false, - showReplyMessage: false, - showThreadReplyMessage: false, - message: Message( - text: 'test', - user: User( - id: 'user-id', + child: StreamChannel( + channel: channel, + child: MessageActionsModal( + showCopyMessage: false, + showReplyMessage: false, + showThreadReplyMessage: false, + message: Message( + text: 'test', + user: User( + id: 'user-id', + ), + ), + messageTheme: streamTheme.ownMessageTheme, + messageWidget: const Text( + 'test', + key: Key('MessageWidget'), ), - ), - messageTheme: streamTheme.ownMessageTheme, - messageWidget: const Text( - 'test', - key: Key('MessageWidget'), ), ), ), @@ -115,6 +126,7 @@ void main() { (WidgetTester tester) async { final client = MockClient(); final clientState = MockClientState(); + final channel = MockChannel(); when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); @@ -130,24 +142,27 @@ void main() { streamChatThemeData: streamTheme, client: client, child: SizedBox( - child: MessageActionsModal( - messageWidget: const Text('test'), - message: Message( - text: 'test', - user: User( - id: 'user-id', + child: StreamChannel( + channel: channel, + child: MessageActionsModal( + messageWidget: const Text('test'), + message: Message( + text: 'test', + user: User( + id: 'user-id', + ), ), + messageTheme: streamTheme.ownMessageTheme, + customActions: [ + MessageAction( + leading: const Icon(Icons.check), + title: const Text('title'), + onTap: (m) { + tapped = true; + }, + ), + ], ), - messageTheme: streamTheme.ownMessageTheme, - customActions: [ - MessageAction( - leading: const Icon(Icons.check), - title: const Text('title'), - onTap: (m) { - tapped = true; - }, - ), - ], ), ), ), @@ -170,6 +185,7 @@ void main() { (WidgetTester tester) async { final client = MockClient(); final clientState = MockClientState(); + final channel = MockChannel(); when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); @@ -186,19 +202,22 @@ void main() { streamChatThemeData: streamTheme, client: client, child: SizedBox( - child: MessageActionsModal( - messageWidget: const Text('test'), - onReplyTap: (m) { - tapped = true; - }, - message: Message( - text: 'test', - user: User( - id: 'user-id', + child: StreamChannel( + channel: channel, + child: MessageActionsModal( + messageWidget: const Text('test'), + onReplyTap: (m) { + tapped = true; + }, + message: Message( + text: 'test', + user: User( + id: 'user-id', + ), + status: MessageSendingStatus.sent, ), - status: MessageSendingStatus.sent, + messageTheme: streamTheme.ownMessageTheme, ), - messageTheme: streamTheme.ownMessageTheme, ), ), ), @@ -217,6 +236,7 @@ void main() { (WidgetTester tester) async { final client = MockClient(); final clientState = MockClientState(); + final channel = MockChannel(); when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); @@ -233,19 +253,23 @@ void main() { streamChatThemeData: streamTheme, client: client, child: SizedBox( - child: MessageActionsModal( - messageWidget: const Text('test'), - onThreadReplyTap: (m) { - tapped = true; - }, - message: Message( - text: 'test', - user: User( - id: 'user-id', + child: StreamChannel( + channel: channel, + child: MessageActionsModal( + messageWidget: const Text('test'), + onThreadReplyTap: (m) { + tapped = true; + }, + message: Message( + text: 'test', + user: User( + id: 'user-id', + ), + status: MessageSendingStatus.sent, ), - status: MessageSendingStatus.sent, + messageTheme: streamTheme.ownMessageTheme, + showThreadReplyMessage: true, ), - messageTheme: streamTheme.ownMessageTheme, ), ), ), @@ -295,6 +319,7 @@ void main() { ), ), messageTheme: streamTheme.ownMessageTheme, + showEditMessage: true, ), ), ), @@ -345,6 +370,7 @@ void main() { ), ), messageTheme: streamTheme.ownMessageTheme, + showEditMessage: true, ), ), ), @@ -545,6 +571,7 @@ void main() { ), ), messageTheme: streamTheme.ownMessageTheme, + showFlagButton: true, ), ), ), @@ -601,6 +628,7 @@ void main() { ), ), messageTheme: streamTheme.ownMessageTheme, + showFlagButton: true, ), ), ), @@ -657,6 +685,7 @@ void main() { ), ), messageTheme: streamTheme.ownMessageTheme, + showFlagButton: true, ), ), ), @@ -711,6 +740,7 @@ void main() { ), ), messageTheme: streamTheme.ownMessageTheme, + showDeleteMessage: true, ), ), ), @@ -767,6 +797,7 @@ void main() { ), ), messageTheme: streamTheme.ownMessageTheme, + showDeleteMessage: true, ), ), ), diff --git a/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart b/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart index 3732ca0d..14877ce7 100644 --- a/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart @@ -13,6 +13,7 @@ void main() { (WidgetTester tester) async { final client = MockClient(); final clientState = MockClientState(); + final channel = MockChannel(); final themeData = ThemeData(); when(() => client.state).thenReturn(clientState); @@ -33,13 +34,16 @@ void main() { home: StreamChat( client: client, streamChatThemeData: streamTheme, - child: MessageReactionsModal( - messageWidget: const Text( - 'test', - key: Key('MessageWidget'), + child: StreamChannel( + channel: channel, + child: MessageReactionsModal( + messageWidget: const Text( + 'test', + key: Key('MessageWidget'), + ), + message: message, + messageTheme: streamTheme.ownMessageTheme, ), - message: message, - messageTheme: streamTheme.ownMessageTheme, ), ), ), @@ -58,6 +62,7 @@ void main() { (WidgetTester tester) async { final client = MockClient(); final clientState = MockClientState(); + final channel = MockChannel(); final themeData = ThemeData(); when(() => client.state).thenReturn(clientState); @@ -89,16 +94,19 @@ void main() { home: StreamChat( client: client, streamChatThemeData: streamTheme, - child: MessageReactionsModal( - messageWidget: const Text( - 'test', - key: Key('MessageWidget'), + child: StreamChannel( + channel: channel, + child: MessageReactionsModal( + messageWidget: const Text( + 'test', + key: Key('MessageWidget'), + ), + message: message, + messageTheme: streamTheme.ownMessageTheme, + reverse: true, + showReactions: false, + onUserAvatarTap: onUserAvatarTap, ), - message: message, - messageTheme: streamTheme.ownMessageTheme, - reverse: true, - showReactions: false, - onUserAvatarTap: onUserAvatarTap, ), ), ), diff --git a/packages/stream_chat_flutter/test/src/mocks.dart b/packages/stream_chat_flutter/test/src/mocks.dart index 443f770c..1fa1e99b 100644 --- a/packages/stream_chat_flutter/test/src/mocks.dart +++ b/packages/stream_chat_flutter/test/src/mocks.dart @@ -21,6 +21,9 @@ class MockChannel extends Mock implements Channel { Future keyStroke([String? parentId]) async { return; } + + @override + List get ownCapabilities => ['send-message']; } class MockChannelState extends Mock implements ChannelClientState { From fbe933b0f281c02dfc9b135bbc7c787f2f09d858 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 14 Jan 2022 16:42:15 +0530 Subject: [PATCH 075/201] fmt --- .../lib/src/message_actions_modal.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index 37396832..f72acf2c 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -198,11 +198,11 @@ class _MessageActionsModalState extends State { MessageSendingStatus.sent)) _buildReplyButton(context), if (widget.showThreadReplyMessage ?? - _userPermissions + _userPermissions .contains(PermissionType.sendReply) && - (widget.message.status == - MessageSendingStatus.sent) && - widget.message.parentId == null) + (widget.message.status == + MessageSendingStatus.sent) && + widget.message.parentId == null) _buildThreadReplyButton(context), if (widget.showResendMessage) _buildResendMessage(context), From cd50ee50d2cec01dcc98c9c889f581ebdb100ead Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 14 Jan 2022 20:06:56 +0530 Subject: [PATCH 076/201] fmt --- packages/stream_chat_flutter/lib/src/extension.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/extension.dart b/packages/stream_chat_flutter/lib/src/extension.dart index 187865f9..754ca8bf 100644 --- a/packages/stream_chat_flutter/lib/src/extension.dart +++ b/packages/stream_chat_flutter/lib/src/extension.dart @@ -46,8 +46,8 @@ extension IterableX on Iterable { /// Useful extension for [PlatformFile] extension PlatformFileX on PlatformFile { /// Converts the [PlatformFile] into [AttachmentFile] - //ignore: avoid_redundant_argument_values AttachmentFile get toAttachmentFile => AttachmentFile( + // ignore: avoid_redundant_argument_values path: kIsWeb ? null : path, name: name, bytes: bytes, From b2e20b8a08d3e78115f1af9dd2cfd9f8a362674a Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 17 Jan 2022 12:13:03 +0100 Subject: [PATCH 077/201] add send-links capability with translation --- .../lib/src/localization/translations.dart | 13 ++++++++++ .../lib/src/message_input/message_input.dart | 25 ++++++++++++++++--- .../example/lib/add_new_lang.dart | 7 ++++++ .../lib/src/stream_chat_localizations_en.dart | 7 ++++++ .../lib/src/stream_chat_localizations_es.dart | 7 ++++++ .../lib/src/stream_chat_localizations_fr.dart | 7 ++++++ .../lib/src/stream_chat_localizations_hi.dart | 7 ++++++ .../lib/src/stream_chat_localizations_it.dart | 7 ++++++ .../lib/src/stream_chat_localizations_ja.dart | 6 +++++ .../lib/src/stream_chat_localizations_ko.dart | 6 +++++ 10 files changed, 88 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/localization/translations.dart b/packages/stream_chat_flutter/lib/src/localization/translations.dart index 5dfaf60b..ed15dad8 100644 --- a/packages/stream_chat_flutter/lib/src/localization/translations.dart +++ b/packages/stream_chat_flutter/lib/src/localization/translations.dart @@ -144,6 +144,12 @@ abstract class Translations { /// The label for "OK" String get okLabel; + /// The label for a link disabled error + String get linkDisabledError; + + /// The additional info on a link disabled error + String get linkDisabledDetails; + /// The label for "add more files" String get addMoreFilesLabel; @@ -692,4 +698,11 @@ class DefaultTranslations implements Translations { @override String attachmentLimitExceedError(int limit) => """ Attachment limit exceeded: it's not possible to add more than $limit attachments"""; + + @override + String get linkDisabledDetails => + 'Sending links is not allowed in this conversation.'; + + @override + String get linkDisabledError => 'Links are disabled'; } diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index ce7a1693..fde57160 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -928,7 +928,9 @@ class MessageInputState extends State _actionsShrunk = value.isNotEmpty && actionsLength > 1; }); - _checkContainsUrl(value, context); + if (channel.ownCapabilities.contains(PermissionType.sendLinks)) { + _checkContainsUrl(value, context); + } _checkCommands(value, context); _checkMentions(value, context); _checkEmoji(value, context); @@ -1646,9 +1648,25 @@ class MessageInputState extends State /// Sends the current message Future sendMessage() async { - final skipEnrichUrl = _effectiveController.ogAttachment == null; - + final streamChannel = StreamChannel.of(context); var message = _effectiveController.value; + if (!streamChannel.channel.ownCapabilities + .contains(PermissionType.sendLinks) && + _urlRegex.hasMatch(message.text ?? '')) { + showInfoDialog( + context, + icon: StreamSvgIcon.error( + color: StreamChatTheme.of(context).colorTheme.accentError, + size: 24, + ), + title: 'Links are disabled', + details: 'Sending links is not allowed in this conversation.', + okText: context.translations.okLabel, + ); + return; + } + + final skipEnrichUrl = _effectiveController.ogAttachment == null; var shouldKeepFocus = widget.shouldKeepFocusAfterMessage; @@ -1660,7 +1678,6 @@ class MessageInputState extends State message = await widget.preMessageSending!(message); } - final streamChannel = StreamChannel.of(context); final channel = streamChannel.channel; if (!channel.state!.isUpToDate) { await streamChannel.reloadChannel(); diff --git a/packages/stream_chat_localizations/example/lib/add_new_lang.dart b/packages/stream_chat_localizations/example/lib/add_new_lang.dart index da6adb9b..d111ead0 100644 --- a/packages/stream_chat_localizations/example/lib/add_new_lang.dart +++ b/packages/stream_chat_localizations/example/lib/add_new_lang.dart @@ -396,6 +396,13 @@ class NnStreamChatLocalizations extends GlobalStreamChatLocalizations { @override String get slowModeOnLabel => 'Slow mode ON'; + + @override + String get linkDisabledDetails => + 'Sending links is not allowed in this conversation.'; + + @override + String get linkDisabledError => 'Links are disabled'; } void main() async { diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart index 9e5955af..08dbb02a 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart @@ -372,4 +372,11 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations { @override String get slowModeOnLabel => 'Slow mode ON'; + + @override + String get linkDisabledDetails => + 'Sending links is not allowed in this conversation.'; + + @override + String get linkDisabledError => 'Links are disabled'; } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart index abf87000..50c748cb 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart @@ -378,4 +378,11 @@ No es posible añadir más de $limit archivos adjuntos @override String get slowModeOnLabel => 'Modo lento activado'; + + @override + String get linkDisabledDetails => + 'No se permite enviar enlaces en esta conversación.'; + + @override + String get linkDisabledError => 'Los enlaces están deshabilitados'; } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart index 2713105f..0671f5af 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart @@ -377,4 +377,11 @@ Limite de pièces jointes dépassée : il n'est pas possible d'ajouter plus de $ @override String get slowModeOnLabel => 'Mode lent activé'; + + @override + String get linkDisabledDetails => + 'L\'envoi de liens n\'est pas autorisé dans cette conversation.'; + + @override + String get linkDisabledError => 'Les liens sont désactivés'; } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart index 25fcd3e2..b8d3f3dc 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart @@ -371,4 +371,11 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations { @override String get slowModeOnLabel => 'स्लो मोड चालू'; + + @override + String get linkDisabledDetails => + 'इस बातचीत में लिंक भेजने की अनुमति नहीं है.'; + + @override + String get linkDisabledError => 'लिंक भेजना प्रतिबंधित'; } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart index 0d53d035..1f7fd048 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart @@ -374,4 +374,11 @@ Attenzione: il limite massimo di $limit file è stato superato. @override String get slowModeOnLabel => 'Slowmode attiva'; + + @override + String get linkDisabledDetails => + 'Non è permesso condividere link in questa convesazione.'; + + @override + String get linkDisabledError => 'I links sono disattivati'; } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart index b327ea5e..1659f637 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart @@ -357,4 +357,10 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations { String attachmentLimitExceedError(int limit) => ''' 添付ファイルの制限を超えました:$limit個のファイル以上を添付することはできません '''; + + @override + String get linkDisabledDetails => 'この会話では、リンクの送信は許可されていません。'; + + @override + String get linkDisabledError => 'リンクが無効になっています'; } diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart index d866f0dd..820d58e4 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart @@ -357,4 +357,10 @@ class StreamChatLocalizationsKo extends GlobalStreamChatLocalizations { @override String attachmentLimitExceedError(int limit) => '첨부 파일 제한 초과: $limit 이상의 첨부 파일을 추가할 수 없습니다'; + + @override + String get linkDisabledDetails => '이 대화에서는 링크를 보낼 수 없습니다.'; + + @override + String get linkDisabledError => '링크가 비활성화되었습니다.'; } From 9b0fb58f1ed0245529c794914346ea77512eeeb6 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 17 Jan 2022 17:07:08 +0100 Subject: [PATCH 078/201] add tld check --- .../lib/src/message_input/message_input.dart | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index fde57160..816a4aec 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -928,9 +928,7 @@ class MessageInputState extends State _actionsShrunk = value.isNotEmpty && actionsLength > 1; }); - if (channel.ownCapabilities.contains(PermissionType.sendLinks)) { - _checkContainsUrl(value, context); - } + _checkContainsUrl(value, context); _checkCommands(value, context); _checkMentions(value, context); _checkEmoji(value, context); @@ -971,7 +969,11 @@ class MessageInputState extends State ..removeWhere((it) => it.group(0)?.split('.').last.isValidTLD() == false); // Reset the og attachment if the text doesn't contain any url - if (matchedUrls.isEmpty) { + if (matchedUrls.isEmpty || + !StreamChannel.of(context) + .channel + .ownCapabilities + .contains(PermissionType.sendLinks)) { _effectiveController ..text = value ..clearOGAttachment(); @@ -1652,7 +1654,8 @@ class MessageInputState extends State var message = _effectiveController.value; if (!streamChannel.channel.ownCapabilities .contains(PermissionType.sendLinks) && - _urlRegex.hasMatch(message.text ?? '')) { + _urlRegex.allMatches(message.text ?? '').any((element) => + element.group(0)?.split('.').last.isValidTLD() == true)) { showInfoDialog( context, icon: StreamSvgIcon.error( From 3c9f87ea2ba6a17ebfa7b80a4b093c965319bda9 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 18 Jan 2022 10:48:42 +0100 Subject: [PATCH 079/201] fix(llc): fix truncate channel payload --- .../stream_chat/lib/src/core/api/channel_api.dart | 1 + .../test/src/core/api/channel_api_test.dart | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat/lib/src/core/api/channel_api.dart b/packages/stream_chat/lib/src/core/api/channel_api.dart index 63cf5458..3285ae32 100644 --- a/packages/stream_chat/lib/src/core/api/channel_api.dart +++ b/packages/stream_chat/lib/src/core/api/channel_api.dart @@ -266,6 +266,7 @@ class ChannelApi { ) async { final response = await _client.post( '${_getChannelUrl(channelId, channelType)}/truncate', + data: {}, ); return EmptyResponse.fromJson(response.data); } diff --git a/packages/stream_chat/test/src/core/api/channel_api_test.dart b/packages/stream_chat/test/src/core/api/channel_api_test.dart index e427ff2e..f008f8b3 100644 --- a/packages/stream_chat/test/src/core/api/channel_api_test.dart +++ b/packages/stream_chat/test/src/core/api/channel_api_test.dart @@ -483,14 +483,21 @@ void main() { final path = '${_getChannelUrl(channelId, channelType)}/truncate'; - when(() => client.post(path)).thenAnswer( - (_) async => successResponse(path, data: {})); + when(() => client.post( + path, + data: {}, + )) + .thenAnswer( + (_) async => successResponse(path, data: {})); final res = await channelApi.truncateChannel(channelId, channelType); expect(res, isNotNull); - verify(() => client.post(path)).called(1); + verify(() => client.post( + path, + data: {}, + )).called(1); verifyNoMoreInteractions(client); }); From 96fae22655d8f15ba0815eddddd69d209d80ebe0 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 18 Jan 2022 16:39:07 +0100 Subject: [PATCH 080/201] update example --- .../example/ios/Runner.xcodeproj/project.pbxproj | 4 ++-- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../example/lib/tutorial_part_4.dart | 16 +++++++++++++--- .../lib/src/paged_value_notifier.dart | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj index 1721e6f1..4b1a8d5d 100644 --- a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cf..3db53b6e 100644 --- a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ); + }, ), ); } diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart index 5ef37374..525e663d 100644 --- a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart +++ b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart @@ -123,7 +123,7 @@ abstract class PagedValue with _$PagedValue { /// Returns `true` if the [PagedValue] is [Success] and has an error. bool get hasError => asSuccess.error != null; - /// + /// int get itemCount { final count = asSuccess.items.length; if (hasNextPage || hasError) return count + 1; From 77d105616d95f52bb2785cbd6fc7973cfb242322 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 25 Jan 2022 15:36:19 +0100 Subject: [PATCH 081/201] fix(llc): use local ownCapabilities for `channel.updated` events --- packages/stream_chat/lib/src/client/channel.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 1693aeff..6a8a13ec 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1569,7 +1569,9 @@ class ChannelClientState { _subscriptions.add(_channel.on(EventType.channelUpdated).listen((Event e) { final channel = e.channel!; updateChannelState(channelState.copyWith( - channel: channel, + channel: channel.copyWith( + ownCapabilities: channelState.channel?.ownCapabilities, + ), members: channel.members, )); })); From 5dc389783c99746eff7129fcad29ab4624f8521e Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 28 Jan 2022 16:38:19 +0530 Subject: [PATCH 082/201] added properties --- .../lib/src/message_input/message_input.dart | 27 ++++++++++++- .../src/message_input/simple_safe_area.dart | 26 +++++++++++++ .../lib/src/theme/message_input_theme.dart | 39 +++++++++++++++++-- 3 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 816a4aec..1470856a 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -13,6 +13,7 @@ import 'package:stream_chat_flutter/src/commands_overlay.dart'; import 'package:stream_chat_flutter/src/emoji/emoji.dart'; import 'package:stream_chat_flutter/src/emoji_overlay.dart'; import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/message_input/simple_safe_area.dart'; import 'package:stream_chat_flutter/src/message_input/tld.dart'; import 'package:stream_chat_flutter/src/multi_overlay.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; @@ -215,6 +216,9 @@ class MessageInput extends StatefulWidget { this.shouldKeepFocusAfterMessage, this.validator = _defaultValidator, this.restorationId, + this.enableSafeArea, + this.elevation, + this.shadow, }) : super(key: key); /// List of options for showing overlays. @@ -331,6 +335,15 @@ class MessageInput extends StatefulWidget { /// Restoration ID to save and restore the state of the MessageInput. final String? restorationId; + /// Wrap [MessageInput] with a [SafeArea widget] + final bool? enableSafeArea; + + /// Elevation of the [MessageInput] + final double? elevation; + + /// Shadow for the [MessageInput] widget + final BoxShadow? shadow; + static bool _defaultValidator(Message message) => message.text?.isNotEmpty == true || message.attachments.isNotEmpty; @@ -495,8 +508,16 @@ class MessageInputState extends State Widget child = DecoratedBox( decoration: BoxDecoration( color: _messageInputTheme.inputBackgroundColor, + boxShadow: widget.shadow == null + ? (_streamChatTheme.messageInputTheme.shadow == null + ? [] + : [_streamChatTheme.messageInputTheme.shadow!]) + : [widget.shadow!], ), - child: SafeArea( + child: SimpleSafeArea( + enabled: widget.enableSafeArea ?? + _streamChatTheme.messageInputTheme.enableSafeArea ?? + true, child: GestureDetector( onPanUpdate: (details) { if (details.delta.dy > 0) { @@ -568,7 +589,9 @@ class MessageInputState extends State ); if (!_isEditing) { child = Material( - elevation: 8, + elevation: widget.elevation ?? + _streamChatTheme.messageInputTheme.elevation ?? + 8, child: child, ); } diff --git a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart new file mode 100644 index 00000000..3ae3c122 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart @@ -0,0 +1,26 @@ +import 'package:flutter/material.dart'; + +class SimpleSafeArea extends StatefulWidget { + final bool enabled; + final Widget child; + + const SimpleSafeArea({ + Key? key, + this.enabled = true, + required this.child, + }) : super(key: key); + + @override + _SimpleSafeAreaState createState() => _SimpleSafeAreaState(); +} + +class _SimpleSafeAreaState extends State { + @override + Widget build(BuildContext context) => SafeArea( + left: widget.enabled, + top: widget.enabled, + right: widget.enabled, + bottom: widget.enabled, + child: widget.child, + ); +} diff --git a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart index 1348af37..9bc8ffd2 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart @@ -66,6 +66,9 @@ class MessageInputThemeData with Diagnosticable { this.borderRadius, this.expandButtonColor, this.linkHighlightColor, + this.enableSafeArea, + this.elevation, + this.shadow, }); /// Duration of the [MessageInput] send button animation @@ -107,6 +110,15 @@ class MessageInputThemeData with Diagnosticable { /// Border radius of [MessageInput] final BorderRadius? borderRadius; + /// Wrap [MessageInput] with a [SafeArea widget] + final bool? enableSafeArea; + + /// Elevation of the [MessageInput] + final double? elevation; + + /// Shadow for the [MessageInput] widget + final BoxShadow? shadow; + /// Returns a new [MessageInputThemeData] replacing some of its properties MessageInputThemeData copyWith({ Duration? sendAnimationDuration, @@ -122,6 +134,9 @@ class MessageInputThemeData with Diagnosticable { Gradient? activeBorderGradient, Gradient? idleBorderGradient, BorderRadius? borderRadius, + bool? enableSafeArea, + double? elevation, + BoxShadow? shadow, }) => MessageInputThemeData( sendAnimationDuration: @@ -139,6 +154,9 @@ class MessageInputThemeData with Diagnosticable { idleBorderGradient: idleBorderGradient ?? this.idleBorderGradient, borderRadius: borderRadius ?? this.borderRadius, linkHighlightColor: linkHighlightColor ?? this.linkHighlightColor, + enableSafeArea: enableSafeArea ?? this.enableSafeArea, + elevation: elevation ?? this.elevation, + shadow: shadow ?? this.shadow, ); /// Linearly interpolate from one [MessageInputThemeData] to another. @@ -169,6 +187,9 @@ class MessageInputThemeData with Diagnosticable { inputDecoration: a.inputDecoration, linkHighlightColor: Color.lerp(a.linkHighlightColor, b.linkHighlightColor, t), + enableSafeArea: a.enableSafeArea, + elevation: Tween(begin: a.elevation, end: b.elevation).transform(t), + shadow: BoxShadow.lerp(a.shadow, b.shadow, t), ); /// Merges [this] [MessageInputThemeData] with the [other] @@ -190,6 +211,9 @@ class MessageInputThemeData with Diagnosticable { borderRadius: other.borderRadius, expandButtonColor: other.expandButtonColor, linkHighlightColor: other.linkHighlightColor, + enableSafeArea: other.enableSafeArea, + elevation: other.elevation, + shadow: other.shadow, ); } @@ -210,7 +234,10 @@ class MessageInputThemeData with Diagnosticable { idleBorderGradient == other.idleBorderGradient && activeBorderGradient == other.activeBorderGradient && borderRadius == other.borderRadius && - linkHighlightColor == other.linkHighlightColor; + linkHighlightColor == other.linkHighlightColor && + enableSafeArea == other.enableSafeArea && + elevation == other.elevation && + shadow == other.shadow; @override int get hashCode => @@ -226,7 +253,10 @@ class MessageInputThemeData with Diagnosticable { idleBorderGradient.hashCode ^ activeBorderGradient.hashCode ^ borderRadius.hashCode ^ - linkHighlightColor.hashCode; + linkHighlightColor.hashCode ^ + elevation.hashCode ^ + shadow.hashCode ^ + enableSafeArea.hashCode; @override void debugFillProperties(DiagnosticPropertiesBuilder properties) { @@ -244,6 +274,9 @@ class MessageInputThemeData with Diagnosticable { ..add(DiagnosticsProperty('idleBorderGradient', idleBorderGradient)) ..add(DiagnosticsProperty('borderRadius', borderRadius)) ..add(ColorProperty('expandButtonColor', expandButtonColor)) - ..add(ColorProperty('linkHighlightColor', linkHighlightColor)); + ..add(ColorProperty('linkHighlightColor', linkHighlightColor)) + ..add(DiagnosticsProperty('elevation', elevation)) + ..add(DiagnosticsProperty('shadow', shadow)) + ..add(DiagnosticsProperty('enableSafeArea', enableSafeArea)); } } From 9edf02588ddfc4a8b27f149ce1c3385279164b0c Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 28 Jan 2022 16:39:57 +0530 Subject: [PATCH 083/201] docs --- .../lib/src/message_input/simple_safe_area.dart | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart index 3ae3c122..c047ec58 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart @@ -1,15 +1,17 @@ import 'package:flutter/material.dart'; +/// A [SafeArea] with an enabled toggle class SimpleSafeArea extends StatefulWidget { - final bool enabled; - final Widget child; - + /// Constructor for [SimpleSafeArea] const SimpleSafeArea({ Key? key, this.enabled = true, required this.child, }) : super(key: key); + final bool enabled; + final Widget child; + @override _SimpleSafeAreaState createState() => _SimpleSafeAreaState(); } From 675d33281609be8a91049b45c76b8ee31a7b1f1f Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 28 Jan 2022 16:40:37 +0530 Subject: [PATCH 084/201] docs --- .../lib/src/message_input/simple_safe_area.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart index c047ec58..b91684ed 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart @@ -9,7 +9,10 @@ class SimpleSafeArea extends StatefulWidget { required this.child, }) : super(key: key); + /// Wrap [child] with [SafeArea] final bool enabled; + + /// Child widget to wrap final Widget child; @override From 0524d171f41232a35d6766187735920f9af6521f Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Fri, 28 Jan 2022 16:42:19 +0530 Subject: [PATCH 085/201] changelog --- packages/stream_chat_flutter/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 67a45ddc..6ecc7e60 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -14,6 +14,7 @@ ✅ Added - Videos can now be auto-played in `FullScreenMedia` +- Extra customisation options for `MessageInput` 🔄 Changed From 449247bc4c77f7a1e49df56980bcf0fdf7c92a18 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 28 Jan 2022 15:23:54 +0100 Subject: [PATCH 086/201] chore(repo): update melos in ci --- .github/workflows/stream_flutter_workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stream_flutter_workflow.yml b/.github/workflows/stream_flutter_workflow.yml index cc093a31..c5d4dbe0 100644 --- a/.github/workflows/stream_flutter_workflow.yml +++ b/.github/workflows/stream_flutter_workflow.yml @@ -3,7 +3,7 @@ name: stream_flutter_workflow env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' flutter_version: "2.5.1" - melos_version: "1.0.0-dev.10" + melos_version: "1.2.0" on: pull_request: From 4690106ff9b1c5eeabdc3a67e14e7e768cefdd34 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 28 Jan 2022 15:59:19 +0100 Subject: [PATCH 087/201] chore(llc): use path dependency for stream_chat example --- packages/stream_chat/example/pubspec.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat/example/pubspec.yaml b/packages/stream_chat/example/pubspec.yaml index cf1f3874..f3fad2d1 100644 --- a/packages/stream_chat/example/pubspec.yaml +++ b/packages/stream_chat/example/pubspec.yaml @@ -11,7 +11,8 @@ dependencies: cupertino_icons: ^1.0.0 flutter: sdk: flutter - stream_chat: ^2.2.1 + stream_chat: + path: ../ dev_dependencies: flutter_test: From 291365187b7734cac78a1edee5e3b099b7f07f22 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 28 Jan 2022 16:46:14 +0100 Subject: [PATCH 088/201] chore(llc): enable verbose mode --- .github/workflows/stream_flutter_workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stream_flutter_workflow.yml b/.github/workflows/stream_flutter_workflow.yml index c5d4dbe0..c8cd0c16 100644 --- a/.github/workflows/stream_flutter_workflow.yml +++ b/.github/workflows/stream_flutter_workflow.yml @@ -34,7 +34,7 @@ jobs: run: | flutter pub global activate melos ${{ env.melos_version }} - name: "Bootstrap Workspace" - run: melos bootstrap + run: melos bootstrap --verbose - name: "Dart Analyze" run: | melos run analyze From 281c0455196453bba531a3206a7a820ad1e301e3 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 28 Jan 2022 17:13:05 +0100 Subject: [PATCH 089/201] chore(repo): bump flutter version --- .github/workflows/stream_flutter_workflow.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stream_flutter_workflow.yml b/.github/workflows/stream_flutter_workflow.yml index c8cd0c16..20a76230 100644 --- a/.github/workflows/stream_flutter_workflow.yml +++ b/.github/workflows/stream_flutter_workflow.yml @@ -2,7 +2,7 @@ name: stream_flutter_workflow env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' - flutter_version: "2.5.1" + flutter_version: "2.8.1" melos_version: "1.2.0" on: From 99af4ab8e2b2836141c4fb357a05b6ba57d2b786 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 31 Jan 2022 12:52:43 +0530 Subject: [PATCH 090/201] feat(llc): Add `queryBannedUsers` endpoint. Signed-off-by: xsahil03x --- .../stream_chat/lib/src/client/channel.dart | 15 ++++ .../stream_chat/lib/src/client/client.dart | 12 +++ .../lib/src/core/api/moderation_api.dart | 24 +++++- .../lib/src/core/api/responses.dart | 13 +++ .../lib/src/core/api/responses.g.dart | 9 +++ .../lib/src/core/models/banned_user.dart | 80 +++++++++++++++++++ .../lib/src/core/models/banned_user.g.dart | 36 +++++++++ 7 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 packages/stream_chat/lib/src/core/models/banned_user.dart create mode 100644 packages/stream_chat/lib/src/core/models/banned_user.g.dart diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 6a8a13ec..28266b14 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1290,6 +1290,21 @@ class Channel { pagination: pagination, ); + /// Query channel banned users. + Future queryBannedUsers({ + Filter? filter, + List? sort, + PaginationParams? pagination, + }) { + _checkInitialized(); + filter ??= Filter.equal('channel_cid', cid!); + return _client.queryBannedUsers( + filter: filter, + sort: sort, + pagination: pagination, + ); + } + /// Mutes the channel. Future mute({Duration? expiration}) { _checkInitialized(); diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 080a1923..52d72620 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -687,6 +687,18 @@ class StreamChatClient { return response; } + /// Query banned users. + Future queryBannedUsers({ + required Filter filter, + List? sort, + PaginationParams? pagination, + }) => + _chatApi.moderation.queryBannedUsers( + filter: filter, + sort: sort, + pagination: pagination, + ); + /// A message search. Future search( Filter filter, { diff --git a/packages/stream_chat/lib/src/core/api/moderation_api.dart b/packages/stream_chat/lib/src/core/api/moderation_api.dart index 533fbf63..30633458 100644 --- a/packages/stream_chat/lib/src/core/api/moderation_api.dart +++ b/packages/stream_chat/lib/src/core/api/moderation_api.dart @@ -1,5 +1,7 @@ -import 'package:stream_chat/src/core/api/responses.dart'; +import 'dart:convert'; + import 'package:stream_chat/src/core/http/stream_http_client.dart'; +import 'package:stream_chat/stream_chat.dart'; /// Defines the api dedicated to moderation operations class ModerationApi { @@ -125,4 +127,24 @@ class ModerationApi { ); return EmptyResponse.fromJson(response.data); } + + /// Queries banned users. + Future queryBannedUsers({ + Filter? filter, + List? sort, + PaginationParams? pagination, + }) async { + final response = await _client.get( + '/query_banned_users', + queryParameters: { + 'payload': jsonEncode({ + if (sort != null) 'sort': sort, + if (filter != null) 'filter_conditions': filter, + if (pagination != null) ...pagination.toJson(), + }), + }, + ); + + return QueryBannedUsersResponse.fromJson(response.data); + } } diff --git a/packages/stream_chat/lib/src/core/api/responses.dart b/packages/stream_chat/lib/src/core/api/responses.dart index 937e0150..d608c5aa 100644 --- a/packages/stream_chat/lib/src/core/api/responses.dart +++ b/packages/stream_chat/lib/src/core/api/responses.dart @@ -1,6 +1,7 @@ import 'package:json_annotation/json_annotation.dart'; import 'package:stream_chat/src/client/client.dart'; import 'package:stream_chat/src/core/error/error.dart'; +import 'package:stream_chat/src/core/models/banned_user.dart'; import 'package:stream_chat/src/core/models/channel_model.dart'; import 'package:stream_chat/src/core/models/channel_state.dart'; import 'package:stream_chat/src/core/models/device.dart'; @@ -106,6 +107,18 @@ class QueryUsersResponse extends _BaseResponse { _$QueryUsersResponseFromJson(json); } +/// Model response for [StreamChatClient.queryBannedUsers] api call +@JsonSerializable(createToJson: false) +class QueryBannedUsersResponse extends _BaseResponse { + /// List of users returned by the query + @JsonKey(defaultValue: []) + late List bans; + + /// Create a new instance from a json + static QueryBannedUsersResponse fromJson(Map json) => + _$QueryBannedUsersResponseFromJson(json); +} + /// Model response for [channel.getReactions] api call @JsonSerializable(createToJson: false) class QueryReactionsResponse extends _BaseResponse { diff --git a/packages/stream_chat/lib/src/core/api/responses.g.dart b/packages/stream_chat/lib/src/core/api/responses.g.dart index fbcdd252..991b39f6 100644 --- a/packages/stream_chat/lib/src/core/api/responses.g.dart +++ b/packages/stream_chat/lib/src/core/api/responses.g.dart @@ -62,6 +62,15 @@ QueryUsersResponse _$QueryUsersResponseFromJson(Map json) => .toList() ?? []; +QueryBannedUsersResponse _$QueryBannedUsersResponseFromJson( + Map json) => + QueryBannedUsersResponse() + ..duration = json['duration'] as String? + ..bans = (json['bans'] as List?) + ?.map((e) => BannedUser.fromJson(e as Map)) + .toList() ?? + []; + QueryReactionsResponse _$QueryReactionsResponseFromJson( Map json) => QueryReactionsResponse() diff --git a/packages/stream_chat/lib/src/core/models/banned_user.dart b/packages/stream_chat/lib/src/core/models/banned_user.dart new file mode 100644 index 00000000..d5576615 --- /dev/null +++ b/packages/stream_chat/lib/src/core/models/banned_user.dart @@ -0,0 +1,80 @@ +import 'package:equatable/equatable.dart'; +import 'package:json_annotation/json_annotation.dart'; +import 'package:stream_chat/src/core/models/channel_model.dart'; +import 'package:stream_chat/src/core/models/user.dart'; + +part 'banned_user.g.dart'; + +/// Contains information about a [User] that was banned from a [Channel] or App. +@JsonSerializable() +class BannedUser extends Equatable { + /// Creates a new instance of [BannedUser] + const BannedUser({ + required this.user, + this.bannedBy, + this.channel, + this.createdAt, + this.expires, + this.shadow = false, + this.reason, + }); + + /// Create a new instance from a json + factory BannedUser.fromJson(Map json) => + _$BannedUserFromJson(json); + + /// Banned user. + final User user; + + /// User that banned the [user]. + final User? bannedBy; + + /// Channel where the [user] was banned. + final ChannelModel? channel; + + /// Timestamp when the [user] was banned. + final DateTime? createdAt; + + /// Timestamp when the [user] will be unbanned. + final DateTime? expires; + + /// Whether the [user] is a shadow banned user. + final bool shadow; + + /// Reason for the ban. + final String? reason; + + /// Serialize to json + Map toJson() => _$BannedUserToJson(this); + + /// Returns a copy of this object with the given fields updated. + BannedUser copyWith({ + User? user, + User? bannedBy, + ChannelModel? channel, + DateTime? createdAt, + DateTime? expires, + bool? shadow, + String? reason, + }) => + BannedUser( + user: user ?? this.user, + bannedBy: bannedBy ?? this.bannedBy, + channel: channel ?? this.channel, + createdAt: createdAt ?? this.createdAt, + expires: expires ?? this.expires, + shadow: shadow ?? this.shadow, + reason: reason ?? this.reason, + ); + + @override + List get props => [ + user, + bannedBy, + channel, + createdAt, + expires, + shadow, + reason, + ]; +} diff --git a/packages/stream_chat/lib/src/core/models/banned_user.g.dart b/packages/stream_chat/lib/src/core/models/banned_user.g.dart new file mode 100644 index 00000000..1f2a335b --- /dev/null +++ b/packages/stream_chat/lib/src/core/models/banned_user.g.dart @@ -0,0 +1,36 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'banned_user.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +BannedUser _$BannedUserFromJson(Map json) => BannedUser( + user: User.fromJson(json['user'] as Map), + bannedBy: json['banned_by'] == null + ? null + : User.fromJson(json['banned_by'] as Map), + channel: json['channel'] == null + ? null + : ChannelModel.fromJson(json['channel'] as Map), + createdAt: json['created_at'] == null + ? null + : DateTime.parse(json['created_at'] as String), + expires: json['expires'] == null + ? null + : DateTime.parse(json['expires'] as String), + shadow: json['shadow'] as bool? ?? false, + reason: json['reason'] as String?, + ); + +Map _$BannedUserToJson(BannedUser instance) => + { + 'user': instance.user.toJson(), + 'banned_by': instance.bannedBy?.toJson(), + 'channel': instance.channel?.toJson(), + 'created_at': instance.createdAt?.toIso8601String(), + 'expires': instance.expires?.toIso8601String(), + 'shadow': instance.shadow, + 'reason': instance.reason, + }; From e1bdb07128929f6f0762a3a32f040b8183225cb6 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 31 Jan 2022 12:53:38 +0530 Subject: [PATCH 091/201] feat(llc): deprecate `channel.banUser` in favor of `channel.banMember`. Signed-off-by: xsahil03x --- packages/stream_chat/lib/src/client/channel.dart | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 28266b14..7d026020 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1318,9 +1318,17 @@ class Channel { } /// Bans the user with given [userID] from the channel. + @Deprecated("Use 'banMember' instead") Future banUser( String userID, Map options, + ) => + banMember(userID, options); + + /// Bans the member with given [userID] from the channel. + Future banMember( + String userID, + Map options, ) async { _checkInitialized(); final opts = Map.from(options) @@ -1332,7 +1340,11 @@ class Channel { } /// Remove the ban for the user with given [userID] in the channel. - Future unbanUser(String userID) async { + @Deprecated("Use 'unbanMember' instead") + Future unbanUser(String userID) => unbanMember(userID); + + /// Remove the ban for the member with given [userID] in the channel. + Future unbanMember(String userID) async { _checkInitialized(); return _client.unbanUser(userID, { 'type': type, From d82c533c30782f1039dff555e786a900ccf5d29a Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 31 Jan 2022 12:54:20 +0530 Subject: [PATCH 092/201] fix(llc): Update channel state when member gets banned/unbanned. Signed-off-by: xsahil03x --- .../stream_chat/lib/src/client/channel.dart | 52 +++++++++++++++++++ .../lib/src/core/models/member.dart | 7 +++ .../lib/src/core/models/member.g.dart | 4 ++ .../lib/src/core/models/own_user.dart | 4 ++ .../lib/src/core/models/own_user.g.dart | 3 ++ .../stream_chat/lib/src/core/models/user.dart | 16 ++++-- .../lib/src/core/models/user.g.dart | 6 ++- packages/stream_chat/lib/src/event_type.dart | 6 +++ 8 files changed, 94 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 7d026020..52409dda 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1515,6 +1515,10 @@ class ChannelClientState { _listenMemberRemoved(); + _listenMemberBanned(); + + _listenMemberUnbanned(); + _startCleaning(); _startCleaningPinnedMessages(); @@ -1615,6 +1619,54 @@ class ChannelClientState { })); } + void _listenMemberBanned() { + _subscriptions.add(_channel + .on(EventType.userBanned) + .where((it) => it.cid != null) // filters channel ban from app ban + .listen( + (event) async { + final user = event.user!; + final member = await _channel + .queryMembers(filter: Filter.equal('id', user.id)) + .then((it) => it.members.first); + + _updateMember(member); + }, + )); + } + + void _listenMemberUnbanned() { + _subscriptions.add(_channel + .on(EventType.userUnbanned) + .where((it) => it.cid != null) // filters channel ban from app ban + .listen( + (event) async { + final user = event.user!; + final member = await _channel + .queryMembers(filter: Filter.equal('id', user.id)) + .then((it) => it.members.first); + + _updateMember(member); + }, + )); + } + + void _updateMember(Member member) { + final currentMembers = [...members]; + final memberIndex = currentMembers.indexWhere( + (m) => m.userId == member.userId, + ); + + if (memberIndex == -1) return; + currentMembers[memberIndex] = member; + + updateChannelState( + channelState.copyWith( + members: currentMembers, + ), + ); + } + /// Flag which indicates if [ChannelClientState] contain latest/recent messages or not. /// /// This flag should be managed by UI sdks. diff --git a/packages/stream_chat/lib/src/core/models/member.dart b/packages/stream_chat/lib/src/core/models/member.dart index 0dae7c04..e8b0ecff 100644 --- a/packages/stream_chat/lib/src/core/models/member.dart +++ b/packages/stream_chat/lib/src/core/models/member.dart @@ -20,6 +20,7 @@ class Member extends Equatable { DateTime? createdAt, DateTime? updatedAt, this.banned = false, + this.banExpires, this.shadowBanned = false, }) : createdAt = createdAt ?? DateTime.now(), updatedAt = updatedAt ?? DateTime.now(); @@ -56,6 +57,9 @@ class Member extends Equatable { /// True if the member is banned from the channel final bool banned; + /// The date at which the ban will expire. + final DateTime? banExpires; + /// True if the member is shadow banned from the channel final bool shadowBanned; @@ -77,6 +81,7 @@ class Member extends Equatable { DateTime? createdAt, DateTime? updatedAt, bool? banned, + DateTime? banExpires, bool? shadowBanned, }) => Member( @@ -85,6 +90,7 @@ class Member extends Equatable { inviteRejectedAt: inviteRejectedAt ?? this.inviteRejectedAt, invited: invited ?? this.invited, banned: banned ?? this.banned, + banExpires: banExpires ?? this.banExpires, shadowBanned: shadowBanned ?? this.shadowBanned, role: role ?? this.role, userId: userId ?? this.userId, @@ -106,6 +112,7 @@ class Member extends Equatable { userId, isModerator, banned, + banExpires, shadowBanned, createdAt, updatedAt, diff --git a/packages/stream_chat/lib/src/core/models/member.g.dart b/packages/stream_chat/lib/src/core/models/member.g.dart index 0e711b1a..4da3cfd2 100644 --- a/packages/stream_chat/lib/src/core/models/member.g.dart +++ b/packages/stream_chat/lib/src/core/models/member.g.dart @@ -27,6 +27,9 @@ Member _$MemberFromJson(Map json) => Member( ? null : DateTime.parse(json['updated_at'] as String), banned: json['banned'] as bool? ?? false, + banExpires: json['ban_expires'] == null + ? null + : DateTime.parse(json['ban_expires'] as String), shadowBanned: json['shadow_banned'] as bool? ?? false, ); @@ -39,6 +42,7 @@ Map _$MemberToJson(Member instance) => { 'user_id': instance.userId, 'is_moderator': instance.isModerator, 'banned': instance.banned, + 'ban_expires': instance.banExpires?.toIso8601String(), 'shadow_banned': instance.shadowBanned, 'created_at': instance.createdAt.toIso8601String(), 'updated_at': instance.updatedAt.toIso8601String(), diff --git a/packages/stream_chat/lib/src/core/models/own_user.dart b/packages/stream_chat/lib/src/core/models/own_user.dart index 9077431b..5246f48e 100644 --- a/packages/stream_chat/lib/src/core/models/own_user.dart +++ b/packages/stream_chat/lib/src/core/models/own_user.dart @@ -26,6 +26,7 @@ class OwnUser extends User { bool online = false, Map extraData = const {}, bool banned = false, + DateTime? banExpires, List teams = const [], String? language, }) : super( @@ -39,6 +40,7 @@ class OwnUser extends User { online: online, extraData: extraData, banned: banned, + banExpires: banExpires, teams: teams, language: language, ); @@ -75,6 +77,7 @@ class OwnUser extends User { bool? online, Map? extraData, bool? banned, + DateTime? banExpires, List? teams, List? channelMutes, List? devices, @@ -91,6 +94,7 @@ class OwnUser extends User { // if null, it will be retrieved from extraData['image'] image: image, banned: banned ?? this.banned, + banExpires: banExpires ?? this.banExpires, createdAt: createdAt ?? this.createdAt, updatedAt: updatedAt ?? this.updatedAt, lastActive: lastActive ?? this.lastActive, diff --git a/packages/stream_chat/lib/src/core/models/own_user.g.dart b/packages/stream_chat/lib/src/core/models/own_user.g.dart index 41b6e2f5..be8f2d45 100644 --- a/packages/stream_chat/lib/src/core/models/own_user.g.dart +++ b/packages/stream_chat/lib/src/core/models/own_user.g.dart @@ -35,6 +35,9 @@ OwnUser _$OwnUserFromJson(Map json) => OwnUser( online: json['online'] as bool? ?? false, extraData: json['extra_data'] as Map? ?? const {}, banned: json['banned'] as bool? ?? false, + banExpires: json['ban_expires'] == null + ? null + : DateTime.parse(json['ban_expires'] as String), teams: (json['teams'] as List?)?.map((e) => e as String).toList() ?? const [], diff --git a/packages/stream_chat/lib/src/core/models/user.dart b/packages/stream_chat/lib/src/core/models/user.dart index c6f62b6b..83b2a502 100644 --- a/packages/stream_chat/lib/src/core/models/user.dart +++ b/packages/stream_chat/lib/src/core/models/user.dart @@ -41,6 +41,7 @@ class User extends Equatable { Map extraData = const {}, this.online = false, this.banned = false, + this.banExpires, this.teams = const [], this.language, }) : createdAt = createdAt ?? DateTime.now(), @@ -67,6 +68,8 @@ class User extends Equatable { 'last_active', 'online', 'banned', + 'ban_expires', + 'dashboard_ban_channel_cid', 'teams', 'language', ]; @@ -129,14 +132,18 @@ class User extends Equatable { ) final bool banned; - /// Map of custom user extraData. - @JsonKey(includeIfNull: false) - final Map extraData; + /// The date at which the ban will expire. + @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) + final DateTime? banExpires; /// The language this user prefers. @JsonKey(includeIfNull: false) final String? language; + /// Map of custom user extraData. + @JsonKey(includeIfNull: false) + final Map extraData; + /// List of users to list of userIds. static List? toIds(List? users) => users?.map((u) => u.id).toList(); @@ -158,6 +165,7 @@ class User extends Equatable { bool? online, Map? extraData, bool? banned, + DateTime? banExpires, List? teams, String? language, }) => @@ -174,6 +182,7 @@ class User extends Equatable { online: online ?? this.online, extraData: extraData ?? this.extraData, banned: banned ?? this.banned, + banExpires: banExpires ?? this.banExpires, teams: teams ?? this.teams, language: language ?? this.language, ); @@ -186,6 +195,7 @@ class User extends Equatable { online, extraData, banned, + banExpires, teams, language, ]; diff --git a/packages/stream_chat/lib/src/core/models/user.g.dart b/packages/stream_chat/lib/src/core/models/user.g.dart index 82c799a0..9e6ae3dc 100644 --- a/packages/stream_chat/lib/src/core/models/user.g.dart +++ b/packages/stream_chat/lib/src/core/models/user.g.dart @@ -21,6 +21,9 @@ User _$UserFromJson(Map json) => User( extraData: json['extra_data'] as Map? ?? const {}, online: json['online'] as bool? ?? false, banned: json['banned'] as bool? ?? false, + banExpires: json['ban_expires'] == null + ? null + : DateTime.parse(json['ban_expires'] as String), teams: (json['teams'] as List?)?.map((e) => e as String).toList() ?? const [], @@ -45,7 +48,8 @@ Map _$UserToJson(User instance) { writeNotNull('last_active', readonly(instance.lastActive)); writeNotNull('online', readonly(instance.online)); writeNotNull('banned', readonly(instance.banned)); - val['extra_data'] = instance.extraData; + writeNotNull('ban_expires', readonly(instance.banExpires)); writeNotNull('language', instance.language); + val['extra_data'] = instance.extraData; return val; } diff --git a/packages/stream_chat/lib/src/event_type.dart b/packages/stream_chat/lib/src/event_type.dart index 87529399..80628f2f 100644 --- a/packages/stream_chat/lib/src/event_type.dart +++ b/packages/stream_chat/lib/src/event_type.dart @@ -73,6 +73,12 @@ class EventType { /// Event sent when a member is removed to a channel static const String memberRemoved = 'member.removed'; + /// Event sent when a member is removed to a channel + static const String userBanned = 'user.banned'; + + /// Event sent when a member is removed to a channel + static const String userUnbanned = 'user.unbanned'; + /// Event sent when a channel is hidden static const String channelHidden = 'channel.hidden'; From 3b00fecaec4ee1450c35031db8db0a21957fc4d0 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 31 Jan 2022 13:10:02 +0530 Subject: [PATCH 093/201] chore(llc): update CHANGELOG.md Signed-off-by: xsahil03x --- packages/stream_chat/CHANGELOG.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index 655491cf..dad87973 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,14 +1,22 @@ ## Upcoming +🐞 Fixed + +- [[#857]](https://github.com/GetStream/stream-chat-flutter/issues/857) Channel now listens for member ban/unban and + updates the channel state with the latest data. + 🔄 Changed -- `client.location` is now deprecated in favor of the new [edge server](https://getstream.io/blog/chat-edge-infrastructure) and will be removed in v4.0.0. +- `client.location` is now deprecated in favor of the + new [edge server](https://getstream.io/blog/chat-edge-infrastructure) and will be removed in v4.0.0. +- `channel.banUser`, `channel.unbanUser` is now deprecated in favor of the new `channel.banMember` + and `channel.unbanMember` and will be removed in v4.0.0. ✅ Added - Added `client.enrichUrl` endpoint for enriching URLs with metadata. - Fixed `unreadCount` after removing user from a channel. -- `ChannelModel` now supplies individual user capabilities. +- Added `client.queryBannedUsers`, `channel.queryBannedUsers` endpoint for querying banned users. ## 3.3.1 From 7e2a1846d832aecbb0ae0112ad9cb5d1bcd96dce Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 31 Jan 2022 12:35:29 +0100 Subject: [PATCH 094/201] chore(repo): fix analysis --- packages/stream_chat/lib/src/client/channel.dart | 6 ------ .../stream_chat/lib/src/core/error/stream_chat_error.dart | 1 - .../stream_chat/lib/src/core/models/attachment_file.dart | 1 - packages/stream_chat/test/src/client/channel_test.dart | 5 ++--- .../stream_chat/test/src/client/retry_queue_test.dart | 1 - .../stream_chat/test/src/core/api/channel_api_test.dart | 2 -- .../stream_chat/test/src/core/api/responses_test.dart | 6 ------ packages/stream_chat/test/src/core/api/user_api_test.dart | 2 -- .../test/src/core/models/channel_state_test.dart | 5 ----- packages/stream_chat/test/src/core/models/event_test.dart | 2 -- .../stream_chat/test/src/core/models/own_user_test.dart | 2 -- packages/stream_chat/test/src/fakes.dart | 1 - packages/stream_chat_flutter/example/lib/main.dart | 2 -- .../lib/src/attachment/attachment_title.dart | 2 -- .../lib/src/attachment/attachment_widget.dart | 1 - .../lib/src/attachment/giphy_attachment.dart | 2 -- .../lib/src/attachment/image_attachment.dart | 3 --- .../lib/src/attachment/url_attachment.dart | 1 - .../lib/src/attachment/video_attachment.dart | 2 -- .../lib/src/attachment_actions_modal.dart | 3 --- packages/stream_chat_flutter/lib/src/back_button.dart | 2 -- packages/stream_chat_flutter/lib/src/channel_avatar.dart | 1 - packages/stream_chat_flutter/lib/src/channel_header.dart | 5 ----- packages/stream_chat_flutter/lib/src/channel_info.dart | 1 - .../stream_chat_flutter/lib/src/channel_list_header.dart | 4 ---- .../stream_chat_flutter/lib/src/channel_list_view.dart | 4 ---- packages/stream_chat_flutter/lib/src/channel_name.dart | 2 -- packages/stream_chat_flutter/lib/src/channel_preview.dart | 4 ---- .../lib/src/connection_status_builder.dart | 1 - .../stream_chat_flutter/lib/src/full_screen_media.dart | 2 -- packages/stream_chat_flutter/lib/src/gallery_footer.dart | 3 --- packages/stream_chat_flutter/lib/src/gradient_avatar.dart | 1 - packages/stream_chat_flutter/lib/src/image_group.dart | 3 --- packages/stream_chat_flutter/lib/src/media_list_view.dart | 1 - .../lib/src/message_actions_modal.dart | 8 -------- .../stream_chat_flutter/lib/src/message_list_view.dart | 8 -------- .../lib/src/message_reactions_modal.dart | 5 ----- .../stream_chat_flutter/lib/src/message_search_item.dart | 2 -- .../lib/src/message_search_list_view.dart | 4 ---- packages/stream_chat_flutter/lib/src/message_text.dart | 2 -- packages/stream_chat_flutter/lib/src/message_widget.dart | 8 -------- .../lib/src/quoted_message_widget.dart | 2 -- packages/stream_chat_flutter/lib/src/reaction_bubble.dart | 3 --- packages/stream_chat_flutter/lib/src/stream_chat.dart | 4 ---- .../stream_chat_flutter/lib/src/stream_chat_theme.dart | 7 ------- packages/stream_chat_flutter/lib/src/stream_svg_icon.dart | 1 - packages/stream_chat_flutter/lib/src/thread_header.dart | 2 -- .../stream_chat_flutter/lib/src/unread_indicator.dart | 1 - packages/stream_chat_flutter/lib/src/user_avatar.dart | 1 - packages/stream_chat_flutter/lib/src/user_item.dart | 4 ---- packages/stream_chat_flutter/lib/src/user_list_view.dart | 2 -- packages/stream_chat_flutter/lib/src/utils.dart | 1 - .../stream_chat_flutter/lib/src/visible_footnote.dart | 1 - .../horizontal_scrollable_positioned_list_test.dart | 1 - .../reversed_scrollable_positioned_list_test.dart | 1 - .../scrollable_positioned_list_test.dart | 2 -- .../separated_scrollable_positioned_list_test.dart | 1 - ...erated_horizontal_scrollable_positioned_list_test.dart | 1 - .../stream_chat_flutter/test/src/back_button_test.dart | 1 - .../test/src/gradient_avatar_test.dart | 1 - .../test/src/message_action_modal_test.dart | 1 - packages/stream_chat_flutter/test/utils/golden.dart | 1 - .../lib/src/stream_chat_core.dart | 1 - .../stream_chat_flutter_core/lib/src/user_list_core.dart | 2 -- .../test/message_search_bloc_test.dart | 2 -- .../test/stream_channel_test.dart | 3 --- .../test/stream_chat_core_test.dart | 1 - .../lib/src/stream_chat_localizations_hi.dart | 4 ++-- .../lib/src/stream_chat_persistence_client.dart | 1 - 69 files changed, 4 insertions(+), 170 deletions(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 52409dda..3dc879cb 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -4,15 +4,9 @@ import 'dart:math'; import 'package:collection/collection.dart' show IterableExtension, ListEquality; import 'package:dio/dio.dart'; -import 'package:rate_limiter/rate_limiter.dart'; import 'package:rxdart/rxdart.dart'; import 'package:stream_chat/src/client/retry_queue.dart'; -import 'package:stream_chat/src/core/error/error.dart'; -import 'package:stream_chat/src/core/models/attachment_file.dart'; -import 'package:stream_chat/src/core/models/channel_state.dart'; -import 'package:stream_chat/src/core/models/user.dart'; import 'package:stream_chat/src/core/util/utils.dart'; -import 'package:stream_chat/src/event_type.dart'; import 'package:stream_chat/stream_chat.dart'; /// Class that manages a specific channel. diff --git a/packages/stream_chat/lib/src/core/error/stream_chat_error.dart b/packages/stream_chat/lib/src/core/error/stream_chat_error.dart index ce234c84..bebea751 100644 --- a/packages/stream_chat/lib/src/core/error/stream_chat_error.dart +++ b/packages/stream_chat/lib/src/core/error/stream_chat_error.dart @@ -1,5 +1,4 @@ import 'package:equatable/equatable.dart'; -import 'package:stream_chat/src/core/error/chat_error_code.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:web_socket_channel/web_socket_channel.dart'; diff --git a/packages/stream_chat/lib/src/core/models/attachment_file.dart b/packages/stream_chat/lib/src/core/models/attachment_file.dart index e855f7e3..71cdec29 100644 --- a/packages/stream_chat/lib/src/core/models/attachment_file.dart +++ b/packages/stream_chat/lib/src/core/models/attachment_file.dart @@ -3,7 +3,6 @@ import 'dart:typed_data'; import 'package:dio/dio.dart' show MultipartFile; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:http_parser/http_parser.dart'; -import 'package:meta/meta.dart'; import 'package:stream_chat/src/core/platform_detector/platform_detector.dart'; import 'package:stream_chat/src/core/util/extension.dart'; diff --git a/packages/stream_chat/test/src/client/channel_test.dart b/packages/stream_chat/test/src/client/channel_test.dart index 7eb68b79..ce392053 100644 --- a/packages/stream_chat/test/src/client/channel_test.dart +++ b/packages/stream_chat/test/src/client/channel_test.dart @@ -1,5 +1,4 @@ import 'package:mocktail/mocktail.dart'; -import 'package:stream_chat/src/client/channel.dart'; import 'package:stream_chat/src/client/retry_policy.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; @@ -2066,7 +2065,7 @@ void main() { {'type': channelType, 'id': channelId, ...options}, )).thenAnswer((_) async => EmptyResponse()); - final res = await channel.banUser(userId, options); + final res = await channel.banMember(userId, options); expect(res, isNotNull); @@ -2082,7 +2081,7 @@ void main() { when(() => client.unbanUser(userId, any())) .thenAnswer((_) async => EmptyResponse()); - final res = await channel.unbanUser(userId); + final res = await channel.unbanMember(userId); expect(res, isNotNull); diff --git a/packages/stream_chat/test/src/client/retry_queue_test.dart b/packages/stream_chat/test/src/client/retry_queue_test.dart index 084b82ec..a04feb3e 100644 --- a/packages/stream_chat/test/src/client/retry_queue_test.dart +++ b/packages/stream_chat/test/src/client/retry_queue_test.dart @@ -4,7 +4,6 @@ import 'package:stream_chat/src/client/retry_queue.dart'; import 'package:stream_chat/src/core/models/event.dart'; import 'package:stream_chat/src/core/models/message.dart'; import 'package:stream_chat/src/event_type.dart'; -import 'package:test/scaffolding.dart'; import 'package:test/test.dart'; import '../mocks.dart'; diff --git a/packages/stream_chat/test/src/core/api/channel_api_test.dart b/packages/stream_chat/test/src/core/api/channel_api_test.dart index f008f8b3..2403b44e 100644 --- a/packages/stream_chat/test/src/core/api/channel_api_test.dart +++ b/packages/stream_chat/test/src/core/api/channel_api_test.dart @@ -3,8 +3,6 @@ import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:mocktail/mocktail.dart'; import 'package:stream_chat/src/core/api/channel_api.dart'; -import 'package:stream_chat/src/core/models/channel_model.dart'; -import 'package:stream_chat/src/core/models/channel_state.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; diff --git a/packages/stream_chat/test/src/core/api/responses_test.dart b/packages/stream_chat/test/src/core/api/responses_test.dart index a61d825b..8a73fccd 100644 --- a/packages/stream_chat/test/src/core/api/responses_test.dart +++ b/packages/stream_chat/test/src/core/api/responses_test.dart @@ -1,11 +1,5 @@ import 'dart:convert'; -import 'package:stream_chat/src/core/api/responses.dart'; -import 'package:stream_chat/src/core/models/device.dart'; -import 'package:stream_chat/src/core/models/member.dart'; -import 'package:stream_chat/src/core/models/message.dart'; -import 'package:stream_chat/src/core/models/reaction.dart'; -import 'package:stream_chat/src/core/models/read.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; diff --git a/packages/stream_chat/test/src/core/api/user_api_test.dart b/packages/stream_chat/test/src/core/api/user_api_test.dart index 6eecbee1..dbf83f2c 100644 --- a/packages/stream_chat/test/src/core/api/user_api_test.dart +++ b/packages/stream_chat/test/src/core/api/user_api_test.dart @@ -2,9 +2,7 @@ import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:stream_chat/src/core/api/requests.dart'; import 'package:stream_chat/src/core/api/user_api.dart'; -import 'package:stream_chat/src/core/models/filter.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; diff --git a/packages/stream_chat/test/src/core/models/channel_state_test.dart b/packages/stream_chat/test/src/core/models/channel_state_test.dart index 8bd17d46..58f810a4 100644 --- a/packages/stream_chat/test/src/core/models/channel_state_test.dart +++ b/packages/stream_chat/test/src/core/models/channel_state_test.dart @@ -1,8 +1,3 @@ -import 'package:stream_chat/src/core/models/channel_config.dart'; -import 'package:stream_chat/src/core/models/channel_state.dart'; -import 'package:stream_chat/src/core/models/command.dart'; -import 'package:stream_chat/src/core/models/message.dart'; -import 'package:stream_chat/src/core/models/user.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; diff --git a/packages/stream_chat/test/src/core/models/event_test.dart b/packages/stream_chat/test/src/core/models/event_test.dart index 0cd9a0ad..40ebc044 100644 --- a/packages/stream_chat/test/src/core/models/event_test.dart +++ b/packages/stream_chat/test/src/core/models/event_test.dart @@ -1,5 +1,3 @@ -import 'package:stream_chat/src/core/models/event.dart'; -import 'package:stream_chat/src/core/models/own_user.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; diff --git a/packages/stream_chat/test/src/core/models/own_user_test.dart b/packages/stream_chat/test/src/core/models/own_user_test.dart index ea84185f..430e9c36 100644 --- a/packages/stream_chat/test/src/core/models/own_user_test.dart +++ b/packages/stream_chat/test/src/core/models/own_user_test.dart @@ -1,6 +1,4 @@ import 'package:mocktail/mocktail.dart'; -import 'package:stream_chat/src/core/models/own_user.dart'; -import 'package:stream_chat/src/core/models/user.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; diff --git a/packages/stream_chat/test/src/fakes.dart b/packages/stream_chat/test/src/fakes.dart index 3dcd8ebd..b4089512 100644 --- a/packages/stream_chat/test/src/fakes.dart +++ b/packages/stream_chat/test/src/fakes.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:dio/dio.dart'; import 'package:mocktail/mocktail.dart'; import 'package:rxdart/rxdart.dart'; import 'package:stream_chat/src/core/api/channel_api.dart'; diff --git a/packages/stream_chat_flutter/example/lib/main.dart b/packages/stream_chat_flutter/example/lib/main.dart index 3d292b09..6b5a299f 100644 --- a/packages/stream_chat_flutter/example/lib/main.dart +++ b/packages/stream_chat_flutter/example/lib/main.dart @@ -1,5 +1,3 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_localizations/stream_chat_localizations.dart'; diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart index df134250..f1369d49 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Title for attachments class AttachmentTitle extends StatelessWidget { diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart index 7a5c891b..75a890e8 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Enum for identifying type of attachment enum AttachmentSource { diff --git a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart index cc29f0b2..1974b040 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart @@ -3,9 +3,7 @@ import 'package:flutter/material.dart'; import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/visible_footnote.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget for showing a GIF attachment class GiphyAttachment extends AttachmentWidget { diff --git a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart index ff01eea3..a46ff25c 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart @@ -2,11 +2,8 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/src/attachment/attachment_title.dart'; -import 'package:stream_chat_flutter/src/attachment/attachment_upload_state_builder.dart'; import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget for showing an image attachment class ImageAttachment extends AttachmentWidget { diff --git a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart index d56bcd6a..8a79ca21 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart @@ -1,6 +1,5 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/utils.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Widget to display URL attachment diff --git a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart index 0fc97d5e..3df1f451 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/attachment/attachment_title.dart'; import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; -import 'package:stream_chat_flutter/src/full_screen_media.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; diff --git a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart index ac9213b6..4fedfc12 100644 --- a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart @@ -1,7 +1,4 @@ -import 'dart:ui'; - import 'package:dio/dio.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:image_gallery_saver/image_gallery_saver.dart'; import 'package:path_provider/path_provider.dart'; diff --git a/packages/stream_chat_flutter/lib/src/back_button.dart b/packages/stream_chat_flutter/lib/src/back_button.dart index b0b04b8d..08d8dabf 100644 --- a/packages/stream_chat_flutter/lib/src/back_button.dart +++ b/packages/stream_chat_flutter/lib/src/back_button.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; -import 'package:stream_chat_flutter/src/unread_indicator.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Back button implementation diff --git a/packages/stream_chat_flutter/lib/src/channel_avatar.dart b/packages/stream_chat_flutter/lib/src/channel_avatar.dart index 59b4a73a..ba24a640 100644 --- a/packages/stream_chat_flutter/lib/src/channel_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/channel_avatar.dart @@ -2,7 +2,6 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/group_avatar.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_image.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_image_paint.png) diff --git a/packages/stream_chat_flutter/lib/src/channel_header.dart b/packages/stream_chat_flutter/lib/src/channel_header.dart index 62f994dc..954aa758 100644 --- a/packages/stream_chat_flutter/lib/src/channel_header.dart +++ b/packages/stream_chat_flutter/lib/src/channel_header.dart @@ -1,13 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:stream_chat_flutter/src/back_button.dart'; import 'package:stream_chat_flutter/src/channel_info.dart'; -import 'package:stream_chat_flutter/src/channel_name.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/info_tile.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_header.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_header_paint.png) diff --git a/packages/stream_chat_flutter/lib/src/channel_info.dart b/packages/stream_chat_flutter/lib/src/channel_info.dart index 791805af..0238e0f5 100644 --- a/packages/stream_chat_flutter/lib/src/channel_info.dart +++ b/packages/stream_chat_flutter/lib/src/channel_info.dart @@ -1,6 +1,5 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; diff --git a/packages/stream_chat_flutter/lib/src/channel_list_header.dart b/packages/stream_chat_flutter/lib/src/channel_list_header.dart index 3ebd9001..6c54ad89 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_header.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_header.dart @@ -1,12 +1,8 @@ -import 'dart:ui'; - import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/stream_neumorphic_button.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget builder for title typedef TitleBuilder = Widget Function( diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index c6c3ec35..e4097690 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -1,13 +1,9 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:shimmer/shimmer.dart'; import 'package:stream_chat_flutter/src/channel_bottom_sheet.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Callback called when tapping on a channel typedef ChannelTapCallback = void Function(Channel, Widget?); diff --git a/packages/stream_chat_flutter/lib/src/channel_name.dart b/packages/stream_chat_flutter/lib/src/channel_name.dart index 258893c8..a1e81005 100644 --- a/packages/stream_chat_flutter/lib/src/channel_name.dart +++ b/packages/stream_chat_flutter/lib/src/channel_name.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// It shows the current [Channel] name using a [Text] widget. /// diff --git a/packages/stream_chat_flutter/lib/src/channel_preview.dart b/packages/stream_chat_flutter/lib/src/channel_preview.dart index de038c82..125d06fe 100644 --- a/packages/stream_chat_flutter/lib/src/channel_preview.dart +++ b/packages/stream_chat_flutter/lib/src/channel_preview.dart @@ -1,12 +1,8 @@ import 'package:collection/collection.dart' show IterableExtension, ListEquality; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_preview.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_preview_paint.png) diff --git a/packages/stream_chat_flutter/lib/src/connection_status_builder.dart b/packages/stream_chat_flutter/lib/src/connection_status_builder.dart index 2cba8eb4..f0eca9da 100644 --- a/packages/stream_chat_flutter/lib/src/connection_status_builder.dart +++ b/packages/stream_chat_flutter/lib/src/connection_status_builder.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget that builds itself based on the latest snapshot of interaction with /// a [Stream] of type [ConnectionStatus]. diff --git a/packages/stream_chat_flutter/lib/src/full_screen_media.dart b/packages/stream_chat_flutter/lib/src/full_screen_media.dart index 84ddb803..83ae96b1 100644 --- a/packages/stream_chat_flutter/lib/src/full_screen_media.dart +++ b/packages/stream_chat_flutter/lib/src/full_screen_media.dart @@ -6,8 +6,6 @@ import 'package:chewie/chewie.dart'; import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/gallery_footer.dart'; -import 'package:stream_chat_flutter/src/gallery_header.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:video_player/video_player.dart'; diff --git a/packages/stream_chat_flutter/lib/src/gallery_footer.dart b/packages/stream_chat_flutter/lib/src/gallery_footer.dart index 0acd9b02..f189dae3 100644 --- a/packages/stream_chat_flutter/lib/src/gallery_footer.dart +++ b/packages/stream_chat_flutter/lib/src/gallery_footer.dart @@ -6,11 +6,8 @@ import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; import 'package:share_plus/share_plus.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Footer widget for media display class GalleryFooter extends StatefulWidget implements PreferredSizeWidget { diff --git a/packages/stream_chat_flutter/lib/src/gradient_avatar.dart b/packages/stream_chat_flutter/lib/src/gradient_avatar.dart index a02976c8..12824f45 100644 --- a/packages/stream_chat_flutter/lib/src/gradient_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/gradient_avatar.dart @@ -1,5 +1,4 @@ import 'dart:math'; -import 'dart:ui'; import 'dart:ui' as ui; import 'package:flutter/material.dart'; diff --git a/packages/stream_chat_flutter/lib/src/image_group.dart b/packages/stream_chat_flutter/lib/src/image_group.dart index 88b309fe..ff67b068 100644 --- a/packages/stream_chat_flutter/lib/src/image_group.dart +++ b/packages/stream_chat_flutter/lib/src/image_group.dart @@ -1,8 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/full_screen_media.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget for constructing a group of images in message class ImageGroup extends StatelessWidget { diff --git a/packages/stream_chat_flutter/lib/src/media_list_view.dart b/packages/stream_chat_flutter/lib/src/media_list_view.dart index 8b1f7f06..d5a9233c 100644 --- a/packages/stream_chat_flutter/lib/src/media_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/media_list_view.dart @@ -5,7 +5,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:photo_manager/photo_manager.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; extension on Duration { diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index f72acf2c..154472d7 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -1,15 +1,7 @@ import 'dart:ui'; - -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/message_action.dart'; -import 'package:stream_chat_flutter/src/reaction_picker.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; -import 'package:stream_chat_flutter/src/utils.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Constructs a modal with actions for a message class MessageActionsModal extends StatefulWidget { diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 8a22920e..a75f9317 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -2,20 +2,12 @@ import 'dart:async'; import 'package:collection/collection.dart'; -import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/info_tile.dart'; -import 'package:stream_chat_flutter/src/message_widget.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/swipeable.dart'; -import 'package:stream_chat_flutter/src/system_message.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'package:visibility_detector/visibility_detector.dart'; /// Widget builder for message diff --git a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart index 37c8afff..7568c565 100644 --- a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart @@ -3,12 +3,7 @@ import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/reaction_bubble.dart'; -import 'package:stream_chat_flutter/src/reaction_picker.dart'; -import 'package:stream_chat_flutter/src/stream_chat.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; -import 'package:stream_chat_flutter/src/user_avatar.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Modal widget for displaying message reactions class MessageReactionsModal extends StatelessWidget { diff --git a/packages/stream_chat_flutter/lib/src/message_search_item.dart b/packages/stream_chat_flutter/lib/src/message_search_item.dart index 07f9f1c4..022ec7ce 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_item.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_item.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// It shows the current [Message] preview. /// diff --git a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart index a5edc203..76ae0e98 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart @@ -1,10 +1,6 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/info_tile.dart'; -import 'package:stream_chat_flutter/src/message_search_item.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Callback called when tapping on a user typedef MessageSearchItemTapCallback = void Function(GetMessageResponse); diff --git a/packages/stream_chat_flutter/lib/src/message_text.dart b/packages/stream_chat_flutter/lib/src/message_text.dart index 6cdcd760..bb2946f4 100644 --- a/packages/stream_chat_flutter/lib/src/message_text.dart +++ b/packages/stream_chat_flutter/lib/src/message_text.dart @@ -1,9 +1,7 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Text widget to display in message class MessageText extends StatelessWidget { diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index 2e97c9da..864c977e 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -1,21 +1,13 @@ -import 'dart:ui'; - -import 'package:flutter/cupertino.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; import 'package:flutter_portal/flutter_portal.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/attachment/url_attachment.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/image_group.dart'; -import 'package:stream_chat_flutter/src/message_action.dart'; import 'package:stream_chat_flutter/src/message_actions_modal.dart'; import 'package:stream_chat_flutter/src/message_reactions_modal.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; import 'package:stream_chat_flutter/src/reaction_bubble.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Widget builder for building attachments diff --git a/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart b/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart index 14abc121..131ca60b 100644 --- a/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart @@ -1,9 +1,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'package:video_player/video_player.dart'; /// Widget builder for quoted message attachment thumnail diff --git a/packages/stream_chat_flutter/lib/src/reaction_bubble.dart b/packages/stream_chat_flutter/lib/src/reaction_bubble.dart index 203b8481..dd3d5e27 100644 --- a/packages/stream_chat_flutter/lib/src/reaction_bubble.dart +++ b/packages/stream_chat_flutter/lib/src/reaction_bubble.dart @@ -2,9 +2,6 @@ import 'dart:math'; import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; -import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; -import 'package:stream_chat_flutter/src/reaction_icon.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Creates reaction bubble widget for displaying over messages diff --git a/packages/stream_chat_flutter/lib/src/stream_chat.dart b/packages/stream_chat_flutter/lib/src/stream_chat.dart index 327a0927..cf18e282 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat.dart @@ -1,12 +1,8 @@ import 'dart:async'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_portal/flutter_portal.dart'; -import 'package:jiffy/jiffy.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget used to provide information about the chat to the widget tree /// diff --git a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart index 8a210b96..84006f44 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart @@ -1,12 +1,5 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart' hide TextTheme; -import 'package:stream_chat_flutter/src/channel_preview.dart'; -import 'package:stream_chat_flutter/src/gradient_avatar.dart'; -import 'package:stream_chat_flutter/src/message_input/message_input.dart'; -import 'package:stream_chat_flutter/src/reaction_icon.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Inherited widget providing the [StreamChatThemeData] to the widget tree class StreamChatTheme extends InheritedWidget { diff --git a/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart b/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart index 73c33131..06b3b9a4 100644 --- a/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart +++ b/packages/stream_chat_flutter/lib/src/stream_svg_icon.dart @@ -1,4 +1,3 @@ -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; diff --git a/packages/stream_chat_flutter/lib/src/thread_header.dart b/packages/stream_chat_flutter/lib/src/thread_header.dart index dfe13b41..aae1d8f9 100644 --- a/packages/stream_chat_flutter/lib/src/thread_header.dart +++ b/packages/stream_chat_flutter/lib/src/thread_header.dart @@ -1,9 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/thread_header.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/thread_header_paint.png) diff --git a/packages/stream_chat_flutter/lib/src/unread_indicator.dart b/packages/stream_chat_flutter/lib/src/unread_indicator.dart index e5f3027b..958386d1 100644 --- a/packages/stream_chat_flutter/lib/src/unread_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/unread_indicator.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Widget for showing an unread indicator diff --git a/packages/stream_chat_flutter/lib/src/user_avatar.dart b/packages/stream_chat_flutter/lib/src/user_avatar.dart index 86b34ea7..e638685c 100644 --- a/packages/stream_chat_flutter/lib/src/user_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/user_avatar.dart @@ -1,7 +1,6 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Widget that displays a user avatar class UserAvatar extends StatelessWidget { diff --git a/packages/stream_chat_flutter/lib/src/user_item.dart b/packages/stream_chat_flutter/lib/src/user_item.dart index cbaa0820..c0e3482e 100644 --- a/packages/stream_chat_flutter/lib/src/user_item.dart +++ b/packages/stream_chat_flutter/lib/src/user_item.dart @@ -1,10 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; -import 'package:stream_chat_flutter/src/user_list_view.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// /// It shows the current [User] preview. diff --git a/packages/stream_chat_flutter/lib/src/user_list_view.dart b/packages/stream_chat_flutter/lib/src/user_list_view.dart index 8697381a..58af30a7 100644 --- a/packages/stream_chat_flutter/lib/src/user_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/user_list_view.dart @@ -1,8 +1,6 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Callback called when tapping on a user typedef UserTapCallback = void Function(User, Widget?); diff --git a/packages/stream_chat_flutter/lib/src/utils.dart b/packages/stream_chat_flutter/lib/src/utils.dart index b4ca48f0..2d661fbc 100644 --- a/packages/stream_chat_flutter/lib/src/utils.dart +++ b/packages/stream_chat_flutter/lib/src/utils.dart @@ -4,7 +4,6 @@ import 'dart:math' as math; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'package:url_launcher/url_launcher.dart'; /// Launch URL diff --git a/packages/stream_chat_flutter/lib/src/visible_footnote.dart b/packages/stream_chat_flutter/lib/src/visible_footnote.dart index 18bb976d..700e22ad 100644 --- a/packages/stream_chat_flutter/lib/src/visible_footnote.dart +++ b/packages/stream_chat_flutter/lib/src/visible_footnote.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Widget for displaying a footnote diff --git a/packages/stream_chat_flutter/test/scrollable_positioned_list/horizontal_scrollable_positioned_list_test.dart b/packages/stream_chat_flutter/test/scrollable_positioned_list/horizontal_scrollable_positioned_list_test.dart index d32f3969..fb5c9fc2 100644 --- a/packages/stream_chat_flutter/test/scrollable_positioned_list/horizontal_scrollable_positioned_list_test.dart +++ b/packages/stream_chat_flutter/test/scrollable_positioned_list/horizontal_scrollable_positioned_list_test.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. import 'dart:async'; -import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/stream_chat_flutter/test/scrollable_positioned_list/reversed_scrollable_positioned_list_test.dart b/packages/stream_chat_flutter/test/scrollable_positioned_list/reversed_scrollable_positioned_list_test.dart index b0c487ea..a5af56a8 100644 --- a/packages/stream_chat_flutter/test/scrollable_positioned_list/reversed_scrollable_positioned_list_test.dart +++ b/packages/stream_chat_flutter/test/scrollable_positioned_list/reversed_scrollable_positioned_list_test.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. import 'dart:async'; -import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/stream_chat_flutter/test/scrollable_positioned_list/scrollable_positioned_list_test.dart b/packages/stream_chat_flutter/test/scrollable_positioned_list/scrollable_positioned_list_test.dart index 5c4f22f1..79845215 100644 --- a/packages/stream_chat_flutter/test/scrollable_positioned_list/scrollable_positioned_list_test.dart +++ b/packages/stream_chat_flutter/test/scrollable_positioned_list/scrollable_positioned_list_test.dart @@ -4,11 +4,9 @@ import 'dart:async'; import 'dart:math'; -import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:stream_chat_flutter/scrollable_positioned_list/src/scroll_view.dart'; diff --git a/packages/stream_chat_flutter/test/scrollable_positioned_list/separated_scrollable_positioned_list_test.dart b/packages/stream_chat_flutter/test/scrollable_positioned_list/separated_scrollable_positioned_list_test.dart index 0cc091c9..df1035e2 100644 --- a/packages/stream_chat_flutter/test/scrollable_positioned_list/separated_scrollable_positioned_list_test.dart +++ b/packages/stream_chat_flutter/test/scrollable_positioned_list/separated_scrollable_positioned_list_test.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. import 'dart:async'; -import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/stream_chat_flutter/test/scrollable_positioned_list/seperated_horizontal_scrollable_positioned_list_test.dart b/packages/stream_chat_flutter/test/scrollable_positioned_list/seperated_horizontal_scrollable_positioned_list_test.dart index 55574003..c26ee43f 100644 --- a/packages/stream_chat_flutter/test/scrollable_positioned_list/seperated_horizontal_scrollable_positioned_list_test.dart +++ b/packages/stream_chat_flutter/test/scrollable_positioned_list/seperated_horizontal_scrollable_positioned_list_test.dart @@ -3,7 +3,6 @@ // found in the LICENSE file. import 'dart:async'; -import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/packages/stream_chat_flutter/test/src/back_button_test.dart b/packages/stream_chat_flutter/test/src/back_button_test.dart index efb889ac..fca30c5b 100644 --- a/packages/stream_chat_flutter/test/src/back_button_test.dart +++ b/packages/stream_chat_flutter/test/src/back_button_test.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:stream_chat_flutter/src/back_button.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'mocks.dart'; diff --git a/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart b/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart index 6f7ebe2e..6dcc0e2d 100644 --- a/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart +++ b/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:golden_toolkit/golden_toolkit.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:stream_chat_flutter/src/gradient_avatar.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'mocks.dart'; diff --git a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart index 72b08757..69e43fba 100644 --- a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart @@ -3,7 +3,6 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:stream_chat_flutter/src/message_actions_modal.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'mocks.dart'; diff --git a/packages/stream_chat_flutter/test/utils/golden.dart b/packages/stream_chat_flutter/test/utils/golden.dart index 4fc0aff3..574306ef 100644 --- a/packages/stream_chat_flutter/test/utils/golden.dart +++ b/packages/stream_chat_flutter/test/utils/golden.dart @@ -1,4 +1,3 @@ -import 'dart:async'; import 'dart:typed_data'; import 'package:flutter/foundation.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart b/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart index 3d00b739..1f3f753d 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'package:connectivity_plus/connectivity_plus.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_flutter_core/src/typedef.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/user_list_core.dart b/packages/stream_chat_flutter_core/lib/src/user_list_core.dart index 05e9730b..61fbb860 100644 --- a/packages/stream_chat_flutter_core/lib/src/user_list_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/user_list_core.dart @@ -2,8 +2,6 @@ import 'dart:convert'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:stream_chat/stream_chat.dart'; -import 'package:stream_chat_flutter_core/src/users_bloc.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// diff --git a/packages/stream_chat_flutter_core/test/message_search_bloc_test.dart b/packages/stream_chat_flutter_core/test/message_search_bloc_test.dart index 332289ea..764e629b 100644 --- a/packages/stream_chat_flutter_core/test/message_search_bloc_test.dart +++ b/packages/stream_chat_flutter_core/test/message_search_bloc_test.dart @@ -1,8 +1,6 @@ import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; -import 'package:stream_chat/stream_chat.dart'; -import 'package:stream_chat_flutter_core/src/message_search_bloc.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; import 'matchers/get_message_response_matcher.dart'; diff --git a/packages/stream_chat_flutter_core/test/stream_channel_test.dart b/packages/stream_chat_flutter_core/test/stream_channel_test.dart index de536cb5..cccea24d 100644 --- a/packages/stream_chat_flutter_core/test/stream_channel_test.dart +++ b/packages/stream_chat_flutter_core/test/stream_channel_test.dart @@ -1,7 +1,4 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; diff --git a/packages/stream_chat_flutter_core/test/stream_chat_core_test.dart b/packages/stream_chat_flutter_core/test/stream_chat_core_test.dart index addcab87..7dd433be 100644 --- a/packages/stream_chat_flutter_core/test/stream_chat_core_test.dart +++ b/packages/stream_chat_flutter_core/test/stream_chat_core_test.dart @@ -1,6 +1,5 @@ import 'dart:async'; -import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mocktail/mocktail.dart'; diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart index b8d3f3dc..1244e2ea 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart @@ -343,10 +343,10 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations { String get sendLabel => 'भेजें'; @override - String get withText => 'विद'; //TODO: break? + String get withText => 'विद'; @override - String get inText => 'इन'; //TODO: break? + String get inText => 'इन'; @override String get youText => 'आप'; diff --git a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart index 00c4ab06..2dc61f18 100644 --- a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart +++ b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart @@ -1,6 +1,5 @@ import 'package:flutter/foundation.dart'; import 'package:logging/logging.dart' show LogRecord; -import 'package:meta/meta.dart'; import 'package:mutex/mutex.dart'; import 'package:stream_chat/stream_chat.dart'; From 1bcea053ad3b5b84a966f0df5fb934edd68e73fa Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 31 Jan 2022 13:34:33 +0100 Subject: [PATCH 095/201] chore(repo): fix metrics --- .github/workflows/dart_code_metrics.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dart_code_metrics.yaml b/.github/workflows/dart_code_metrics.yaml index 667ac2dd..63ec9484 100644 --- a/.github/workflows/dart_code_metrics.yaml +++ b/.github/workflows/dart_code_metrics.yaml @@ -1,8 +1,9 @@ name: Dart Code Metrics env: - flutter_version: "2.5.0" + flutter_version: "2.8.1" folders: "lib, test" + melos_version: "1.2.0" on: pull_request: @@ -33,7 +34,7 @@ jobs: flutter-version: ${{ env.flutter_version }} - name: "Install Tools" - run: flutter pub global activate melos 1.0.0-dev.10 + run: flutter pub global activate melos ${{ env.melos_version }} - name: "Bootstrap Workspace" run: melos bootstrap From 6c624b72b690d8741078a9ef9674091a78bda746 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 26 Jan 2022 15:20:07 +0530 Subject: [PATCH 096/201] fix(llc): include `message.user` while saving users in persistence. Signed-off-by: xsahil03x --- packages/stream_chat/lib/src/db/chat_persistence_client.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stream_chat/lib/src/db/chat_persistence_client.dart b/packages/stream_chat/lib/src/db/chat_persistence_client.dart index 98f6a364..82ba181a 100644 --- a/packages/stream_chat/lib/src/db/chat_persistence_client.dart +++ b/packages/stream_chat/lib/src/db/chat_persistence_client.dart @@ -253,6 +253,7 @@ abstract class ChatPersistenceClient { users.addAll([ channel.createdBy, + ...messages.map((it) => it.user), ...reads.map((it) => it.user), ...members.map((it) => it.user), ...reactions.map((it) => it.user), From 03bd2e11c99113a1f01ff825d384f32b2e930907 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 26 Jan 2022 15:22:43 +0530 Subject: [PATCH 097/201] chore(llc): update CHANGELOG.md Signed-off-by: xsahil03x --- packages/stream_chat/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index dad87973..e47e72cb 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -4,6 +4,7 @@ - [[#857]](https://github.com/GetStream/stream-chat-flutter/issues/857) Channel now listens for member ban/unban and updates the channel state with the latest data. +- [[#748]](https://github.com/GetStream/stream-chat-flutter/issues/748) `Message.user` are now also included while saving users in persistence. 🔄 Changed From c80957ebae41e8c0311f3f6181792d5c1431c3e5 Mon Sep 17 00:00:00 2001 From: Deven Joshi Date: Mon, 24 Jan 2022 18:03:02 +0530 Subject: [PATCH 098/201] fix: thread message deletion --- packages/stream_chat/CHANGELOG.md | 4 ++++ packages/stream_chat/lib/src/client/channel.dart | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index e47e72cb..7afc4000 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -19,6 +19,10 @@ - Fixed `unreadCount` after removing user from a channel. - Added `client.queryBannedUsers`, `channel.queryBannedUsers` endpoint for querying banned users. +🐞 Fixed + +- [[#871]](https://github.com/GetStream/stream-chat-flutter/issues/871) Fixed thread message deletion. + ## 3.3.1 🐞 Fixed diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 3dc879cb..460cef3f 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1827,7 +1827,13 @@ class ChannelClientState { if (replyCount == null || replyCount == 0) return; addMessage(parentMessage.copyWith(replyCount: replyCount - 1)); - updateThreadInfo(parentId, threads[parentId]!..remove(message)); + updateThreadInfo( + parentId, + threads[parentId]! + ..removeWhere( + (e) => e.id == message.id, + ), + ); } else { // Remove regular message final allMessages = [...messages]; From bc8784f59354cd73a260b8972520469aac60eafa Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Tue, 1 Feb 2022 14:08:12 +0530 Subject: [PATCH 099/201] test(llc): add tests Signed-off-by: xsahil03x --- .../test/src/client/channel_test.dart | 30 ++++++++++++++++++ .../test/src/client/client_test.dart | 31 +++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/packages/stream_chat/test/src/client/channel_test.dart b/packages/stream_chat/test/src/client/channel_test.dart index ce392053..49310d05 100644 --- a/packages/stream_chat/test/src/client/channel_test.dart +++ b/packages/stream_chat/test/src/client/channel_test.dart @@ -1,5 +1,6 @@ import 'package:mocktail/mocktail.dart'; import 'package:stream_chat/src/client/retry_policy.dart'; +import 'package:stream_chat/src/core/models/banned_user.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; @@ -1982,6 +1983,35 @@ void main() { )).called(1); }); + test('`.queryBannedUsers`', () async { + final filter = Filter.equal('channel_cid', channelCid); + + final bans = List.generate( + 3, + (index) => BannedUser( + user: User(id: 'test-user-id-$index'), + bannedBy: User(id: 'test-user-id-${index + 1}'), + ), + ); + + when(() => client.queryBannedUsers( + filter: filter, + sort: any(named: 'sort'), + pagination: any(named: 'pagination'), + )).thenAnswer((_) async => QueryBannedUsersResponse()..bans = bans); + + final res = await channel.queryBannedUsers(); + + expect(res, isNotNull); + expect(res.bans.length, bans.length); + + verify(() => client.queryBannedUsers( + filter: filter, + sort: any(named: 'sort'), + pagination: any(named: 'pagination'), + )).called(1); + }); + test('`.mute`', () async { when(() => client.muteChannel( channelCid, diff --git a/packages/stream_chat/test/src/client/client_test.dart b/packages/stream_chat/test/src/client/client_test.dart index 22e0edf8..b89db0dc 100644 --- a/packages/stream_chat/test/src/client/client_test.dart +++ b/packages/stream_chat/test/src/client/client_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:stream_chat/src/core/api/device_api.dart'; import 'package:stream_chat/src/core/http/token.dart'; +import 'package:stream_chat/src/core/models/banned_user.dart'; import 'package:stream_chat/stream_chat.dart'; import 'package:test/test.dart'; @@ -982,6 +983,36 @@ void main() { verifyNoMoreInteractions(api.user); }); + test('`.queryBannedUsers`', () async { + final bans = List.generate( + 3, + (index) => BannedUser( + user: User(id: 'test-user-id-$index'), + bannedBy: User(id: 'test-user-id-${index + 1}'), + ), + ); + + const cid = 'message:nice-channel'; + final filter = Filter.equal('channel_cid', cid); + + when(() => api.moderation.queryBannedUsers( + filter: filter, + sort: any(named: 'sort'), + pagination: any(named: 'pagination'), + )).thenAnswer((_) async => QueryBannedUsersResponse()..bans = bans); + + final res = await client.queryBannedUsers(filter: filter); + expect(res, isNotNull); + expect(res.bans.length, bans.length); + + verify(() => api.moderation.queryBannedUsers( + filter: filter, + sort: any(named: 'sort'), + pagination: any(named: 'pagination'), + )).called(1); + verifyNoMoreInteractions(api.moderation); + }); + test('`.search`', () async { const cid = 'test-type:test-id'; final filter = Filter.in_('cid', const [cid]); From f53ee0b4f10a71390a16f0a12e53aff1f5143461 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 1 Feb 2022 10:52:59 +0100 Subject: [PATCH 100/201] fix analysis and update examples --- .../example/lib/split_view.dart | 34 +++++---- .../example/lib/tutorial_part_1.dart | 25 +++---- .../example/lib/tutorial_part_2.dart | 54 ++++++-------- .../example/lib/tutorial_part_3.dart | 59 ++++++++++----- .../example/lib/tutorial_part_4.dart | 56 +++++++------- .../example/lib/tutorial_part_5.dart | 46 ++++++++---- .../example/lib/tutorial_part_6.dart | 74 +++++++++++-------- .../lib/src/group_avatar.dart | 1 + .../lib/src/paged_value_notifier.dart | 8 +- .../stream_channel_list_controller.dart | 8 +- .../stream_channel_list_event_handler.dart | 4 +- .../stream_channel_list_tile.dart | 3 +- .../stream_channel_list_view.dart | 6 +- .../v4/stream_channel_info_bottom_sheet.dart | 5 +- .../lib/stream_chat_flutter.dart | 4 + 15 files changed, 223 insertions(+), 164 deletions(-) diff --git a/packages/stream_chat_flutter/example/lib/split_view.dart b/packages/stream_chat_flutter/example/lib/split_view.dart index 1fd3ccb6..75b8f64b 100644 --- a/packages/stream_chat_flutter/example/lib/split_view.dart +++ b/packages/stream_chat_flutter/example/lib/split_view.dart @@ -84,7 +84,7 @@ class _SplitViewState extends State { ); } -class ChannelListPage extends StatelessWidget { +class ChannelListPage extends StatefulWidget { const ChannelListPage({ Key? key, this.onTap, @@ -92,22 +92,26 @@ class ChannelListPage extends StatelessWidget { final void Function(Channel)? onTap; + @override + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _listController = StreamChannelListController( + client: StreamChat.of(context).client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + limit: 20, + ); + @override Widget build(BuildContext context) => Scaffold( - body: ChannelsBloc( - child: ChannelListView( - onChannelTap: onTap != null - ? (channel, _) { - onTap!(channel); - } - : null, - filter: Filter.in_( - 'members', - [StreamChat.of(context).currentUser!.id], - ), - sort: const [SortOption('last_message_at')], - limit: 20, - ), + body: StreamChannelListView( + onChannelTap: widget.onTap, + controller: _listController, ), ); } diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart index 459d8690..82acabf9 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart @@ -90,18 +90,15 @@ class ChannelPage extends StatelessWidget { }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - appBar: const ChannelHeader(), - body: Column( - children: const [ - Expanded( - child: MessageListView(), - ), - MessageInput(), - ], - ), - ); - } + Widget build(BuildContext context) => Scaffold( + appBar: const ChannelHeader(), + body: Column( + children: const [ + Expanded( + child: MessageListView(), + ), + MessageInput(), + ], + ), + ); } diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart index f704abab..9f718b7e 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart @@ -92,26 +92,23 @@ class _ChannelListPageState extends State { ); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - body: RefreshIndicator( - onRefresh: _controller.refresh, - child: StreamChannelListView( - controller: _controller, - onChannelTap: (channel) => Navigator.push( - context, - MaterialPageRoute( - builder: (_) => StreamChannel( - channel: channel, - child: const ChannelPage(), + Widget build(BuildContext context) => Scaffold( + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), ), ), ), ), - ), - ); - } + ); } class ChannelPage extends StatelessWidget { @@ -120,18 +117,15 @@ class ChannelPage extends StatelessWidget { }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - appBar: const ChannelHeader(), - body: Column( - children: const [ - Expanded( - child: MessageListView(), - ), - MessageInput(), - ], - ), - ); - } + Widget build(BuildContext context) => Scaffold( + appBar: const ChannelHeader(), + body: Column( + children: const [ + Expanded( + child: MessageListView(), + ), + MessageInput(), + ], + ), + ); } diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart index 538dbd68..e8834eb1 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart @@ -68,31 +68,49 @@ class MyApp extends StatelessWidget { } } -class ChannelListPage extends StatelessWidget { +class ChannelListPage extends StatefulWidget { const ChannelListPage({ Key? key, }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - body: ChannelsBloc( - child: ChannelListView( - filter: Filter.in_( - 'members', - [StreamChat.of(context).currentUser!.id], - ), - channelPreviewBuilder: _channelPreviewBuilder, - // sort: [SortOption('last_message_at')], - limit: 20, - channelWidget: const ChannelPage(), - ), - ), - ); - } + State createState() => _ChannelListPageState(); +} - Widget _channelPreviewBuilder(BuildContext context, Channel channel) { +class _ChannelListPageState extends State { + late final _listController = StreamChannelListController( + client: StreamChat.of(context).client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + limit: 20, + ); + + @override + Widget build(BuildContext context) => Scaffold( + body: StreamChannelListView( + controller: _listController, + itemBuilder: _channelPreviewBuilder, + onChannelTap: (channel) { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ); + }, + ), + ); + + Widget _channelPreviewBuilder( + BuildContext context, + Channel channel, + StreamChannelListTile defaultTile, + ) { final lastMessage = channel.state?.messages.reversed.firstWhereOrNull( (message) => !message.isDeleted, ); @@ -115,13 +133,14 @@ class ChannelListPage extends StatelessWidget { leading: ChannelAvatar( channel: channel, ), - title: ChannelName( + title: StreamChannelName( textStyle: ChannelPreviewTheme.of(context).titleStyle!.copyWith( color: StreamChatTheme.of(context) .colorTheme .textHighEmphasis .withOpacity(opacity), ), + channel: channel, ), subtitle: Text(subtitle), trailing: channel.state!.unreadCount > 0 diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart index 5b80b721..ce461ddc 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart @@ -53,38 +53,42 @@ class MyApp extends StatelessWidget { } } -class ChannelListPage extends StatelessWidget { +class ChannelListPage extends StatefulWidget { const ChannelListPage({ Key? key, }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - body: StreamChannelListView( - controller: StreamChannelListController( - client: StreamChat.of(context).client, - filter: Filter.in_( - 'members', - [StreamChat.of(context).currentUser!.id], - ), - sort: const [SortOption('last_message_at')], - limit: 20, - ), - onChannelTap: (channel) { - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => StreamChannel( - channel: channel, - child: const ChannelPage(), + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _listController = StreamChannelListController( + client: StreamChat.of(context).client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + limit: 20, + ); + + @override + Widget build(BuildContext context) => Scaffold( + body: StreamChannelListView( + controller: _listController, + onChannelTap: (channel) { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), ), - ), - ); - }, - ), - ); - } + ); + }, + ), + ); } class ChannelPage extends StatelessWidget { diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart index 86ac2e1f..347ceaf4 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart @@ -59,28 +59,42 @@ class MyApp extends StatelessWidget { } } -class ChannelListPage extends StatelessWidget { +class ChannelListPage extends StatefulWidget { const ChannelListPage({ Key? key, }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - body: ChannelsBloc( - child: ChannelListView( - filter: Filter.in_( - 'members', - [StreamChat.of(context).currentUser!.id], - ), - sort: const [SortOption('last_message_at')], - limit: 20, - channelWidget: const ChannelPage(), + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _listController = StreamChannelListController( + client: StreamChat.of(context).client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + limit: 20, + ); + + @override + Widget build(BuildContext context) => Scaffold( + body: StreamChannelListView( + controller: _listController, + onChannelTap: (channel) { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ); + }, ), - ), - ); - } + ); } class ChannelPage extends StatelessWidget { diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart index 2555e007..4bb8e928 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart @@ -93,28 +93,41 @@ class MyApp extends StatelessWidget { } } -class ChannelListPage extends StatelessWidget { +class ChannelListPage extends StatefulWidget { const ChannelListPage({ Key? key, }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - body: ChannelsBloc( - child: ChannelListView( - filter: Filter.in_( - 'members', - [StreamChat.of(context).currentUser!.id], - ), - sort: const [SortOption('last_message_at')], - limit: 20, - channelWidget: const ChannelPage(), + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _listController = StreamChannelListController( + client: StreamChat.of(context).client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + limit: 20, + ); + @override + Widget build(BuildContext context) => Scaffold( + body: StreamChannelListView( + controller: _listController, + onChannelTap: (channel) { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ); + }, ), - ), - ); - } + ); } class ChannelPage extends StatelessWidget { @@ -123,24 +136,21 @@ class ChannelPage extends StatelessWidget { }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - appBar: const ChannelHeader(), - body: Column( - children: [ - Expanded( - child: MessageListView( - threadBuilder: (_, parentMessage) => ThreadPage( - parent: parentMessage, + Widget build(BuildContext context) => Scaffold( + appBar: const ChannelHeader(), + body: Column( + children: [ + Expanded( + child: MessageListView( + threadBuilder: (_, parentMessage) => ThreadPage( + parent: parentMessage, + ), ), ), - ), - const MessageInput(), - ], - ), - ); - } + const MessageInput(), + ], + ), + ); } class ThreadPage extends StatelessWidget { diff --git a/packages/stream_chat_flutter/lib/src/group_avatar.dart b/packages/stream_chat_flutter/lib/src/group_avatar.dart index d7996c4d..e0e87e23 100644 --- a/packages/stream_chat_flutter/lib/src/group_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/group_avatar.dart @@ -16,6 +16,7 @@ class GroupAvatar extends StatelessWidget { this.selectionThickness = 4, }) : super(key: key); + /// The channel of the avatar final Channel? channel; /// List of images to display diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart index 525e663d..9525fea4 100644 --- a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart +++ b/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart @@ -5,8 +5,10 @@ import 'package:stream_chat/stream_chat.dart' show StreamChatError; part 'paged_value_notifier.freezed.dart'; +/// Default initial page size multiplier. const defaultInitialPagedLimitMultiplier = 3; +/// Value listenable for paged data. typedef PagedValueListenableBuilder = ValueListenableBuilder>; @@ -57,6 +59,7 @@ abstract class PagedValueNotifier final nextPageKey = lastValue.nextPageKey; // resetting the error value = lastValue.copyWith(error: null); + // ignore: null_check_on_nullable_type_parameter return loadMore(nextPageKey!); } @@ -78,10 +81,9 @@ abstract class PagedValueNotifier Future loadMore(Key nextPageKey); } +/// Paged value that can be used with [PagedValueNotifier]. @freezed abstract class PagedValue with _$PagedValue { - const PagedValue._(); - /// Represents the success state of the [PagedValue] // @Assert( // 'nextPageKey != null', @@ -98,6 +100,8 @@ abstract class PagedValue with _$PagedValue { StreamChatError? error, }) = Success; + const PagedValue._(); + /// Represents the loading state of the [PagedValue]. const factory PagedValue.loading() = Loading; diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart index 488452bd..e7eb903e 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:math'; import 'package:stream_chat/stream_chat.dart' hide Success; import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; @@ -7,6 +8,8 @@ import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list /// The default channel page limit to load. const defaultChannelPagedLimit = 10; +const _kDefaultBackendPaginationLimit = 30; + /// A controller for a Channel list. /// /// This class lets you perform tasks such as: @@ -102,7 +105,10 @@ class StreamChannelListController extends PagedValueNotifier { @override Future doInitialLoad() async { - final limit = this.limit * defaultInitialPagedLimitMultiplier; + final limit = min( + this.limit * defaultInitialPagedLimitMultiplier, + _kDefaultBackendPaginationLimit, + ); try { await for (final channels in client.queryChannels( filter: filter, diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart index 449dd982..44ace69e 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart @@ -146,8 +146,8 @@ class StreamChannelListEventHandler { /// Function which gets called for the event /// [EventType.notificationMessageNew]. /// - /// This event is fired when a new message is created in a channel which we are - /// not currently watching. + /// This event is fired when a new message is created in a channel + /// which we are not currently watching. /// /// By default, this adds the channel and moves it to the top of list. void onNotificationMessageNew( diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index 3c392a8f..f820e040 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -68,7 +68,8 @@ class StreamChannelListTile extends StatelessWidget { /// {@template flutter.material.ListTile.tileColor} /// Defines the background color of `ListTile`. /// - /// When the value is null, the `tileColor` is set to [ListTileTheme.tileColor] + /// When the value is null, + /// the `tileColor` is set to [ListTileTheme.tileColor] /// if it's not null and to [Colors.transparent] if it's null. /// {@endtemplate} final Color? tileColor; diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index 1527493e..adf69be0 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -143,9 +143,9 @@ class StreamChannelListView extends StatefulWidget { /// only scroll the view if it has sufficient content. See [physics]. /// /// Also when true, the scroll view is used for default [ScrollAction]s. If a - /// ScrollAction is not handled by an otherwise focused part of the application, - /// the ScrollAction will be evaluated using this scroll view, for example, - /// when executing [Shortcuts] key events like page up and down. + /// ScrollAction is not handled by an otherwise focused part of the + /// application, the ScrollAction will be evaluated using this scroll view, + /// for example, when executing [Shortcuts] key events like page up and down. /// /// On iOS, this also identifies the scroll view that will scroll to top in /// response to a tap in the status bar. diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart index 51bda67d..5107131d 100644 --- a/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart @@ -229,8 +229,9 @@ const _kDefaultChannelInfoBottomSheetShape = RoundedRectangleBorder( /// The [transitionAnimationController] controls the bottom sheet's entrance and /// exit animations if provided. /// -/// The optional `routeSettings` parameter sets the [RouteSettings] of the modal bottom sheet -/// sheet. This is particularly useful in the case that a user wants to observe +/// The optional `routeSettings` parameter sets the [RouteSettings] +/// of the modal bottom sheet sheet. +/// This is particularly useful in the case that a user wants to observe /// [PopupRoute]s within a [NavigatorObserver]. /// /// Returns a `Future` that resolves to the value (if any) that was passed to diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index fab90d17..7e6dc769 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -57,6 +57,10 @@ export 'src/utils.dart'; // v4 export 'src/v4/channel_list_view/stream_channel_list_controller.dart'; export 'src/v4/channel_list_view/stream_channel_list_event_handler.dart'; +export 'src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; +export 'src/v4/channel_list_view/stream_channel_list_tile.dart'; export 'src/v4/channel_list_view/stream_channel_list_view.dart'; +export 'src/v4/stream_channel_avatar.dart'; export 'src/v4/stream_channel_info_bottom_sheet.dart'; +export 'src/v4/stream_channel_name.dart'; export 'src/visible_footnote.dart'; From e80cebe9aa631605a6f27c70d6756b1c57f97573 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 1 Feb 2022 11:57:26 +0100 Subject: [PATCH 101/201] deprecate old widgets --- .../example/lib/tutorial_part_3.dart | 2 +- .../example/lib/tutorial_part_4.dart | 29 +++++++++---------- .../lib/src/channel_avatar.dart | 5 ++++ .../lib/src/channel_list_view.dart | 4 +++ .../lib/src/channel_name.dart | 4 +++ 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart index e8834eb1..76447b11 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart @@ -130,7 +130,7 @@ class _ChannelListPageState extends State { ), ); }, - leading: ChannelAvatar( + leading: StreamChannelAvatar( channel: channel, ), title: StreamChannelName( diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart index ce461ddc..fdea19ba 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart @@ -97,24 +97,21 @@ class ChannelPage extends StatelessWidget { }) : super(key: key); @override - // ignore: prefer_expression_function_bodies - Widget build(BuildContext context) { - return Scaffold( - appBar: const ChannelHeader(), - body: Column( - children: [ - Expanded( - child: MessageListView( - threadBuilder: (_, parentMessage) => ThreadPage( - parent: parentMessage, + Widget build(BuildContext context) => Scaffold( + appBar: const ChannelHeader(), + body: Column( + children: [ + Expanded( + child: MessageListView( + threadBuilder: (_, parentMessage) => ThreadPage( + parent: parentMessage, + ), ), ), - ), - const MessageInput(), - ], - ), - ); - } + const MessageInput(), + ], + ), + ); } class ThreadPage extends StatelessWidget { diff --git a/packages/stream_chat_flutter/lib/src/channel_avatar.dart b/packages/stream_chat_flutter/lib/src/channel_avatar.dart index ba24a640..50466040 100644 --- a/packages/stream_chat_flutter/lib/src/channel_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/channel_avatar.dart @@ -44,6 +44,11 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// The widget renders the ui based on the first ancestor of type /// [StreamChatTheme]. /// Modify it to change the widget appearance. + +@Deprecated( + "'ChannelName' is deprecated and shouldn't be used. " + "Please use 'StreamChannelName' instead.", +) class ChannelAvatar extends StatelessWidget { /// Instantiate a new ChannelImage const ChannelAvatar({ diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index e4097690..270c29af 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -52,6 +52,10 @@ typedef ViewInfoCallback = void Function(Channel); /// The widget components render the ui based on the first ancestor of /// type [StreamChatTheme]. /// Modify it to change the widget appearance. +@Deprecated( + "'ChannelListView' is deprecated and shouldn't be used. " + "Please use 'StreamChannelListView' instead.", +) class ChannelListView extends StatefulWidget { /// Instantiate a new ChannelListView ChannelListView({ diff --git a/packages/stream_chat_flutter/lib/src/channel_name.dart b/packages/stream_chat_flutter/lib/src/channel_name.dart index a1e81005..8dd8c054 100644 --- a/packages/stream_chat_flutter/lib/src/channel_name.dart +++ b/packages/stream_chat_flutter/lib/src/channel_name.dart @@ -6,6 +6,10 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// /// The widget uses a [StreamBuilder] to render the channel information /// image as soon as it updates. +@Deprecated( + "'ChannelName' is deprecated and shouldn't be used. " + "Please use 'StreamChannelName' instead.", +) class ChannelName extends StatelessWidget { /// Instantiate a new ChannelName const ChannelName({ From 6351fa0a5f8aef763399eca49a20f1b9f6223ec0 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 1 Feb 2022 12:03:29 +0100 Subject: [PATCH 102/201] deprecate old widgets --- packages/stream_chat_flutter/lib/src/channel_avatar.dart | 4 ++-- .../stream_chat_flutter/lib/src/channel_bottom_sheet.dart | 5 +++++ packages/stream_chat_flutter_core/lib/src/channels_bloc.dart | 4 ++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_avatar.dart b/packages/stream_chat_flutter/lib/src/channel_avatar.dart index 50466040..f7c949ee 100644 --- a/packages/stream_chat_flutter/lib/src/channel_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/channel_avatar.dart @@ -46,8 +46,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Modify it to change the widget appearance. @Deprecated( - "'ChannelName' is deprecated and shouldn't be used. " - "Please use 'StreamChannelName' instead.", + "'ChannelAvatar' is deprecated and shouldn't be used. " + "Please use 'StreamChannelAvatar' instead.", ) class ChannelAvatar extends StatelessWidget { /// Instantiate a new ChannelImage diff --git a/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart b/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart index 92726939..05d5996e 100644 --- a/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart +++ b/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart @@ -4,6 +4,10 @@ import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Bottom Sheet with options +@Deprecated( + "'ChannelBottomSheet' is deprecated and shouldn't be used. " + "Please use 'StreamChannelBottomSheet' instead.", +) class ChannelBottomSheet extends StatefulWidget { /// Constructor for creating bottom sheet const ChannelBottomSheet({Key? key, this.onViewInfoTap}) : super(key: key); @@ -15,6 +19,7 @@ class ChannelBottomSheet extends StatefulWidget { _ChannelBottomSheetState createState() => _ChannelBottomSheetState(); } +// ignore: deprecated_member_use_from_same_package class _ChannelBottomSheetState extends State { bool _showActions = true; diff --git a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart index fa19a90f..255eeae4 100644 --- a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart @@ -16,6 +16,10 @@ import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; /// using Flutter's [BuildContext]. /// /// API docs: https://getstream.io/chat/docs/flutter-dart/query_channels/ +@Deprecated( + "'ChannelsBloc' is deprecated and shouldn't be used. " + "Please use 'StreamChannelListView' instead.", +) class ChannelsBloc extends StatefulWidget { /// Creates a new [ChannelsBloc]. The parameter [child] must be supplied and /// not null. From ce22e854a811179cf63239cf87ebabbcf5346b2d Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 1 Feb 2022 12:29:52 +0100 Subject: [PATCH 103/201] Update packages/stream_chat_flutter_core/lib/src/channels_bloc.dart Co-authored-by: Sahil Kumar --- packages/stream_chat_flutter_core/lib/src/channels_bloc.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart index 255eeae4..9e7b05d1 100644 --- a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart @@ -18,7 +18,7 @@ import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; /// API docs: https://getstream.io/chat/docs/flutter-dart/query_channels/ @Deprecated( "'ChannelsBloc' is deprecated and shouldn't be used. " - "Please use 'StreamChannelListView' instead.", + "Please use 'StreamChannelListController' instead.", ) class ChannelsBloc extends StatefulWidget { /// Creates a new [ChannelsBloc]. The parameter [child] must be supplied and From 202af02f8e7d6d456a66e3ddd313cb434efa53a8 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 7 Feb 2022 15:25:07 +0530 Subject: [PATCH 104/201] chore: move controllers from ui to core Signed-off-by: xsahil03x --- .../src/message_input/simple_safe_area.dart | 17 +++----- .../stream_channel_list_view.dart | 3 -- .../lib/stream_chat_flutter.dart | 4 -- .../message_input_controller_test.dart | 14 ------ .../lib/src}/message_input_controller.dart | 4 +- .../src}/message_text_field_controller.dart | 15 +------ .../lib/src/paged_value_notifier.dart | 0 .../lib/src/paged_value_notifier.freezed.dart | 43 +++++++++---------- .../src}/stream_channel_list_controller.dart | 5 ++- .../stream_channel_list_event_handler.dart | 2 +- .../lib/stream_chat_flutter_core.dart | 5 +++ .../stream_chat_flutter_core/pubspec.yaml | 3 ++ 12 files changed, 44 insertions(+), 71 deletions(-) delete mode 100644 packages/stream_chat_flutter/test/src/message_input/message_input_controller_test.dart rename packages/{stream_chat_flutter/lib/src/message_input => stream_chat_flutter_core/lib/src}/message_input_controller.dart (98%) rename packages/{stream_chat_flutter/lib/src/message_input => stream_chat_flutter_core/lib/src}/message_text_field_controller.dart (82%) rename packages/{stream_chat_flutter => stream_chat_flutter_core}/lib/src/paged_value_notifier.dart (100%) rename packages/{stream_chat_flutter => stream_chat_flutter_core}/lib/src/paged_value_notifier.freezed.dart (93%) rename packages/{stream_chat_flutter/lib/src/v4/channel_list_view => stream_chat_flutter_core/lib/src}/stream_channel_list_controller.dart (98%) rename packages/{stream_chat_flutter/lib/src/v4/channel_list_view => stream_chat_flutter_core/lib/src}/stream_channel_list_event_handler.dart (98%) diff --git a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart index b91684ed..5f3d7391 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; /// A [SafeArea] with an enabled toggle -class SimpleSafeArea extends StatefulWidget { +class SimpleSafeArea extends StatelessWidget { /// Constructor for [SimpleSafeArea] const SimpleSafeArea({ Key? key, @@ -15,17 +15,12 @@ class SimpleSafeArea extends StatefulWidget { /// Child widget to wrap final Widget child; - @override - _SimpleSafeAreaState createState() => _SimpleSafeAreaState(); -} - -class _SimpleSafeAreaState extends State { @override Widget build(BuildContext context) => SafeArea( - left: widget.enabled, - top: widget.enabled, - right: widget.enabled, - bottom: widget.enabled, - child: widget.child, + left: enabled, + top: enabled, + right: enabled, + bottom: enabled, + child: child, ); } diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index adf69be0..1d88f354 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -1,11 +1,8 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; -import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_tile.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 7e6dc769..83a31510 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -25,8 +25,6 @@ export 'src/mention_tile.dart'; export 'src/message_action.dart'; export 'src/message_input/countdown_button.dart'; export 'src/message_input/message_input.dart'; -export 'src/message_input/message_input_controller.dart'; -export 'src/message_input/message_text_field_controller.dart'; export 'src/message_input/stream_attachment_picker.dart'; export 'src/message_input/stream_message_send_button.dart'; export 'src/message_input/stream_message_text_field.dart'; @@ -55,8 +53,6 @@ export 'src/user_mention_tile.dart'; export 'src/utils.dart'; // v4 -export 'src/v4/channel_list_view/stream_channel_list_controller.dart'; -export 'src/v4/channel_list_view/stream_channel_list_event_handler.dart'; export 'src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; export 'src/v4/channel_list_view/stream_channel_list_tile.dart'; export 'src/v4/channel_list_view/stream_channel_list_view.dart'; diff --git a/packages/stream_chat_flutter/test/src/message_input/message_input_controller_test.dart b/packages/stream_chat_flutter/test/src/message_input/message_input_controller_test.dart deleted file mode 100644 index 1b496784..00000000 --- a/packages/stream_chat_flutter/test/src/message_input/message_input_controller_test.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -void main() { - testWidgets( - 'should instantiate a new MessageInputController with empty message', - (tester) async { - final controller = MessageInputController()..text = 'test'; - - expect(controller.text, 'test'); - expect(controller.message.text, 'test'); - }, - ); -} diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart similarity index 98% rename from packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart rename to packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 185c875c..65c6d8d8 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -2,7 +2,9 @@ import 'dart:convert'; import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:stream_chat/stream_chat.dart'; + +import 'package:stream_chat_flutter_core/src/message_text_field_controller.dart'; /// A value listenable builder related to a [Message]. /// diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart similarity index 82% rename from packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart rename to packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart index 4a6c3708..0f9f75c6 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_text_field_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart @@ -1,6 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/src/message_input/tld.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// A function that takes a [BuildContext] and returns a [TextStyle]. typedef TextStyleBuilder = TextStyle? Function( @@ -33,17 +31,8 @@ class MessageTextFieldController extends TextEditingController { TextStyle? style, required bool withComposing, }) { - final pattern = textPatternStyle ?? - { - RegExp(r'(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-?=%.]+'): - (context, text) { - if (!text.split('.').last.isValidTLD()) return null; - return TextStyle( - color: MessageInputTheme.of(context).linkHighlightColor, - ); - }, - }; - if (pattern.isEmpty) { + final pattern = textPatternStyle; + if (pattern == null || pattern.isEmpty) { return super.buildTextSpan( context: context, style: style, diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.dart b/packages/stream_chat_flutter_core/lib/src/paged_value_notifier.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/paged_value_notifier.dart rename to packages/stream_chat_flutter_core/lib/src/paged_value_notifier.dart diff --git a/packages/stream_chat_flutter/lib/src/paged_value_notifier.freezed.dart b/packages/stream_chat_flutter_core/lib/src/paged_value_notifier.freezed.dart similarity index 93% rename from packages/stream_chat_flutter/lib/src/paged_value_notifier.freezed.dart rename to packages/stream_chat_flutter_core/lib/src/paged_value_notifier.freezed.dart index 515a9742..a7ea0ea3 100644 --- a/packages/stream_chat_flutter/lib/src/paged_value_notifier.freezed.dart +++ b/packages/stream_chat_flutter_core/lib/src/paged_value_notifier.freezed.dart @@ -191,22 +191,20 @@ class _$Success extends Success @override bool operator ==(dynamic other) { return identical(this, other) || - (other is Success && - (identical(other.items, items) || - const DeepCollectionEquality().equals(other.items, items)) && - (identical(other.nextPageKey, nextPageKey) || - const DeepCollectionEquality() - .equals(other.nextPageKey, nextPageKey)) && - (identical(other.error, error) || - const DeepCollectionEquality().equals(other.error, error))); + (other.runtimeType == runtimeType && + other is Success && + const DeepCollectionEquality().equals(other.items, items) && + const DeepCollectionEquality() + .equals(other.nextPageKey, nextPageKey) && + const DeepCollectionEquality().equals(other.error, error)); } @override - int get hashCode => - runtimeType.hashCode ^ - const DeepCollectionEquality().hash(items) ^ - const DeepCollectionEquality().hash(nextPageKey) ^ - const DeepCollectionEquality().hash(error); + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(items), + const DeepCollectionEquality().hash(nextPageKey), + const DeepCollectionEquality().hash(error)); @JsonKey(ignore: true) @override @@ -296,13 +294,13 @@ abstract class Success extends PagedValue { const Success._() : super._(); /// List with all items loaded so far. - List get items => throw _privateConstructorUsedError; + List get items; /// The key for the next page to be fetched. - Key? get nextPageKey => throw _privateConstructorUsedError; + Key? get nextPageKey; /// The current error, if any. - StreamChatError? get error => throw _privateConstructorUsedError; + StreamChatError? get error; @JsonKey(ignore: true) $SuccessCopyWith> get copyWith => throw _privateConstructorUsedError; @@ -347,7 +345,8 @@ class _$Loading extends Loading @override bool operator ==(dynamic other) { - return identical(this, other) || (other is Loading); + return identical(this, other) || + (other.runtimeType == runtimeType && other is Loading); } @override @@ -490,14 +489,14 @@ class _$Error extends Error @override bool operator ==(dynamic other) { return identical(this, other) || - (other is Error && - (identical(other.error, error) || - const DeepCollectionEquality().equals(other.error, error))); + (other.runtimeType == runtimeType && + other is Error && + const DeepCollectionEquality().equals(other.error, error)); } @override int get hashCode => - runtimeType.hashCode ^ const DeepCollectionEquality().hash(error); + Object.hash(runtimeType, const DeepCollectionEquality().hash(error)); @JsonKey(ignore: true) @override @@ -583,7 +582,7 @@ abstract class Error extends PagedValue { const factory Error(StreamChatError error) = _$Error; const Error._() : super._(); - StreamChatError get error => throw _privateConstructorUsedError; + StreamChatError get error; @JsonKey(ignore: true) $ErrorCopyWith> get copyWith => throw _privateConstructorUsedError; diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart similarity index 98% rename from packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart rename to packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart index e7eb903e..7d3a281f 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart @@ -2,8 +2,9 @@ import 'dart:async'; import 'dart:math'; import 'package:stream_chat/stream_chat.dart' hide Success; -import 'package:stream_chat_flutter/src/paged_value_notifier.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_event_handler.dart'; +import 'package:stream_chat_flutter_core/src/paged_value_notifier.dart'; + +import 'package:stream_chat_flutter_core/src/stream_channel_list_event_handler.dart'; /// The default channel page limit to load. const defaultChannelPagedLimit = 10; diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_event_handler.dart similarity index 98% rename from packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart rename to packages/stream_chat_flutter_core/lib/src/stream_channel_list_event_handler.dart index 44ace69e..8d548c67 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_event_handler.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_event_handler.dart @@ -1,5 +1,5 @@ import 'package:stream_chat/stream_chat.dart' show ChannelState, Event; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_controller.dart'; +import 'package:stream_chat_flutter_core/src/stream_channel_list_controller.dart'; /// Contains handlers that are called from [StreamChannelListController] for /// certain [Event]s. diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index 8bd41c76..78d82d8b 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -7,10 +7,15 @@ export 'src/better_stream_builder.dart'; export 'src/channel_list_core.dart' hide ChannelListCoreState; export 'src/channels_bloc.dart'; export 'src/lazy_load_scroll_view.dart'; +export 'src/message_input_controller.dart'; export 'src/message_list_core.dart' hide MessageListCoreState; export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; +export 'src/message_text_field_controller.dart'; +export 'src/paged_value_notifier.dart' show PagedValueListenableBuilder; export 'src/stream_channel.dart'; +export 'src/stream_channel_list_controller.dart'; +export 'src/stream_channel_list_event_handler.dart'; export 'src/stream_chat_core.dart'; export 'src/typedef.dart'; export 'src/user_list_core.dart' hide UserListCoreState; diff --git a/packages/stream_chat_flutter_core/pubspec.yaml b/packages/stream_chat_flutter_core/pubspec.yaml index fb9307c1..cf1206cc 100644 --- a/packages/stream_chat_flutter_core/pubspec.yaml +++ b/packages/stream_chat_flutter_core/pubspec.yaml @@ -14,14 +14,17 @@ dependencies: connectivity_plus: ^2.1.0 flutter: sdk: flutter + freezed_annotation: ^1.0.0 meta: ^1.3.0 rxdart: ^0.27.0 stream_chat: ^3.3.1 dev_dependencies: + build_runner: ^2.0.1 dart_code_metrics: ^4.4.0 fake_async: ^1.2.0 flutter_test: sdk: flutter + freezed: ^1.0.0 mocktail: ^0.2.0 From 23c01018ff78a83a219d414b0f1092cea3802539 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Mon, 7 Mar 2022 17:43:00 +0530 Subject: [PATCH 105/201] Added a flag to control autocorrect in messageinput and a field to provide a custom scroll to bottom builder --- .../lib/src/message_input.dart | 4 ++ .../lib/src/message_list_view.dart | 58 ++++++++++++------- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index d1a45786..9af64b38 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -200,6 +200,7 @@ class MessageInput extends StatefulWidget { this.customOverlays = const [], this.mentionAllAppUsers = false, this.shouldKeepFocusAfterMessage, + this.autocorrectEnabled, }) : assert( initialMessage == null || editMessage == null, "Can't provide both `initialMessage` and `editMessage`", @@ -322,6 +323,8 @@ class MessageInput extends StatefulWidget { /// The default behaviour keeps focus until a command is enabled. final bool? shouldKeepFocusAfterMessage; + final bool? autocorrectEnabled; + @override MessageInputState createState() => MessageInputState(); @@ -707,6 +710,7 @@ class MessageInputState extends State { textAlignVertical: TextAlignVertical.center, decoration: _getInputDecoration(context), textCapitalization: TextCapitalization.sentences, + autocorrect: widget.autocorrectEnabled ?? true, ), ), ], diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index c6e269b9..edd76327 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -170,6 +170,7 @@ class MessageListView extends StatefulWidget { const MessageListView({ Key? key, this.showScrollToBottom = true, + this.scrollToBottomBuilder, this.messageBuilder, this.parentMessageBuilder, this.parentMessage, @@ -242,6 +243,11 @@ class MessageListView extends StatefulWidget { /// messages and the scroll offset is not zero final bool showScrollToBottom; + final Widget Function( + int unreadCount, + Future Function(int) scrollToBottomDefaultTapAction, + )? scrollToBottomBuilder; + /// Parent message in case of a thread final Message? parentMessage; @@ -846,6 +852,29 @@ class _MessageListViewState extends State { .index; } + Future scrollToBottomDefaultTapAction(int unreadCount) async { + if (unreadCount > 0) { + streamChannel!.channel.markRead(); + } + if (!_upToDate) { + _bottomPaginationActive = false; + initialAlignment = 0; + initialIndex = 0; + await streamChannel!.reloadChannel(); + + WidgetsBinding.instance?.addPostFrameCallback((_) { + _scrollController!.jumpTo(index: 0); + }); + } else { + _showScrollToBottom.value = false; + _scrollController!.scrollTo( + index: 0, + duration: const Duration(seconds: 1), + curve: Curves.easeInOut, + ); + } + } + Widget _buildScrollToBottom() => StreamBuilder( stream: streamChannel!.channel.state!.unreadCountStream, builder: (_, snapshot) { @@ -855,6 +884,12 @@ class _MessageListViewState extends State { return const Offstage(); } final unreadCount = snapshot.data!; + if (widget.scrollToBottomBuilder != null) { + return widget.scrollToBottomBuilder!( + unreadCount, + scrollToBottomDefaultTapAction, + ); + } final showUnreadCount = unreadCount > 0 && streamChannel!.channel.state!.members.any((e) => e.userId == @@ -869,28 +904,7 @@ class _MessageListViewState extends State { children: [ FloatingActionButton( backgroundColor: _streamTheme.colorTheme.barsBg, - onPressed: () async { - if (unreadCount > 0) { - streamChannel!.channel.markRead(); - } - if (!_upToDate) { - _bottomPaginationActive = false; - initialAlignment = 0; - initialIndex = 0; - await streamChannel!.reloadChannel(); - - WidgetsBinding.instance?.addPostFrameCallback((_) { - _scrollController!.jumpTo(index: 0); - }); - } else { - _showScrollToBottom.value = false; - _scrollController!.scrollTo( - index: 0, - duration: const Duration(seconds: 1), - curve: Curves.easeInOut, - ); - } - }, + onPressed: () => scrollToBottomDefaultTapAction(unreadCount), child: widget.reverse ? StreamSvgIcon.down( color: _streamTheme.colorTheme.textHighEmphasis, From 165e7a5e248000c5153e1e60a52f4fefe7f4fc96 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 7 Mar 2022 19:03:01 +0530 Subject: [PATCH 106/201] test(llc): fix tests Signed-off-by: xsahil03x --- .../test/src/client/channel_test.dart | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat/test/src/client/channel_test.dart b/packages/stream_chat/test/src/client/channel_test.dart index fe38af5f..9452a433 100644 --- a/packages/stream_chat/test/src/client/channel_test.dart +++ b/packages/stream_chat/test/src/client/channel_test.dart @@ -1132,7 +1132,10 @@ void main() { test('should work fine with score passed explicitly', () async { const type = 'test-reaction-type'; - final message = Message(id: 'test-message-id'); + final message = Message( + id: 'test-message-id', + status: MessageSendingStatus.sent, + ); const score = 5; final reaction = Reaction( @@ -1192,7 +1195,10 @@ void main() { test('should work fine with score passed explicitly and in extraData', () async { const type = 'test-reaction-type'; - final message = Message(id: 'test-message-id'); + final message = Message( + id: 'test-message-id', + status: MessageSendingStatus.sent, + ); const score = 5; const extraDataScore = 3; @@ -1392,6 +1398,7 @@ void main() { final message = Message( id: 'test-message-id', parentId: 'test-parent-id', // is thread message + status: MessageSendingStatus.sent, ); final reaction = Reaction(type: type, messageId: message.id); @@ -1441,6 +1448,7 @@ void main() { final message = Message( id: 'test-message-id', parentId: 'test-parent-id', // is thread message + status: MessageSendingStatus.sent, ); final reaction = Reaction(type: type, messageId: message.id); @@ -1508,6 +1516,7 @@ void main() { latestReactions: [prevReaction], reactionScores: const {prevType: 1}, reactionCounts: const {prevType: 1}, + status: MessageSendingStatus.sent, ); const type = 'test-reaction-type-2'; @@ -1688,11 +1697,13 @@ void main() { ); final message = Message( id: messageId, - parentId: parentId, // is thread + parentId: parentId, + // is thread ownReactions: [reaction], latestReactions: [reaction], reactionScores: const {type: 1}, reactionCounts: const {type: 1}, + status: MessageSendingStatus.sent, ); when(() => client.deleteReaction(messageId, type)) @@ -1745,6 +1756,7 @@ void main() { latestReactions: [reaction], reactionScores: const {type: 1}, reactionCounts: const {type: 1}, + status: MessageSendingStatus.sent, ); when(() => client.deleteReaction(messageId, type)) From 357357cdff63630d37fd108fb5c6b3ae00b64c32 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 8 Mar 2022 10:29:49 +0100 Subject: [PATCH 107/201] fix tests --- .../lib/src/theme/message_input_theme.dart | 4 +++- .../test/src/typing_indicator_test.dart | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart index 9bc8ffd2..81047d77 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart @@ -1,3 +1,5 @@ +import 'dart:ui'; + import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; @@ -188,7 +190,7 @@ class MessageInputThemeData with Diagnosticable { linkHighlightColor: Color.lerp(a.linkHighlightColor, b.linkHighlightColor, t), enableSafeArea: a.enableSafeArea, - elevation: Tween(begin: a.elevation, end: b.elevation).transform(t), + elevation: lerpDouble(a.elevation, b.elevation, t), shadow: BoxShadow.lerp(a.shadow, b.shadow, t), ); diff --git a/packages/stream_chat_flutter/test/src/typing_indicator_test.dart b/packages/stream_chat_flutter/test/src/typing_indicator_test.dart index 8d790266..0a98aff7 100644 --- a/packages/stream_chat_flutter/test/src/typing_indicator_test.dart +++ b/packages/stream_chat_flutter/test/src/typing_indicator_test.dart @@ -63,19 +63,23 @@ void main() { Event(type: EventType.typingStart), })); + const typingKey = Key('typing'); + await tester.pumpWidget(MaterialApp( home: StreamChat( client: client, child: StreamChannel( channel: channel, child: const Scaffold( - body: TypingIndicator(), + body: TypingIndicator( + key: typingKey, + ), ), ), ), )); - expect(find.byKey(const Key('typings')), findsOneWidget); + expect(find.byKey(typingKey), findsOneWidget); }, ); } From f8c0f808d81698ebea7cb9782ab1409aabc86b0f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 8 Mar 2022 10:44:52 +0100 Subject: [PATCH 108/201] add missing localizations --- .../lib/src/message_list_view.dart | 1 + .../lib/src/stream_chat_localizations.dart | 1 + .../lib/src/stream_chat_localizations_pt.dart | 11 +++++++++++ 3 files changed, 13 insertions(+) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 2773b192..e4d67740 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -526,6 +526,7 @@ class _MessageListViewState extends State { return ((index + 2) * 2) - 1; } } + return null; }, // Item Count -> 8 (1 parent, 2 header+footer, 2 top+bottom, 3 messages) diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart index 0c7ce68e..6ea2eda4 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations.dart @@ -75,6 +75,7 @@ GlobalStreamChatLocalizations? getStreamChatTranslation(Locale locale) { case 'pt': return const StreamChatLocalizationsPt(); } + return null; } /// Implementation of localized strings for the stream chat widgets diff --git a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart index 44c02081..4c1d2a58 100644 --- a/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart +++ b/packages/stream_chat_localizations/lib/src/stream_chat_localizations_pt.dart @@ -371,4 +371,15 @@ Não é possível adicionar mais de $limit arquivos de uma vez @override String get slowModeOnLabel => 'Modo lento ativado'; + + @override + String get linkDisabledDetails => + 'O envio de links não é permitido nesta conversa.'; + + @override + String get linkDisabledError => 'Os links estão desativados'; + + @override + String get sendMessagePermissionError => + 'Você não tem permissão para enviar mensagens'; } From a7e3839256d0c0725dcdf030766bb5e091ac0127 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 10 Mar 2022 14:12:01 +0530 Subject: [PATCH 109/201] refactor(ui, core): Deprecate v3 Signed-off-by: xsahil03x --- .../stream_chat_flutter/example/lib/main.dart | 8 +- .../example/lib/split_view.dart | 6 +- .../example/lib/tutorial_part_1.dart | 8 +- .../example/lib/tutorial_part_2.dart | 8 +- .../example/lib/tutorial_part_3.dart | 12 +- .../example/lib/tutorial_part_4.dart | 16 +- .../example/lib/tutorial_part_5.dart | 10 +- .../example/lib/tutorial_part_6.dart | 22 +- .../lib/src/attachment/attachment_title.dart | 12 +- .../attachment_upload_state_builder.dart | 16 +- .../lib/src/attachment/attachment_widget.dart | 10 +- .../lib/src/attachment/file_attachment.dart | 16 +- .../lib/src/attachment/giphy_attachment.dart | 16 +- .../lib/src/attachment/image_attachment.dart | 22 +- .../lib/src/attachment/url_attachment.dart | 16 +- .../lib/src/attachment/video_attachment.dart | 26 +- .../lib/src/attachment_actions_modal.dart | 2 +- .../lib/src/back_button.dart | 2 +- .../lib/src/channel_avatar.dart | 6 +- .../lib/src/channel_bottom_sheet.dart | 26 +- .../lib/src/channel_header.dart | 29 +- .../lib/src/channel_info.dart | 18 +- .../lib/src/channel_list_header.dart | 38 +- .../lib/src/channel_list_view.dart | 23 +- .../lib/src/channel_name.dart | 5 +- .../lib/src/channel_preview.dart | 41 +- .../lib/src/commands_overlay.dart | 13 +- .../lib/src/connection_status_builder.dart | 10 +- .../lib/src/date_divider.dart | 12 +- .../lib/src/deleted_message.dart | 16 +- .../lib/src/emoji_overlay.dart | 12 +- .../lib/src/full_screen_media.dart | 20 +- .../lib/src/gallery_footer.dart | 25 +- .../lib/src/gallery_header.dart | 15 +- .../lib/src/gradient_avatar.dart | 16 +- .../lib/src/group_avatar.dart | 17 +- .../lib/src/image_group.dart | 20 +- .../lib/src/info_tile.dart | 12 +- .../lib/src/localization/translations.dart | 24 +- .../lib/src/media_list_view.dart | 36 +- .../lib/src/mention_tile.dart | 101 - .../lib/src/message_action.dart | 12 +- .../lib/src/message_actions_modal.dart | 31 +- .../lib/src/message_input.dart | 2110 +++++++++++++++++ .../src/message_input/countdown_button.dart | 6 +- .../lib/src/message_input/message_input.dart | 52 +- .../stream_attachment_picker.dart | 4 +- .../stream_message_send_button.dart | 6 +- .../lib/src/message_list_view.dart | 46 +- .../lib/src/message_reactions_modal.dart | 22 +- .../lib/src/message_search_item.dart | 20 +- .../lib/src/message_search_list_view.dart | 27 +- .../lib/src/message_text.dart | 16 +- .../lib/src/message_widget.dart | 68 +- .../lib/src/multi_overlay.dart | 10 +- .../lib/src/option_list_tile.dart | 12 +- .../lib/src/quoted_message_widget.dart | 106 +- .../lib/src/reaction_bubble.dart | 14 +- .../lib/src/reaction_icon.dart | 10 +- .../lib/src/reaction_picker.dart | 18 +- .../lib/src/sending_indicator.dart | 12 +- .../lib/src/stream_chat_theme.dart | 162 +- .../lib/src/system_message.dart | 14 +- .../lib/src/theme/avatar_theme.dart | 32 +- .../lib/src/theme/channel_header_theme.dart | 72 +- .../src/theme/channel_list_header_theme.dart | 72 +- .../src/theme/channel_list_view_theme.dart | 66 +- .../lib/src/theme/channel_preview_theme.dart | 68 +- .../lib/src/theme/color_theme.dart | 20 +- .../lib/src/theme/gallery_footer_theme.dart | 62 +- .../lib/src/theme/gallery_header_theme.dart | 62 +- .../lib/src/theme/message_input_theme.dart | 62 +- .../src/theme/message_list_view_theme.dart | 64 +- .../theme/message_search_list_view_theme.dart | 56 +- .../lib/src/theme/message_theme.dart | 38 +- .../lib/src/theme/text_theme.dart | 20 +- .../lib/src/theme/user_list_view_theme.dart | 62 +- .../lib/src/thread_header.dart | 17 +- .../lib/src/typing_indicator.dart | 10 +- .../lib/src/unread_indicator.dart | 12 +- .../lib/src/upload_progress_indicator.dart | 12 +- .../lib/src/user_avatar.dart | 12 +- .../lib/src/user_item.dart | 19 +- .../lib/src/user_list_view.dart | 21 +- .../lib/src/user_mention_tile.dart | 14 +- .../lib/src/user_mentions_overlay.dart | 23 +- .../stream_channel_list_tile.dart | 8 +- .../lib/src/v4/stream_channel_avatar.dart | 6 +- .../v4/stream_channel_info_bottom_sheet.dart | 14 +- .../lib/src/video_service.dart | 5 + .../lib/src/video_thumbnail_image.dart | 23 +- .../lib/src/visible_footnote.dart | 12 +- .../lib/stream_chat_flutter.dart | 1 - .../test/src/attachment_widgets_test.dart | 2 +- .../test/src/back_button_test.dart | 2 +- .../test/src/channel_header_test.dart | 40 +- .../test/src/channel_image_test.dart | 3 +- .../test/src/channel_list_header_test.dart | 19 +- .../test/src/channel_preview_test.dart | 2 +- .../test/src/date_divider_test.dart | 2 +- .../test/src/deleted_message_test.dart | 10 +- .../test/src/full_screen_media_test.dart | 2 +- .../test/src/gradient_avatar_test.dart | 15 +- .../test/src/image_footer_test.dart | 2 +- .../test/src/info_tile_test.dart | 4 +- .../test/src/message_action_modal_test.dart | 34 +- .../test/src/message_input_test.dart | 4 +- .../test/src/message_list_view_test.dart | 10 +- .../src/message_reactions_modal_test.dart | 12 +- .../test/src/message_text_test.dart | 10 +- .../test/src/reaction_bubble_test.dart | 10 +- .../test/src/system_message_test.dart | 8 +- .../test/src/theme/avatar_theme_test.dart | 17 +- .../src/theme/channel_header_theme_test.dart | 38 +- .../theme/channel_list_header_theme_test.dart | 34 +- .../theme/channel_list_view_theme_test.dart | 34 +- .../src/theme/channel_preview_theme_test.dart | 52 +- .../src/theme/gallery_footer_theme_test.dart | 72 +- .../src/theme/gallery_header_theme_test.dart | 40 +- .../src/theme/message_input_theme_test.dart | 64 +- .../theme/message_list_view_theme_test.dart | 46 +- .../message_search_list_view_theme_test.dart | 35 +- .../test/src/theme/message_theme_test.dart | 75 +- .../src/theme/user_list_view_theme_test.dart | 32 +- .../test/src/thread_header_test.dart | 4 +- .../test/src/typing_indicator_test.dart | 2 +- .../test/src/unread_indicator_test.dart | 6 +- .../lib/src/channels_bloc.dart | 5 +- 128 files changed, 3891 insertions(+), 1362 deletions(-) delete mode 100644 packages/stream_chat_flutter/lib/src/mention_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/message_input.dart diff --git a/packages/stream_chat_flutter/example/lib/main.dart b/packages/stream_chat_flutter/example/lib/main.dart index 6b5a299f..4a7eabf4 100644 --- a/packages/stream_chat_flutter/example/lib/main.dart +++ b/packages/stream_chat_flutter/example/lib/main.dart @@ -87,7 +87,7 @@ class MyApp extends StatelessWidget { /// A list of messages sent in the current channel. /// -/// This is implemented using [MessageListView], a widget that provides query +/// This is implemented using [StreamMessageListView], a widget that provides query /// functionalities fetching the messages from the api and showing them in a /// listView. class ChannelPage extends StatelessWidget { @@ -98,13 +98,13 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) => Scaffold( - appBar: const ChannelHeader(), + appBar: const StreamChannelHeader(), body: Column( children: const [ Expanded( - child: MessageListView(), + child: StreamMessageListView(), ), - MessageInput(attachmentLimit: 3), + StreamMessageInput(attachmentLimit: 3), ], ), ); diff --git a/packages/stream_chat_flutter/example/lib/split_view.dart b/packages/stream_chat_flutter/example/lib/split_view.dart index 75b8f64b..6f4c51e6 100644 --- a/packages/stream_chat_flutter/example/lib/split_view.dart +++ b/packages/stream_chat_flutter/example/lib/split_view.dart @@ -125,15 +125,15 @@ class ChannelPage extends StatelessWidget { Widget build(BuildContext context) => Navigator( onGenerateRoute: (settings) => MaterialPageRoute( builder: (context) => Scaffold( - appBar: const ChannelHeader( + appBar: const StreamChannelHeader( showBackButton: false, ), body: Column( children: const [ Expanded( - child: MessageListView(), + child: StreamMessageListView(), ), - MessageInput(), + StreamMessageInput(), ], ), ), diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart index 82acabf9..cd3bb12e 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart @@ -27,7 +27,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// - We make [StreamChat] the root Widget of our application /// /// - We create a single [ChannelPage] widget under [StreamChat] with three -/// widgets: [ChannelHeader], [MessageListView] and [MessageInput] +/// widgets: [StreamChannelHeader], [StreamMessageListView] and [StreamMessageInput] /// /// If you now run the simulator you will see a single channel UI. void main() async { @@ -91,13 +91,13 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) => Scaffold( - appBar: const ChannelHeader(), + appBar: const StreamChannelHeader(), body: Column( children: const [ Expanded( - child: MessageListView(), + child: StreamMessageListView(), ), - MessageInput(), + StreamMessageInput(), ], ), ); diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart index 9f718b7e..0ca2356e 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart @@ -25,7 +25,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// The [ChannelListPage] widget retrieves the list of channels based on a /// custom query and ordering. In this case we are showing the list of /// channels in which the current user is a member and we order them based -/// on the time they had a new message. [ChannelListView] handles pagination +/// on the time they had a new message. [StreamChannelListView] handles pagination /// and updates automatically when new channels are created or when a new /// message is added to a channel. void main() async { @@ -118,13 +118,13 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) => Scaffold( - appBar: const ChannelHeader(), + appBar: const StreamChannelHeader(), body: Column( children: const [ Expanded( - child: MessageListView(), + child: StreamMessageListView(), ), - MessageInput(), + StreamMessageInput(), ], ), ); diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart index 76447b11..8eb01fbb 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart @@ -15,8 +15,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// We start by changing how channel previews are shown in the channel list /// and include the number of unread messages for each. /// -/// We're passing a custom widget to [ChannelListView.channelPreviewBuilder]; -/// this will override the default [ChannelPreview] and allows you to create +/// We're passing a custom widget to [StreamChannelListView.channelPreviewBuilder]; +/// this will override the default [StreamChannelPreview] and allows you to create /// one yourself. /// /// There are a couple interesting things we do in this widget: @@ -134,7 +134,7 @@ class _ChannelListPageState extends State { channel: channel, ), title: StreamChannelName( - textStyle: ChannelPreviewTheme.of(context).titleStyle!.copyWith( + textStyle: StreamChannelPreviewTheme.of(context).titleStyle!.copyWith( color: StreamChatTheme.of(context) .colorTheme .textHighEmphasis @@ -162,13 +162,13 @@ class ChannelPage extends StatelessWidget { // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( - appBar: const ChannelHeader(), + appBar: const StreamChannelHeader(), body: Column( children: const [ Expanded( - child: MessageListView(), + child: StreamMessageListView(), ), - MessageInput(), + StreamMessageInput(), ], ), ); diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart index fdea19ba..89aa55f7 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart @@ -8,8 +8,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// to create sub-conversations inside the same channel. /// /// Using threaded conversations is very simple and mostly a matter of -/// plugging the [MessageListView] to another widget that renders the widget. -/// To make this simple, such a widget only needs to build [MessageListView] +/// plugging the [StreamMessageListView] to another widget that renders the widget. +/// To make this simple, such a widget only needs to build [StreamMessageListView] /// with the parent attribute set to the thread’s root message. /// /// Now we can open threads and create new ones as well. If you long-press a @@ -98,17 +98,17 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) => Scaffold( - appBar: const ChannelHeader(), + appBar: const StreamChannelHeader(), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( threadBuilder: (_, parentMessage) => ThreadPage( parent: parentMessage, ), ), ), - const MessageInput(), + const StreamMessageInput(), ], ), ); @@ -126,17 +126,17 @@ class ThreadPage extends StatelessWidget { // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( - appBar: ThreadHeader( + appBar: StreamThreadHeader( parent: parent!, ), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( parentMessage: parent, ), ), - MessageInput( + StreamMessageInput( messageInputController: MessageInputController( message: Message(parentId: parent!.id), ), diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart index 347ceaf4..fd6081f7 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart @@ -8,7 +8,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// the SDK supports easily. /// /// Replacing the built-in message component with your own is done by passing -/// it as a builder function to the [MessageListView] widget. +/// it as a builder function to the [StreamMessageListView] widget. /// /// The message builder function will get the usual [BuildContext] argument /// as well as the [Message] object and its position inside the list. @@ -106,15 +106,15 @@ class ChannelPage extends StatelessWidget { // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( - appBar: const ChannelHeader(), + appBar: const StreamChannelHeader(), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( messageBuilder: _messageBuilder, ), ), - const MessageInput(), + const StreamMessageInput(), ], ), ); @@ -124,7 +124,7 @@ class ChannelPage extends StatelessWidget { BuildContext context, MessageDetails details, List messages, - MessageWidget _, + StreamMessageWidget _, ) { final message = details.message; final isCurrentUser = diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart index 4bb8e928..6ff1bb64 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart @@ -58,24 +58,24 @@ class MyApp extends StatelessWidget { final defaultTheme = StreamChatThemeData.fromTheme(themeData); final colorTheme = defaultTheme.colorTheme; final customTheme = defaultTheme.merge(StreamChatThemeData( - channelPreviewTheme: ChannelPreviewThemeData( - avatarTheme: AvatarThemeData( + channelPreviewTheme: StreamChannelPreviewThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(8), ), ), - messageListViewTheme: const MessageListViewThemeData( + messageListViewTheme: const StreamMessageListViewThemeData( backgroundColor: Colors.grey, backgroundImage: DecorationImage( image: AssetImage('assets/background_doodle.png'), fit: BoxFit.cover, ), ), - otherMessageTheme: MessageThemeData( + otherMessageTheme: StreamMessageThemeData( messageBackgroundColor: colorTheme.textHighEmphasis, messageTextStyle: TextStyle( color: colorTheme.barsBg, ), - avatarTheme: AvatarThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(8), ), ), @@ -137,17 +137,17 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) => Scaffold( - appBar: const ChannelHeader(), + appBar: const StreamChannelHeader(), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( threadBuilder: (_, parentMessage) => ThreadPage( parent: parentMessage, ), ), ), - const MessageInput(), + const StreamMessageInput(), ], ), ); @@ -165,17 +165,17 @@ class ThreadPage extends StatelessWidget { // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( - appBar: ThreadHeader( + appBar: StreamThreadHeader( parent: parent!, ), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( parentMessage: parent, ), ), - MessageInput( + StreamMessageInput( messageInputController: MessageInputController( message: Message(parentId: parent!.id), ), diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart index f1369d49..b1aba4a2 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_title.dart @@ -1,17 +1,23 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro attachment_title} +@Deprecated("Use 'StreamAttachmentTitle' instead") +typedef AttachmentTitle = StreamAttachmentTitle; + +/// {@template attachment_title} /// Title for attachments -class AttachmentTitle extends StatelessWidget { +/// {@endtemplate} +class StreamAttachmentTitle extends StatelessWidget { /// Supply attachment and theme for constructing title - const AttachmentTitle({ + const StreamAttachmentTitle({ Key? key, required this.attachment, required this.messageTheme, }) : super(key: key); /// Theme to apply to text - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; /// Attachment data to display final Attachment attachment; diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart index bd0aacc3..a1aa60bc 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_upload_state_builder.dart @@ -9,10 +9,16 @@ typedef InProgressBuilder = Widget Function(BuildContext, int, int); /// Widget to build on failure typedef FailedBuilder = Widget Function(BuildContext, String); +/// {@macro attachment_upload_state_builder} +@Deprecated("Use 'StreamAttachmentsUploadStateBuilder' instead") +typedef AttachmentUploadStateBuilder = StreamAttachmentUploadStateBuilder; + +/// {@template attachment_upload_state_builder} /// Widget to display attachment upload state -class AttachmentUploadStateBuilder extends StatelessWidget { - /// Constructor for creating an [AttachmentUploadStateBuilder] widget - const AttachmentUploadStateBuilder({ +/// {@endtemplate} +class StreamAttachmentUploadStateBuilder extends StatelessWidget { + /// Constructor for creating an [StreamAttachmentUploadStateBuilder] widget + const StreamAttachmentUploadStateBuilder({ Key? key, required this.message, required this.attachment, @@ -137,7 +143,7 @@ class _PreparingState extends StatelessWidget { ), Align( alignment: Alignment.topRight, - child: UploadProgressIndicator( + child: StreamUploadProgressIndicator( uploaded: 0, total: double.maxFinite.toInt(), ), @@ -177,7 +183,7 @@ class _InProgressState extends StatelessWidget { ), Align( alignment: Alignment.topRight, - child: UploadProgressIndicator( + child: StreamUploadProgressIndicator( uploaded: sent, total: total, ), diff --git a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart index 75a890e8..0021fc76 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/attachment_widget.dart @@ -28,10 +28,16 @@ extension AttachmentSourceX on AttachmentSource { } } +/// {@macro attachment_widget} +@Deprecated("Use 'StreamAttachmentWidget' instead") +typedef AttachmentWidget = StreamAttachmentWidget; + +/// {@template attachment_widget} /// Abstract class for deriving attachment types -abstract class AttachmentWidget extends StatelessWidget { +/// {@endtemplate} +abstract class StreamAttachmentWidget extends StatelessWidget { /// Constructor for creating attachment widget - const AttachmentWidget({ + const StreamAttachmentWidget({ Key? key, required this.message, required this.attachment, diff --git a/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart index 0b5d580f..6bac62e9 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/file_attachment.dart @@ -10,10 +10,16 @@ import 'package:stream_chat_flutter/src/utils.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +/// {@macro file_attachment} +@Deprecated("Use 'StreamFileAttachment' instead") +typedef FileAttachment = StreamFileAttachment; + +/// {@template file_attachment} /// Widget for displaying file attachments -class FileAttachment extends AttachmentWidget { +/// {@endtemplate} +class StreamFileAttachment extends StreamAttachmentWidget { /// Constructor for creating a widget when attachment is of type 'file' - const FileAttachment({ + const StreamFileAttachment({ Key? key, required Message message, required Attachment attachment, @@ -157,7 +163,7 @@ class FileAttachment extends AttachmentWidget { type: MaterialType.transparency, shape: _getDefaultShape(context), child: source.when( - local: () => VideoThumbnailImage( + local: () => StreamVideoThumbnailImage( fit: BoxFit.cover, video: attachment.file!.path!, placeholderBuilder: (_) => const Center( @@ -168,7 +174,7 @@ class FileAttachment extends AttachmentWidget { ), ), ), - network: () => VideoThumbnailImage( + network: () => StreamVideoThumbnailImage( fit: BoxFit.cover, video: attachment.assetUrl!, placeholderBuilder: (_) => const Center( @@ -278,7 +284,7 @@ class FileAttachment extends AttachmentWidget { ); return attachment.uploadState.when( preparing: () => Text(fileSize(size), style: textStyle), - inProgress: (sent, total) => UploadProgressIndicator( + inProgress: (sent, total) => StreamUploadProgressIndicator( uploaded: sent, total: total, showBackground: false, diff --git a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart index 1974b040..28e14e5e 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart @@ -5,10 +5,16 @@ import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro giphy_attachment} +@Deprecated("Use 'StreamGiphyAttachment' instead") +typedef GiphyAttachment = StreamGiphyAttachment; + +/// {@template giphy_attachment} /// Widget for showing a GIF attachment -class GiphyAttachment extends AttachmentWidget { - /// Constructor for creating a [GiphyAttachment] widget - const GiphyAttachment({ +/// {@endtemplate} +class StreamGiphyAttachment extends StreamAttachmentWidget { + /// Constructor for creating a [StreamGiphyAttachment] widget + const StreamGiphyAttachment({ Key? key, required Message message, required Attachment attachment, @@ -228,7 +234,7 @@ class GiphyAttachment extends AttachmentWidget { alignment: Alignment.centerRight, child: Padding( padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4), - child: VisibleFootnote(), + child: StreamVisibleFootnote(), ), ), ], @@ -243,7 +249,7 @@ class GiphyAttachment extends AttachmentWidget { final channel = StreamChannel.of(context).channel; return StreamChannel( channel: channel, - child: FullScreenMedia( + child: StreamFullScreenMedia( mediaAttachments: message.attachments, startIndex: message.attachments.indexOf(attachment), userName: message.user?.name, diff --git a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart index a46ff25c..b6de6bc1 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart @@ -5,10 +5,16 @@ import 'package:stream_chat_flutter/src/attachment/attachment_title.dart'; import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro image_attachment} +@Deprecated("use 'StreamImageAttachment' instead") +typedef ImageAttachment = StreamImageAttachment; + +/// {@template image_attachment} /// Widget for showing an image attachment -class ImageAttachment extends AttachmentWidget { - /// Constructor for creating a [ImageAttachment] widget - const ImageAttachment({ +/// {@endtemplate} +class StreamImageAttachment extends StreamAttachmentWidget { + /// Constructor for creating a [StreamImageAttachment] widget + const StreamImageAttachment({ Key? key, required Message message, required Attachment attachment, @@ -25,8 +31,8 @@ class ImageAttachment extends AttachmentWidget { size: size, ); - /// [MessageThemeData] for showing image title - final MessageThemeData messageTheme; + /// [StreamMessageThemeData] for showing image title + final StreamMessageThemeData messageTheme; /// Flag for showing title final bool showTitle; @@ -137,7 +143,7 @@ class ImageAttachment extends AttachmentWidget { StreamChannel.of(context).channel; return StreamChannel( channel: channel, - child: FullScreenMedia( + child: StreamFullScreenMedia( mediaAttachments: message.attachments, startIndex: message.attachments.indexOf(attachment), @@ -155,7 +161,7 @@ class ImageAttachment extends AttachmentWidget { ), Padding( padding: const EdgeInsets.all(8), - child: AttachmentUploadStateBuilder( + child: StreamAttachmentUploadStateBuilder( message: message, attachment: attachment, ), @@ -166,7 +172,7 @@ class ImageAttachment extends AttachmentWidget { if (showTitle && attachment.title != null) Material( color: messageTheme.messageBackgroundColor, - child: AttachmentTitle( + child: StreamAttachmentTitle( messageTheme: messageTheme, attachment: attachment, ), diff --git a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart index 8a79ca21..160b87da 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/url_attachment.dart @@ -2,10 +2,16 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro url_attachment} +@Deprecated("Use 'StreamUrlAttachment' instead") +typedef UrlAttachment = StreamUrlAttachment; + +/// {@template url_attachment} /// Widget to display URL attachment -class UrlAttachment extends StatelessWidget { - /// Constructor for creating a [UrlAttachment] - const UrlAttachment({ +/// {@endtemplate} +class StreamUrlAttachment extends StatelessWidget { + /// Constructor for creating a [StreamUrlAttachment] + const StreamUrlAttachment({ Key? key, required this.urlAttachment, required this.hostDisplayName, @@ -25,8 +31,8 @@ class UrlAttachment extends StatelessWidget { /// Padding for text final EdgeInsets textPadding; - /// [MessageThemeData] for showing image title - final MessageThemeData messageTheme; + /// [StreamMessageThemeData] for showing image title + final StreamMessageThemeData messageTheme; @override Widget build(BuildContext context) { diff --git a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart index 3df1f451..541f1484 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart @@ -4,10 +4,16 @@ import 'package:stream_chat_flutter/src/attachment/attachment_widget.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro video_attachment} +@Deprecated("Use 'StreamVideoAttachment' instead") +typedef VideoAttachment = StreamVideoAttachment; + +/// {@template video_attachment} /// Widget for showing a video attachment -class VideoAttachment extends AttachmentWidget { - /// Constructor for creating a [VideoAttachment] widget - const VideoAttachment({ +/// {@endtemplate} +class StreamVideoAttachment extends StreamAttachmentWidget { + /// Constructor for creating a [StreamVideoAttachment] widget + const StreamVideoAttachment({ Key? key, required Message message, required Attachment attachment, @@ -23,8 +29,8 @@ class VideoAttachment extends AttachmentWidget { size: size, ); - /// [MessageThemeData] for showing title - final MessageThemeData messageTheme; + /// [StreamMessageThemeData] for showing title + final StreamMessageThemeData messageTheme; /// Callback when show message is tapped final ShowMessageCallback? onShowMessage; @@ -43,7 +49,7 @@ class VideoAttachment extends AttachmentWidget { } return _buildVideoAttachment( context, - VideoThumbnailImage( + StreamVideoThumbnailImage( video: attachment.file!.path!, height: size?.height, width: size?.width, @@ -58,7 +64,7 @@ class VideoAttachment extends AttachmentWidget { } return _buildVideoAttachment( context, - VideoThumbnailImage( + StreamVideoThumbnailImage( video: attachment.assetUrl!, height: size?.height, width: size?.width, @@ -84,7 +90,7 @@ class VideoAttachment extends AttachmentWidget { MaterialPageRoute( builder: (_) => StreamChannel( channel: channel, - child: FullScreenMedia( + child: StreamFullScreenMedia( mediaAttachments: message.attachments, startIndex: message.attachments.indexOf(attachment), @@ -111,7 +117,7 @@ class VideoAttachment extends AttachmentWidget { ), Padding( padding: const EdgeInsets.all(8), - child: AttachmentUploadStateBuilder( + child: StreamAttachmentUploadStateBuilder( message: message, attachment: attachment, ), @@ -123,7 +129,7 @@ class VideoAttachment extends AttachmentWidget { if (attachment.title != null) Material( color: messageTheme.messageBackgroundColor, - child: AttachmentTitle( + child: StreamAttachmentTitle( messageTheme: messageTheme, attachment: attachment, ), diff --git a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart index 4fedfc12..41e6fd11 100644 --- a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart @@ -58,7 +58,7 @@ class AttachmentActionsModal extends StatelessWidget { /// List of custom actions final List customActions; - /// Creates a copy of [MessageWidget] with specified attributes overridden. + /// Creates a copy of [StreamMessageWidget] with specified attributes overridden. AttachmentActionsModal copyWith({ Key? key, int? currentIndex, diff --git a/packages/stream_chat_flutter/lib/src/back_button.dart b/packages/stream_chat_flutter/lib/src/back_button.dart index 08d8dabf..b7cd4552 100644 --- a/packages/stream_chat_flutter/lib/src/back_button.dart +++ b/packages/stream_chat_flutter/lib/src/back_button.dart @@ -50,7 +50,7 @@ class StreamBackButton extends StatelessWidget { Positioned( top: 7, right: 7, - child: UnreadIndicator( + child: StreamUnreadIndicator( cid: cid, ), ), diff --git a/packages/stream_chat_flutter/lib/src/channel_avatar.dart b/packages/stream_chat_flutter/lib/src/channel_avatar.dart index f7c949ee..077302dd 100644 --- a/packages/stream_chat_flutter/lib/src/channel_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/channel_avatar.dart @@ -152,7 +152,7 @@ class ChannelAvatar extends StatelessWidget { return BetterStreamBuilder( stream: streamChat.client.state.currentUserStream.map((it) => it!), initialData: currentUser, - builder: (context, user) => UserAvatar( + builder: (context, user) => StreamUserAvatar( borderRadius: borderRadius ?? previewTheme?.borderRadius, user: user, constraints: constraints ?? previewTheme?.constraints, @@ -175,7 +175,7 @@ class ChannelAvatar extends StatelessWidget { ), ), initialData: member, - builder: (context, member) => UserAvatar( + builder: (context, member) => StreamUserAvatar( borderRadius: borderRadius ?? previewTheme?.borderRadius, user: member.user!, constraints: constraints ?? previewTheme?.constraints, @@ -188,7 +188,7 @@ class ChannelAvatar extends StatelessWidget { } // Group conversation - return GroupAvatar( + return StreamGroupAvatar( members: otherMembers, borderRadius: borderRadius ?? previewTheme?.borderRadius, constraints: constraints ?? previewTheme?.constraints, diff --git a/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart b/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart index 05d5996e..66438479 100644 --- a/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart +++ b/packages/stream_chat_flutter/lib/src/channel_bottom_sheet.dart @@ -4,10 +4,7 @@ import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Bottom Sheet with options -@Deprecated( - "'ChannelBottomSheet' is deprecated and shouldn't be used. " - "Please use 'StreamChannelBottomSheet' instead.", -) +@Deprecated("Use 'StreamChannelInfoBottomSheet' instead") class ChannelBottomSheet extends StatefulWidget { /// Constructor for creating bottom sheet const ChannelBottomSheet({Key? key, this.onViewInfoTap}) : super(key: key); @@ -24,7 +21,7 @@ class _ChannelBottomSheetState extends State { bool _showActions = true; late StreamChannelState _streamChannelState; - late ChannelPreviewThemeData _channelPreviewThemeData; + late StreamChannelPreviewThemeData _channelPreviewThemeData; late StreamChatThemeData _streamChatThemeData; late StreamChatState _streamChatState; @@ -58,7 +55,8 @@ class _ChannelBottomSheetState extends State { Center( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), - child: ChannelName( + child: StreamChannelName( + channel: channel, textStyle: _streamChatThemeData.textTheme.headlineBold, ), ), @@ -67,7 +65,7 @@ class _ChannelBottomSheetState extends State { height: 5, ), Center( - child: ChannelInfo( + child: StreamChannelInfo( showTypingIndicator: false, channel: _streamChannelState.channel, textStyle: _channelPreviewThemeData.subtitleStyle, @@ -79,7 +77,7 @@ class _ChannelBottomSheetState extends State { if (channel.isDistinct && channel.memberCount == 2) Column( children: [ - UserAvatar( + StreamUserAvatar( user: members .firstWhere( (e) => e.user?.id != userAsMember.user?.id, @@ -122,7 +120,7 @@ class _ChannelBottomSheetState extends State { padding: const EdgeInsets.symmetric(horizontal: 8), child: Column( children: [ - UserAvatar( + StreamUserAvatar( user: members[index].user!, constraints: const BoxConstraints.tightFor( height: 64, @@ -150,7 +148,7 @@ class _ChannelBottomSheetState extends State { const SizedBox( height: 24, ), - OptionListTile( + StreamOptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: StreamSvgIcon.user( @@ -163,7 +161,7 @@ class _ChannelBottomSheetState extends State { if (!channel.isDistinct && channel.ownCapabilities .contains(PermissionType.leaveChannel)) - OptionListTile( + StreamOptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: StreamSvgIcon.userRemove( @@ -184,7 +182,7 @@ class _ChannelBottomSheetState extends State { if (isOwner && channel.ownCapabilities .contains(PermissionType.deleteChannel)) - OptionListTile( + StreamOptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: StreamSvgIcon.delete( @@ -203,7 +201,7 @@ class _ChannelBottomSheetState extends State { }); }, ), - OptionListTile( + StreamOptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: StreamSvgIcon.closeSmall( @@ -224,7 +222,7 @@ class _ChannelBottomSheetState extends State { void didChangeDependencies() { _streamChannelState = StreamChannel.of(context); _streamChatThemeData = StreamChatTheme.of(context); - _channelPreviewThemeData = ChannelPreviewTheme.of(context); + _channelPreviewThemeData = StreamChannelPreviewTheme.of(context); _streamChatState = StreamChat.of(context); super.didChangeDependencies(); } diff --git a/packages/stream_chat_flutter/lib/src/channel_header.dart b/packages/stream_chat_flutter/lib/src/channel_header.dart index 954aa758..9da8b4f8 100644 --- a/packages/stream_chat_flutter/lib/src/channel_header.dart +++ b/packages/stream_chat_flutter/lib/src/channel_header.dart @@ -4,6 +4,11 @@ import 'package:stream_chat_flutter/src/channel_info.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +///{@macro template_name} +@Deprecated("Use 'StreamChannelHeader' instead") +typedef ChannelHeader = StreamChannelHeader; + +/// {@template channel_header} /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_header.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_header_paint.png) /// @@ -49,9 +54,11 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// The widget components render the ui based on the first ancestor of type /// [StreamChatTheme] and on its [ChannelTheme.channelHeaderTheme] property. /// Modify it to change the widget appearance. -class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { +/// {@endtemplate} +class StreamChannelHeader extends StatelessWidget + implements PreferredSizeWidget { /// Creates a channel header - const ChannelHeader({ + const StreamChannelHeader({ Key? key, this.showBackButton = true, this.onBackPressed, @@ -96,16 +103,16 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { final Widget? leading; /// AppBar actions - /// By default it shows the [ChannelAvatar] + /// By default it shows the [StreamChannelAvatar] final List? actions; - /// The background color for this [ChannelHeader]. + /// The background color for this [StreamChannelHeader]. final Color? backgroundColor; @override Widget build(BuildContext context) { final channel = StreamChannel.of(context).channel; - final channelHeaderTheme = ChannelHeaderTheme.of(context); + final channelHeaderTheme = StreamChannelHeaderTheme.of(context); final leadingWidget = leading ?? (showBackButton @@ -115,7 +122,7 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { ) : const SizedBox()); - return ConnectionStatusBuilder( + return StreamConnectionStatusBuilder( statusBuilder: (context, status) { var statusString = ''; var showStatus = true; @@ -135,7 +142,7 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { final theme = Theme.of(context); - return InfoTile( + return StreamInfoTile( showMessage: showConnectionStateTile && showStatus, message: statusString, child: AppBar( @@ -152,7 +159,8 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { Padding( padding: const EdgeInsets.only(right: 10), child: Center( - child: ChannelAvatar( + child: StreamChannelAvatar( + channel: channel, borderRadius: channelHeaderTheme.avatarTheme?.borderRadius, constraints: @@ -172,12 +180,13 @@ class ChannelHeader extends StatelessWidget implements PreferredSizeWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ title ?? - ChannelName( + StreamChannelName( + channel: channel, textStyle: channelHeaderTheme.titleStyle, ), const SizedBox(height: 2), subtitle ?? - ChannelInfo( + StreamChannelInfo( showTypingIndicator: showTypingIndicator, channel: channel, textStyle: channelHeaderTheme.subtitleStyle, diff --git a/packages/stream_chat_flutter/lib/src/channel_info.dart b/packages/stream_chat_flutter/lib/src/channel_info.dart index 6a8e0634..b30058b9 100644 --- a/packages/stream_chat_flutter/lib/src/channel_info.dart +++ b/packages/stream_chat_flutter/lib/src/channel_info.dart @@ -3,10 +3,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro channel_info} +@Deprecated("Use 'StreamChannelInfo' instead") +typedef ChannelInfo = StreamChannelInfo; + +/// {@template channel_info} /// Widget which shows channel info -class ChannelInfo extends StatelessWidget { - /// Constructor which creates a [ChannelInfo] widget - const ChannelInfo({ +/// {@endtemplate} +class StreamChannelInfo extends StatelessWidget { + /// Constructor which creates a [StreamChannelInfo] widget + const StreamChannelInfo({ Key? key, required this.channel, this.textStyle, @@ -32,7 +38,7 @@ class ChannelInfo extends StatelessWidget { return BetterStreamBuilder>( stream: channel.state!.membersStream, initialData: channel.state!.members, - builder: (context, data) => ConnectionStatusBuilder( + builder: (context, data) => StreamConnectionStatusBuilder( statusBuilder: (context, status) { switch (status) { case ConnectionStatus.connected: @@ -66,7 +72,7 @@ class ChannelInfo extends StatelessWidget { } alternativeWidget = Text( text, - style: ChannelHeaderTheme.of(context).subtitleStyle, + style: StreamChannelHeaderTheme.of(context).subtitleStyle, ); } else { final userId = StreamChat.of(context).currentUser?.id; @@ -95,7 +101,7 @@ class ChannelInfo extends StatelessWidget { } return Align( - child: TypingIndicator( + child: StreamTypingIndicator( parentId: parentId, style: textStyle, alternativeWidget: alternativeWidget, diff --git a/packages/stream_chat_flutter/lib/src/channel_list_header.dart b/packages/stream_chat_flutter/lib/src/channel_list_header.dart index 6c54ad89..f814a08e 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_header.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_header.dart @@ -11,7 +11,11 @@ typedef TitleBuilder = Widget Function( StreamChatClient client, ); -/// +/// {@macro channel_list_header} +@Deprecated("Use 'StreamChannelListHeader' instead") +typedef ChannelListHeader = StreamChannelListHeader; + +/// {@template channel_list_header} /// It shows the current [StreamChatClient] status. /// /// ```dart @@ -43,11 +47,13 @@ typedef TitleBuilder = Widget Function( /// if you don't have it in the widget tree. /// /// The widget components render the ui based on the first ancestor of type -/// [StreamChatTheme] and on its [ChannelListHeaderThemeData] property. +/// [StreamChatTheme] and on its [StreamChannelListHeaderThemeData] property. /// Modify it to change the widget appearance. -class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget { +/// {@endtemplate} +class StreamChannelListHeader extends StatelessWidget + implements PreferredSizeWidget { /// Instantiates a ChannelListHeader - const ChannelListHeader({ + const StreamChannelListHeader({ Key? key, this.client, this.titleBuilder, @@ -91,14 +97,14 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget { /// By default it shows the new chat button final List? actions; - /// The background color for this [ChannelListHeader]. + /// The background color for this [StreamChannelListHeader]. final Color? backgroundColor; @override Widget build(BuildContext context) { final _client = client ?? StreamChat.of(context).client; final user = _client.state.currentUser; - return ConnectionStatusBuilder( + return StreamConnectionStatusBuilder( statusBuilder: (context, status) { var statusString = ''; var showStatus = true; @@ -117,9 +123,10 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget { } final chatThemeData = StreamChatTheme.of(context); - final channelListHeaderThemeData = ChannelListHeaderTheme.of(context); + final channelListHeaderThemeData = + StreamChannelListHeaderTheme.of(context); final theme = Theme.of(context); - return InfoTile( + return StreamInfoTile( showMessage: showConnectionStateTile && showStatus, message: statusString, child: AppBar( @@ -135,7 +142,7 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget { leading: leading ?? Center( child: user != null - ? UserAvatar( + ? StreamUserAvatar( user: user, showOnlineStatus: false, onTap: onUserAvatarTap ?? @@ -156,7 +163,7 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget { [ StreamNeumorphicButton( child: IconButton( - icon: ConnectionStatusBuilder( + icon: StreamConnectionStatusBuilder( statusBuilder: (context, status) { Color? color; switch (status) { @@ -234,10 +241,11 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget { const SizedBox(width: 10), Text( context.translations.searchingForNetworkText, - style: ChannelListHeaderTheme.of(context).titleStyle?.copyWith( - fontSize: 16, - fontWeight: FontWeight.bold, - ), + style: + StreamChannelListHeaderTheme.of(context).titleStyle?.copyWith( + fontSize: 16, + fontWeight: FontWeight.bold, + ), ), ], ); @@ -247,7 +255,7 @@ class ChannelListHeader extends StatelessWidget implements PreferredSizeWidget { StreamChatClient client, ) { final chatThemeData = StreamChatTheme.of(context); - final channelListHeaderTheme = ChannelListHeaderTheme.of(context); + final channelListHeaderTheme = StreamChannelListHeaderTheme.of(context); return Row( mainAxisAlignment: MainAxisAlignment.center, children: [ diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index cb581491..1113fda2 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:shimmer/shimmer.dart'; -import 'package:stream_chat_flutter/src/channel_bottom_sheet.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -11,7 +10,7 @@ typedef ChannelTapCallback = void Function(Channel, Widget?); /// Callback called when tapping on a channel typedef ChannelInfoCallback = void Function(Channel); -/// Builder used to create a custom [ChannelPreview] from a [Channel] +/// Builder used to create a custom [StreamChannelPreview] from a [Channel] typedef ChannelPreviewBuilder = Widget Function(BuildContext, Channel); /// Callback for when 'View Info' is tapped @@ -52,10 +51,7 @@ typedef ViewInfoCallback = void Function(Channel); /// The widget components render the ui based on the first ancestor of /// type [StreamChatTheme]. /// Modify it to change the widget appearance. -@Deprecated( - "'ChannelListView' is deprecated and shouldn't be used. " - "Please use 'StreamChannelListView' instead.", -) +@Deprecated("Use 'StreamChannelListView' instead") class ChannelListView extends StatefulWidget { /// Instantiate a new ChannelListView ChannelListView({ @@ -248,7 +244,8 @@ class _ChannelListViewState extends State { child: child, ); - final backgroundColor = ChannelListViewTheme.of(context).backgroundColor; + final backgroundColor = + StreamChannelListViewTheme.of(context).backgroundColor; if (backgroundColor != null) { return ColoredBox( @@ -550,7 +547,8 @@ class _ChannelListViewState extends State { context: context, builder: (context) => StreamChannel( channel: channel, - child: ChannelBottomSheet( + child: StreamChannelInfoBottomSheet( + channel: channel, onViewInfoTap: () { widget.onViewInfoTap?.call(channel); }, @@ -593,7 +591,7 @@ class _ChannelListViewState extends State { decoration: BoxDecoration( color: chatThemeData.channelListViewTheme.backgroundColor, ), - child: ChannelPreview( + child: StreamChannelPreview( onLongPress: widget.onChannelLongPress, channel: channel, onImageTap: widget.onImageTap != null @@ -639,7 +637,7 @@ class _ChannelListViewState extends State { child: Column( mainAxisSize: MainAxisSize.min, children: [ - ChannelAvatar( + StreamChannelAvatar( channel: channel, borderRadius: BorderRadius.circular(32), selected: selected, @@ -654,8 +652,9 @@ class _ChannelListViewState extends State { padding: const EdgeInsets.symmetric(horizontal: 8), child: StreamChannel( channel: channel, - child: const ChannelName( - textStyle: TextStyle( + child: StreamChannelName( + channel: channel, + textStyle: const TextStyle( fontSize: 12, fontWeight: FontWeight.w600, ), diff --git a/packages/stream_chat_flutter/lib/src/channel_name.dart b/packages/stream_chat_flutter/lib/src/channel_name.dart index 8dd8c054..f496b28a 100644 --- a/packages/stream_chat_flutter/lib/src/channel_name.dart +++ b/packages/stream_chat_flutter/lib/src/channel_name.dart @@ -6,10 +6,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// /// The widget uses a [StreamBuilder] to render the channel information /// image as soon as it updates. -@Deprecated( - "'ChannelName' is deprecated and shouldn't be used. " - "Please use 'StreamChannelName' instead.", -) +@Deprecated("Use 'StreamChannelName' instead") class ChannelName extends StatelessWidget { /// Instantiate a new ChannelName const ChannelName({ diff --git a/packages/stream_chat_flutter/lib/src/channel_preview.dart b/packages/stream_chat_flutter/lib/src/channel_preview.dart index 125d06fe..1eb28bd2 100644 --- a/packages/stream_chat_flutter/lib/src/channel_preview.dart +++ b/packages/stream_chat_flutter/lib/src/channel_preview.dart @@ -4,6 +4,11 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro channel_preview} +@Deprecated("Use 'StreamChannelPreview' instead") +typedef ChannelPreview = StreamChannelPreview; + +/// {@template channel_preview} /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_preview.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_preview_paint.png) /// @@ -13,14 +18,15 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// image as soon as it updates. /// /// Usually you don't use this widget as it's the default channel preview -/// used by [ChannelListView]. +/// used by [StreamChannelListView]. /// /// The widget renders the ui based on the first ancestor of type /// [StreamChatTheme]. /// Modify it to change the widget appearance. -class ChannelPreview extends StatelessWidget { - /// Constructor for creating [ChannelPreview] - const ChannelPreview({ +/// {@endtemplate} +class StreamChannelPreview extends StatelessWidget { + /// Constructor for creating [StreamChannelPreview] + const StreamChannelPreview({ required this.channel, Key? key, this.onTap, @@ -52,7 +58,7 @@ class ChannelPreview extends StatelessWidget { final Widget? subtitle; /// Widget rendering the leading element, by default - /// it shows the [ChannelAvatar] + /// it shows the [StreamChannelAvatar] final Widget? leading; /// Widget rendering the trailing element, @@ -60,12 +66,12 @@ class ChannelPreview extends StatelessWidget { final Widget? trailing; /// Widget rendering the sending indicator, - /// by default it uses the [SendingIndicator] widget + /// by default it uses the [StreamSendingIndicator] widget final Widget? sendingIndicator; @override Widget build(BuildContext context) { - final channelPreviewTheme = ChannelPreviewTheme.of(context); + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); final streamChatState = StreamChat.of(context); return BetterStreamBuilder( stream: channel.isMutedStream, @@ -80,13 +86,18 @@ class ChannelPreview extends StatelessWidget { ), onTap: () => onTap?.call(channel), onLongPress: () => onLongPress?.call(channel), - leading: leading ?? ChannelAvatar(onTap: onImageTap), + leading: leading ?? + StreamChannelAvatar( + channel: channel, + onTap: onImageTap, + ), title: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Flexible( child: title ?? - ChannelName( + StreamChannelName( + channel: channel, textStyle: channelPreviewTheme.titleStyle, ), ), @@ -100,7 +111,7 @@ class ChannelPreview extends StatelessWidget { e.user!.id == channel.client.state.currentUser?.id)) { return const SizedBox(); } - return UnreadIndicator( + return StreamUnreadIndicator( cid: channel.cid, ); }, @@ -136,7 +147,7 @@ class ChannelPreview extends StatelessWidget { ))); final isMessageRead = readList.length >= (channel.memberCount ?? 0) - 1; - return SendingIndicator( + return StreamSendingIndicator( message: lastMessage!, size: channelPreviewTheme.indicatorIconSize, isMessageRead: isMessageRead, @@ -183,13 +194,13 @@ class ChannelPreview extends StatelessWidget { return Text( stringDate, - style: ChannelPreviewTheme.of(context).lastMessageAtStyle, + style: StreamChannelPreviewTheme.of(context).lastMessageAtStyle, ); }, ); Widget _buildSubtitle(BuildContext context) { - final channelPreviewTheme = ChannelPreviewTheme.of(context); + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); if (channel.isMuted) { return Row( crossAxisAlignment: CrossAxisAlignment.end, @@ -204,7 +215,7 @@ class ChannelPreview extends StatelessWidget { ], ); } - return TypingIndicator( + return StreamTypingIndicator( channel: channel, alternativeWidget: _buildLastMessage(context), style: channelPreviewTheme.subtitleStyle, @@ -242,7 +253,7 @@ class ChannelPreview extends StatelessWidget { text = parts.join(' '); - final channelPreviewTheme = ChannelPreviewTheme.of(context); + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); return Text.rich( _getDisplayText( text, diff --git a/packages/stream_chat_flutter/lib/src/commands_overlay.dart b/packages/stream_chat_flutter/lib/src/commands_overlay.dart index 9f8aca1e..6234f696 100644 --- a/packages/stream_chat_flutter/lib/src/commands_overlay.dart +++ b/packages/stream_chat_flutter/lib/src/commands_overlay.dart @@ -2,10 +2,17 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro commands_overlay} +@Deprecated("Use 'StreamCommandsOverlay' instead") +typedef CommandsOverlay = StreamCommandsOverlay; + +/// {@template commands_overlay} /// Overlay for displaying commands that can be used -class CommandsOverlay extends StatelessWidget { - /// Constructor for creating a [CommandsOverlay] - const CommandsOverlay({ +/// to interact with the channel. +/// {@endtemplate} +class StreamCommandsOverlay extends StatelessWidget { + /// Constructor for creating a [StreamCommandsOverlay] + const StreamCommandsOverlay({ required this.text, required this.onCommandResult, required this.size, diff --git a/packages/stream_chat_flutter/lib/src/connection_status_builder.dart b/packages/stream_chat_flutter/lib/src/connection_status_builder.dart index f0eca9da..6f234547 100644 --- a/packages/stream_chat_flutter/lib/src/connection_status_builder.dart +++ b/packages/stream_chat_flutter/lib/src/connection_status_builder.dart @@ -1,14 +1,20 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro connection_status_builder} +@Deprecated("Use 'StreamConnectionStatusBuilder' instead") +typedef ConnectionStatusBuilder = StreamConnectionStatusBuilder; + +/// {@template connection_status_builder} /// Widget that builds itself based on the latest snapshot of interaction with /// a [Stream] of type [ConnectionStatus]. /// /// The widget will use the closest [StreamChatClient.wsConnectionStatusStream] /// in case no stream is provided. -class ConnectionStatusBuilder extends StatelessWidget { +/// {@endtemplate} +class StreamConnectionStatusBuilder extends StatelessWidget { /// Creates a new ConnectionStatusBuilder - const ConnectionStatusBuilder({ + const StreamConnectionStatusBuilder({ Key? key, required this.statusBuilder, this.connectionStatusStream, diff --git a/packages/stream_chat_flutter/lib/src/date_divider.dart b/packages/stream_chat_flutter/lib/src/date_divider.dart index c3b48158..64396ceb 100644 --- a/packages/stream_chat_flutter/lib/src/date_divider.dart +++ b/packages/stream_chat_flutter/lib/src/date_divider.dart @@ -3,10 +3,16 @@ import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro date_divider} +@Deprecated("Use 'StreamDateDivider' instead") +typedef DateDivider = StreamDateDivider; + +/// {@template date_divider} /// It shows a date divider depending on the date difference -class DateDivider extends StatelessWidget { - /// Constructor for creating a [DateDivider] - const DateDivider({ +/// {@endtemplate} +class StreamDateDivider extends StatelessWidget { + /// Constructor for creating a [StreamDateDivider] + const StreamDateDivider({ Key? key, required this.dateTime, this.uppercase = false, diff --git a/packages/stream_chat_flutter/lib/src/deleted_message.dart b/packages/stream_chat_flutter/lib/src/deleted_message.dart index 09d725bb..667d101d 100644 --- a/packages/stream_chat_flutter/lib/src/deleted_message.dart +++ b/packages/stream_chat_flutter/lib/src/deleted_message.dart @@ -3,10 +3,16 @@ import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/theme/themes.dart'; -/// Widget to display deleted message -class DeletedMessage extends StatelessWidget { - /// Constructor to create [DeletedMessage] - const DeletedMessage({ +/// {@macro deleted_message} +@Deprecated("Use 'StreamDeletedMessage' instead") +typedef DeletedMessage = StreamDeletedMessage; + +/// {@template deleted_message} +/// Widget to display deleted message. +/// {@endtemplate} +class StreamDeletedMessage extends StatelessWidget { + /// Constructor to create [StreamDeletedMessage] + const StreamDeletedMessage({ Key? key, required this.messageTheme, this.borderRadiusGeometry, @@ -16,7 +22,7 @@ class DeletedMessage extends StatelessWidget { }) : super(key: key); /// The theme of the message - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; /// The border radius of the message text final BorderRadiusGeometry? borderRadiusGeometry; diff --git a/packages/stream_chat_flutter/lib/src/emoji_overlay.dart b/packages/stream_chat_flutter/lib/src/emoji_overlay.dart index 0a3cb634..b4e50974 100644 --- a/packages/stream_chat_flutter/lib/src/emoji_overlay.dart +++ b/packages/stream_chat_flutter/lib/src/emoji_overlay.dart @@ -4,10 +4,16 @@ import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:substring_highlight/substring_highlight.dart'; +/// {@macro emoji_overlay} +@Deprecated("Use 'StreamEmojiOverlay' instead") +typedef EmojiOverlay = StreamEmojiOverlay; + +/// {@template emoji_overlay} /// Overlay for displaying emoji that can be used -class EmojiOverlay extends StatelessWidget { - /// Constructor for creating a [EmojiOverlay] - const EmojiOverlay({ +/// {@endtemplate} +class StreamEmojiOverlay extends StatelessWidget { + /// Constructor for creating a [StreamEmojiOverlay] + const StreamEmojiOverlay({ required this.query, required this.onEmojiResult, required this.size, diff --git a/packages/stream_chat_flutter/lib/src/full_screen_media.dart b/packages/stream_chat_flutter/lib/src/full_screen_media.dart index aa185597..0ae3a475 100644 --- a/packages/stream_chat_flutter/lib/src/full_screen_media.dart +++ b/packages/stream_chat_flutter/lib/src/full_screen_media.dart @@ -21,10 +21,16 @@ enum ReturnActionType { /// Callback when show message is tapped typedef ShowMessageCallback = void Function(Message message, Channel channel); +/// {@macro full_screen_media} +@Deprecated("Use 'StreamFullScreenMedia' instead") +typedef FullScreenMedia = StreamFullScreenMedia; + +/// {@template full_screen_media} /// A full screen image widget -class FullScreenMedia extends StatefulWidget { +/// {@endtemplate} +class StreamFullScreenMedia extends StatefulWidget { /// Instantiate a new FullScreenImage - const FullScreenMedia({ + const StreamFullScreenMedia({ Key? key, required this.mediaAttachments, required this.message, @@ -60,10 +66,10 @@ class FullScreenMedia extends StatefulWidget { final bool autoplayVideos; @override - _FullScreenMediaState createState() => _FullScreenMediaState(); + _StreamFullScreenMediaState createState() => _StreamFullScreenMediaState(); } -class _FullScreenMediaState extends State +class _StreamFullScreenMediaState extends State with SingleTickerProviderStateMixin { late final AnimationController _animationController; late final PageController _pageController; @@ -172,7 +178,7 @@ class _FullScreenMediaState extends State ), backgroundDecoration: BoxDecoration( color: ColorTween( - begin: ChannelHeaderTheme.of(context).color, + begin: StreamChannelHeaderTheme.of(context).color, end: Colors.black, ).lerp(_curvedAnimation.value), ), @@ -221,7 +227,7 @@ class _FullScreenMediaState extends State builder: (context, value, child) => Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - GalleryHeader( + StreamGalleryHeader( userName: widget.userName, sentAt: context.translations.sentAtText( date: widget.message.createdAt, @@ -242,7 +248,7 @@ class _FullScreenMediaState extends State widget.attachmentActionsModalBuilder, ), if (!widget.message.isEphemeral) - GalleryFooter( + StreamGalleryFooter( currentPage: value, totalPages: widget.mediaAttachments.length, mediaAttachments: widget.mediaAttachments, diff --git a/packages/stream_chat_flutter/lib/src/gallery_footer.dart b/packages/stream_chat_flutter/lib/src/gallery_footer.dart index f189dae3..a137281c 100644 --- a/packages/stream_chat_flutter/lib/src/gallery_footer.dart +++ b/packages/stream_chat_flutter/lib/src/gallery_footer.dart @@ -9,10 +9,17 @@ import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro gallery_footer} +@Deprecated("Use 'StreamGalleryFooter' instead") +typedef GalleryFooter = StreamGalleryFooter; + +/// {@template gallery_footer} /// Footer widget for media display -class GalleryFooter extends StatefulWidget implements PreferredSizeWidget { +/// {@endtemplate} +class StreamGalleryFooter extends StatefulWidget + implements PreferredSizeWidget { /// Creates a channel header - const GalleryFooter({ + const StreamGalleryFooter({ Key? key, required this.message, this.onBackPressed, @@ -51,22 +58,22 @@ class GalleryFooter extends StatefulWidget implements PreferredSizeWidget { /// Callback when media is selected final ValueChanged? mediaSelectedCallBack; - /// The background color of this [GalleryFooter]. + /// The background color of this [StreamGalleryFooter]. final Color? backgroundColor; @override - _GalleryFooterState createState() => _GalleryFooterState(); + _StreamGalleryFooterState createState() => _StreamGalleryFooterState(); @override final Size preferredSize; } -class _GalleryFooterState extends State { +class _StreamGalleryFooterState extends State { @override Widget build(BuildContext context) { const showShareButton = !kIsWeb; final mediaQueryData = MediaQuery.of(context); - final galleryFooterThemeData = GalleryFooterTheme.of(context); + final galleryFooterThemeData = StreamGalleryFooterTheme.of(context); return SizedBox.fromSize( size: Size( mediaQueryData.size.width, @@ -149,7 +156,7 @@ class _GalleryFooterState extends State { void _showPhotosModal(context) { final chatThemeData = StreamChatTheme.of(context); - final galleryFooterThemeData = GalleryFooterTheme.of(context); + final galleryFooterThemeData = StreamGalleryFooterTheme.of(context); showModalBottomSheet( context: context, barrierColor: galleryFooterThemeData.bottomSheetBarrierColor, @@ -222,7 +229,7 @@ class _GalleryFooterState extends State { onTap: () => widget.mediaSelectedCallBack!(index), child: FittedBox( fit: BoxFit.cover, - child: VideoThumbnailImage( + child: StreamVideoThumbnailImage( video: (attachment.file?.path ?? attachment.assetUrl)!, ), @@ -264,7 +271,7 @@ class _GalleryFooterState extends State { ), ], ), - child: UserAvatar( + child: StreamUserAvatar( user: widget.message.user!, constraints: BoxConstraints.tight(const Size(24, 24)), diff --git a/packages/stream_chat_flutter/lib/src/gallery_header.dart b/packages/stream_chat_flutter/lib/src/gallery_header.dart index 2325af69..9c8650b2 100644 --- a/packages/stream_chat_flutter/lib/src/gallery_header.dart +++ b/packages/stream_chat_flutter/lib/src/gallery_header.dart @@ -15,10 +15,17 @@ typedef AttachmentActionsBuilder = Widget Function( AttachmentActionsModal defaultActionsModal, ); +/// {@macro gallery_header} +@Deprecated("Use 'StreamGalleryHeader' instead") +typedef GalleryHeader = StreamGalleryHeader; + +/// {@template gallery_header} /// Header/AppBar widget for media display screen -class GalleryHeader extends StatelessWidget implements PreferredSizeWidget { +/// {@endtemplate} +class StreamGalleryHeader extends StatelessWidget + implements PreferredSizeWidget { /// Creates a channel header - const GalleryHeader({ + const StreamGalleryHeader({ Key? key, required this.message, this.currentIndex = 0, @@ -62,7 +69,7 @@ class GalleryHeader extends StatelessWidget implements PreferredSizeWidget { /// Stores the current index of media shown final int currentIndex; - /// The background color of this [GalleryHeader]. + /// The background color of this [StreamGalleryHeader]. final Color? backgroundColor; /// Widget builder for attachment actions modal @@ -72,7 +79,7 @@ class GalleryHeader extends StatelessWidget implements PreferredSizeWidget { @override Widget build(BuildContext context) { - final galleryHeaderThemeData = GalleryHeaderTheme.of(context); + final galleryHeaderThemeData = StreamGalleryHeaderTheme.of(context); final theme = Theme.of(context); return AppBar( toolbarTextStyle: theme.textTheme.bodyText2, diff --git a/packages/stream_chat_flutter/lib/src/gradient_avatar.dart b/packages/stream_chat_flutter/lib/src/gradient_avatar.dart index 12824f45..aca07c92 100644 --- a/packages/stream_chat_flutter/lib/src/gradient_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/gradient_avatar.dart @@ -3,10 +3,16 @@ import 'dart:ui' as ui; import 'package:flutter/material.dart'; +/// {@macro gradient_avatar} +@Deprecated("Use 'StreamGradientAvatar' instead") +typedef GradientAvatar = StreamGradientAvatar; + +/// {@template gradient_avatar} /// Fallback user avatar with a polygon gradient overlayed with text -class GradientAvatar extends StatefulWidget { - /// Constructor for [GradientAvatar] - const GradientAvatar({ +/// {@endtemplate} +class StreamGradientAvatar extends StatefulWidget { + /// Constructor for [StreamGradientAvatar] + const StreamGradientAvatar({ Key? key, required this.name, required this.userId, @@ -19,10 +25,10 @@ class GradientAvatar extends StatefulWidget { final String userId; @override - _GradientAvatarState createState() => _GradientAvatarState(); + _StreamGradientAvatarState createState() => _StreamGradientAvatarState(); } -class _GradientAvatarState extends State { +class _StreamGradientAvatarState extends State { @override Widget build(BuildContext context) => Center( child: RepaintBoundary( diff --git a/packages/stream_chat_flutter/lib/src/group_avatar.dart b/packages/stream_chat_flutter/lib/src/group_avatar.dart index e0e87e23..f7efa32d 100644 --- a/packages/stream_chat_flutter/lib/src/group_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/group_avatar.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro group_avatar} +@Deprecated("Use 'StreamGroupAvatar' instead") +typedef GroupAvatar = StreamGroupAvatar; + +/// {@template group_avatar} /// Widget for constructing a group of images -class GroupAvatar extends StatelessWidget { - /// Constructor for creating a [GroupAvatar] - const GroupAvatar({ +/// {@endtemplate} +class StreamGroupAvatar extends StatelessWidget { + /// Constructor for creating a [StreamGroupAvatar] + const StreamGroupAvatar({ Key? key, this.channel, required this.members, @@ -84,7 +90,7 @@ class GroupAvatar extends StatelessWidget { ), ), initialData: member, - builder: (context, member) => UserAvatar( + builder: (context, member) => StreamUserAvatar( showOnlineStatus: false, user: member.user!, borderRadius: BorderRadius.zero, @@ -122,7 +128,8 @@ class GroupAvatar extends StatelessWidget { ), ), initialData: member, - builder: (context, member) => UserAvatar( + builder: (context, member) => + StreamUserAvatar( showOnlineStatus: false, user: member.user!, borderRadius: BorderRadius.zero, diff --git a/packages/stream_chat_flutter/lib/src/image_group.dart b/packages/stream_chat_flutter/lib/src/image_group.dart index ff67b068..fa723bef 100644 --- a/packages/stream_chat_flutter/lib/src/image_group.dart +++ b/packages/stream_chat_flutter/lib/src/image_group.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro image_group} +@Deprecated("Use 'StreamImageGroup' instead") +typedef ImageGroup = StreamImageGroup; + +/// {@template image_group} /// Widget for constructing a group of images in message -class ImageGroup extends StatelessWidget { - /// Constructor for creating [ImageGroup] widget - const ImageGroup({ +/// {@endtemplate} +class StreamImageGroup extends StatelessWidget { + /// Constructor for creating [StreamImageGroup] widget + const StreamImageGroup({ Key? key, required this.images, required this.message, @@ -27,8 +33,8 @@ class ImageGroup extends StatelessWidget { /// Message which images are attached to final Message message; - /// [MessageThemeData] to apply to message - final MessageThemeData messageTheme; + /// [StreamMessageThemeData] to apply to message + final StreamMessageThemeData messageTheme; /// Size of iamges final Size size; @@ -129,7 +135,7 @@ class ImageGroup extends StatelessWidget { MaterialPageRoute( builder: (context) => StreamChannel( channel: channel, - child: FullScreenMedia( + child: StreamFullScreenMedia( mediaAttachments: images, startIndex: index, userName: message.user?.name, @@ -142,7 +148,7 @@ class ImageGroup extends StatelessWidget { if (res != null) onReturnAction?.call(res); } - Widget _buildImage(BuildContext context, int index) => ImageAttachment( + Widget _buildImage(BuildContext context, int index) => StreamImageAttachment( attachment: images[index], size: size, message: message, diff --git a/packages/stream_chat_flutter/lib/src/info_tile.dart b/packages/stream_chat_flutter/lib/src/info_tile.dart index 965d4fed..86964bf0 100644 --- a/packages/stream_chat_flutter/lib/src/info_tile.dart +++ b/packages/stream_chat_flutter/lib/src/info_tile.dart @@ -2,10 +2,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_portal/flutter_portal.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro info_tile} +@Deprecated("Use 'StreamInfoTile' instead") +typedef InfoTile = StreamInfoTile; + +/// {@template info_tile} /// Tile to display a message, used in stream chat to display connection status -class InfoTile extends StatelessWidget { - /// Constructor for creating an [InfoTile] widget - const InfoTile({ +/// {@endtemplate} +class StreamInfoTile extends StatelessWidget { + /// Constructor for creating an [StreamInfoTile] widget + const StreamInfoTile({ Key? key, required this.message, required this.child, diff --git a/packages/stream_chat_flutter/lib/src/localization/translations.dart b/packages/stream_chat_flutter/lib/src/localization/translations.dart index ed15dad8..2a87e76d 100644 --- a/packages/stream_chat_flutter/lib/src/localization/translations.dart +++ b/packages/stream_chat_flutter/lib/src/localization/translations.dart @@ -59,7 +59,7 @@ abstract class Translations { /// The error shown when loading messages fails String get loadingMessagesError; - /// The text for showing the result count in [MessageSearchListView] + /// The text for showing the result count in [StreamMessageSearchListView] String resultCountText(int count); /// The text for showing the message is deleted @@ -74,20 +74,20 @@ abstract class Translations { /// The text for showing there are no chats String get emptyChatMessagesText; - /// The text for showing the thread separator in case [MessageListView] + /// The text for showing the thread separator in case [StreamMessageListView] /// contains a parent message String threadSeparatorText(int replyCount); - /// The label for "connected" in [ConnectionStatusBuilder] + /// The label for "connected" in [StreamConnectionStatusBuilder] String get connectedLabel; - /// The label for "disconnected" in [ConnectionStatusBuilder] + /// The label for "disconnected" in [StreamConnectionStatusBuilder] String get disconnectedLabel; - /// The label for "reconnecting" in [ConnectionStatusBuilder] + /// The label for "reconnecting" in [StreamConnectionStatusBuilder] String get reconnectingLabel; - /// The label for also send as direct message "checkbox"" in [MessageInput] + /// The label for also send as direct message "checkbox"" in [StreamMessageInput] String get alsoSendAsDirectMessageLabel; /// The label for search Gif @@ -97,24 +97,24 @@ abstract class Translations { String get sendMessagePermissionError; /// The label for add a comment or send in case of - /// attachments inside [MessageInput] + /// attachments inside [StreamMessageInput] String get addACommentOrSendLabel; - /// The label for write a message in [MessageInput] + /// The label for write a message in [StreamMessageInput] String get writeAMessageLabel; - /// The label for slow mode enabled in [MessageInput] + /// The label for slow mode enabled in [StreamMessageInput] String get slowModeOnLabel; - /// The label for instant commands in [MessageInput] + /// The label for instant commands in [StreamMessageInput] String get instantCommandsLabel; /// The error shown in case the fi"le is too large even after compression - /// while uploading via [MessageInput] + /// while uploading via [StreamMessageInput] String fileTooLargeAfterCompressionError(double limitInMB); /// The error shown in case the file is too large - /// while uploading via [MessageInput] + /// while uploading via [StreamMessageInput] String fileTooLargeError(double limitInMB); /// The text for showing the query while searching for emojis diff --git a/packages/stream_chat_flutter/lib/src/media_list_view.dart b/packages/stream_chat_flutter/lib/src/media_list_view.dart index d5a9233c..6a3d6cdd 100644 --- a/packages/stream_chat_flutter/lib/src/media_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/media_list_view.dart @@ -7,21 +7,16 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:photo_manager/photo_manager.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -extension on Duration { - String format() { - final s = '$this'.split('.')[0].padLeft(8, '0'); - if (s.startsWith('00:')) { - return s.replaceFirst('00:', ''); - } - - return s; - } -} +/// {@macro media_list_view} +@Deprecated("Use 'StreamMediaListView' instead") +typedef MediaListView = StreamMediaListView; +/// {@template media_list_view} /// Constructs a list of media -class MediaListView extends StatefulWidget { - /// Constructor for creating a [MediaListView] widget - const MediaListView({ +/// {@endtemplate} +class StreamMediaListView extends StatefulWidget { + /// Constructor for creating a [StreamMediaListView] widget + const StreamMediaListView({ Key? key, this.selectedIds = const [], this.onSelect, @@ -34,10 +29,10 @@ class MediaListView extends StatefulWidget { final void Function(AssetEntity media)? onSelect; @override - _MediaListViewState createState() => _MediaListViewState(); + _StreamMediaListViewState createState() => _StreamMediaListViewState(); } -class _MediaListViewState extends State { +class _StreamMediaListViewState extends State { final _media = []; final ScrollController _scrollController = ScrollController(); int _currentPage = 0; @@ -219,3 +214,14 @@ class MediaThumbnailProvider extends ImageProvider { @override String toString() => '$runtimeType("${media.id}")'; } + +extension on Duration { + String format() { + final s = '$this'.split('.')[0].padLeft(8, '0'); + if (s.startsWith('00:')) { + return s.replaceFirst('00:', ''); + } + + return s; + } +} diff --git a/packages/stream_chat_flutter/lib/src/mention_tile.dart b/packages/stream_chat_flutter/lib/src/mention_tile.dart deleted file mode 100644 index c302ccb8..00000000 --- a/packages/stream_chat_flutter/lib/src/mention_tile.dart +++ /dev/null @@ -1,101 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:stream_chat_flutter/stream_chat_flutter.dart'; - -/// This widget is used for showing user tiles for mentions -/// Use [title], [subtitle], [leading], [trailing] for -/// substituting widgets in respective positions -@Deprecated('Use `UserMentionTile` instead. Will be removed in future release') -class MentionTile extends StatelessWidget { - /// Constructor for creating a [MentionTile] widget - const MentionTile( - this.member, { - Key? key, - this.title, - this.subtitle, - this.leading, - this.trailing, - }) : super(key: key); - - /// Member to display in the tile - final Member member; - - /// Widget to display as title - final Widget? title; - - /// Widget to display below [title] - final Widget? subtitle; - - /// Widget at the start of the tile - final Widget? leading; - - /// Widget at the end of tile - final Widget? trailing; - - @override - Widget build(BuildContext context) { - final chatThemeData = StreamChatTheme.of(context); - return SizedBox( - height: 56, - child: Row( - children: [ - const SizedBox( - width: 16, - ), - leading ?? - UserAvatar( - constraints: BoxConstraints.tight( - const Size( - 40, - 40, - ), - ), - user: member.user!, - ), - const SizedBox( - width: 8, - ), - Expanded( - child: Align( - alignment: Alignment.centerLeft, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - title ?? - Text( - member.user!.name, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: chatThemeData.textTheme.bodyBold, - ), - const SizedBox( - height: 2, - ), - subtitle ?? - Text( - '@${member.userId}', - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: chatThemeData.textTheme.footnoteBold.copyWith( - color: chatThemeData.colorTheme.textLowEmphasis, - ), - ), - ], - ), - ), - ), - trailing ?? - Padding( - padding: const EdgeInsets.only( - right: 18, - left: 8, - ), - child: StreamSvgIcon.mentions( - color: chatThemeData.colorTheme.accentPrimary, - ), - ), - ], - ), - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/message_action.dart b/packages/stream_chat_flutter/lib/src/message_action.dart index 49a57b1e..edd732f5 100644 --- a/packages/stream_chat_flutter/lib/src/message_action.dart +++ b/packages/stream_chat_flutter/lib/src/message_action.dart @@ -1,10 +1,16 @@ import 'package:flutter/widgets.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro message_action} +@Deprecated("Use 'StreamMessageActions' instead") +typedef MessageAction = StreamMessageAction; + +/// {@template message_action} /// Class describing a message action -class MessageAction { - /// returns a new instance of a [MessageAction] - MessageAction({ +/// {@endtemplate} +class StreamMessageAction { + /// returns a new instance of a [StreamMessageAction] + StreamMessageAction({ this.leading, this.title, this.onTap, diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index 154472d7..056e84fc 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -3,10 +3,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro message_actions_modal} +@Deprecated("Use 'StreamMessageActionsModal' instead") +typedef MessageActionsModal = StreamMessageActionsModal; + +/// {@template message_actions_modal} /// Constructs a modal with actions for a message -class MessageActionsModal extends StatefulWidget { - /// Constructor for creating a [MessageActionsModal] widget - const MessageActionsModal({ +/// {@endtemplate} +class StreamMessageActionsModal extends StatefulWidget { + /// Constructor for creating a [StreamMessageActionsModal] widget + const StreamMessageActionsModal({ Key? key, required this.message, required this.messageWidget, @@ -43,8 +49,8 @@ class MessageActionsModal extends StatefulWidget { /// Message in focus for actions final Message message; - /// [MessageThemeData] for message - final MessageThemeData messageTheme; + /// [StreamMessageThemeData] for message + final StreamMessageThemeData messageTheme; /// Flag for showing reactions final bool? showReactions; @@ -80,13 +86,14 @@ class MessageActionsModal extends StatefulWidget { final bool reverse; /// List of custom actions - final List customActions; + final List customActions; @override - _MessageActionsModalState createState() => _MessageActionsModalState(); + _StreamMessageActionsModalState createState() => + _StreamMessageActionsModalState(); } -class _MessageActionsModalState extends State { +class _StreamMessageActionsModalState extends State { bool _showActions = true; late List _userPermissions; late bool _isMyMessage; @@ -159,7 +166,7 @@ class _MessageActionsModalState extends State { : -(1.2 - divFactor)), 0, ), - child: ReactionPicker( + child: StreamReactionPicker( message: widget.message, ), ), @@ -268,7 +275,7 @@ class _MessageActionsModalState extends State { InkWell _buildCustomAction( BuildContext context, - MessageAction messageAction, + StreamMessageAction messageAction, ) => InkWell( onTap: () { @@ -589,7 +596,7 @@ class _MessageActionsModalState extends State { elevation: 2, clipBehavior: Clip.hardEdge, isScrollControlled: true, - backgroundColor: MessageInputTheme.of(context).inputBackgroundColor, + backgroundColor: StreamMessageInputTheme.of(context).inputBackgroundColor, shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only( topLeft: Radius.circular(16), @@ -631,7 +638,7 @@ class _MessageActionsModalState extends State { if (widget.editMessageInputBuilder != null) widget.editMessageInputBuilder!(context, widget.message) else - MessageInput( + StreamMessageInput( messageInputController: MessageInputController( message: widget.message, ), diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart new file mode 100644 index 00000000..dc06fd91 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -0,0 +1,2110 @@ +import 'dart:async'; +import 'dart:math'; + +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:collection/collection.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:photo_manager/photo_manager.dart'; +import 'package:shimmer/shimmer.dart'; +import 'package:stream_chat_flutter/src/commands_overlay.dart'; +import 'package:stream_chat_flutter/src/emoji/emoji.dart'; +import 'package:stream_chat_flutter/src/emoji_overlay.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/media_list_view.dart'; +import 'package:stream_chat_flutter/src/multi_overlay.dart'; +import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; +import 'package:stream_chat_flutter/src/user_mentions_overlay.dart'; +import 'package:stream_chat_flutter/src/video_service.dart'; +import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +import 'package:video_compress/video_compress.dart'; + +export 'package:video_compress/video_compress.dart' show VideoQuality; + +/// A callback that can be passed to [MessageInput.onError]. +/// +/// This callback should not throw. +/// +/// It exists merely for error reporting, and should not be used otherwise. +typedef ErrorListener = void Function( + Object error, + StackTrace? stackTrace, +); + +/// A callback that can be passed to [MessageInput.onAttachmentLimitExceed]. +/// +/// This callback should not throw. +/// +/// It exists merely for showing custom error, and should not be used otherwise. +typedef AttachmentLimitExceedListener = void Function( + int limit, + String error, +); + +/// Builder for attachment thumbnails +typedef AttachmentThumbnailBuilder = Widget Function( + BuildContext, + Attachment, +); + +/// Builder function for building a mention tile. +typedef MentionTileBuilder = Widget Function( + BuildContext context, + Member member, +); + +/// Builder function for building a user mention tile. +/// +/// Use [StreamUserMentionTile] for the default implementation. +typedef UserMentionTileBuilder = Widget Function( + BuildContext context, + User user, +); + +/// Widget builder for action button. +/// +/// [defaultActionButton] is the default [IconButton] configuration, +/// use [defaultActionButton.copyWith] to easily customize it. +typedef ActionButtonBuilder = Widget Function( + BuildContext context, + IconButton defaultActionButton, +); + +/// Location for actions on the [MessageInput] +enum ActionsLocation { + /// Align to left + left, + + /// Align to right + right, + + /// Align to left but inside the [TextField] + leftInside, + + /// Align to right but inside the [TextField] + rightInside, +} + +/// Default attachments for widget +enum DefaultAttachmentTypes { + /// Image Attachment + image, + + /// Video Attachment + video, + + /// File Attachment + file, +} + +/// Available locations for the sendMessage button relative to the textField +enum SendButtonLocation { + /// inside the textField + inside, + + /// outside the textField + outside, +} + +const _kMinMediaPickerSize = 360.0; + +const _kDefaultMaxAttachmentSize = 20971520; // 20MB in Bytes + +/// Inactive state +/// +/// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input.png) +/// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input_paint.png) +/// +/// Focused state +/// +/// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input2.png) +/// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_input2_paint.png) +/// +/// Widget used to enter the message and add attachments +/// +/// ```dart +/// class ChannelPage extends StatelessWidget { +/// const ChannelPage({ +/// Key key, +/// }) : super(key: key); +/// +/// @override +/// Widget build(BuildContext context) { +/// return Scaffold( +/// appBar: ChannelHeader(), +/// body: Column( +/// children: [ +/// Expanded( +/// child: MessageListView( +/// threadBuilder: (_, parentMessage) { +/// return ThreadPage( +/// parent: parentMessage, +/// ); +/// }, +/// ), +/// ), +/// MessageInput(), +/// ], +/// ), +/// ); +/// } +/// } +/// ``` +/// +/// You usually put this widget in the same page of a [StreamMessageListView] +/// as the bottom widget. +/// +/// The widget renders the ui based on the first ancestor of +/// type [StreamChatTheme]. +/// Modify it to change the widget appearance. +@Deprecated("Use 'StreamMessageInput' instead") +class MessageInput extends StatefulWidget { + /// Instantiate a new MessageInput + const MessageInput({ + Key? key, + this.onMessageSent, + this.preMessageSending, + this.parentMessage, + this.editMessage, + this.maxHeight = 150, + this.keyboardType = TextInputType.multiline, + this.disableAttachments = false, + this.initialMessage, + this.textEditingController, + this.actions = const [], + this.actionsLocation = ActionsLocation.left, + this.attachmentThumbnailBuilders, + this.focusNode, + this.quotedMessage, + this.onQuotedMessageCleared, + this.sendButtonLocation = SendButtonLocation.outside, + this.autofocus = false, + this.hideSendAsDm = false, + this.idleSendButton, + this.activeSendButton, + this.showCommandsButton = true, + @Deprecated('''Use `userMentionsTileBuilder` instead. Will be removed in future release''') + this.mentionsTileBuilder, + this.userMentionsTileBuilder, + this.maxAttachmentSize = _kDefaultMaxAttachmentSize, + this.compressedVideoQuality = VideoQuality.DefaultQuality, + this.compressedVideoFrameRate = 30, + this.onError, + this.attachmentLimit = 10, + this.onAttachmentLimitExceed, + this.attachmentButtonBuilder, + this.commandButtonBuilder, + this.customOverlays = const [], + this.mentionAllAppUsers = false, + this.shouldKeepFocusAfterMessage, + }) : assert( + initialMessage == null || editMessage == null, + "Can't provide both `initialMessage` and `editMessage`", + ), + super(key: key); + + /// List of options for showing overlays + final List customOverlays; + + /// Message to edit + final Message? editMessage; + + /// Video quality to use when compressing the videos + final VideoQuality compressedVideoQuality; + + /// Frame rate to use when compressing the videos + final int compressedVideoFrameRate; + + /// Max attachment size in bytes + /// Defaults to 20 MB + /// do not set it if you're using our default CDN + final int maxAttachmentSize; + + /// Message to start with + final Message? initialMessage; + + /// Function called after sending the message + final void Function(Message)? onMessageSent; + + /// Function called right before sending the message + /// Use this to transform the message + final FutureOr Function(Message)? preMessageSending; + + /// Parent message in case of a thread + final Message? parentMessage; + + /// Maximum Height for the TextField to grow before it starts scrolling + final double maxHeight; + + /// The keyboard type assigned to the TextField + final TextInputType keyboardType; + + /// If true the attachments button will not be displayed + final bool disableAttachments; + + /// Use this property to hide/show the commands button + final bool showCommandsButton; + + /// Hide send as dm checkbox + final bool hideSendAsDm; + + /// The text controller of the TextField + final TextEditingController? textEditingController; + + /// List of action widgets + final List actions; + + /// The location of the custom actions + final ActionsLocation actionsLocation; + + /// Map that defines a thumbnail builder for an attachment type + final Map? attachmentThumbnailBuilders; + + /// The focus node associated to the TextField + final FocusNode? focusNode; + + /// + final Message? quotedMessage; + + /// + final VoidCallback? onQuotedMessageCleared; + + /// The location of the send button + final SendButtonLocation sendButtonLocation; + + /// Autofocus property passed to the TextField + final bool autofocus; + + /// Send button widget in an idle state + final Widget? idleSendButton; + + /// Send button widget in an active state + final Widget? activeSendButton; + + /// Customize the tile for the mentions overlay. + final MentionTileBuilder? mentionsTileBuilder; + + /// Customize the tile for the mentions overlay. + final UserMentionTileBuilder? userMentionsTileBuilder; + + /// A callback for error reporting + final ErrorListener? onError; + + /// A limit for the no. of attachments that can be sent with a single message. + final int attachmentLimit; + + /// A callback for when the [attachmentLimit] is exceeded. + /// + /// This will override the default error alert behaviour. + final AttachmentLimitExceedListener? onAttachmentLimitExceed; + + /// Builder for customizing the attachment button. + /// + /// The builder contains the default [IconButton] that can be customized by + /// calling `.copyWith`. + final ActionButtonBuilder? attachmentButtonBuilder; + + /// Builder for customizing the command button. + /// + /// The builder contains the default [IconButton] that can be customized by + /// calling `.copyWith`. + final ActionButtonBuilder? commandButtonBuilder; + + /// When enabled mentions search users across the entire app. + /// + /// Defaults to false. + final bool mentionAllAppUsers; + + /// Defines if the [MessageInput] loses focuses after a message is sent. + /// The default behaviour keeps focus until a command is enabled. + final bool? shouldKeepFocusAfterMessage; + + @override + MessageInputState createState() => MessageInputState(); + + /// Use this method to get the current [StreamChatState] instance + static MessageInputState of(BuildContext context) { + MessageInputState? messageInputState; + messageInputState = context.findAncestorStateOfType(); + assert( + messageInputState != null, + 'You must have a MessageInput widget as ancestor of your widget tree', + ); + return messageInputState!; + } +} + +/// State of [MessageInput] +class MessageInputState extends State { + final _attachments = {}; + final List _mentionedUsers = []; + + final _imagePicker = ImagePicker(); + late final _focusNode = widget.focusNode ?? FocusNode(); + late final _isInternalFocusNode = widget.focusNode == null; + bool _inputEnabled = true; + bool _commandEnabled = false; + bool _showCommandsOverlay = false; + bool _showMentionsOverlay = false; + + Command? _chosenCommand; + bool _actionsShrunk = false; + bool _sendAsDm = false; + bool _openFilePickerSection = false; + int _filePickerIndex = 0; + + /// The editing controller passed to the input TextField + late final TextEditingController textEditingController = + widget.textEditingController ?? TextEditingController(); + + late StreamChatThemeData _streamChatTheme; + late StreamMessageInputThemeData _messageInputTheme; + + bool get _hasQuotedMessage => widget.quotedMessage != null; + + bool get _messageIsPresent => textEditingController.text.trim().isNotEmpty; + + @override + void initState() { + super.initState(); + if (widget.editMessage != null || widget.initialMessage != null) { + _parseExistingMessage(widget.editMessage ?? widget.initialMessage!); + } + textEditingController.addListener(_onChangedDebounced); + _focusNode.addListener(_focusNodeListener); + } + + void _focusNodeListener() { + if (_focusNode.hasFocus) { + _openFilePickerSection = false; + } + } + + int _timeOut = 0; + Timer? _slowModeTimer; + + void _startSlowMode() { + if (!mounted) { + return; + } + final channel = StreamChannel.of(context).channel; + final cooldownStartedAt = channel.cooldownStartedAt; + if (cooldownStartedAt != null) { + final diff = DateTime.now().difference(cooldownStartedAt).inSeconds; + if (diff < channel.cooldown) { + _timeOut = channel.cooldown - diff; + if (_timeOut > 0) { + _slowModeTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (_timeOut == 0) { + timer.cancel(); + } else { + if (mounted) { + setState(() => _timeOut -= 1); + } + } + }); + } + } + } + } + + void _stopSlowMode() => _slowModeTimer?.cancel(); + + @override + Widget build(BuildContext context) { + Widget child = DecoratedBox( + decoration: BoxDecoration( + color: _messageInputTheme.inputBackgroundColor, + ), + child: SafeArea( + child: GestureDetector( + onPanUpdate: (details) { + if (details.delta.dy > 0) { + _focusNode.unfocus(); + if (_openFilePickerSection) { + setState(() { + _openFilePickerSection = false; + }); + } + } + }, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (_hasQuotedMessage) + Padding( + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon.reply( + color: _streamChatTheme.colorTheme.disabled, + ), + ), + Text( + context.translations.replyToMessageLabel, + style: const TextStyle(fontWeight: FontWeight.bold), + ), + IconButton( + visualDensity: VisualDensity.compact, + icon: StreamSvgIcon.closeSmall(), + onPressed: widget.onQuotedMessageCleared, + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.symmetric(vertical: 8), + child: _buildTextField(context), + ), + if (widget.parentMessage != null && !widget.hideSendAsDm) + Padding( + padding: const EdgeInsets.only( + right: 12, + left: 12, + bottom: 12, + ), + child: _buildDmCheckbox(), + ), + _buildFilePickerSection(), + ], + ), + ), + ), + ); + if (widget.editMessage == null) { + child = Material( + elevation: 8, + child: child, + ); + } + + return StreamMultiOverlay( + childAnchor: Alignment.topCenter, + overlayAnchor: Alignment.bottomCenter, + overlayOptions: [ + OverlayOptions( + visible: _showCommandsOverlay, + widget: _buildCommandsOverlayEntry(), + ), + OverlayOptions( + visible: _focusNode.hasFocus && + textEditingController.text.isNotEmpty && + textEditingController.selection.baseOffset > 0 && + textEditingController.text + .substring( + 0, + textEditingController.selection.baseOffset, + ) + .contains(':'), + widget: _buildEmojiOverlay(), + ), + OverlayOptions( + visible: _showMentionsOverlay, + widget: _buildMentionsOverlayEntry(), + ), + ...widget.customOverlays, + ], + child: child, + ); + } + + Flex _buildTextField(BuildContext context) => Flex( + direction: Axis.horizontal, + children: [ + if (!_commandEnabled && + widget.actionsLocation == ActionsLocation.left) + _buildExpandActionsButton(context), + _buildTextInput(context), + if (!_commandEnabled && + widget.actionsLocation == ActionsLocation.right) + _buildExpandActionsButton(context), + if (widget.sendButtonLocation == SendButtonLocation.outside) + _animateSendButton(context), + ], + ); + + Widget _buildDmCheckbox() => Row( + children: [ + Container( + height: 16, + width: 16, + foregroundDecoration: BoxDecoration( + border: _sendAsDm + ? null + : Border.all( + color: _streamChatTheme.colorTheme.textHighEmphasis + .withOpacity(0.5), + width: 2, + ), + borderRadius: BorderRadius.circular(3), + ), + child: Center( + child: Material( + borderRadius: BorderRadius.circular(3), + color: _sendAsDm + ? _streamChatTheme.colorTheme.accentPrimary + : _streamChatTheme.colorTheme.barsBg, + child: InkWell( + onTap: () { + setState(() { + _sendAsDm = !_sendAsDm; + }); + }, + child: AnimatedCrossFade( + duration: const Duration(milliseconds: 300), + reverseDuration: const Duration(milliseconds: 300), + crossFadeState: _sendAsDm + ? CrossFadeState.showFirst + : CrossFadeState.showSecond, + firstChild: StreamSvgIcon.check( + size: 16, + color: _streamChatTheme.colorTheme.barsBg, + ), + secondChild: const SizedBox( + height: 16, + width: 16, + ), + ), + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 12), + child: Text( + context.translations.alsoSendAsDirectMessageLabel, + style: _streamChatTheme.textTheme.footnote.copyWith( + color: _streamChatTheme.colorTheme.textHighEmphasis + .withOpacity(0.5), + ), + ), + ), + ], + ); + + Widget _animateSendButton(BuildContext context) { + late Widget sendButton; + if (_timeOut > 0) { + sendButton = _CountdownButton(count: _timeOut); + } else if (!_messageIsPresent && _attachments.isEmpty) { + sendButton = widget.idleSendButton ?? _buildIdleSendButton(context); + } else { + sendButton = widget.activeSendButton != null + ? InkWell( + onTap: sendMessage, + child: widget.activeSendButton, + ) + : _buildSendButton(context); + } + + return AnimatedSwitcher( + duration: _streamChatTheme.messageInputTheme.sendAnimationDuration!, + child: sendButton, + ); + } + + Widget _buildExpandActionsButton(BuildContext context) { + final channel = StreamChannel.of(context).channel; + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: AnimatedCrossFade( + crossFadeState: _actionsShrunk + ? CrossFadeState.showFirst + : CrossFadeState.showSecond, + firstCurve: Curves.easeOut, + secondCurve: Curves.easeIn, + firstChild: IconButton( + onPressed: () { + if (_actionsShrunk) { + setState(() => _actionsShrunk = false); + } + }, + icon: Transform.rotate( + angle: (widget.actionsLocation == ActionsLocation.right || + widget.actionsLocation == ActionsLocation.rightInside) + ? pi + : 0, + child: StreamSvgIcon.emptyCircleLeft( + color: _messageInputTheme.expandButtonColor, + ), + ), + padding: const EdgeInsets.all(0), + constraints: const BoxConstraints.tightFor( + height: 24, + width: 24, + ), + splashRadius: 24, + ), + secondChild: widget.disableAttachments && + !widget.showCommandsButton && + !widget.actions.isNotEmpty + ? const Offstage() + : Wrap( + children: [ + if (!widget.disableAttachments) + _buildAttachmentButton(context), + if (widget.showCommandsButton && + widget.editMessage == null && + channel.state != null && + channel.config?.commands.isNotEmpty == true) + _buildCommandButton(context), + ...widget.actions, + ].insertBetween(const SizedBox(width: 8)), + ), + duration: const Duration(milliseconds: 300), + alignment: Alignment.center, + ), + ); + } + + Expanded _buildTextInput(BuildContext context) { + final margin = (widget.sendButtonLocation == SendButtonLocation.inside + ? const EdgeInsets.only(right: 8) + : EdgeInsets.zero) + + (widget.actionsLocation != ActionsLocation.left || _commandEnabled + ? const EdgeInsets.only(left: 8) + : EdgeInsets.zero); + return Expanded( + child: Container( + clipBehavior: Clip.hardEdge, + margin: margin, + decoration: BoxDecoration( + borderRadius: _messageInputTheme.borderRadius, + gradient: _focusNode.hasFocus + ? _messageInputTheme.activeBorderGradient + : _messageInputTheme.idleBorderGradient, + ), + child: Padding( + padding: const EdgeInsets.all(1.5), + child: DecoratedBox( + decoration: BoxDecoration( + borderRadius: _messageInputTheme.borderRadius, + color: _messageInputTheme.inputBackgroundColor, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildReplyToMessage(), + _buildAttachments(), + LimitedBox( + maxHeight: widget.maxHeight, + child: TextField( + key: const Key('messageInputText'), + enabled: _inputEnabled, + maxLines: null, + onSubmitted: (_) => sendMessage(), + keyboardType: widget.keyboardType, + controller: textEditingController, + focusNode: _focusNode, + style: _messageInputTheme.inputTextStyle, + autofocus: widget.autofocus, + textAlignVertical: TextAlignVertical.center, + decoration: _getInputDecoration(context), + textCapitalization: TextCapitalization.sentences, + ), + ), + ], + ), + ), + ), + ), + ); + } + + InputDecoration _getInputDecoration(BuildContext context) { + final passedDecoration = _messageInputTheme.inputDecoration; + return InputDecoration( + isDense: true, + hintText: _getHint(context), + hintStyle: _messageInputTheme.inputTextStyle!.copyWith( + color: _streamChatTheme.colorTheme.textLowEmphasis, + ), + border: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors.transparent, + ), + ), + focusedBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors.transparent, + ), + ), + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors.transparent, + ), + ), + errorBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors.transparent, + ), + ), + disabledBorder: const OutlineInputBorder( + borderSide: BorderSide( + color: Colors.transparent, + ), + ), + contentPadding: const EdgeInsets.fromLTRB(16, 12, 13, 11), + prefixIcon: _commandEnabled + ? Row( + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: Container( + constraints: BoxConstraints.tight(const Size(64, 24)), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + color: _streamChatTheme.colorTheme.accentPrimary, + ), + alignment: Alignment.center, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + StreamSvgIcon.lightning( + color: Colors.white, + size: 16, + ), + Text( + _chosenCommand?.name.toUpperCase() ?? '', + style: + _streamChatTheme.textTheme.footnoteBold.copyWith( + color: Colors.white, + ), + ), + ], + ), + ), + ), + ], + ) + : (widget.actionsLocation == ActionsLocation.leftInside + ? Row( + mainAxisSize: MainAxisSize.min, + children: [_buildExpandActionsButton(context)], + ) + : null), + suffixIconConstraints: const BoxConstraints.tightFor(height: 40), + prefixIconConstraints: const BoxConstraints.tightFor(height: 40), + suffixIcon: Row( + mainAxisSize: MainAxisSize.min, + children: [ + if (_commandEnabled) + Padding( + padding: const EdgeInsets.only(right: 8), + child: IconButton( + icon: StreamSvgIcon.closeSmall(), + splashRadius: 24, + padding: const EdgeInsets.all(0), + constraints: const BoxConstraints.tightFor( + height: 24, + width: 24, + ), + onPressed: () { + setState(() => _commandEnabled = false); + }, + ), + ), + if (!_commandEnabled && + widget.actionsLocation == ActionsLocation.rightInside) + _buildExpandActionsButton(context), + if (widget.sendButtonLocation == SendButtonLocation.inside) + _animateSendButton(context), + ], + ), + ).merge(passedDecoration); + } + + late final _onChangedDebounced = debounce( + () { + var value = textEditingController.text; + if (!mounted) return; + value = value.trim(); + + final channel = StreamChannel.of(context).channel; + if (value.isNotEmpty) { + // ignore: no-empty-block + channel.keyStroke(widget.parentMessage?.id).catchError((e) {}); + } + + var actionsLength = widget.actions.length; + if (widget.showCommandsButton) actionsLength += 1; + if (!widget.disableAttachments) actionsLength += 1; + + setState(() { + _actionsShrunk = value.isNotEmpty && actionsLength > 1; + }); + + _checkCommands(value, context); + _checkMentions(value, context); + _checkEmoji(value, context); + }, + const Duration(milliseconds: 350), + leading: true, + ); + + String _getHint(BuildContext context) { + if (_commandEnabled && _chosenCommand!.name == 'giphy') { + return context.translations.searchGifLabel; + } + if (_attachments.isNotEmpty) { + return context.translations.addACommentOrSendLabel; + } + if (_timeOut != 0) { + return context.translations.slowModeOnLabel; + } + + return context.translations.writeAMessageLabel; + } + + void _checkEmoji(String s, BuildContext context) { + if (s.isNotEmpty && + textEditingController.selection.baseOffset > 0 && + textEditingController.text + .substring(0, textEditingController.selection.baseOffset) + .contains(':')) { + final textToSelection = textEditingController.text + .substring(0, textEditingController.value.selection.start); + final splits = textToSelection.split(':'); + final query = splits[splits.length - 2].toLowerCase(); + final emoji = Emoji.byName(query); + + if (textToSelection.endsWith(':') && emoji != null) { + _chooseEmoji(splits.sublist(0, splits.length - 1), emoji); + } + } + } + + void _checkMentions(String s, BuildContext context) { + if (s.isNotEmpty && + textEditingController.selection.baseOffset > 0 && + textEditingController.text + .substring(0, textEditingController.selection.baseOffset) + .split(' ') + .last + .contains('@')) { + if (!_showMentionsOverlay) { + setState(() { + _showMentionsOverlay = true; + }); + } + } else if (_showMentionsOverlay) { + setState(() { + _showMentionsOverlay = false; + }); + } + } + + void _checkCommands(String s, BuildContext context) { + if (s.startsWith('/')) { + final allCommands = StreamChannel.of(context).channel.config?.commands; + final command = + allCommands?.firstWhereOrNull((it) => it.name == s.substring(1)); + if (command != null) { + return _setCommand(command); + } else if (!_showCommandsOverlay) { + setState(() { + _showCommandsOverlay = true; + }); + } + } else if (_showCommandsOverlay) { + setState(() { + _showCommandsOverlay = false; + }); + } + } + + Widget _buildCommandsOverlayEntry() { + final text = textEditingController.text.trimLeft(); + + final renderObject = context.findRenderObject() as RenderBox?; + if (renderObject == null) { + return const Offstage(); + } + return StreamCommandsOverlay( + channel: StreamChannel.of(context).channel, + size: Size(renderObject.size.width - 16, 400), + text: text, + onCommandResult: _setCommand, + ); + } + + Widget _buildFilePickerSection() { + final _attachmentContainsFile = + _attachments.values.any((it) => it.type == 'file'); + + final attachmentLimitCrossed = + _attachments.length >= widget.attachmentLimit; + + Color _getIconColor(int index) { + final streamChatThemeData = _streamChatTheme; + switch (index) { + case 0: + return _attachments.isEmpty + ? streamChatThemeData.colorTheme.accentPrimary + : (!_attachmentContainsFile + ? streamChatThemeData.colorTheme.accentPrimary + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2)); + case 1: + return _attachmentContainsFile + ? streamChatThemeData.colorTheme.accentPrimary + : (_attachments.isEmpty + ? streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.5) + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2)); + case 2: + return attachmentLimitCrossed + ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) + : _attachmentContainsFile && _attachments.isNotEmpty + ? streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2) + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.5); + case 3: + return attachmentLimitCrossed + ? streamChatThemeData.colorTheme.textHighEmphasis.withOpacity(0.2) + : _attachmentContainsFile && _attachments.isNotEmpty + ? streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.2) + : streamChatThemeData.colorTheme.textHighEmphasis + .withOpacity(0.5); + default: + return Colors.black; + } + } + + return AnimatedContainer( + duration: _openFilePickerSection + ? const Duration(milliseconds: 300) + : const Duration(), + curve: Curves.easeOut, + height: _openFilePickerSection ? _kMinMediaPickerSize : 0, + child: SingleChildScrollView( + child: SizedBox( + height: _kMinMediaPickerSize, + child: Material( + color: _streamChatTheme.colorTheme.inputBg, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + children: [ + IconButton( + icon: StreamSvgIcon.pictures( + color: _getIconColor(0), + ), + onPressed: + _attachmentContainsFile && _attachments.isNotEmpty + ? null + : () { + setState(() { + _filePickerIndex = 0; + }); + }, + ), + IconButton( + iconSize: 32, + icon: StreamSvgIcon.files( + color: _getIconColor(1), + ), + onPressed: + !_attachmentContainsFile && _attachments.isNotEmpty + ? null + : () { + pickFile(DefaultAttachmentTypes.file); + }, + ), + IconButton( + icon: StreamSvgIcon.camera( + color: _getIconColor(2), + ), + onPressed: attachmentLimitCrossed || + (_attachmentContainsFile && + _attachments.isNotEmpty) + ? null + : () { + pickFile( + DefaultAttachmentTypes.image, + camera: true, + ); + }, + ), + IconButton( + padding: const EdgeInsets.all(0), + icon: StreamSvgIcon.record( + color: _getIconColor(3), + ), + onPressed: attachmentLimitCrossed || + (_attachmentContainsFile && + _attachments.isNotEmpty) + ? null + : () { + pickFile( + DefaultAttachmentTypes.video, + camera: true, + ); + }, + ), + ], + ), + DecoratedBox( + decoration: BoxDecoration( + color: _streamChatTheme.colorTheme.barsBg, + borderRadius: const BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16), + ), + ), + child: Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: Container( + width: 40, + height: 4, + decoration: BoxDecoration( + color: _streamChatTheme.colorTheme.inputBg, + borderRadius: BorderRadius.circular(4), + ), + ), + ), + ), + ), + if (_openFilePickerSection) + Expanded( + child: DecoratedBox( + decoration: BoxDecoration( + color: _streamChatTheme.colorTheme.barsBg, + borderRadius: BorderRadius.circular(8), + ), + child: _PickerWidget( + filePickerIndex: _filePickerIndex, + streamChatTheme: _streamChatTheme, + containsFile: _attachmentContainsFile, + selectedMedias: _attachments.keys.toList(), + onAddMoreFilesClick: pickFile, + onMediaSelected: (media) { + if (_attachments.containsKey(media.id)) { + setState(() => _attachments.remove(media.id)); + } else { + _addAssetAttachment(media); + } + }, + ), + ), + ), + ], + ), + ), + ), + ), + ); + } + + void _addAssetAttachment(AssetEntity medium) async { + final mediaFile = await medium.originFile.timeout( + const Duration(seconds: 5), + onTimeout: () => medium.originFile, + ); + + if (mediaFile == null) return; + + var file = AttachmentFile( + path: mediaFile.path, + size: await mediaFile.length(), + bytes: mediaFile.readAsBytesSync(), + ); + + if (file.size! > widget.maxAttachmentSize) { + if (medium.type == AssetType.video && file.path != null) { + final mediaInfo = await StreamVideoService.compressVideo( + file.path!, + frameRate: widget.compressedVideoFrameRate, + quality: widget.compressedVideoQuality, + ); + + if (mediaInfo == null || + mediaInfo.filesize! > widget.maxAttachmentSize) { + _showErrorAlert( + context.translations.fileTooLargeAfterCompressionError( + widget.maxAttachmentSize / (1024 * 1024), + ), + ); + return; + } + file = AttachmentFile( + name: file.name, + size: mediaInfo.filesize, + bytes: await mediaInfo.file?.readAsBytes(), + path: mediaInfo.path, + ); + } else { + _showErrorAlert(context.translations.fileTooLargeError( + widget.maxAttachmentSize / (1024 * 1024), + )); + return; + } + } + + setState(() { + final attachment = Attachment( + id: medium.id, + file: file, + type: medium.type == AssetType.image ? 'image' : 'video', + ); + _addAttachments([attachment]); + }); + } + + Widget _buildMentionsOverlayEntry() { + final channel = StreamChannel.of(context).channel; + if (textEditingController.value.selection.start < 0 || + channel.state == null) { + return const Offstage(); + } + + final splits = textEditingController.text + .substring(0, textEditingController.value.selection.start) + .split('@'); + final query = splits.last.toLowerCase(); + + // ignore: cast_nullable_to_non_nullable + final renderObject = context.findRenderObject() as RenderBox; + + var tileBuilder = widget.userMentionsTileBuilder; + if (tileBuilder == null && widget.mentionsTileBuilder != null) { + tileBuilder = (context, user) { + final member = Member( + user: user, + userId: user.id, + createdAt: user.createdAt, + updatedAt: user.updatedAt, + ); + return widget.mentionsTileBuilder!(context, member); + }; + } + + return LayoutBuilder( + builder: (context, snapshot) => StreamUserMentionsOverlay( + query: query, + mentionAllAppUsers: widget.mentionAllAppUsers, + client: StreamChat.of(context).client, + channel: channel, + size: Size( + renderObject.size.width - 16, + min(400, (snapshot.maxHeight - renderObject.size.height - 16).abs()), + ), + mentionsTileBuilder: tileBuilder, + onMentionUserTap: (user) { + _mentionedUsers.add(user); + splits[splits.length - 1] = user.name; + final rejoin = splits.join('@'); + + textEditingController.value = TextEditingValue( + text: rejoin + + textEditingController.text.substring( + textEditingController.selection.start, + ), + selection: TextSelection.collapsed( + offset: rejoin.length, + ), + ); + _onChangedDebounced.cancel(); + + setState(() => _showMentionsOverlay = false); + }, + ), + ); + } + + Widget _buildEmojiOverlay() { + if (textEditingController.value.selection.baseOffset < 0) { + return const Offstage(); + } + + final splits = textEditingController.text + .substring(0, textEditingController.value.selection.baseOffset) + .split(':'); + + final query = splits.last.toLowerCase(); + // ignore: cast_nullable_to_non_nullable + final renderObject = context.findRenderObject() as RenderBox; + + return StreamEmojiOverlay( + size: Size(renderObject.size.width - 16, 200), + query: query, + onEmojiResult: (emoji) { + _chooseEmoji(splits, emoji); + }, + ); + } + + void _chooseEmoji(List splits, Emoji emoji) { + final rejoin = splits.sublist(0, splits.length - 1).join(':') + emoji.char!; + + textEditingController.value = TextEditingValue( + text: rejoin + + textEditingController.text + .substring(textEditingController.selection.start), + selection: TextSelection.collapsed( + offset: rejoin.length, + ), + ); + } + + void _setCommand(Command c) { + textEditingController.clear(); + setState(() { + _chosenCommand = c; + _commandEnabled = true; + _showCommandsOverlay = false; + }); + } + + Widget _buildReplyToMessage() { + if (!_hasQuotedMessage) return const Offstage(); + final containsUrl = widget.quotedMessage!.attachments + .any((element) => element.titleLink != null); + return StreamQuotedMessageWidget( + reverse: true, + showBorder: !containsUrl, + message: widget.quotedMessage!, + messageTheme: _streamChatTheme.otherMessageTheme, + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + ); + } + + Widget _buildAttachments() { + if (_attachments.isEmpty) return const Offstage(); + final fileAttachments = _attachments.values + .where((it) => it.type == 'file') + .toList(growable: false); + final remainingAttachments = _attachments.values + .where((it) => it.type != 'file') + .toList(growable: false); + return Column( + children: [ + if (fileAttachments.isNotEmpty) + Padding( + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: LimitedBox( + maxHeight: 136, + child: ListView( + reverse: true, + shrinkWrap: true, + children: fileAttachments.reversed + .map( + (e) => ClipRRect( + borderRadius: BorderRadius.circular(10), + child: StreamFileAttachment( + message: Message(), // dummy message + attachment: e, + size: Size( + MediaQuery.of(context).size.width * 0.65, + 56, + ), + trailing: Padding( + padding: const EdgeInsets.all(8), + child: _buildRemoveButton(e), + ), + ), + ), + ) + .insertBetween(const SizedBox(height: 8)), + ), + ), + ), + if (remainingAttachments.isNotEmpty) + Padding( + padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), + child: LimitedBox( + maxHeight: 104, + child: ListView( + scrollDirection: Axis.horizontal, + children: remainingAttachments + .map( + (attachment) => ClipRRect( + borderRadius: BorderRadius.circular(10), + child: Stack( + children: [ + AspectRatio( + aspectRatio: 1, + child: SizedBox( + height: 104, + width: 104, + child: _buildAttachment(attachment), + ), + ), + Positioned( + top: 8, + right: 8, + child: _buildRemoveButton(attachment), + ), + ], + ), + ), + ) + .insertBetween(const SizedBox(width: 8)), + ), + ), + ), + ], + ); + } + + Widget _buildRemoveButton(Attachment attachment) => SizedBox( + height: 24, + width: 24, + child: RawMaterialButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + ), + elevation: 0, + highlightElevation: 0, + focusElevation: 0, + hoverElevation: 0, + onPressed: () { + setState(() => _attachments.remove(attachment.id)); + }, + fillColor: + _streamChatTheme.colorTheme.textHighEmphasis.withOpacity(0.5), + child: Center( + child: StreamSvgIcon.close( + size: 24, + color: _streamChatTheme.colorTheme.barsBg, + ), + ), + ), + ); + + Widget _buildAttachment(Attachment attachment) { + if (widget.attachmentThumbnailBuilders?.containsKey(attachment.type) == + true) { + return widget.attachmentThumbnailBuilders![attachment.type!]!( + context, + attachment, + ); + } + + switch (attachment.type) { + case 'image': + case 'giphy': + return attachment.file != null + ? Image.memory( + attachment.file!.bytes!, + fit: BoxFit.cover, + errorBuilder: (context, _, __) => Image.asset( + 'images/placeholder.png', + package: 'stream_chat_flutter', + ), + ) + : CachedNetworkImage( + imageUrl: attachment.imageUrl ?? + attachment.assetUrl ?? + attachment.thumbUrl!, + fit: BoxFit.cover, + errorWidget: (_, obj, trace) => + getFileTypeImage(attachment.extraData['other'] as String?), + placeholder: (context, _) => Shimmer.fromColors( + baseColor: _streamChatTheme.colorTheme.disabled, + highlightColor: _streamChatTheme.colorTheme.inputBg, + child: Image.asset( + 'images/placeholder.png', + fit: BoxFit.cover, + package: 'stream_chat_flutter', + ), + ), + ); + case 'video': + return Stack( + children: [ + StreamVideoThumbnailImage( + height: 104, + width: 104, + video: (attachment.file?.path ?? attachment.assetUrl)!, + fit: BoxFit.cover, + ), + Positioned( + left: 8, + bottom: 10, + child: SvgPicture.asset( + 'svgs/video_call_icon.svg', + package: 'stream_chat_flutter', + ), + ), + ], + ); + default: + return Container( + color: Colors.black26, + child: const Icon(Icons.insert_drive_file), + ); + } + } + + Widget _buildCommandButton(BuildContext context) { + final s = textEditingController.text.trim(); + final defaultButton = IconButton( + icon: StreamSvgIcon.lightning( + color: s.isNotEmpty + ? _streamChatTheme.colorTheme.disabled + : (_showCommandsOverlay + ? _messageInputTheme.actionButtonColor + : _messageInputTheme.actionButtonIdleColor), + ), + padding: const EdgeInsets.all(0), + constraints: const BoxConstraints.tightFor( + height: 24, + width: 24, + ), + splashRadius: 24, + onPressed: () async { + if (_openFilePickerSection) { + setState(() => _openFilePickerSection = false); + await Future.delayed(const Duration(milliseconds: 300)); + } + + setState(() { + _showCommandsOverlay = !_showCommandsOverlay; + }); + }, + ); + + return widget.commandButtonBuilder?.call(context, defaultButton) ?? + defaultButton; + } + + Widget _buildAttachmentButton(BuildContext context) { + final defaultButton = IconButton( + icon: StreamSvgIcon.attach( + color: _openFilePickerSection + ? _messageInputTheme.actionButtonColor + : _messageInputTheme.actionButtonIdleColor, + ), + padding: const EdgeInsets.all(0), + constraints: const BoxConstraints.tightFor( + height: 24, + width: 24, + ), + splashRadius: 24, + onPressed: () async { + _showCommandsOverlay = false; + _showMentionsOverlay = false; + + if (_openFilePickerSection) { + setState(() => _openFilePickerSection = false); + } else { + showAttachmentModal(); + } + }, + ); + + return widget.attachmentButtonBuilder?.call(context, defaultButton) ?? + defaultButton; + } + + /// Show the attachment modal, making the user choose where to + /// pick a media from + void showAttachmentModal() { + if (_focusNode.hasFocus) { + _focusNode.unfocus(); + } + + if (!kIsWeb) { + setState(() { + _openFilePickerSection = true; + }); + } else { + showModalBottomSheet( + clipBehavior: Clip.hardEdge, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(32), + topRight: Radius.circular(32), + ), + ), + context: context, + isScrollControlled: true, + builder: (_) => Column( + mainAxisSize: MainAxisSize.min, + children: [ + ListTile( + title: Text( + context.translations.addAFileLabel, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + ), + ), + ListTile( + leading: const Icon(Icons.image), + title: Text(context.translations.uploadAPhotoLabel), + onTap: () { + pickFile(DefaultAttachmentTypes.image); + Navigator.pop(context); + }, + ), + ListTile( + leading: const Icon(Icons.video_library), + title: Text(context.translations.uploadAVideoLabel), + onTap: () { + pickFile(DefaultAttachmentTypes.video); + Navigator.pop(context); + }, + ), + ListTile( + leading: const Icon(Icons.insert_drive_file), + title: Text(context.translations.uploadAFileLabel), + onTap: () { + pickFile(DefaultAttachmentTypes.file); + Navigator.pop(context); + }, + ), + ], + ), + ); + } + } + + /// Add an attachment to the sending message + /// Use this to add custom type attachments + /// + /// Note: Only meant to be used from outside the state. + void addAttachment(Attachment attachment) { + setState(() => _addAttachments([attachment])); + } + + /// Adds an attachment to the [_attachments] map + void _addAttachments(Iterable attachments) { + final limit = widget.attachmentLimit; + final length = _attachments.length + attachments.length; + if (length > limit) { + final onAttachmentLimitExceed = widget.onAttachmentLimitExceed; + if (onAttachmentLimitExceed != null) { + return onAttachmentLimitExceed( + widget.attachmentLimit, + context.translations.attachmentLimitExceedError(limit), + ); + } + return _showErrorAlert( + context.translations.attachmentLimitExceedError(limit), + ); + } + for (final attachment in attachments) { + _attachments[attachment.id] = attachment; + } + } + + /// Pick a file from the device + /// If [camera] is true then the camera will open + void pickFile( + DefaultAttachmentTypes fileType, { + bool camera = false, + }) async { + setState(() => _inputEnabled = false); + + AttachmentFile? file; + String? attachmentType; + + if (fileType == DefaultAttachmentTypes.image) { + attachmentType = 'image'; + } else if (fileType == DefaultAttachmentTypes.video) { + attachmentType = 'video'; + } else if (fileType == DefaultAttachmentTypes.file) { + attachmentType = 'file'; + } + + if (camera) { + XFile? pickedFile; + if (fileType == DefaultAttachmentTypes.image) { + pickedFile = await _imagePicker.pickImage(source: ImageSource.camera); + } else if (fileType == DefaultAttachmentTypes.video) { + pickedFile = await _imagePicker.pickVideo(source: ImageSource.camera); + } + if (pickedFile != null) { + final bytes = await pickedFile.readAsBytes(); + file = AttachmentFile( + size: bytes.length, + path: pickedFile.path, + bytes: bytes, + ); + } + } else { + late FileType type; + if (fileType == DefaultAttachmentTypes.image) { + type = FileType.image; + } else if (fileType == DefaultAttachmentTypes.video) { + type = FileType.video; + } else if (fileType == DefaultAttachmentTypes.file) { + type = FileType.any; + } + final res = await FilePicker.platform.pickFiles( + type: type, + ); + if (res?.files.isNotEmpty == true) { + file = res!.files.single.toAttachmentFile; + } + } + + setState(() => _inputEnabled = true); + + if (file == null) return; + + final mimeType = file.name?.mimeType ?? file.path!.split('/').last.mimeType; + + final extraDataMap = {}; + + if (mimeType?.subtype != null) { + extraDataMap['mime_type'] = mimeType!.subtype.toLowerCase(); + } + + extraDataMap['file_size'] = file.size!; + + final attachment = Attachment( + file: file, + type: attachmentType, + uploadState: const UploadState.preparing(), + extraData: extraDataMap, + ); + + if (file.size! > widget.maxAttachmentSize) { + if (attachmentType == 'video' && file.path != null) { + final mediaInfo = await (StreamVideoService.compressVideo( + file.path!, + frameRate: widget.compressedVideoFrameRate, + quality: widget.compressedVideoQuality, + ) as FutureOr); + + if (mediaInfo.filesize! > widget.maxAttachmentSize) { + _showErrorAlert( + context.translations.fileTooLargeAfterCompressionError( + widget.maxAttachmentSize / (1024 * 1024), + ), + ); + return; + } + file = AttachmentFile( + name: file.name, + size: mediaInfo.filesize, + bytes: await mediaInfo.file!.readAsBytes(), + path: mediaInfo.path, + ); + } else { + _showErrorAlert(context.translations.fileTooLargeError( + widget.maxAttachmentSize / (1024 * 1024), + )); + return; + } + } + + setState(() { + _addAttachments([ + attachment.copyWith( + file: file, + extraData: {...attachment.extraData} + ..update('file_size', ((_) => file!.size!)), + ), + ]); + }); + } + + Widget _buildIdleSendButton(BuildContext context) => Padding( + padding: const EdgeInsets.all(8), + child: StreamSvgIcon( + assetName: _getIdleSendIcon(), + color: _messageInputTheme.sendButtonIdleColor, + ), + ); + + Widget _buildSendButton(BuildContext context) => Padding( + padding: const EdgeInsets.all(8), + child: IconButton( + onPressed: sendMessage, + padding: const EdgeInsets.all(0), + splashRadius: 24, + constraints: const BoxConstraints.tightFor( + height: 24, + width: 24, + ), + icon: StreamSvgIcon( + assetName: _getSendIcon(), + color: _messageInputTheme.sendButtonColor, + ), + ), + ); + + String _getIdleSendIcon() { + if (_commandEnabled) { + return 'Icon_search.svg'; + } else { + return 'Icon_circle_right.svg'; + } + } + + String _getSendIcon() { + if (widget.editMessage != null) { + return 'Icon_circle_up.svg'; + } else if (_commandEnabled) { + return 'Icon_search.svg'; + } else { + return 'Icon_circle_up.svg'; + } + } + + /// Sends the current message + Future sendMessage() async { + var text = textEditingController.text.trim(); + if (text.isEmpty && _attachments.isEmpty) { + return; + } + + var shouldKeepFocus = widget.shouldKeepFocusAfterMessage; + + shouldKeepFocus ??= !_commandEnabled; + + if (_commandEnabled) { + text = '${'/${_chosenCommand!.name} '}$text'; + } + + final attachments = [..._attachments.values]; + + textEditingController.clear(); + _attachments.clear(); + widget.onQuotedMessageCleared?.call(); + + setState(() { + _commandEnabled = false; + }); + + Message message; + if (widget.editMessage != null) { + message = widget.editMessage!.copyWith( + text: text, + attachments: attachments, + mentionedUsers: + _mentionedUsers.where((u) => text.contains('@${u.name}')).toList(), + ); + } else { + message = (widget.initialMessage ?? Message()).copyWith( + parentId: widget.parentMessage?.id, + text: text, + attachments: attachments, + mentionedUsers: + _mentionedUsers.where((u) => text.contains('@${u.name}')).toList(), + showInChannel: widget.parentMessage != null ? _sendAsDm : null, + ); + } + + if (widget.quotedMessage != null) { + message = message.copyWith( + quotedMessageId: widget.quotedMessage!.id, + ); + } + + if (widget.preMessageSending != null) { + message = await widget.preMessageSending!(message); + } + + final streamChannel = StreamChannel.of(context); + final channel = streamChannel.channel; + if (!channel.state!.isUpToDate) { + await streamChannel.reloadChannel(); + } + + _mentionedUsers.clear(); + + message = _replaceUserNameWithId(message); + + try { + Future sendingFuture; + if (widget.editMessage == null || + widget.editMessage!.status == MessageSendingStatus.failed || + widget.editMessage!.status == MessageSendingStatus.sending) { + sendingFuture = channel.sendMessage(message); + } else { + sendingFuture = channel.updateMessage(message); + } + + if (shouldKeepFocus) { + FocusScope.of(context).requestFocus(_focusNode); + } else { + FocusScope.of(context).unfocus(); + } + + final resp = await sendingFuture; + if (resp.message?.type == 'error') { + _parseExistingMessage(message); + } + _startSlowMode(); + widget.onMessageSent?.call(resp.message); + } catch (e, stk) { + if (widget.onError != null) { + widget.onError?.call(e, stk); + } else { + rethrow; + } + } + } + + void _showErrorAlert(String description) { + showModalBottomSheet( + backgroundColor: _streamChatTheme.colorTheme.barsBg, + context: context, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(16), + topRight: Radius.circular(16), + ), + ), + builder: (context) => Column( + mainAxisSize: MainAxisSize.min, + children: [ + const SizedBox( + height: 26, + ), + StreamSvgIcon.error( + color: _streamChatTheme.colorTheme.accentError, + size: 24, + ), + const SizedBox( + height: 26, + ), + Text( + context.translations.somethingWentWrongError, + style: _streamChatTheme.textTheme.headlineBold, + ), + const SizedBox( + height: 7, + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Text( + description, + textAlign: TextAlign.center, + ), + ), + const SizedBox( + height: 36, + ), + Container( + color: + _streamChatTheme.colorTheme.textHighEmphasis.withOpacity(0.08), + height: 1, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + TextButton( + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text( + context.translations.okLabel, + style: _streamChatTheme.textTheme.bodyBold.copyWith( + color: _streamChatTheme.colorTheme.accentPrimary, + ), + ), + ), + ], + ), + ], + ), + ); + } + + void _parseExistingMessage(Message message) { + final messageText = message.text; + if (messageText != null) textEditingController.text = messageText; + _addAttachments(message.attachments); + } + + @override + void dispose() { + textEditingController.dispose(); + _focusNode.removeListener(_focusNodeListener); + if (_isInternalFocusNode) _focusNode.dispose(); + _stopSlowMode(); + _onChangedDebounced.cancel(); + super.dispose(); + } + + bool _initialized = false; + + @override + void didChangeDependencies() { + _streamChatTheme = StreamChatTheme.of(context); + _messageInputTheme = StreamMessageInputTheme.of(context); + if (widget.editMessage == null) _startSlowMode(); + + if ((widget.editMessage != null || widget.initialMessage != null) && + !_initialized) { + FocusScope.of(context).requestFocus(_focusNode); + _initialized = true; + } + super.didChangeDependencies(); + } +} + +class _PickerWidget extends StatefulWidget { + const _PickerWidget({ + Key? key, + required this.filePickerIndex, + required this.containsFile, + required this.selectedMedias, + required this.onAddMoreFilesClick, + required this.onMediaSelected, + required this.streamChatTheme, + }) : super(key: key); + + final int filePickerIndex; + final bool containsFile; + final List selectedMedias; + final void Function(DefaultAttachmentTypes) onAddMoreFilesClick; + final void Function(AssetEntity) onMediaSelected; + final StreamChatThemeData streamChatTheme; + + @override + _PickerWidgetState createState() => _PickerWidgetState(); +} + +class _PickerWidgetState extends State<_PickerWidget> { + Future? requestPermission; + + @override + void initState() { + super.initState(); + requestPermission = PhotoManager.requestPermission(); + } + + @override + Widget build(BuildContext context) { + if (widget.filePickerIndex != 0) { + return const Offstage(); + } + return FutureBuilder( + future: requestPermission, + builder: (context, snapshot) { + if (!snapshot.hasData) { + return const Offstage(); + } + + if (snapshot.data!) { + if (widget.containsFile) { + return GestureDetector( + onTap: () { + widget.onAddMoreFilesClick(DefaultAttachmentTypes.file); + }, + child: Container( + constraints: const BoxConstraints.expand(), + color: widget.streamChatTheme.colorTheme.inputBg, + alignment: Alignment.center, + child: Text( + context.translations.addMoreFilesLabel, + style: TextStyle( + color: widget.streamChatTheme.colorTheme.accentPrimary, + fontWeight: FontWeight.bold, + ), + ), + ), + ); + } + return StreamMediaListView( + selectedIds: widget.selectedMedias, + onSelect: widget.onMediaSelected, + ); + } + + return InkWell( + onTap: () async { + PhotoManager.openSetting(); + }, + child: Container( + color: widget.streamChatTheme.colorTheme.inputBg, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + SvgPicture.asset( + 'svgs/icon_picture_empty_state.svg', + package: 'stream_chat_flutter', + height: 140, + color: widget.streamChatTheme.colorTheme.disabled, + ), + Text( + context.translations.enablePhotoAndVideoAccessMessage, + style: widget.streamChatTheme.textTheme.body.copyWith( + color: widget.streamChatTheme.colorTheme.textLowEmphasis, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 6), + Center( + child: Text( + context.translations.allowGalleryAccessMessage, + style: widget.streamChatTheme.textTheme.bodyBold.copyWith( + color: widget.streamChatTheme.colorTheme.accentPrimary, + ), + ), + ), + ], + ), + ), + ); + }, + ); + } +} + +class _CountdownButton extends StatelessWidget { + const _CountdownButton({ + Key? key, + required this.count, + }) : super(key: key); + + final int count; + + @override + Widget build(BuildContext context) => Padding( + padding: const EdgeInsets.all(8), + child: DecoratedBox( + decoration: BoxDecoration( + color: StreamChatTheme.of(context).colorTheme.disabled, + shape: BoxShape.circle, + ), + child: SizedBox( + height: 24, + width: 24, + child: Center( + child: Text('$count'), + ), + ), + ), + ); +} + +Message _replaceUserNameWithId(Message message) { + final mentionedUsers = message.mentionedUsers; + if (mentionedUsers.isEmpty) return message; + + var messageTextToSend = message.text; + if (messageTextToSend == null) return message; + + for (final user in mentionedUsers.toSet()) { + final userName = user.name; + messageTextToSend = messageTextToSend!.replaceAll( + '@$userName', + '@${user.id}', + ); + } + + return message.copyWith(text: messageTextToSend); +} diff --git a/packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart b/packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart index 50f18e50..aaf016a3 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Button for showing visual component of slow mode. -class CountdownButton extends StatelessWidget { - /// Constructor for creating [CountdownButton]. - const CountdownButton({ +class StreamCountdownButton extends StatelessWidget { + /// Constructor for creating [StreamCountdownButton]. + const StreamCountdownButton({ Key? key, required this.count, }) : super(key: key); diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index a9f09bbe..e7ec69f1 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -28,7 +28,7 @@ export 'package:video_compress/video_compress.dart' show VideoQuality; /// A function that returns true if the message is valid and can be sent. typedef MessageValidator = bool Function(Message message); -/// A callback that can be passed to [MessageInput.onError]. +/// A callback that can be passed to [StreamMessageInput.onError]. /// /// This callback should not throw. /// @@ -38,7 +38,7 @@ typedef ErrorListener = void Function( StackTrace? stackTrace, ); -/// A callback that can be passed to [MessageInput.onAttachmentLimitExceed]. +/// A callback that can be passed to [StreamMessageInput.onAttachmentLimitExceed]. /// /// This callback should not throw. /// @@ -63,7 +63,7 @@ typedef MentionTileBuilder = Widget Function( /// Builder function for building a user mention tile. /// -/// Use [UserMentionTile] for the default implementation. +/// Use [StreamUserMentionTile] for the default implementation. typedef UserMentionTileBuilder = Widget Function( BuildContext context, User user, @@ -92,7 +92,7 @@ typedef AttachmentsPickerBuilder = Widget Function( StreamAttachmentPicker defaultPicker, ); -/// Location for actions on the [MessageInput]. +/// Location for actions on the [StreamMessageInput]. enum ActionsLocation { /// Align to left left, @@ -173,14 +173,14 @@ const _kDefaultMaxAttachmentSize = 20971520; // 20MB in Bytes /// } /// ``` /// -/// You usually put this widget in the same page of a [MessageListView] +/// You usually put this widget in the same page of a [StreamMessageListView] /// as the bottom widget. /// /// The widget renders the ui based on the first ancestor of /// type [StreamChatTheme]. Modify it to change the widget appearance. -class MessageInput extends StatefulWidget { +class StreamMessageInput extends StatefulWidget { /// Instantiate a new MessageInput - const MessageInput({ + const StreamMessageInput({ Key? key, this.onMessageSent, this.preMessageSending, @@ -325,7 +325,7 @@ class MessageInput extends StatefulWidget { /// Builder for creating send button final MessageRelatedBuilder? sendButtonBuilder; - /// Defines if the [MessageInput] loses focuses after a message is sent. + /// Defines if the [StreamMessageInput] loses focuses after a message is sent. /// The default behaviour keeps focus until a command is enabled. final bool? shouldKeepFocusAfterMessage; @@ -335,25 +335,25 @@ class MessageInput extends StatefulWidget { /// Restoration ID to save and restore the state of the MessageInput. final String? restorationId; - /// Wrap [MessageInput] with a [SafeArea widget] + /// Wrap [StreamMessageInput] with a [SafeArea widget] final bool? enableSafeArea; - /// Elevation of the [MessageInput] + /// Elevation of the [StreamMessageInput] final double? elevation; - /// Shadow for the [MessageInput] widget + /// Shadow for the [StreamMessageInput] widget final BoxShadow? shadow; static bool _defaultValidator(Message message) => message.text?.isNotEmpty == true || message.attachments.isNotEmpty; @override - MessageInputState createState() => MessageInputState(); + StreamMessageInputState createState() => StreamMessageInputState(); } -/// State of [MessageInput] -class MessageInputState extends State - with RestorationMixin { +/// State of [StreamMessageInput] +class StreamMessageInputState extends State + with RestorationMixin { final _imagePicker = ImagePicker(); late FocusNode _focusNode = widget.focusNode ?? FocusNode(); late final _isInternalFocusNode = widget.focusNode == null; @@ -367,7 +367,7 @@ class MessageInputState extends State bool _openFilePickerSection = false; late StreamChatThemeData _streamChatTheme; - late MessageInputThemeData _messageInputTheme; + late StreamMessageInputThemeData _messageInputTheme; bool get _hasQuotedMessage => _effectiveController.value.quotedMessage != null; @@ -410,7 +410,7 @@ class MessageInputState extends State } @override - void didUpdateWidget(covariant MessageInput oldWidget) { + void didUpdateWidget(covariant StreamMessageInput oldWidget) { super.didUpdateWidget(oldWidget); if (widget.messageInputController == null && oldWidget.messageInputController != null) { @@ -596,7 +596,7 @@ class MessageInputState extends State child: child, ); } - return MultiOverlay( + return StreamMultiOverlay( childAnchor: Alignment.topCenter, overlayAnchor: Alignment.bottomCenter, overlayOptions: [ @@ -1109,7 +1109,7 @@ class MessageInputState extends State if (renderObject == null) { return const Offstage(); } - return CommandsOverlay( + return StreamCommandsOverlay( channel: StreamChannel.of(context).channel, size: Size(renderObject.size.width - 16, 400), text: text, @@ -1170,7 +1170,7 @@ class MessageInputState extends State } return LayoutBuilder( - builder: (context, snapshot) => UserMentionsOverlay( + builder: (context, snapshot) => StreamUserMentionsOverlay( query: query, mentionAllAppUsers: widget.mentionAllAppUsers, client: StreamChat.of(context).client, @@ -1210,7 +1210,7 @@ class MessageInputState extends State // ignore: cast_nullable_to_non_nullable final renderObject = context.findRenderObject() as RenderBox; - return EmojiOverlay( + return StreamEmojiOverlay( size: Size(renderObject.size.width - 16, 200), query: query, onEmojiResult: (emoji) { @@ -1241,7 +1241,7 @@ class MessageInputState extends State if (!_hasQuotedMessage) return const Offstage(); final containsUrl = _effectiveController.value.quotedMessage!.attachments .any((element) => element.titleLink != null); - return QuotedMessageWidget( + return StreamQuotedMessageWidget( reverse: true, showBorder: !containsUrl, message: _effectiveController.value.quotedMessage!, @@ -1275,7 +1275,7 @@ class MessageInputState extends State .map( (e) => ClipRRect( borderRadius: BorderRadius.circular(10), - child: FileAttachment( + child: StreamFileAttachment( message: Message(), // dummy message attachment: e, size: Size( @@ -1397,7 +1397,7 @@ class MessageInputState extends State case 'video': return Stack( children: [ - VideoThumbnailImage( + StreamVideoThumbnailImage( height: 104, width: 104, video: (attachment.file?.path ?? attachment.assetUrl)!, @@ -1640,7 +1640,7 @@ class MessageInputState extends State if (file.size! > widget.maxAttachmentSize) { if (attachmentType == 'video' && file.path != null) { - final mediaInfo = await (VideoService.compressVideo( + final mediaInfo = await (StreamVideoService.compressVideo( file.path!, frameRate: widget.compressedVideoFrameRate, quality: widget.compressedVideoQuality, @@ -1831,7 +1831,7 @@ class MessageInputState extends State @override void didChangeDependencies() { _streamChatTheme = StreamChatTheme.of(context); - _messageInputTheme = MessageInputTheme.of(context); + _messageInputTheme = StreamMessageInputTheme.of(context); super.didChangeDependencies(); } diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 909f9561..1e1b99c7 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -376,7 +376,7 @@ class _StreamAttachmentPickerState extends State { if (file.size! > widget.maxAttachmentSize) { if (medium.type == AssetType.video && file.path != null) { - final mediaInfo = await (VideoService.compressVideo( + final mediaInfo = await (StreamVideoService.compressVideo( file.path!, frameRate: widget.compressedVideoFrameRate, quality: widget.compressedVideoQuality, @@ -507,7 +507,7 @@ class _PickerWidgetState extends State<_PickerWidget> { ), ); } - return MediaListView( + return StreamMediaListView( selectedIds: widget.selectedMedias, onSelect: widget.onMediaSelected, ); diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart index 9916f6f7..67a06f67 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart @@ -44,7 +44,7 @@ class StreamMessageSendButton extends StatelessWidget { late Widget sendButton; if (timeOut > 0) { - sendButton = CountdownButton(count: timeOut); + sendButton = StreamCountdownButton(count: timeOut); } else if (isIdle) { sendButton = idleSendButton ?? _buildIdleSendButton(context); } else { @@ -63,7 +63,7 @@ class StreamMessageSendButton extends StatelessWidget { } Widget _buildIdleSendButton(BuildContext context) { - final _messageInputTheme = MessageInputTheme.of(context); + final _messageInputTheme = StreamMessageInputTheme.of(context); return Padding( padding: const EdgeInsets.all(8), @@ -75,7 +75,7 @@ class StreamMessageSendButton extends StatelessWidget { } Widget _buildSendButton(BuildContext context) { - final _messageInputTheme = MessageInputTheme.of(context); + final _messageInputTheme = StreamMessageInputTheme.of(context); return Padding( padding: const EdgeInsets.all(8), diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index e4d67740..d38d7288 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -11,22 +11,22 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:visibility_detector/visibility_detector.dart'; /// Widget builder for message -/// [defaultMessageWidget] is the default [MessageWidget] configuration +/// [defaultMessageWidget] is the default [StreamMessageWidget] configuration /// Use [defaultMessageWidget.copyWith] to easily customize it typedef MessageBuilder = Widget Function( BuildContext, MessageDetails, List, - MessageWidget defaultMessageWidget, + StreamMessageWidget defaultMessageWidget, ); /// Widget builder for parent message -/// [defaultMessageWidget] is the default [MessageWidget] configuration +/// [defaultMessageWidget] is the default [StreamMessageWidget] configuration /// Use [defaultMessageWidget.copyWith] to easily customize it typedef ParentMessageBuilder = Widget Function( BuildContext, Message?, - MessageWidget defaultMessageWidget, + StreamMessageWidget defaultMessageWidget, ); /// Widget builder for system message @@ -123,6 +123,11 @@ class MessageDetails { final int index; } +/// {@macro message_list_view} +@Deprecated("Use 'StreamMessageListView' instead") +typedef MessageListView = StreamMessageListView; + +/// {@template message_list_view} /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_listview.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_listview_paint.png) /// @@ -165,9 +170,10 @@ class MessageDetails { /// The widget components render the ui based on the first /// ancestor of type [StreamChatTheme]. /// Modify it to change the widget appearance. -class MessageListView extends StatefulWidget { +/// {@endtemplate} +class StreamMessageListView extends StatefulWidget { /// Instantiate a new MessageListView - const MessageListView({ + const StreamMessageListView({ Key? key, this.showScrollToBottom = true, this.messageBuilder, @@ -330,10 +336,10 @@ class MessageListView extends StatefulWidget { final SpacingWidgetBuilder? spacingWidgetBuilder; @override - _MessageListViewState createState() => _MessageListViewState(); + _StreamMessageListViewState createState() => _StreamMessageListViewState(); } -class _MessageListViewState extends State { +class _StreamMessageListViewState extends State { ItemScrollController? _scrollController; void Function(Message)? _onThreadTap; final ValueNotifier _showScrollToBottom = ValueNotifier(false); @@ -461,7 +467,7 @@ class _MessageListViewState extends State { final child = Stack( alignment: Alignment.center, children: [ - ConnectionStatusBuilder( + StreamConnectionStatusBuilder( statusBuilder: (context, status) { var statusString = ''; var showStatus = true; @@ -478,7 +484,7 @@ class _MessageListViewState extends State { break; } - return InfoTile( + return StreamInfoTile( showMessage: widget.showConnectionStateTile && showStatus, tileAnchor: Alignment.topCenter, childAnchor: Alignment.topCenter, @@ -592,7 +598,7 @@ class _MessageListViewState extends State { ) : Padding( padding: const EdgeInsets.symmetric(vertical: 12), - child: DateDivider( + child: StreamDateDivider( dateTime: nextMessage.createdAt.toLocal(), ), ); @@ -730,8 +736,10 @@ class _MessageListViewState extends State { ], ); - final backgroundColor = MessageListViewTheme.of(context).backgroundColor; - final backgroundImage = MessageListViewTheme.of(context).backgroundImage; + final backgroundColor = + StreamMessageListViewTheme.of(context).backgroundColor; + final backgroundImage = + StreamMessageListViewTheme.of(context).backgroundImage; if (backgroundColor != null || backgroundImage != null) { return Container( @@ -761,7 +769,7 @@ class _MessageListViewState extends State { child: Text( context.translations.threadSeparatorText(replyCount), textAlign: TextAlign.center, - style: ChannelHeaderTheme.of(context).subtitleStyle, + style: StreamChannelHeaderTheme.of(context).subtitleStyle, ), ), ); @@ -815,7 +823,7 @@ class _MessageListViewState extends State { final message = messages[index - 2]; return widget.dateDividerBuilder != null ? widget.dateDividerBuilder!(message.createdAt.toLocal()) - : DateDivider(dateTime: message.createdAt.toLocal()); + : StreamDateDivider(dateTime: message.createdAt.toLocal()); }, ), ); @@ -976,7 +984,7 @@ class _MessageListViewState extends State { final currentUserMember = members.firstWhereOrNull((e) => e.user!.id == currentUser!.id); - final defaultMessageWidget = MessageWidget( + final defaultMessageWidget = StreamMessageWidget( showReplyMessage: false, showResendMessage: false, showThreadReplyMessage: false, @@ -1040,7 +1048,7 @@ class _MessageListViewState extends State { if ((message.type == 'system' || message.type == 'error') && message.text?.isNotEmpty == true) { return widget.systemMessageBuilder?.call(context, message) ?? - SystemMessage( + StreamSystemMessage( message: message, onMessageTap: (message) { if (widget.onSystemMessageTap != null) { @@ -1110,7 +1118,7 @@ class _MessageListViewState extends State { final currentUserMember = members.firstWhereOrNull((e) => e.user!.id == currentUser!.id); - Widget messageWidget = MessageWidget( + Widget messageWidget = StreamMessageWidget( message: message, reverse: isMyMessage, showReactions: !message.isDeleted, @@ -1226,7 +1234,7 @@ class _MessageListViewState extends State { index, ), messages, - messageWidget as MessageWidget, + messageWidget as StreamMessageWidget, ); } diff --git a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart index 7568c565..eceba3f2 100644 --- a/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_reactions_modal.dart @@ -5,10 +5,16 @@ import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/reaction_bubble.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro message_reactions_modal} +@Deprecated("Use 'StreamMessageReactionsModal' instead") +typedef MessageReactionsModal = StreamMessageReactionsModal; + +/// {@template message_reactions_modal} /// Modal widget for displaying message reactions -class MessageReactionsModal extends StatelessWidget { - /// Constructor for creating a [MessageReactionsModal] reactions - const MessageReactionsModal({ +/// {@endtemplate} +class StreamMessageReactionsModal extends StatelessWidget { + /// Constructor for creating a [StreamMessageReactionsModal] reactions + const StreamMessageReactionsModal({ Key? key, required this.message, required this.messageWidget, @@ -24,8 +30,8 @@ class MessageReactionsModal extends StatelessWidget { /// Message to display reactions of final Message message; - /// [MessageThemeData] to apply to [message] - final MessageThemeData messageTheme; + /// [StreamMessageThemeData] to apply to [message] + final StreamMessageThemeData messageTheme; /// Flag to reverse message final bool reverse; @@ -88,7 +94,7 @@ class MessageReactionsModal extends StatelessWidget { : -(1.2 - divFactor)), 0, ), - child: ReactionPicker( + child: StreamReactionPicker( message: message, ), ), @@ -200,7 +206,7 @@ class MessageReactionsModal extends StatelessWidget { Stack( clipBehavior: Clip.none, children: [ - UserAvatar( + StreamUserAvatar( onTap: onUserAvatarTap, user: reaction.user!, constraints: const BoxConstraints.tightFor( @@ -220,7 +226,7 @@ class MessageReactionsModal extends StatelessWidget { child: Align( alignment: reverse ? Alignment.centerRight : Alignment.centerLeft, - child: ReactionBubble( + child: StreamReactionBubble( reactions: [reaction], flipTail: !reverse, borderColor: diff --git a/packages/stream_chat_flutter/lib/src/message_search_item.dart b/packages/stream_chat_flutter/lib/src/message_search_item.dart index 022ec7ce..fe6d02b7 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_item.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_item.dart @@ -2,17 +2,23 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro message_search_item} +@Deprecated("Use 'StreamMessageSearchItem' instead") +typedef MessageSearchItem = StreamMessageSearchItem; + +/// {@template message_search_item} /// It shows the current [Message] preview. /// /// Usually you don't use this widget as it's the default item used by -/// [MessageSearchListView]. +/// [StreamMessageSearchListView]. /// /// The widget renders the ui based on the first ancestor of type /// [StreamChatTheme]. /// Modify it to change the widget appearance. -class MessageSearchItem extends StatelessWidget { +/// {@endtemplate} +class StreamMessageSearchItem extends StatelessWidget { /// Instantiate a new MessageSearchItem - const MessageSearchItem({ + const StreamMessageSearchItem({ Key? key, required this.getMessageResponse, this.onTap, @@ -25,7 +31,7 @@ class MessageSearchItem extends StatelessWidget { /// Function called when tapping this widget final VoidCallback? onTap; - /// If true the [MessageSearchItem] will show the current online Status + /// If true the [StreamMessageSearchItem] will show the current online Status final bool showOnlineStatus; @override @@ -34,10 +40,10 @@ class MessageSearchItem extends StatelessWidget { final channel = getMessageResponse.channel; final channelName = channel?.extraData['name']; final user = message.user!; - final channelPreviewTheme = ChannelPreviewTheme.of(context); + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); return ListTile( onTap: onTap, - leading: UserAvatar( + leading: StreamUserAvatar( user: user, showOnlineStatus: showOnlineStatus, constraints: const BoxConstraints.tightFor( @@ -120,7 +126,7 @@ class MessageSearchItem extends StatelessWidget { text = parts.join(' '); } - final channelPreviewTheme = ChannelPreviewTheme.of(context); + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); return Text.rich( _getDisplayText( text!, diff --git a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart index 76ae0e98..380b6545 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart @@ -11,13 +11,17 @@ typedef MessageSearchItemBuilder = Widget Function( GetMessageResponse, ); -/// Builder used when [MessageSearchListView] is empty +/// Builder used when [StreamMessageSearchListView] is empty typedef EmptyMessageSearchBuilder = Widget Function( BuildContext context, String searchQuery, ); -/// +/// {@macro message_search_list_view} +@Deprecated("Use 'StreamMessageSearchListView' instead") +typedef MessageSearchListView = StreamMessageSearchListView; + +/// {@template message_search_list_view} /// It shows the list of searched messages. /// /// ```dart @@ -47,9 +51,10 @@ typedef EmptyMessageSearchBuilder = Widget Function( /// The widget components render the ui based on the first ancestor of type /// [StreamChatTheme]. /// Modify it to change the widget appearance. -class MessageSearchListView extends StatefulWidget { +/// {@endtemplate} +class StreamMessageSearchListView extends StatefulWidget { /// Instantiate a new MessageSearchListView - const MessageSearchListView({ + const StreamMessageSearchListView({ Key? key, required this.filters, this.messageQuery, @@ -96,7 +101,7 @@ class MessageSearchListView extends StatefulWidget { /// Builder used to create a custom item preview final MessageSearchItemBuilder? itemBuilder; - /// Function called when tapping on a [MessageSearchItem] + /// Function called when tapping on a [StreamMessageSearchItem] final MessageSearchItemTapCallback? onItemTap; /// Builder used to create a custom item separator @@ -130,10 +135,12 @@ class MessageSearchListView extends StatefulWidget { final MessageSearchListController? messageSearchListController; @override - _MessageSearchListViewState createState() => _MessageSearchListViewState(); + _StreamMessageSearchListViewState createState() => + _StreamMessageSearchListViewState(); } -class _MessageSearchListViewState extends State { +class _StreamMessageSearchListViewState + extends State { late final _defaultController = MessageSearchListController(); MessageSearchListController get _messageSearchListController => @@ -168,7 +175,7 @@ class _MessageSearchListViewState extends State { if (error is Error) { print(error.stackTrace); } - return InfoTile( + return StreamInfoTile( showMessage: widget.showErrorTile, tileAnchor: Alignment.topCenter, childAnchor: Alignment.topCenter, @@ -195,7 +202,7 @@ class _MessageSearchListViewState extends State { ); final backgroundColor = - MessageSearchListViewTheme.of(context).backgroundColor; + StreamMessageSearchListViewTheme.of(context).backgroundColor; if (backgroundColor != null) { return ColoredBox( @@ -219,7 +226,7 @@ class _MessageSearchListViewState extends State { if (widget.itemBuilder != null) { return widget.itemBuilder!(context, getMessageResponse); } - return MessageSearchItem( + return StreamMessageSearchItem( getMessageResponse: getMessageResponse, onTap: () => widget.onItemTap!(getMessageResponse), ); diff --git a/packages/stream_chat_flutter/lib/src/message_text.dart b/packages/stream_chat_flutter/lib/src/message_text.dart index 4787bb9e..012aa5c7 100644 --- a/packages/stream_chat_flutter/lib/src/message_text.dart +++ b/packages/stream_chat_flutter/lib/src/message_text.dart @@ -3,10 +3,16 @@ import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro message_text} +@Deprecated("Use 'StreamMessageText' instead") +typedef MessageText = StreamMessageText; + +/// {@template message_text} /// Text widget to display in message -class MessageText extends StatelessWidget { - /// Constructor for creating a [MessageText] widget - const MessageText({ +/// {@endtemplate} +class StreamMessageText extends StatelessWidget { + /// Constructor for creating a [StreamMessageText] widget + const StreamMessageText({ Key? key, required this.message, required this.messageTheme, @@ -23,8 +29,8 @@ class MessageText extends StatelessWidget { /// Callback for when link is tapped final void Function(String)? onLinkTap; - /// [MessageThemeData] whose text theme is to be applied - final MessageThemeData messageTheme; + /// [StreamMessageThemeData] whose text theme is to be applied + final StreamMessageThemeData messageTheme; @override Widget build(BuildContext context) { diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index 864c977e..22a7ef18 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -32,20 +32,26 @@ enum DisplayWidget { show, } +/// {@macro message_widget} +@Deprecated("Use 'StreamMessageWidget' instead") +typedef MessageWidget = StreamMessageWidget; + +/// {@template message_widget} /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_widget.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/message_widget_paint.png) /// /// It shows a message with reactions, replies and user avatar. /// /// Usually you don't use this widget as it's the default message widget used by -/// [MessageListView]. +/// [StreamMessageListView]. /// /// The widget components render the ui based on the first ancestor of type /// [StreamChatTheme]. /// Modify it to change the widget appearance. -class MessageWidget extends StatefulWidget { - /// - MessageWidget({ +/// {@endtemplate} +class StreamMessageWidget extends StatefulWidget { + /// Creates a new instance of the message widget. + StreamMessageWidget({ Key? key, required this.message, required this.messageTheme, @@ -121,7 +127,7 @@ class MessageWidget extends StatefulWidget { context, Material( color: messageTheme.messageBackgroundColor, - child: ImageGroup( + child: StreamImageGroup( size: Size( mediaQueryData.size.width * 0.8, mediaQueryData.size.height * 0.3, @@ -142,7 +148,7 @@ class MessageWidget extends StatefulWidget { return wrapAttachmentWidget( context, - ImageAttachment( + StreamImageAttachment( attachment: attachments[0], message: message, messageTheme: messageTheme, @@ -172,7 +178,7 @@ class MessageWidget extends StatefulWidget { Column( children: attachments.map((attachment) { final mediaQueryData = MediaQuery.of(context); - return VideoAttachment( + return StreamVideoAttachment( attachment: attachment, messageTheme: messageTheme, size: Size( @@ -204,7 +210,7 @@ class MessageWidget extends StatefulWidget { Column( children: attachments.map((attachment) { final mediaQueryData = MediaQuery.of(context); - return GiphyAttachment( + return StreamGiphyAttachment( attachment: attachment, message: message, size: Size( @@ -240,7 +246,7 @@ class MessageWidget extends StatefulWidget { final mediaQueryData = MediaQuery.of(context); return wrapAttachmentWidget( context, - FileAttachment( + StreamFileAttachment( message: message, attachment: attachment, size: Size( @@ -300,7 +306,7 @@ class MessageWidget extends StatefulWidget { final Message message; /// The message theme - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; /// If true the widget will be mirrored final bool reverse; @@ -356,7 +362,7 @@ class MessageWidget extends StatefulWidget { /// The function called when tapping on a link final void Function(String)? onLinkTap; - /// Used in [MessageReactionsModal] and [MessageActionsModal] + /// Used in [StreamMessageReactionsModal] and [StreamMessageActionsModal] final bool showReactionPickerIndicator; /// List of users who read @@ -417,13 +423,13 @@ class MessageWidget extends StatefulWidget { final void Function(Message)? onMessageTap; /// List of custom actions shown on message long tap - final List customActions; + final List customActions; /// Customize onTap on attachment final void Function(Message message, Attachment attachment)? onAttachmentTap; - /// Creates a copy of [MessageWidget] with specified attributes overridden. - MessageWidget copyWith({ + /// Creates a copy of [StreamMessageWidget] with specified attributes overridden. + StreamMessageWidget copyWith({ Key? key, void Function(User)? onMentionTap, void Function(Message)? onThreadTap, @@ -435,7 +441,7 @@ class MessageWidget extends StatefulWidget { Widget Function(BuildContext, Message)? deletedBottomRowBuilder, void Function(BuildContext, Message)? onMessageActions, Message? message, - MessageThemeData? messageTheme, + StreamMessageThemeData? messageTheme, bool? reverse, ShapeBorder? shape, ShapeBorder? attachmentShape, @@ -473,11 +479,11 @@ class MessageWidget extends StatefulWidget { bool? translateUserAvatar, OnQuotedMessageTap? onQuotedMessageTap, void Function(Message)? onMessageTap, - List? customActions, + List? customActions, void Function(Message message, Attachment attachment)? onAttachmentTap, Widget Function(BuildContext, User)? userAvatarBuilder, }) => - MessageWidget( + StreamMessageWidget( key: key ?? this.key, onMentionTap: onMentionTap ?? this.onMentionTap, onThreadTap: onThreadTap ?? this.onThreadTap, @@ -539,11 +545,11 @@ class MessageWidget extends StatefulWidget { ); @override - _MessageWidgetState createState() => _MessageWidgetState(); + _StreamMessageWidgetState createState() => _StreamMessageWidgetState(); } -class _MessageWidgetState extends State - with AutomaticKeepAliveClientMixin { +class _StreamMessageWidgetState extends State + with AutomaticKeepAliveClientMixin { bool get showThreadReplyIndicator => widget.showThreadReplyIndicator; bool get showSendingIndicator => widget.showSendingIndicator; @@ -717,7 +723,7 @@ class _MessageWidgetState extends State ? 0 : 4.0, ), - child: DeletedMessage( + child: StreamDeletedMessage( borderRadiusGeometry: widget .borderRadiusGeometry, borderSide: @@ -854,7 +860,7 @@ class _MessageWidgetState extends State ? () => widget.onQuotedMessageTap!(widget.message.quotedMessageId) : null; final chatThemeData = _streamChatTheme; - return QuotedMessageWidget( + return StreamQuotedMessageWidget( onTap: onTap, message: widget.message.quotedMessage!, messageTheme: isMyMessage @@ -1008,7 +1014,7 @@ class _MessageWidgetState extends State getWebsiteName(hostName.toLowerCase()) ?? hostName.capitalize(); - return UrlAttachment( + return StreamUrlAttachment( urlAttachment: urlAttachment, hostDisplayName: hostDisplayName, textPadding: widget.textPadding, @@ -1041,7 +1047,7 @@ class _MessageWidgetState extends State child: _shouldShowReactions ? GestureDetector( onTap: () => _showMessageReactionsModalBottomSheet(context), - child: ReactionBubble( + child: StreamReactionBubble( key: ValueKey('${widget.message.id}.reactions'), reverse: widget.reverse, flipTail: widget.reverse, @@ -1072,7 +1078,7 @@ class _MessageWidgetState extends State barrierColor: _streamChatTheme.colorTheme.overlay, builder: (context) => StreamChannel( channel: channel, - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: widget.copyWith( key: const Key('MessageWidget'), message: widget.message.copyWith( @@ -1129,7 +1135,7 @@ class _MessageWidgetState extends State barrierColor: _streamChatTheme.colorTheme.overlay, builder: (context) => StreamChannel( channel: channel, - child: MessageReactionsModal( + child: StreamMessageReactionsModal( messageWidget: widget.copyWith( key: const Key('MessageWidget'), message: widget.message.copyWith( @@ -1246,7 +1252,7 @@ class _MessageWidgetState extends State final channel = StreamChannel.of(context).channel; if (!channel.ownCapabilities.contains(PermissionType.readEvents)) { - return SendingIndicator( + return StreamSendingIndicator( message: message, size: style!.fontSize, ); @@ -1261,7 +1267,7 @@ class _MessageWidgetState extends State (it.lastRead.isAfter(message.createdAt) || it.lastRead.isAtSameMomentAs(message.createdAt))); final isMessageRead = readList.length >= (channel.memberCount ?? 0) - 1; - Widget child = SendingIndicator( + Widget child = StreamSendingIndicator( message: message, isMessageRead: isMessageRead, size: style!.fontSize, @@ -1295,7 +1301,7 @@ class _MessageWidgetState extends State : 0, ), child: widget.userAvatarBuilder?.call(context, widget.message.user!) ?? - UserAvatar( + StreamUserAvatar( user: widget.message.user!, onTap: widget.onUserAvatarTap, constraints: widget.messageTheme.avatarTheme!.constraints, @@ -1313,7 +1319,7 @@ class _MessageWidgetState extends State padding: isOnlyEmoji ? EdgeInsets.zero : widget.textPadding, child: widget.textBuilder != null ? widget.textBuilder!(context, widget.message) - : MessageText( + : StreamMessageText( onLinkTap: widget.onLinkTap, message: widget.message, onMentionTap: widget.onMentionTap, @@ -1430,7 +1436,7 @@ class _ThreadParticipants extends StatelessWidget { color: _streamChatTheme.colorTheme.barsBg, ), padding: const EdgeInsets.all(1), - child: UserAvatar( + child: StreamUserAvatar( user: user, constraints: BoxConstraints.loose(const Size.fromRadius(7)), showOnlineStatus: false, diff --git a/packages/stream_chat_flutter/lib/src/multi_overlay.dart b/packages/stream_chat_flutter/lib/src/multi_overlay.dart index 31b9d5e9..bd1ed387 100644 --- a/packages/stream_chat_flutter/lib/src/multi_overlay.dart +++ b/packages/stream_chat_flutter/lib/src/multi_overlay.dart @@ -2,15 +2,21 @@ import 'package:collection/collection.dart'; import 'package:flutter/widgets.dart'; import 'package:flutter_portal/flutter_portal.dart'; +/// {@macro multi_overlay} +@Deprecated("Use 'StreamMultiOverlay' instead") +typedef MultiOverlay = StreamMultiOverlay; + +/// {@template multi_overlay} /// Widget that renders a single overlay widget from a list of [overlayOptions] /// It shows the first one that is visible -class MultiOverlay extends StatelessWidget { +/// {@endtemplate} +class StreamMultiOverlay extends StatelessWidget { /// Constructs a new MultiOverlay widget /// [overlayOptions] - the list of overlay options /// [overlayAnchor] - the anchor relative to the overlay /// [childAnchor] - the anchor relative to the child /// [child] - the child widget - const MultiOverlay({ + const StreamMultiOverlay({ Key? key, required this.overlayOptions, required this.child, diff --git a/packages/stream_chat_flutter/lib/src/option_list_tile.dart b/packages/stream_chat_flutter/lib/src/option_list_tile.dart index b8daa0e3..185d40f8 100644 --- a/packages/stream_chat_flutter/lib/src/option_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/option_list_tile.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro option_list_tile} +@Deprecated("Use 'StreamOptionListTile' instead") +typedef OptionListTile = StreamOptionListTile; + +/// {@template option_list_tile} /// List tile for [ChannelBottomSheet] -class OptionListTile extends StatelessWidget { - /// Constructor for creating [OptionListTile] - const OptionListTile({ +/// {@endtemplate} +class StreamOptionListTile extends StatelessWidget { + /// Constructor for creating [StreamOptionListTile] + const StreamOptionListTile({ Key? key, required this.title, this.leading, diff --git a/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart b/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart index 131ca60b..81c8b892 100644 --- a/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/quoted_message_widget.dart @@ -10,54 +10,14 @@ typedef QuotedMessageAttachmentThumbnailBuilder = Widget Function( Attachment, ); -class _VideoAttachmentThumbnail extends StatefulWidget { - const _VideoAttachmentThumbnail({ - Key? key, - required this.attachment, - this.size = const Size(32, 32), - }) : super(key: key); +/// Widget for the quoted message. +@Deprecated("Use 'StreamQuotedMessageWidget' instead") +typedef QuotedMessageWidget = StreamQuotedMessageWidget; - final Size size; - final Attachment attachment; - - @override - _VideoAttachmentThumbnailState createState() => - _VideoAttachmentThumbnailState(); -} - -class _VideoAttachmentThumbnailState extends State<_VideoAttachmentThumbnail> { - late VideoPlayerController _controller; - - @override - void initState() { - super.initState(); - _controller = VideoPlayerController.network(widget.attachment.assetUrl!) - ..initialize().then((_) { - // ignore: no-empty-block - setState(() {}); //when your thumbnail will show. - }); - } - - @override - void dispose() { - super.dispose(); - _controller.dispose(); - } - - @override - Widget build(BuildContext context) => SizedBox( - height: widget.size.height, - width: widget.size.width, - child: _controller.value.isInitialized - ? VideoPlayer(_controller) - : const CircularProgressIndicator(), - ); -} - -/// -class QuotedMessageWidget extends StatelessWidget { - /// - const QuotedMessageWidget({ +/// Widget for the quoted message. +class StreamQuotedMessageWidget extends StatelessWidget { + /// Creates a new instance of the widget. + const StreamQuotedMessageWidget({ Key? key, required this.message, required this.messageTheme, @@ -73,7 +33,7 @@ class QuotedMessageWidget extends StatelessWidget { final Message message; /// The message theme - final MessageThemeData messageTheme; + final StreamMessageThemeData messageTheme; /// If true the widget will be mirrored final bool reverse; @@ -134,7 +94,7 @@ class QuotedMessageWidget extends StatelessWidget { if (_hasAttachments) _parseAttachments(context), if (msg.text!.isNotEmpty) Flexible( - child: MessageText( + child: StreamMessageText( message: msg, messageTheme: isOnlyEmoji && _containsText ? messageTheme.copyWith( @@ -231,7 +191,7 @@ class QuotedMessageWidget extends StatelessWidget { borderRadius: BorderRadius.circular(8), ); - Widget _buildUserAvatar() => UserAvatar( + Widget _buildUserAvatar() => StreamUserAvatar( user: message.user!, constraints: const BoxConstraints.tightFor( height: 24, @@ -242,7 +202,7 @@ class QuotedMessageWidget extends StatelessWidget { Map get _defaultAttachmentBuilder => { - 'image': (_, attachment) => ImageAttachment( + 'image': (_, attachment) => StreamImageAttachment( attachment: attachment, message: message, messageTheme: messageTheme, @@ -288,3 +248,47 @@ class QuotedMessageWidget extends StatelessWidget { return messageTheme.messageBackgroundColor; } } + +class _VideoAttachmentThumbnail extends StatefulWidget { + const _VideoAttachmentThumbnail({ + Key? key, + required this.attachment, + this.size = const Size(32, 32), + }) : super(key: key); + + final Size size; + final Attachment attachment; + + @override + _VideoAttachmentThumbnailState createState() => + _VideoAttachmentThumbnailState(); +} + +class _VideoAttachmentThumbnailState extends State<_VideoAttachmentThumbnail> { + late VideoPlayerController _controller; + + @override + void initState() { + super.initState(); + _controller = VideoPlayerController.network(widget.attachment.assetUrl!) + ..initialize().then((_) { + // ignore: no-empty-block + setState(() {}); //when your thumbnail will show. + }); + } + + @override + void dispose() { + super.dispose(); + _controller.dispose(); + } + + @override + Widget build(BuildContext context) => SizedBox( + height: widget.size.height, + width: widget.size.width, + child: _controller.value.isInitialized + ? VideoPlayer(_controller) + : const CircularProgressIndicator(), + ); +} diff --git a/packages/stream_chat_flutter/lib/src/reaction_bubble.dart b/packages/stream_chat_flutter/lib/src/reaction_bubble.dart index dd3d5e27..99585001 100644 --- a/packages/stream_chat_flutter/lib/src/reaction_bubble.dart +++ b/packages/stream_chat_flutter/lib/src/reaction_bubble.dart @@ -4,10 +4,16 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro reaction_bubble} +@Deprecated("Use 'StreamReactionBubble' instead") +typedef ReactionBubble = StreamReactionBubble; + +/// {@template reaction_bubble} /// Creates reaction bubble widget for displaying over messages -class ReactionBubble extends StatelessWidget { - /// Constructor for creating a [ReactionBubble] - const ReactionBubble({ +/// {@endtemplate} +class StreamReactionBubble extends StatelessWidget { + /// Constructor for creating a [StreamReactionBubble] + const StreamReactionBubble({ Key? key, required this.reactions, required this.borderColor, @@ -111,7 +117,7 @@ class ReactionBubble extends StatelessWidget { } Widget _buildReaction( - List reactionIcons, + List reactionIcons, Reaction reaction, BuildContext context, ) { diff --git a/packages/stream_chat_flutter/lib/src/reaction_icon.dart b/packages/stream_chat_flutter/lib/src/reaction_icon.dart index e675128b..cf2cef81 100644 --- a/packages/stream_chat_flutter/lib/src/reaction_icon.dart +++ b/packages/stream_chat_flutter/lib/src/reaction_icon.dart @@ -1,9 +1,13 @@ import 'package:flutter/material.dart'; /// Reaction icon data -class ReactionIcon { - /// Constructor for creating [ReactionIcon] - ReactionIcon({ +@Deprecated("Use 'StreamReactionIcon' instead") +typedef ReactionIcon = StreamReactionIcon; + +/// Reaction icon data +class StreamReactionIcon { + /// Constructor for creating [StreamReactionIcon] + StreamReactionIcon({ required this.type, required this.builder, }); diff --git a/packages/stream_chat_flutter/lib/src/reaction_picker.dart b/packages/stream_chat_flutter/lib/src/reaction_picker.dart index 2991a1bb..28053c01 100644 --- a/packages/stream_chat_flutter/lib/src/reaction_picker.dart +++ b/packages/stream_chat_flutter/lib/src/reaction_picker.dart @@ -3,16 +3,22 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro reaction_picker} +@Deprecated("Use 'StreamReactionPicker' instead") +typedef ReactionPicker = StreamReactionPicker; + +/// {@template reaction_picker} /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/reaction_picker.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/reaction_picker_paint.png) /// /// It shows a reaction picker /// /// Usually you don't use this widget as it's one of the default widgets used -/// by [MessageWidget.onMessageActions]. -class ReactionPicker extends StatefulWidget { - /// Constructor for creating a [ReactionPicker] widget - const ReactionPicker({ +/// by [StreamMessageWidget.onMessageActions]. +/// {@endtemplate} +class StreamReactionPicker extends StatefulWidget { + /// Constructor for creating a [StreamReactionPicker] widget + const StreamReactionPicker({ Key? key, required this.message, }) : super(key: key); @@ -21,10 +27,10 @@ class ReactionPicker extends StatefulWidget { final Message message; @override - _ReactionPickerState createState() => _ReactionPickerState(); + _StreamReactionPickerState createState() => _StreamReactionPickerState(); } -class _ReactionPickerState extends State +class _StreamReactionPickerState extends State with TickerProviderStateMixin { List animations = []; diff --git a/packages/stream_chat_flutter/lib/src/sending_indicator.dart b/packages/stream_chat_flutter/lib/src/sending_indicator.dart index 7f44e5b8..908c734d 100644 --- a/packages/stream_chat_flutter/lib/src/sending_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/sending_indicator.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro sending_indicator} +@Deprecated("Use 'StreamSendingIndicator' instead") +typedef SendingIndicator = StreamSendingIndicator; + +/// {@template sending_indicator} /// Used to show the sending status of the message -class SendingIndicator extends StatelessWidget { - /// Constructor for creating a [SendingIndicator] widget - const SendingIndicator({ +/// {@endtemplate} +class StreamSendingIndicator extends StatelessWidget { + /// Constructor for creating a [StreamSendingIndicator] widget + const StreamSendingIndicator({ Key? key, required this.message, this.isMessageRead = false, diff --git a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart index 84006f44..32b4830f 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart @@ -38,29 +38,29 @@ class StreamChatThemeData { /// Create a theme from scratch factory StreamChatThemeData({ Brightness? brightness, - TextTheme? textTheme, - ColorTheme? colorTheme, - ChannelListHeaderThemeData? channelListHeaderTheme, - ChannelPreviewThemeData? channelPreviewTheme, - ChannelHeaderThemeData? channelHeaderTheme, - MessageThemeData? otherMessageTheme, - MessageThemeData? ownMessageTheme, - MessageInputThemeData? messageInputTheme, + StreamTextTheme? textTheme, + StreamColorTheme? colorTheme, + StreamChannelListHeaderThemeData? channelListHeaderTheme, + StreamChannelPreviewThemeData? channelPreviewTheme, + StreamChannelHeaderThemeData? channelHeaderTheme, + StreamMessageThemeData? otherMessageTheme, + StreamMessageThemeData? ownMessageTheme, + StreamMessageInputThemeData? messageInputTheme, Widget Function(BuildContext, User)? defaultUserImage, Widget Function(BuildContext, User)? placeholderUserImage, IconThemeData? primaryIconTheme, - List? reactionIcons, - GalleryHeaderThemeData? imageHeaderTheme, - GalleryFooterThemeData? imageFooterTheme, - MessageListViewThemeData? messageListViewTheme, - ChannelListViewThemeData? channelListViewTheme, - UserListViewThemeData? userListViewTheme, - MessageSearchListViewThemeData? messageSearchListViewTheme, + List? reactionIcons, + StreamGalleryHeaderThemeData? imageHeaderTheme, + StreamGalleryFooterThemeData? imageFooterTheme, + StreamMessageListViewThemeData? messageListViewTheme, + StreamChannelListViewThemeData? channelListViewTheme, + StreamUserListViewThemeData? userListViewTheme, + StreamMessageSearchListViewThemeData? messageSearchListViewTheme, }) { brightness ??= colorTheme?.brightness ?? Brightness.light; final isDark = brightness == Brightness.dark; - textTheme ??= isDark ? TextTheme.dark() : TextTheme.light(); - colorTheme ??= isDark ? ColorTheme.dark() : ColorTheme.light(); + textTheme ??= isDark ? StreamTextTheme.dark() : StreamTextTheme.light(); + colorTheme ??= isDark ? StreamColorTheme.dark() : StreamColorTheme.light(); final defaultData = StreamChatThemeData.fromColorAndTextTheme( colorTheme, @@ -133,14 +133,14 @@ class StreamChatThemeData { /// Create theme from color and text theme factory StreamChatThemeData.fromColorAndTextTheme( - ColorTheme colorTheme, - TextTheme textTheme, + StreamColorTheme colorTheme, + StreamTextTheme textTheme, ) { final accentColor = colorTheme.accentPrimary; final iconTheme = IconThemeData(color: colorTheme.textHighEmphasis.withOpacity(0.5)); - final channelHeaderTheme = ChannelHeaderThemeData( - avatarTheme: AvatarThemeData( + final channelHeaderTheme = StreamChannelHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, @@ -153,9 +153,9 @@ class StreamChatThemeData { color: const Color(0xff7A7A7A), ), ); - final channelPreviewTheme = ChannelPreviewThemeData( + final channelPreviewTheme = StreamChannelPreviewThemeData( unreadCounterColor: colorTheme.accentError, - avatarTheme: AvatarThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, @@ -176,14 +176,14 @@ class StreamChatThemeData { colorTheme: colorTheme, primaryIconTheme: iconTheme, defaultUserImage: (context, user) => Center( - child: GradientAvatar( + child: StreamGradientAvatar( name: user.name, userId: user.id, ), ), channelPreviewTheme: channelPreviewTheme, - channelListHeaderTheme: ChannelListHeaderThemeData( - avatarTheme: AvatarThemeData( + channelListHeaderTheme: StreamChannelListHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, @@ -194,7 +194,7 @@ class StreamChatThemeData { titleStyle: textTheme.headlineBold, ), channelHeaderTheme: channelHeaderTheme, - ownMessageTheme: MessageThemeData( + ownMessageTheme: StreamMessageThemeData( messageAuthorStyle: textTheme.footnote.copyWith(color: colorTheme.textLowEmphasis), messageTextStyle: textTheme.body, @@ -206,7 +206,7 @@ class StreamChatThemeData { reactionsBorderColor: colorTheme.borders, reactionsMaskColor: colorTheme.appBg, messageBorderColor: colorTheme.disabled, - avatarTheme: AvatarThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 32, @@ -218,7 +218,7 @@ class StreamChatThemeData { ), linkBackgroundColor: colorTheme.linkBg, ), - otherMessageTheme: MessageThemeData( + otherMessageTheme: StreamMessageThemeData( reactionsBackgroundColor: colorTheme.disabled, reactionsBorderColor: colorTheme.barsBg, reactionsMaskColor: colorTheme.appBg, @@ -233,7 +233,7 @@ class StreamChatThemeData { ), messageBackgroundColor: colorTheme.barsBg, messageBorderColor: colorTheme.borders, - avatarTheme: AvatarThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 32, @@ -242,7 +242,7 @@ class StreamChatThemeData { ), linkBackgroundColor: colorTheme.linkBg, ), - messageInputTheme: MessageInputThemeData( + messageInputTheme: StreamMessageInputThemeData( borderRadius: BorderRadius.circular(20), sendAnimationDuration: const Duration(milliseconds: 300), actionButtonColor: colorTheme.accentPrimary, @@ -267,7 +267,7 @@ class StreamChatThemeData { ), ), reactionIcons: [ - ReactionIcon( + StreamReactionIcon( type: 'love', builder: (context, highlighted, size) { final theme = StreamChatTheme.of(context); @@ -279,7 +279,7 @@ class StreamChatThemeData { ); }, ), - ReactionIcon( + StreamReactionIcon( type: 'like', builder: (context, highlighted, size) { final theme = StreamChatTheme.of(context); @@ -291,7 +291,7 @@ class StreamChatThemeData { ); }, ), - ReactionIcon( + StreamReactionIcon( type: 'sad', builder: (context, highlighted, size) { final theme = StreamChatTheme.of(context); @@ -303,7 +303,7 @@ class StreamChatThemeData { ); }, ), - ReactionIcon( + StreamReactionIcon( type: 'haha', builder: (context, highlighted, size) { final theme = StreamChatTheme.of(context); @@ -315,7 +315,7 @@ class StreamChatThemeData { ); }, ), - ReactionIcon( + StreamReactionIcon( type: 'wow', builder: (context, highlighted, size) { final theme = StreamChatTheme.of(context); @@ -328,7 +328,7 @@ class StreamChatThemeData { }, ), ], - galleryHeaderTheme: GalleryHeaderThemeData( + galleryHeaderTheme: StreamGalleryHeaderThemeData( closeButtonColor: colorTheme.textHighEmphasis, backgroundColor: channelHeaderTheme.color, iconMenuPointColor: colorTheme.textHighEmphasis, @@ -336,7 +336,7 @@ class StreamChatThemeData { subtitleTextStyle: channelPreviewTheme.subtitleStyle, bottomSheetBarrierColor: colorTheme.overlay, ), - galleryFooterTheme: GalleryFooterThemeData( + galleryFooterTheme: StreamGalleryFooterThemeData( backgroundColor: colorTheme.barsBg, shareIconColor: colorTheme.textHighEmphasis, titleTextStyle: textTheme.headlineBold, @@ -346,52 +346,52 @@ class StreamChatThemeData { bottomSheetPhotosTextStyle: textTheme.headlineBold, bottomSheetCloseIconColor: colorTheme.textHighEmphasis, ), - messageListViewTheme: MessageListViewThemeData( + messageListViewTheme: StreamMessageListViewThemeData( backgroundColor: colorTheme.barsBg, ), - channelListViewTheme: ChannelListViewThemeData( + channelListViewTheme: StreamChannelListViewThemeData( backgroundColor: colorTheme.appBg, ), - userListViewTheme: UserListViewThemeData( + userListViewTheme: StreamUserListViewThemeData( backgroundColor: colorTheme.appBg, ), - messageSearchListViewTheme: MessageSearchListViewThemeData( + messageSearchListViewTheme: StreamMessageSearchListViewThemeData( backgroundColor: colorTheme.appBg, ), ); } /// The text themes used in the widgets - final TextTheme textTheme; + final StreamTextTheme textTheme; /// The color themes used in the widgets - final ColorTheme colorTheme; + final StreamColorTheme colorTheme; - /// Theme of the [ChannelPreview] - final ChannelPreviewThemeData channelPreviewTheme; + /// Theme of the [StreamChannelPreview] + final StreamChannelPreviewThemeData channelPreviewTheme; - /// Theme of the [ChannelListHeader] - final ChannelListHeaderThemeData channelListHeaderTheme; + /// Theme of the [StreamChannelListHeader] + final StreamChannelListHeaderThemeData channelListHeaderTheme; /// Theme of the chat widgets dedicated to a channel header - final ChannelHeaderThemeData channelHeaderTheme; + final StreamChannelHeaderThemeData channelHeaderTheme; - /// The default style for [GalleryHeader]s below the overall + /// The default style for [StreamGalleryHeader]s below the overall /// [StreamChatTheme]. - final GalleryHeaderThemeData galleryHeaderTheme; + final StreamGalleryHeaderThemeData galleryHeaderTheme; - /// The default style for [GalleryFooter]s below the overall + /// The default style for [StreamGalleryFooter]s below the overall /// [StreamChatTheme]. - final GalleryFooterThemeData galleryFooterTheme; + final StreamGalleryFooterThemeData galleryFooterTheme; /// Theme of the current user messages - final MessageThemeData ownMessageTheme; + final StreamMessageThemeData ownMessageTheme; /// Theme of other users messages - final MessageThemeData otherMessageTheme; + final StreamMessageThemeData otherMessageTheme; - /// Theme dedicated to the [MessageInput] widget - final MessageInputThemeData messageInputTheme; + /// Theme dedicated to the [StreamMessageInput] widget + final StreamMessageInputThemeData messageInputTheme; /// The widget that will be built when the user image is unavailable final Widget Function(BuildContext, User) defaultUserImage; @@ -403,41 +403,41 @@ class StreamChatThemeData { final IconThemeData primaryIconTheme; /// Assets used for rendering reactions - final List reactionIcons; + final List reactionIcons; - /// Theme configuration for the [MessageListView] widget. - final MessageListViewThemeData messageListViewTheme; + /// Theme configuration for the [StreamMessageListView] widget. + final StreamMessageListViewThemeData messageListViewTheme; - /// Theme configuration for the [ChannelListView] widget. - final ChannelListViewThemeData channelListViewTheme; + /// Theme configuration for the [StreamChannelListView] widget. + final StreamChannelListViewThemeData channelListViewTheme; - /// Theme configuration for the [UserListView] widget. - final UserListViewThemeData userListViewTheme; + /// Theme configuration for the [StreamUserListView] widget. + final StreamUserListViewThemeData userListViewTheme; - /// Theme configuration for the [MessageSearchListView] widget. - final MessageSearchListViewThemeData messageSearchListViewTheme; + /// Theme configuration for the [StreamMessageSearchListView] widget. + final StreamMessageSearchListViewThemeData messageSearchListViewTheme; /// Creates a copy of [StreamChatThemeData] with specified attributes /// overridden. StreamChatThemeData copyWith({ - TextTheme? textTheme, - ColorTheme? colorTheme, - ChannelPreviewThemeData? channelPreviewTheme, - ChannelHeaderThemeData? channelHeaderTheme, - MessageThemeData? ownMessageTheme, - MessageThemeData? otherMessageTheme, - MessageInputThemeData? messageInputTheme, + StreamTextTheme? textTheme, + StreamColorTheme? colorTheme, + StreamChannelPreviewThemeData? channelPreviewTheme, + StreamChannelHeaderThemeData? channelHeaderTheme, + StreamMessageThemeData? ownMessageTheme, + StreamMessageThemeData? otherMessageTheme, + StreamMessageInputThemeData? messageInputTheme, Widget Function(BuildContext, User)? defaultUserImage, Widget Function(BuildContext, User)? placeholderUserImage, IconThemeData? primaryIconTheme, - ChannelListHeaderThemeData? channelListHeaderTheme, - List? reactionIcons, - GalleryHeaderThemeData? galleryHeaderTheme, - GalleryFooterThemeData? galleryFooterTheme, - MessageListViewThemeData? messageListViewTheme, - ChannelListViewThemeData? channelListViewTheme, - UserListViewThemeData? userListViewTheme, - MessageSearchListViewThemeData? messageSearchListViewTheme, + StreamChannelListHeaderThemeData? channelListHeaderTheme, + List? reactionIcons, + StreamGalleryHeaderThemeData? galleryHeaderTheme, + StreamGalleryFooterThemeData? galleryFooterTheme, + StreamMessageListViewThemeData? messageListViewTheme, + StreamChannelListViewThemeData? channelListViewTheme, + StreamUserListViewThemeData? userListViewTheme, + StreamMessageSearchListViewThemeData? messageSearchListViewTheme, }) => StreamChatThemeData.raw( channelListHeaderTheme: diff --git a/packages/stream_chat_flutter/lib/src/system_message.dart b/packages/stream_chat_flutter/lib/src/system_message.dart index 297810b3..4ec10aa4 100644 --- a/packages/stream_chat_flutter/lib/src/system_message.dart +++ b/packages/stream_chat_flutter/lib/src/system_message.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -/// It shows a date divider depending on the date difference -class SystemMessage extends StatelessWidget { - /// Constructor for creating a [SystemMessage] - const SystemMessage({ +/// {@macro system_message} +@Deprecated("Use 'StreamSystemMessage' instead") +typedef SystemMessage = StreamSystemMessage; + +/// {@template system_message} +/// It shows a widget for the message with a system message type. +/// {@endtemplate} +class StreamSystemMessage extends StatelessWidget { + /// Constructor for creating a [StreamSystemMessage] + const StreamSystemMessage({ Key? key, required this.message, this.onMessageTap, diff --git a/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart b/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart index 738fa0de..eb2d79bf 100644 --- a/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/avatar_theme.dart @@ -1,11 +1,17 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +/// {@macro avatar_theme_data} +@Deprecated("Use 'StreamAvatarThemeData' instead") +typedef AvatarThemeData = StreamAvatarThemeData; + +/// {@template avatar_theme_data} /// A style that overrides the default appearance of various avatar widgets. +/// {@endtemplate} // ignore: prefer-match-file-name -class AvatarThemeData with Diagnosticable { - /// Creates an [AvatarThemeData]. - const AvatarThemeData({ +class StreamAvatarThemeData with Diagnosticable { + /// Creates an [StreamAvatarThemeData]. + const StreamAvatarThemeData({ BoxConstraints? constraints, BorderRadius? borderRadius, }) : _constraints = constraints, @@ -25,12 +31,12 @@ class AvatarThemeData with Diagnosticable { /// Get border radius BorderRadius get borderRadius => _borderRadius ?? BorderRadius.circular(20); - /// Copy this [AvatarThemeData] to another. - AvatarThemeData copyWith({ + /// Copy this [StreamAvatarThemeData] to another. + StreamAvatarThemeData copyWith({ BoxConstraints? constraints, BorderRadius? borderRadius, }) => - AvatarThemeData( + StreamAvatarThemeData( constraints: constraints ?? _constraints, borderRadius: borderRadius ?? _borderRadius, ); @@ -38,12 +44,12 @@ class AvatarThemeData with Diagnosticable { /// Linearly interpolate between two [UserAvatar] themes. /// /// All the properties must be non-null. - AvatarThemeData lerp( - AvatarThemeData a, - AvatarThemeData b, + StreamAvatarThemeData lerp( + StreamAvatarThemeData a, + StreamAvatarThemeData b, double t, ) => - AvatarThemeData( + StreamAvatarThemeData( borderRadius: BorderRadius.lerp(a.borderRadius, b.borderRadius, t), constraints: BoxConstraints.lerp(a.constraints, b.constraints, t), ); @@ -51,7 +57,7 @@ class AvatarThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is AvatarThemeData && + other is StreamAvatarThemeData && runtimeType == other.runtimeType && _constraints == other._constraints && _borderRadius == other._borderRadius; @@ -59,8 +65,8 @@ class AvatarThemeData with Diagnosticable { @override int get hashCode => _constraints.hashCode ^ _borderRadius.hashCode; - /// Merges one [AvatarThemeData] with the another - AvatarThemeData merge(AvatarThemeData? other) { + /// Merges one [StreamAvatarThemeData] with the another + StreamAvatarThemeData merge(StreamAvatarThemeData? other) { if (other == null) return this; return copyWith( constraints: other._constraints, diff --git a/packages/stream_chat_flutter/lib/src/theme/channel_header_theme.dart b/packages/stream_chat_flutter/lib/src/theme/channel_header_theme.dart index 63e208e5..aa988c0f 100644 --- a/packages/stream_chat_flutter/lib/src/theme/channel_header_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/channel_header_theme.dart @@ -4,27 +4,33 @@ import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/theme/avatar_theme.dart'; import 'package:stream_chat_flutter/src/theme/themes.dart'; +/// {@macro channel_header_theme} +@Deprecated("Use 'StreamChannelHeaderTheme' instead") +typedef ChannelHeaderTheme = StreamChannelHeaderTheme; + +/// {@template channel_header_theme} /// Overrides the default style of [ChannelHeader] descendants. /// /// See also: /// -/// * [ChannelHeaderThemeData], which is used to configure this theme. -class ChannelHeaderTheme extends InheritedTheme { - /// Creates a [ChannelHeaderTheme]. +/// * [StreamChannelHeaderThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamChannelHeaderTheme extends InheritedTheme { + /// Creates a [StreamChannelHeaderTheme]. /// /// The [data] parameter must not be null. - const ChannelHeaderTheme({ + const StreamChannelHeaderTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final ChannelHeaderThemeData data; + final StreamChannelHeaderThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [ChannelHeaderTheme] widget, then + /// If there is no enclosing [StreamChannelHeaderTheme] widget, then /// [StreamChatThemeData.channelTheme.channelHeaderTheme] is used. /// /// Typical usage is as follows: @@ -32,34 +38,40 @@ class ChannelHeaderTheme extends InheritedTheme { /// ```dart /// final theme = ChannelHeaderTheme.of(context); /// ``` - static ChannelHeaderThemeData of(BuildContext context) { + static StreamChannelHeaderThemeData of(BuildContext context) { final channelHeaderTheme = - context.dependOnInheritedWidgetOfExactType(); + context.dependOnInheritedWidgetOfExactType(); return channelHeaderTheme?.data ?? StreamChatTheme.of(context).channelHeaderTheme; } @override Widget wrap(BuildContext context, Widget child) => - ChannelHeaderTheme(data: data, child: child); + StreamChannelHeaderTheme(data: data, child: child); @override - bool updateShouldNotify(ChannelHeaderTheme oldWidget) => + bool updateShouldNotify(StreamChannelHeaderTheme oldWidget) => data != oldWidget.data; } +/// {@macro channel_header_theme_data} +@Deprecated("Use 'StreamChannelHeaderThemeData' instead") +typedef ChannelHeaderThemeData = StreamChannelHeaderThemeData; + +/// {@template channel_header_theme_data} /// A style that overrides the default appearance of [ChannelHeader]s when used -/// with [ChannelHeaderTheme] or with the overall [StreamChatTheme]'s +/// with [StreamChannelHeaderTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.channelHeaderTheme]. /// /// See also: /// -/// * [ChannelHeaderTheme], the theme which is configured with this class. +/// * [StreamChannelHeaderTheme], the theme which is configured with this class. /// * [StreamChatThemeData.channelHeaderTheme], which can be used to override /// the default style for [ChannelHeader]s below the overall [StreamChatTheme]. -class ChannelHeaderThemeData with Diagnosticable { - /// Creates a [ChannelHeaderThemeData] - const ChannelHeaderThemeData({ +/// {@endtemplate} +class StreamChannelHeaderThemeData with Diagnosticable { + /// Creates a [StreamChannelHeaderThemeData] + const StreamChannelHeaderThemeData({ this.titleStyle, this.subtitleStyle, this.avatarTheme, @@ -73,43 +85,43 @@ class ChannelHeaderThemeData with Diagnosticable { final TextStyle? subtitleStyle; /// Theme for avatar - final AvatarThemeData? avatarTheme; + final StreamAvatarThemeData? avatarTheme; - /// Color for [ChannelHeaderThemeData] + /// Color for [StreamChannelHeaderThemeData] final Color? color; /// Copy with theme - ChannelHeaderThemeData copyWith({ + StreamChannelHeaderThemeData copyWith({ TextStyle? titleStyle, TextStyle? subtitleStyle, - AvatarThemeData? avatarTheme, + StreamAvatarThemeData? avatarTheme, Color? color, }) => - ChannelHeaderThemeData( + StreamChannelHeaderThemeData( titleStyle: titleStyle ?? this.titleStyle, subtitleStyle: subtitleStyle ?? this.subtitleStyle, avatarTheme: avatarTheme ?? this.avatarTheme, color: color ?? this.color, ); - /// Linearly interpolate between two [ChannelHeaderThemeData]. + /// Linearly interpolate between two [StreamChannelHeaderThemeData]. /// /// All the properties must be non-null. - ChannelHeaderThemeData lerp( - ChannelHeaderThemeData a, - ChannelHeaderThemeData b, + StreamChannelHeaderThemeData lerp( + StreamChannelHeaderThemeData a, + StreamChannelHeaderThemeData b, double t, ) => - ChannelHeaderThemeData( + StreamChannelHeaderThemeData( titleStyle: TextStyle.lerp(a.titleStyle, b.titleStyle, t), subtitleStyle: TextStyle.lerp(a.subtitleStyle, b.subtitleStyle, t), - avatarTheme: - const AvatarThemeData().lerp(a.avatarTheme!, b.avatarTheme!, t), + avatarTheme: const StreamAvatarThemeData() + .lerp(a.avatarTheme!, b.avatarTheme!, t), color: Color.lerp(a.color, b.color, t), ); - /// Merge with other [ChannelHeaderThemeData] - ChannelHeaderThemeData merge(ChannelHeaderThemeData? other) { + /// Merge with other [StreamChannelHeaderThemeData] + StreamChannelHeaderThemeData merge(StreamChannelHeaderThemeData? other) { if (other == null) return this; return copyWith( titleStyle: titleStyle?.merge(other.titleStyle) ?? other.titleStyle, @@ -123,7 +135,7 @@ class ChannelHeaderThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is ChannelHeaderThemeData && + other is StreamChannelHeaderThemeData && runtimeType == other.runtimeType && titleStyle == other.titleStyle && subtitleStyle == other.subtitleStyle && diff --git a/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart b/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart index 3846232e..7cff2b90 100644 --- a/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart @@ -3,27 +3,33 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/theme/avatar_theme.dart'; +/// {@macro channel_list_header_theme} +@Deprecated("Use 'StreamChannelListHeaderTheme' instead") +typedef ChannelListHeaderTheme = StreamChannelListHeaderTheme; + +/// {@template channel_list_header_theme} /// Overrides the default style of [ChannelListHeader] descendants. /// /// See also: /// -/// * [ChannelListHeaderThemeData], which is used to configure this theme. -class ChannelListHeaderTheme extends InheritedTheme { - /// Creates a [ChannelListHeaderTheme]. +/// * [StreamChannelListHeaderThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamChannelListHeaderTheme extends InheritedTheme { + /// Creates a [StreamChannelListHeaderTheme]. /// /// The [data] parameter must not be null. - const ChannelListHeaderTheme({ + const StreamChannelListHeaderTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final ChannelListHeaderThemeData data; + final StreamChannelListHeaderThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [ChannelListHeaderTheme] widget, then + /// If there is no enclosing [StreamChannelListHeaderTheme] widget, then /// [StreamChatThemeData.channelListHeaderTheme] is used. /// /// Typical usage is as follows: @@ -31,26 +37,32 @@ class ChannelListHeaderTheme extends InheritedTheme { /// ```dart /// final theme = ChannelListHeaderTheme.of(context); /// ``` - static ChannelListHeaderThemeData of(BuildContext context) { - final channelListHeaderTheme = - context.dependOnInheritedWidgetOfExactType(); + static StreamChannelListHeaderThemeData of(BuildContext context) { + final channelListHeaderTheme = context + .dependOnInheritedWidgetOfExactType(); return channelListHeaderTheme?.data ?? StreamChatTheme.of(context).channelListHeaderTheme; } @override Widget wrap(BuildContext context, Widget child) => - ChannelListHeaderTheme(data: data, child: child); + StreamChannelListHeaderTheme(data: data, child: child); @override - bool updateShouldNotify(ChannelListHeaderTheme oldWidget) => + bool updateShouldNotify(StreamChannelListHeaderTheme oldWidget) => data != oldWidget.data; } +/// {@macro channel_list_header_theme_data} +@Deprecated("Use ''StreamChannelListHeaderThemeData' instead") +typedef ChannelListHeaderThemeData = StreamChannelListHeaderThemeData; + +/// {@template channel_list_header_theme_data} /// Theme dedicated to the [ChannelListHeader] -class ChannelListHeaderThemeData with Diagnosticable { - /// Returns a new [ChannelListHeaderThemeData] - const ChannelListHeaderThemeData({ +/// {@endtemplate} +class StreamChannelListHeaderThemeData with Diagnosticable { + /// Returns a new [StreamChannelListHeaderThemeData] + const StreamChannelListHeaderThemeData({ this.titleStyle, this.avatarTheme, this.color, @@ -60,39 +72,41 @@ class ChannelListHeaderThemeData with Diagnosticable { final TextStyle? titleStyle; /// Theme dedicated to the userAvatar - final AvatarThemeData? avatarTheme; + final StreamAvatarThemeData? avatarTheme; /// Background color of the appbar final Color? color; - /// Returns a new [ChannelListHeaderThemeData] replacing some of its + /// Returns a new [StreamChannelListHeaderThemeData] replacing some of its /// properties - ChannelListHeaderThemeData copyWith({ + StreamChannelListHeaderThemeData copyWith({ TextStyle? titleStyle, - AvatarThemeData? avatarTheme, + StreamAvatarThemeData? avatarTheme, Color? color, }) => - ChannelListHeaderThemeData( + StreamChannelListHeaderThemeData( titleStyle: titleStyle ?? this.titleStyle, avatarTheme: avatarTheme ?? this.avatarTheme, color: color ?? this.color, ); - /// Linearly interpolate from one [ChannelListHeaderThemeData] to another. - ChannelListHeaderThemeData lerp( - ChannelListHeaderThemeData a, - ChannelListHeaderThemeData b, + /// Linearly interpolate from one [StreamChannelListHeaderThemeData] to another. + StreamChannelListHeaderThemeData lerp( + StreamChannelListHeaderThemeData a, + StreamChannelListHeaderThemeData b, double t, ) => - ChannelListHeaderThemeData( - avatarTheme: - const AvatarThemeData().lerp(a.avatarTheme!, b.avatarTheme!, t), + StreamChannelListHeaderThemeData( + avatarTheme: const StreamAvatarThemeData() + .lerp(a.avatarTheme!, b.avatarTheme!, t), color: Color.lerp(a.color, b.color, t), titleStyle: TextStyle.lerp(a.titleStyle, b.titleStyle, t), ); - /// Merges [this] [ChannelListHeaderThemeData] with the [other] - ChannelListHeaderThemeData merge(ChannelListHeaderThemeData? other) { + /// Merges [this] [StreamChannelListHeaderThemeData] with the [other] + StreamChannelListHeaderThemeData merge( + StreamChannelListHeaderThemeData? other, + ) { if (other == null) return this; return copyWith( titleStyle: titleStyle?.merge(other.titleStyle) ?? other.titleStyle, @@ -104,7 +118,7 @@ class ChannelListHeaderThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is ChannelListHeaderThemeData && + other is StreamChannelListHeaderThemeData && runtimeType == other.runtimeType && titleStyle == other.titleStyle && avatarTheme == other.avatarTheme && diff --git a/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart b/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart index d310e2bc..4d6bd7d0 100644 --- a/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart @@ -2,27 +2,33 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro channel_list_view_theme} +@Deprecated("Use 'StreamChannelListViewTheme' instead") +typedef ChannelListViewTheme = StreamChannelListViewTheme; + +/// {@template channel_list_view_theme} /// Overrides the default style of [ChannelListView] descendants. /// /// See also: /// -/// * [ChannelListViewThemeData], which is used to configure this theme. -class ChannelListViewTheme extends InheritedTheme { - /// Creates a [ChannelListViewTheme]. +/// * [StreamChannelListViewThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamChannelListViewTheme extends InheritedTheme { + /// Creates a [StreamChannelListViewTheme]. /// /// The [data] parameter must not be null. - const ChannelListViewTheme({ + const StreamChannelListViewTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final ChannelListViewThemeData data; + final StreamChannelListViewThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [ChannelListViewTheme] widget, then + /// If there is no enclosing [StreamChannelListViewTheme] widget, then /// [StreamChatThemeData.channelListViewTheme] is used. /// /// Typical usage is as follows: @@ -30,63 +36,69 @@ class ChannelListViewTheme extends InheritedTheme { /// ```dart /// ChannelListViewTheme theme = ChannelListViewTheme.of(context); /// ``` - static ChannelListViewThemeData of(BuildContext context) { - final channelListViewTheme = - context.dependOnInheritedWidgetOfExactType(); + static StreamChannelListViewThemeData of(BuildContext context) { + final channelListViewTheme = context + .dependOnInheritedWidgetOfExactType(); return channelListViewTheme?.data ?? StreamChatTheme.of(context).channelListViewTheme; } @override Widget wrap(BuildContext context, Widget child) => - ChannelListViewTheme(data: data, child: child); + StreamChannelListViewTheme(data: data, child: child); @override - bool updateShouldNotify(ChannelListViewTheme oldWidget) => + bool updateShouldNotify(StreamChannelListViewTheme oldWidget) => data != oldWidget.data; } +/// {@macro channel_list_view_theme_data} +@Deprecated("Use 'StreamChannelListViewThemeData' instead") +typedef ChannelListViewThemeData = StreamChannelListViewThemeData; + +/// {@template channel_list_view_theme_data} /// A style that overrides the default appearance of [ChannelListView]s when -/// used with [ChannelListViewTheme] or with the overall [StreamChatTheme]'s +/// used with [StreamChannelListViewTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.channelListViewTheme]. /// /// See also: /// -/// * [ChannelListViewTheme], the theme which is configured with this class. +/// * [StreamChannelListViewTheme], the theme which is configured with this class. /// * [StreamChatThemeData.channelListViewTheme], which can be used to override /// the default style for [ChannelListView]s below the overall /// [StreamChatTheme]. -class ChannelListViewThemeData with Diagnosticable { - /// Creates a [ChannelListViewThemeData]. - const ChannelListViewThemeData({ +/// {@endtemplate} +class StreamChannelListViewThemeData with Diagnosticable { + /// Creates a [StreamChannelListViewThemeData]. + const StreamChannelListViewThemeData({ this.backgroundColor, }); /// The color of the [ChannelListView] background. final Color? backgroundColor; - /// Copies this [ChannelListViewThemeData] to another. - ChannelListViewThemeData copyWith({ + /// Copies this [StreamChannelListViewThemeData] to another. + StreamChannelListViewThemeData copyWith({ Color? backgroundColor, }) => - ChannelListViewThemeData( + StreamChannelListViewThemeData( backgroundColor: backgroundColor ?? this.backgroundColor, ); - /// Linearly interpolate between two [ChannelListViewThemeData] themes. + /// Linearly interpolate between two [StreamChannelListViewThemeData] themes. /// /// All the properties must be non-null. - ChannelListViewThemeData lerp( - ChannelListViewThemeData a, - ChannelListViewThemeData b, + StreamChannelListViewThemeData lerp( + StreamChannelListViewThemeData a, + StreamChannelListViewThemeData b, double t, ) => - ChannelListViewThemeData( + StreamChannelListViewThemeData( backgroundColor: Color.lerp(a.backgroundColor, b.backgroundColor, t), ); - /// Merges one [ChannelListViewThemeData] with another. - ChannelListViewThemeData merge(ChannelListViewThemeData? other) { + /// Merges one [StreamChannelListViewThemeData] with another. + StreamChannelListViewThemeData merge(StreamChannelListViewThemeData? other) { if (other == null) return this; return copyWith( backgroundColor: other.backgroundColor, @@ -96,7 +108,7 @@ class ChannelListViewThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is ChannelListViewThemeData && + other is StreamChannelListViewThemeData && runtimeType == other.runtimeType && backgroundColor == other.backgroundColor; diff --git a/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart b/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart index ff9ef70c..3df974b2 100644 --- a/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart @@ -3,27 +3,33 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/theme/avatar_theme.dart'; +/// {@macro channel_preview_theme} +@Deprecated("Use 'StreamChannelPreviewTheme' instead") +typedef ChannelPreviewTheme = StreamChannelPreviewTheme; + +/// {@template channel_preview_theme} /// Overrides the default style of [ChannelPreview] descendants. /// /// See also: /// -/// * [ChannelPreviewThemeData], which is used to configure this theme. -class ChannelPreviewTheme extends InheritedTheme { - /// Creates a [ChannelPreviewTheme]. +/// * [StreamChannelPreviewThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamChannelPreviewTheme extends InheritedTheme { + /// Creates a [StreamChannelPreviewTheme]. /// /// The [data] parameter must not be null. - const ChannelPreviewTheme({ + const StreamChannelPreviewTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final ChannelPreviewThemeData data; + final StreamChannelPreviewThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [ChannelPreviewTheme] widget, then + /// If there is no enclosing [StreamChannelPreviewTheme] widget, then /// [StreamChatThemeData.channelPreviewTheme] is used. /// /// Typical usage is as follows: @@ -31,34 +37,40 @@ class ChannelPreviewTheme extends InheritedTheme { /// ```dart /// final theme = ChannelPreviewTheme.of(context); /// ``` - static ChannelPreviewThemeData of(BuildContext context) { + static StreamChannelPreviewThemeData of(BuildContext context) { final channelPreviewTheme = - context.dependOnInheritedWidgetOfExactType(); + context.dependOnInheritedWidgetOfExactType(); return channelPreviewTheme?.data ?? StreamChatTheme.of(context).channelPreviewTheme; } @override Widget wrap(BuildContext context, Widget child) => - ChannelPreviewTheme(data: data, child: child); + StreamChannelPreviewTheme(data: data, child: child); @override - bool updateShouldNotify(ChannelPreviewTheme oldWidget) => + bool updateShouldNotify(StreamChannelPreviewTheme oldWidget) => data != oldWidget.data; } +/// {@macro channel_preview_theme_data} +@Deprecated("Use 'StreamChannelPreviewThemeData' instead") +typedef ChannelPreviewThemeData = StreamChannelPreviewThemeData; + +/// {@template channel_preview_theme_data} /// A style that overrides the default appearance of [ChannelPreview]s when used -/// with [ChannelPreviewTheme] or with the overall [StreamChatTheme]'s +/// with [StreamChannelPreviewTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.channelPreviewTheme]. /// /// See also: /// -/// * [ChannelPreviewTheme], the theme which is configured with this class. +/// * [StreamChannelPreviewTheme], the theme which is configured with this class. /// * [StreamChatThemeData.channelPreviewTheme], which can be used to override /// the default style for [ChannelHeader]s below the overall [StreamChatTheme]. -class ChannelPreviewThemeData with Diagnosticable { - /// Creates a [ChannelPreviewThemeData]. - const ChannelPreviewThemeData({ +/// {@endtemplate} +class StreamChannelPreviewThemeData with Diagnosticable { + /// Creates a [StreamChannelPreviewThemeData]. + const StreamChannelPreviewThemeData({ this.titleStyle, this.subtitleStyle, this.lastMessageAtStyle, @@ -77,7 +89,7 @@ class ChannelPreviewThemeData with Diagnosticable { final TextStyle? lastMessageAtStyle; /// Avatar theme - final AvatarThemeData? avatarTheme; + final StreamAvatarThemeData? avatarTheme; /// Unread counter color final Color? unreadCounterColor; @@ -86,15 +98,15 @@ class ChannelPreviewThemeData with Diagnosticable { final double? indicatorIconSize; /// Copy with theme - ChannelPreviewThemeData copyWith({ + StreamChannelPreviewThemeData copyWith({ TextStyle? titleStyle, TextStyle? subtitleStyle, TextStyle? lastMessageAtStyle, - AvatarThemeData? avatarTheme, + StreamAvatarThemeData? avatarTheme, Color? unreadCounterColor, double? indicatorIconSize, }) => - ChannelPreviewThemeData( + StreamChannelPreviewThemeData( titleStyle: titleStyle ?? this.titleStyle, subtitleStyle: subtitleStyle ?? this.subtitleStyle, lastMessageAtStyle: lastMessageAtStyle ?? this.lastMessageAtStyle, @@ -103,15 +115,15 @@ class ChannelPreviewThemeData with Diagnosticable { indicatorIconSize: indicatorIconSize ?? this.indicatorIconSize, ); - /// Linearly interpolate one [ChannelPreviewThemeData] to another. - ChannelPreviewThemeData lerp( - ChannelPreviewThemeData a, - ChannelPreviewThemeData b, + /// Linearly interpolate one [StreamChannelPreviewThemeData] to another. + StreamChannelPreviewThemeData lerp( + StreamChannelPreviewThemeData a, + StreamChannelPreviewThemeData b, double t, ) => - ChannelPreviewThemeData( - avatarTheme: - const AvatarThemeData().lerp(a.avatarTheme!, b.avatarTheme!, t), + StreamChannelPreviewThemeData( + avatarTheme: const StreamAvatarThemeData() + .lerp(a.avatarTheme!, b.avatarTheme!, t), indicatorIconSize: a.indicatorIconSize, lastMessageAtStyle: TextStyle.lerp(a.lastMessageAtStyle, b.lastMessageAtStyle, t), @@ -122,7 +134,7 @@ class ChannelPreviewThemeData with Diagnosticable { ); /// Merge with theme - ChannelPreviewThemeData merge(ChannelPreviewThemeData? other) { + StreamChannelPreviewThemeData merge(StreamChannelPreviewThemeData? other) { if (other == null) return this; return copyWith( titleStyle: titleStyle?.merge(other.titleStyle) ?? other.titleStyle, @@ -138,7 +150,7 @@ class ChannelPreviewThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is ChannelPreviewThemeData && + other is StreamChannelPreviewThemeData && runtimeType == other.runtimeType && titleStyle == other.titleStyle && subtitleStyle == other.subtitleStyle && diff --git a/packages/stream_chat_flutter/lib/src/theme/color_theme.dart b/packages/stream_chat_flutter/lib/src/theme/color_theme.dart index b32c023f..e0068d59 100644 --- a/packages/stream_chat_flutter/lib/src/theme/color_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/color_theme.dart @@ -1,9 +1,15 @@ import 'package:flutter/material.dart'; +/// {@macro color_theme} +@Deprecated("Use 'StreamColorTheme' instead") +typedef ColorTheme = StreamColorTheme; + +/// {@template color_theme} /// Theme that holds colors -class ColorTheme { +/// {@endtemplate} +class StreamColorTheme { /// Initialise with light theme - ColorTheme.light({ + StreamColorTheme.light({ this.textHighEmphasis = const Color(0xff000000), this.textLowEmphasis = const Color(0xff7a7a7a), this.disabled = const Color(0xffdbdbdb), @@ -55,7 +61,7 @@ class ColorTheme { }) : brightness = Brightness.light; /// Initialise with dark theme - ColorTheme.dark({ + StreamColorTheme.dark({ this.textHighEmphasis = const Color(0xffffffff), this.textLowEmphasis = const Color(0xff7a7a7a), this.disabled = const Color(0xff2d2f2f), @@ -169,7 +175,7 @@ class ColorTheme { final Brightness brightness; /// Copy with theme - ColorTheme copyWith({ + StreamColorTheme copyWith({ Brightness brightness = Brightness.light, Color? textHighEmphasis, Color? textLowEmphasis, @@ -192,7 +198,7 @@ class ColorTheme { Gradient? bgGradient, }) => brightness == Brightness.light - ? ColorTheme.light( + ? StreamColorTheme.light( textHighEmphasis: textHighEmphasis ?? this.textHighEmphasis, textLowEmphasis: textLowEmphasis ?? this.textLowEmphasis, disabled: disabled ?? this.disabled, @@ -213,7 +219,7 @@ class ColorTheme { overlayDark: overlayDark ?? this.overlayDark, bgGradient: bgGradient ?? this.bgGradient, ) - : ColorTheme.dark( + : StreamColorTheme.dark( textHighEmphasis: textHighEmphasis ?? this.textHighEmphasis, textLowEmphasis: textLowEmphasis ?? this.textLowEmphasis, disabled: disabled ?? this.disabled, @@ -236,7 +242,7 @@ class ColorTheme { ); /// Merge color theme - ColorTheme merge(ColorTheme? other) { + StreamColorTheme merge(StreamColorTheme? other) { if (other == null) return this; return copyWith( textHighEmphasis: other.textHighEmphasis, diff --git a/packages/stream_chat_flutter/lib/src/theme/gallery_footer_theme.dart b/packages/stream_chat_flutter/lib/src/theme/gallery_footer_theme.dart index a227b830..f68ceb45 100644 --- a/packages/stream_chat_flutter/lib/src/theme/gallery_footer_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/gallery_footer_theme.dart @@ -2,27 +2,33 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro gallery_footer_theme} +@Deprecated("Use 'StreamGalleryFooterTheme' instead") +typedef GalleryFooterTheme = StreamGalleryFooterTheme; + +/// {@template gallery_footer_theme} /// Overrides the default style of [GalleryFooter] descendants. /// /// See also: /// -/// * [GalleryFooterThemeData], which is used to configure this theme. -class GalleryFooterTheme extends InheritedTheme { - /// Creates an [GalleryFooterTheme]. +/// * [StreamGalleryFooterThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamGalleryFooterTheme extends InheritedTheme { + /// Creates an [StreamGalleryFooterTheme]. /// /// The [data] parameter must not be null. - const GalleryFooterTheme({ + const StreamGalleryFooterTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final GalleryFooterThemeData data; + final StreamGalleryFooterThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [GalleryFooterTheme] widget, then + /// If there is no enclosing [StreamGalleryFooterTheme] widget, then /// [StreamChatThemeData.galleryFooterTheme] is used. /// /// Typical usage is as follows: @@ -30,34 +36,40 @@ class GalleryFooterTheme extends InheritedTheme { /// ```dart /// ImageFooterTheme theme = ImageFooterTheme.of(context); /// ``` - static GalleryFooterThemeData of(BuildContext context) { + static StreamGalleryFooterThemeData of(BuildContext context) { final imageFooterTheme = - context.dependOnInheritedWidgetOfExactType(); + context.dependOnInheritedWidgetOfExactType(); return imageFooterTheme?.data ?? StreamChatTheme.of(context).galleryFooterTheme; } @override Widget wrap(BuildContext context, Widget child) => - GalleryFooterTheme(data: data, child: child); + StreamGalleryFooterTheme(data: data, child: child); @override - bool updateShouldNotify(GalleryFooterTheme oldWidget) => + bool updateShouldNotify(StreamGalleryFooterTheme oldWidget) => data != oldWidget.data; } +/// {@macro gallery_footer_theme_data} +@Deprecated("Use 'StreamGalleryFooterThemeData' instead") +typedef GalleryFooterThemeData = StreamGalleryFooterThemeData; + +/// {@template gallery_footer_theme_data} /// A style that overrides the default appearance of [GalleryFooter]s when used -/// with [GalleryFooterTheme] or with the overall [StreamChatTheme]'s +/// with [StreamGalleryFooterTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.galleryFooterTheme]. /// /// See also: /// -/// * [GalleryFooterTheme], the theme which is configured with this class. +/// * [StreamGalleryFooterTheme], the theme which is configured with this class. /// * [StreamChatThemeData.galleryFooterTheme], which can be used to override /// the default style for [GalleryFooter]s below the overall [StreamChatTheme]. -class GalleryFooterThemeData with Diagnosticable { - /// Creates an [GalleryFooterThemeData]. - const GalleryFooterThemeData({ +/// {@endtemplate} +class StreamGalleryFooterThemeData with Diagnosticable { + /// Creates an [StreamGalleryFooterThemeData]. + const StreamGalleryFooterThemeData({ this.backgroundColor, this.shareIconColor, this.titleTextStyle, @@ -108,8 +120,8 @@ class GalleryFooterThemeData with Diagnosticable { /// Defaults to [ColorTheme.textHighEmphasis]. final Color? bottomSheetCloseIconColor; - /// Copies this [GalleryFooterThemeData] to another. - GalleryFooterThemeData copyWith({ + /// Copies this [StreamGalleryFooterThemeData] to another. + StreamGalleryFooterThemeData copyWith({ Color? backgroundColor, Color? shareIconColor, TextStyle? titleTextStyle, @@ -119,7 +131,7 @@ class GalleryFooterThemeData with Diagnosticable { TextStyle? bottomSheetPhotosTextStyle, Color? bottomSheetCloseIconColor, }) => - GalleryFooterThemeData( + StreamGalleryFooterThemeData( backgroundColor: backgroundColor ?? this.backgroundColor, shareIconColor: shareIconColor ?? this.shareIconColor, titleTextStyle: titleTextStyle ?? this.titleTextStyle, @@ -137,12 +149,12 @@ class GalleryFooterThemeData with Diagnosticable { /// Linearly interpolate between two [GalleryFooter] themes. /// /// All the properties must be non-null. - GalleryFooterThemeData lerp( - GalleryFooterThemeData a, - GalleryFooterThemeData b, + StreamGalleryFooterThemeData lerp( + StreamGalleryFooterThemeData a, + StreamGalleryFooterThemeData b, double t, ) => - GalleryFooterThemeData( + StreamGalleryFooterThemeData( backgroundColor: Color.lerp(a.backgroundColor, b.backgroundColor, t), shareIconColor: Color.lerp(a.shareIconColor, b.shareIconColor, t), titleTextStyle: TextStyle.lerp(a.titleTextStyle, b.titleTextStyle, t), @@ -167,8 +179,8 @@ class GalleryFooterThemeData with Diagnosticable { ), ); - /// Merges one [GalleryFooterThemeData] with another. - GalleryFooterThemeData merge(GalleryFooterThemeData? other) { + /// Merges one [StreamGalleryFooterThemeData] with another. + StreamGalleryFooterThemeData merge(StreamGalleryFooterThemeData? other) { if (other == null) return this; return copyWith( backgroundColor: other.backgroundColor, @@ -185,7 +197,7 @@ class GalleryFooterThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is GalleryFooterThemeData && + other is StreamGalleryFooterThemeData && runtimeType == other.runtimeType && backgroundColor == other.backgroundColor && shareIconColor == other.shareIconColor && diff --git a/packages/stream_chat_flutter/lib/src/theme/gallery_header_theme.dart b/packages/stream_chat_flutter/lib/src/theme/gallery_header_theme.dart index 23402c57..f03ebe9a 100644 --- a/packages/stream_chat_flutter/lib/src/theme/gallery_header_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/gallery_header_theme.dart @@ -2,27 +2,33 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro gallery_header_them} +@Deprecated("Use 'StreamGalleryHeaderTheme' instead") +typedef GalleryHeaderTheme = StreamGalleryHeaderTheme; + +/// {@template gallery_header_theme} /// Overrides the default style of [GalleryHeader] descendants. /// /// See also: /// -/// * [GalleryHeaderThemeData], which is used to configure this theme. -class GalleryHeaderTheme extends InheritedTheme { - /// Creates a [GalleryHeaderTheme]. +/// * [StreamGalleryHeaderThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamGalleryHeaderTheme extends InheritedTheme { + /// Creates a [StreamGalleryHeaderTheme]. /// /// The [data] parameter must not be null. - const GalleryHeaderTheme({ + const StreamGalleryHeaderTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final GalleryHeaderThemeData data; + final StreamGalleryHeaderThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [GalleryHeaderTheme] widget, then + /// If there is no enclosing [StreamGalleryHeaderTheme] widget, then /// [StreamChatThemeData.galleryHeaderTheme] is used. /// /// Typical usage is as follows: @@ -30,34 +36,40 @@ class GalleryHeaderTheme extends InheritedTheme { /// ```dart /// ImageHeaderTheme theme = ImageHeaderTheme.of(context); /// ``` - static GalleryHeaderThemeData of(BuildContext context) { + static StreamGalleryHeaderThemeData of(BuildContext context) { final galleryHeaderTheme = - context.dependOnInheritedWidgetOfExactType(); + context.dependOnInheritedWidgetOfExactType(); return galleryHeaderTheme?.data ?? StreamChatTheme.of(context).galleryHeaderTheme; } @override Widget wrap(BuildContext context, Widget child) => - GalleryHeaderTheme(data: data, child: child); + StreamGalleryHeaderTheme(data: data, child: child); @override - bool updateShouldNotify(GalleryHeaderTheme oldWidget) => + bool updateShouldNotify(StreamGalleryHeaderTheme oldWidget) => data != oldWidget.data; } +/// {@macro gallery_header_theme_data} +@Deprecated("Use 'StreamGalleryHeaderThemeData' instead") +typedef GalleryHeaderThemeData = StreamGalleryHeaderThemeData; + +/// {@template gallery_header_theme_data} /// A style that overrides the default appearance of [GalleryHeader]s when used -/// with [GalleryHeaderTheme] or with the overall [StreamChatTheme]'s +/// with [StreamGalleryHeaderTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.galleryHeaderTheme]. /// /// See also: /// -/// * [GalleryHeaderTheme], the theme which is configured with this class. +/// * [StreamGalleryHeaderTheme], the theme which is configured with this class. /// * [StreamChatThemeData.galleryHeaderTheme], which can be used to override /// the default style for [GalleryHeader]s below the overall [StreamChatTheme]. -class GalleryHeaderThemeData with Diagnosticable { - /// Creates an [GalleryHeaderThemeData]. - const GalleryHeaderThemeData({ +/// {@endtemplate} +class StreamGalleryHeaderThemeData with Diagnosticable { + /// Creates an [StreamGalleryHeaderThemeData]. + const StreamGalleryHeaderThemeData({ this.closeButtonColor, this.backgroundColor, this.iconMenuPointColor, @@ -92,8 +104,8 @@ class GalleryHeaderThemeData with Diagnosticable { /// final Color? bottomSheetBarrierColor; - /// Copies this [GalleryHeaderThemeData] to another. - GalleryHeaderThemeData copyWith({ + /// Copies this [StreamGalleryHeaderThemeData] to another. + StreamGalleryHeaderThemeData copyWith({ Color? closeButtonColor, Color? backgroundColor, Color? iconMenuPointColor, @@ -101,7 +113,7 @@ class GalleryHeaderThemeData with Diagnosticable { TextStyle? subtitleTextStyle, Color? bottomSheetBarrierColor, }) => - GalleryHeaderThemeData( + StreamGalleryHeaderThemeData( closeButtonColor: closeButtonColor ?? this.closeButtonColor, backgroundColor: backgroundColor ?? this.backgroundColor, iconMenuPointColor: iconMenuPointColor ?? this.iconMenuPointColor, @@ -114,12 +126,12 @@ class GalleryHeaderThemeData with Diagnosticable { /// Linearly interpolate between two [GalleryHeader] themes. /// /// All the properties must be non-null. - GalleryHeaderThemeData lerp( - GalleryHeaderThemeData a, - GalleryHeaderThemeData b, + StreamGalleryHeaderThemeData lerp( + StreamGalleryHeaderThemeData a, + StreamGalleryHeaderThemeData b, double t, ) => - GalleryHeaderThemeData( + StreamGalleryHeaderThemeData( closeButtonColor: Color.lerp(a.closeButtonColor, b.closeButtonColor, t), backgroundColor: Color.lerp(a.backgroundColor, b.backgroundColor, t), iconMenuPointColor: @@ -131,8 +143,8 @@ class GalleryHeaderThemeData with Diagnosticable { Color.lerp(a.bottomSheetBarrierColor, b.bottomSheetBarrierColor, t), ); - /// Merges one [GalleryHeaderThemeData] with the another - GalleryHeaderThemeData merge(GalleryHeaderThemeData? other) { + /// Merges one [StreamGalleryHeaderThemeData] with the another + StreamGalleryHeaderThemeData merge(StreamGalleryHeaderThemeData? other) { if (other == null) return this; return copyWith( closeButtonColor: other.closeButtonColor, @@ -147,7 +159,7 @@ class GalleryHeaderThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is GalleryHeaderThemeData && + other is StreamGalleryHeaderThemeData && runtimeType == other.runtimeType && closeButtonColor == other.closeButtonColor && backgroundColor == other.backgroundColor && diff --git a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart index 81047d77..c3874ef6 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart @@ -5,27 +5,33 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro message_input_theme} +@Deprecated("Use 'StreamMessageInputTheme' instead") +typedef MessageInputTheme = StreamMessageInputTheme; + +/// {@template message_input_theme} /// Overrides the default style of [MessageInput] descendants. /// /// See also: /// -/// * [MessageInputThemeData], which is used to configure this theme. -class MessageInputTheme extends InheritedTheme { - /// Creates a [MessageInputTheme]. +/// * [StreamMessageInputThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamMessageInputTheme extends InheritedTheme { + /// Creates a [StreamMessageInputTheme]. /// /// The [data] parameter must not be null. - const MessageInputTheme({ + const StreamMessageInputTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final MessageInputThemeData data; + final StreamMessageInputThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [MessageInputTheme] widget, then + /// If there is no enclosing [StreamMessageInputTheme] widget, then /// [StreamChatThemeData.messageInputTheme] is used. /// /// Typical usage is as follows: @@ -33,28 +39,34 @@ class MessageInputTheme extends InheritedTheme { /// ```dart /// final theme = MessageInputTheme.of(context); /// ``` - static MessageInputThemeData of(BuildContext context) { + static StreamMessageInputThemeData of(BuildContext context) { final messageInputTheme = - context.dependOnInheritedWidgetOfExactType(); + context.dependOnInheritedWidgetOfExactType(); return messageInputTheme?.data ?? StreamChatTheme.of(context).messageInputTheme; } @override Widget wrap(BuildContext context, Widget child) => - MessageInputTheme(data: data, child: child); + StreamMessageInputTheme(data: data, child: child); @override - bool updateShouldNotify(MessageInputTheme oldWidget) => + bool updateShouldNotify(StreamMessageInputTheme oldWidget) => data != oldWidget.data; } +/// {@macro message_input_theme_data} +@Deprecated("Use 'StreamMessageInputThemeData' instead") +typedef MessageInputThemeData = StreamMessageInputThemeData; + +/// {@template message_input_theme_data} /// A style that overrides the default appearance of [MessageInput] widgets -/// when used with [MessageInputTheme] or with the overall [StreamChatTheme]'s +/// when used with [StreamMessageInputTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.messageInputTheme]. -class MessageInputThemeData with Diagnosticable { - /// Creates a [MessageInputThemeData]. - const MessageInputThemeData({ +/// {@endtemplate} +class StreamMessageInputThemeData with Diagnosticable { + /// Creates a [StreamMessageInputThemeData]. + const StreamMessageInputThemeData({ this.sendAnimationDuration, this.actionButtonColor, this.sendButtonColor, @@ -121,8 +133,8 @@ class MessageInputThemeData with Diagnosticable { /// Shadow for the [MessageInput] widget final BoxShadow? shadow; - /// Returns a new [MessageInputThemeData] replacing some of its properties - MessageInputThemeData copyWith({ + /// Returns a new [StreamMessageInputThemeData] replacing some of its properties + StreamMessageInputThemeData copyWith({ Duration? sendAnimationDuration, Color? inputBackgroundColor, Color? actionButtonColor, @@ -140,7 +152,7 @@ class MessageInputThemeData with Diagnosticable { double? elevation, BoxShadow? shadow, }) => - MessageInputThemeData( + StreamMessageInputThemeData( sendAnimationDuration: sendAnimationDuration ?? this.sendAnimationDuration, inputBackgroundColor: inputBackgroundColor ?? this.inputBackgroundColor, @@ -161,13 +173,13 @@ class MessageInputThemeData with Diagnosticable { shadow: shadow ?? this.shadow, ); - /// Linearly interpolate from one [MessageInputThemeData] to another. - MessageInputThemeData lerp( - MessageInputThemeData a, - MessageInputThemeData b, + /// Linearly interpolate from one [StreamMessageInputThemeData] to another. + StreamMessageInputThemeData lerp( + StreamMessageInputThemeData a, + StreamMessageInputThemeData b, double t, ) => - MessageInputThemeData( + StreamMessageInputThemeData( actionButtonColor: Color.lerp(a.actionButtonColor, b.actionButtonColor, t), actionButtonIdleColor: @@ -194,8 +206,8 @@ class MessageInputThemeData with Diagnosticable { shadow: BoxShadow.lerp(a.shadow, b.shadow, t), ); - /// Merges [this] [MessageInputThemeData] with the [other] - MessageInputThemeData merge(MessageInputThemeData? other) { + /// Merges [this] [StreamMessageInputThemeData] with the [other] + StreamMessageInputThemeData merge(StreamMessageInputThemeData? other) { if (other == null) return this; return copyWith( sendAnimationDuration: other.sendAnimationDuration, @@ -222,7 +234,7 @@ class MessageInputThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is MessageInputThemeData && + other is StreamMessageInputThemeData && runtimeType == other.runtimeType && sendAnimationDuration == other.sendAnimationDuration && sendButtonColor == other.sendButtonColor && diff --git a/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart index e4857a79..882d4708 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart @@ -2,27 +2,33 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro message_list_view_theme} +@Deprecated("Use 'StreamMessageListViewTheme' instead") +typedef MessageListViewTheme = StreamMessageListViewTheme; + +/// {@template message_list_view_theme} /// Overrides the default style of [MessageListView] descendants. /// /// See also: /// -/// * [MessageListViewThemeData], which is used to configure this theme. -class MessageListViewTheme extends InheritedTheme { - /// Creates a [MessageListViewTheme]. +/// * [StreamMessageListViewThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamMessageListViewTheme extends InheritedTheme { + /// Creates a [StreamMessageListViewTheme]. /// /// The [data] parameter must not be null. - const MessageListViewTheme({ + const StreamMessageListViewTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final MessageListViewThemeData data; + final StreamMessageListViewThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [MessageListViewTheme] widget, then + /// If there is no enclosing [StreamMessageListViewTheme] widget, then /// [StreamChatThemeData.messageListViewTheme] is used. /// /// Typical usage is as follows: @@ -30,35 +36,41 @@ class MessageListViewTheme extends InheritedTheme { /// ```dart /// MessageListViewTheme theme = MessageListViewTheme.of(context); /// ``` - static MessageListViewThemeData of(BuildContext context) { - final messageListViewTheme = - context.dependOnInheritedWidgetOfExactType(); + static StreamMessageListViewThemeData of(BuildContext context) { + final messageListViewTheme = context + .dependOnInheritedWidgetOfExactType(); return messageListViewTheme?.data ?? StreamChatTheme.of(context).messageListViewTheme; } @override Widget wrap(BuildContext context, Widget child) => - MessageListViewTheme(data: data, child: child); + StreamMessageListViewTheme(data: data, child: child); @override - bool updateShouldNotify(MessageListViewTheme oldWidget) => + bool updateShouldNotify(StreamMessageListViewTheme oldWidget) => data != oldWidget.data; } +/// {@macro message_list_view_theme_data} +@Deprecated("Use 'StreamMessageListViewThemeData' instead") +typedef MessageListViewThemeData = StreamMessageListViewThemeData; + +/// {@template message_list_view_theme_data} /// A style that overrides the default appearance of [MessageListView]s when -/// used with [MessageListViewTheme] or with the overall [StreamChatTheme]'s +/// used with [StreamMessageListViewTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.messageListViewTheme]. /// /// See also: /// -/// * [MessageListViewTheme], the theme which is configured with this class. +/// * [StreamMessageListViewTheme], the theme which is configured with this class. /// * [StreamChatThemeData.messageListViewTheme], which can be used to override /// the default style for [MessageListView]s below the overall /// [StreamChatTheme]. -class MessageListViewThemeData with Diagnosticable { - /// Creates a [MessageListViewThemeData]. - const MessageListViewThemeData({ +/// {@endtemplate} +class StreamMessageListViewThemeData with Diagnosticable { + /// Creates a [StreamMessageListViewThemeData]. + const StreamMessageListViewThemeData({ this.backgroundColor, this.backgroundImage, }); @@ -69,12 +81,12 @@ class MessageListViewThemeData with Diagnosticable { /// The image of the [MessageListView] background. final DecorationImage? backgroundImage; - /// Copies this [MessageListViewThemeData] to another. - MessageListViewThemeData copyWith({ + /// Copies this [StreamMessageListViewThemeData] to another. + StreamMessageListViewThemeData copyWith({ Color? backgroundColor, DecorationImage? backgroundImage, }) => - MessageListViewThemeData( + StreamMessageListViewThemeData( backgroundColor: backgroundColor ?? this.backgroundColor, backgroundImage: backgroundImage ?? this.backgroundImage, ); @@ -82,18 +94,18 @@ class MessageListViewThemeData with Diagnosticable { /// Linearly interpolate between two [MessageListView] themes. /// /// All the properties must be non-null. - MessageListViewThemeData lerp( - MessageListViewThemeData a, - MessageListViewThemeData b, + StreamMessageListViewThemeData lerp( + StreamMessageListViewThemeData a, + StreamMessageListViewThemeData b, double t, ) => - MessageListViewThemeData( + StreamMessageListViewThemeData( backgroundColor: Color.lerp(a.backgroundColor, b.backgroundColor, t), backgroundImage: t < 0.5 ? a.backgroundImage : b.backgroundImage, ); - /// Merges one [MessageListViewThemeData] with another. - MessageListViewThemeData merge(MessageListViewThemeData? other) { + /// Merges one [StreamMessageListViewThemeData] with another. + StreamMessageListViewThemeData merge(StreamMessageListViewThemeData? other) { if (other == null) return this; return copyWith( backgroundColor: other.backgroundColor, @@ -104,7 +116,7 @@ class MessageListViewThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is MessageListViewThemeData && + other is StreamMessageListViewThemeData && runtimeType == other.runtimeType && backgroundColor == other.backgroundColor && backgroundImage == other.backgroundImage; diff --git a/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart index 670e05e7..83ef032a 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart @@ -2,23 +2,29 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro message_search_list_view_theme} +@Deprecated("Use 'StreamMessageSearchListViewTheme' instead") +typedef MessageSearchListViewTheme = StreamMessageSearchListViewTheme; + +/// {@template message_search_list_view_theme} /// Overrides the default style of [MessageSearchListView] descendants. /// /// See also: /// /// * [UserListViewThemeData], which is used to configure this theme. -class MessageSearchListViewTheme extends InheritedTheme { +/// {@endtemplate} +class StreamMessageSearchListViewTheme extends InheritedTheme { /// Creates a [UserListViewTheme]. /// /// The [data] parameter must not be null. - const MessageSearchListViewTheme({ + const StreamMessageSearchListViewTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final MessageSearchListViewThemeData data; + final StreamMessageSearchListViewThemeData data; /// The closest instance of this class that encloses the given context. /// @@ -30,64 +36,72 @@ class MessageSearchListViewTheme extends InheritedTheme { /// ```dart /// MessageSearchListViewTheme theme = MessageSearchListViewTheme.of(context); /// ``` - static MessageSearchListViewThemeData of(BuildContext context) { + static StreamMessageSearchListViewThemeData of(BuildContext context) { final messageSearchListViewTheme = context - .dependOnInheritedWidgetOfExactType(); + .dependOnInheritedWidgetOfExactType(); return messageSearchListViewTheme?.data ?? StreamChatTheme.of(context).messageSearchListViewTheme; } @override Widget wrap(BuildContext context, Widget child) => - MessageSearchListViewTheme(data: data, child: child); + StreamMessageSearchListViewTheme(data: data, child: child); @override - bool updateShouldNotify(MessageSearchListViewTheme oldWidget) => + bool updateShouldNotify(StreamMessageSearchListViewTheme oldWidget) => data != oldWidget.data; } +/// {@macro message_search_list_view_theme_data} +@Deprecated("Use 'StreamMessageSearchListViewThemeData' instead") +typedef MessageSearchListViewThemeData = StreamMessageSearchListViewThemeData; + +/// {@macro message_search_list_view_theme_data} /// A style that overrides the default appearance of [MessageSearchListView]s /// when used with [MessageSearchListView] or with the overall /// [StreamChatTheme]'s [StreamChatThemeData.messageSearchListViewTheme]. /// /// See also: /// -/// * [MessageSearchListViewTheme], the theme which is configured with this +/// * [StreamMessageSearchListViewTheme], the theme which is configured with this /// class. /// * [StreamChatThemeData.messageSearchListViewTheme], which can be used to /// override the default style for [UserListView]s below the overall /// [StreamChatTheme]. -class MessageSearchListViewThemeData with Diagnosticable { - /// Creates a [MessageSearchListViewThemeData]. - const MessageSearchListViewThemeData({ +/// {@endtemplate} +class StreamMessageSearchListViewThemeData with Diagnosticable { + /// Creates a [StreamMessageSearchListViewThemeData]. + const StreamMessageSearchListViewThemeData({ this.backgroundColor, }); /// The color of the [MessageSearchListView] background. final Color? backgroundColor; - /// Copies this [MessageSearchListViewThemeData] to another. - MessageSearchListViewThemeData copyWith({ + /// Copies this [StreamMessageSearchListViewThemeData] to another. + StreamMessageSearchListViewThemeData copyWith({ Color? backgroundColor, }) => - MessageSearchListViewThemeData( + StreamMessageSearchListViewThemeData( backgroundColor: backgroundColor ?? this.backgroundColor, ); /// Linearly interpolate between two [UserListViewThemeData] themes. /// /// All the properties must be non-null. - MessageSearchListViewThemeData lerp( - MessageSearchListViewThemeData a, - MessageSearchListViewThemeData b, + StreamMessageSearchListViewThemeData lerp( + StreamMessageSearchListViewThemeData a, + StreamMessageSearchListViewThemeData b, double t, ) => - MessageSearchListViewThemeData( + StreamMessageSearchListViewThemeData( backgroundColor: Color.lerp(a.backgroundColor, b.backgroundColor, t), ); - /// Merges one [MessageSearchListViewThemeData] with another. - MessageSearchListViewThemeData merge(MessageSearchListViewThemeData? other) { + /// Merges one [StreamMessageSearchListViewThemeData] with another. + StreamMessageSearchListViewThemeData merge( + StreamMessageSearchListViewThemeData? other, + ) { if (other == null) return this; return copyWith( backgroundColor: other.backgroundColor, @@ -97,7 +111,7 @@ class MessageSearchListViewThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is MessageSearchListViewThemeData && + other is StreamMessageSearchListViewThemeData && runtimeType == other.runtimeType && backgroundColor == other.backgroundColor; diff --git a/packages/stream_chat_flutter/lib/src/theme/message_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_theme.dart index 386a312f..c94c8159 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_theme.dart @@ -2,11 +2,17 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/theme/avatar_theme.dart'; +/// {@macro message_theme_data} +@Deprecated("Use 'StreamMessageThemeData' instead") +typedef MessageThemeData = StreamMessageThemeData; + +/// {@template message_theme_data} /// Class for getting message theme +/// {@endtemplate} // ignore: prefer-match-file-name -class MessageThemeData with Diagnosticable { - /// Creates a [MessageThemeData]. - const MessageThemeData({ +class StreamMessageThemeData with Diagnosticable { + /// Creates a [StreamMessageThemeData]. + const StreamMessageThemeData({ this.repliesStyle, this.messageTextStyle, this.messageAuthorStyle, @@ -52,13 +58,13 @@ class MessageThemeData with Diagnosticable { final Color? reactionsMaskColor; /// Theme of the avatar - final AvatarThemeData? avatarTheme; + final StreamAvatarThemeData? avatarTheme; /// Background color for messages with url attachments. final Color? linkBackgroundColor; /// Copy with a theme - MessageThemeData copyWith({ + StreamMessageThemeData copyWith({ TextStyle? messageTextStyle, TextStyle? messageAuthorStyle, TextStyle? messageLinksStyle, @@ -66,13 +72,13 @@ class MessageThemeData with Diagnosticable { TextStyle? repliesStyle, Color? messageBackgroundColor, Color? messageBorderColor, - AvatarThemeData? avatarTheme, + StreamAvatarThemeData? avatarTheme, Color? reactionsBackgroundColor, Color? reactionsBorderColor, Color? reactionsMaskColor, Color? linkBackgroundColor, }) => - MessageThemeData( + StreamMessageThemeData( messageTextStyle: messageTextStyle ?? this.messageTextStyle, messageAuthorStyle: messageAuthorStyle ?? this.messageAuthorStyle, messageLinksStyle: messageLinksStyle ?? this.messageLinksStyle, @@ -89,11 +95,15 @@ class MessageThemeData with Diagnosticable { linkBackgroundColor: linkBackgroundColor ?? this.linkBackgroundColor, ); - /// Linearly interpolate from one [MessageThemeData] to another. - MessageThemeData lerp(MessageThemeData a, MessageThemeData b, double t) => - MessageThemeData( - avatarTheme: - const AvatarThemeData().lerp(a.avatarTheme!, b.avatarTheme!, t), + /// Linearly interpolate from one [StreamMessageThemeData] to another. + StreamMessageThemeData lerp( + StreamMessageThemeData a, + StreamMessageThemeData b, + double t, + ) => + StreamMessageThemeData( + avatarTheme: const StreamAvatarThemeData() + .lerp(a.avatarTheme!, b.avatarTheme!, t), createdAtStyle: TextStyle.lerp(a.createdAtStyle, b.createdAtStyle, t), messageAuthorStyle: TextStyle.lerp(a.messageAuthorStyle, b.messageAuthorStyle, t), @@ -120,7 +130,7 @@ class MessageThemeData with Diagnosticable { ); /// Merge with a theme - MessageThemeData merge(MessageThemeData? other) { + StreamMessageThemeData merge(StreamMessageThemeData? other) { if (other == null) return this; return copyWith( messageTextStyle: messageTextStyle?.merge(other.messageTextStyle) ?? @@ -146,7 +156,7 @@ class MessageThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is MessageThemeData && + other is StreamMessageThemeData && runtimeType == other.runtimeType && messageTextStyle == other.messageTextStyle && messageAuthorStyle == other.messageAuthorStyle && diff --git a/packages/stream_chat_flutter/lib/src/theme/text_theme.dart b/packages/stream_chat_flutter/lib/src/theme/text_theme.dart index ec70cf83..06ddf2d9 100644 --- a/packages/stream_chat_flutter/lib/src/theme/text_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/text_theme.dart @@ -1,9 +1,15 @@ import 'package:flutter/material.dart'; +/// {@macro text_theme} +@Deprecated("Use 'StreamTextTheme' instead") +typedef TextTheme = StreamTextTheme; + +/// {@template text_theme} /// Class for holding text theme -class TextTheme { +/// {@endtemplate} +class StreamTextTheme { /// Initialise light text theme - TextTheme.light({ + StreamTextTheme.light({ this.title = const TextStyle( fontSize: 22, fontWeight: FontWeight.bold, @@ -46,7 +52,7 @@ class TextTheme { }); /// Initialise with dark theme - TextTheme.dark({ + StreamTextTheme.dark({ this.title = const TextStyle( fontSize: 22, fontWeight: FontWeight.bold, @@ -113,7 +119,7 @@ class TextTheme { final TextStyle captionBold; /// Copy with theme - TextTheme copyWith({ + StreamTextTheme copyWith({ Brightness brightness = Brightness.light, TextStyle? body, TextStyle? title, @@ -125,7 +131,7 @@ class TextTheme { TextStyle? captionBold, }) => brightness == Brightness.light - ? TextTheme.light( + ? StreamTextTheme.light( body: body ?? this.body, title: title ?? this.title, headlineBold: headlineBold ?? this.headlineBold, @@ -135,7 +141,7 @@ class TextTheme { footnote: footnote ?? this.footnote, captionBold: captionBold ?? this.captionBold, ) - : TextTheme.dark( + : StreamTextTheme.dark( body: body ?? this.body, title: title ?? this.title, headlineBold: headlineBold ?? this.headlineBold, @@ -147,7 +153,7 @@ class TextTheme { ); /// Merge text theme - TextTheme merge(TextTheme? other) { + StreamTextTheme merge(StreamTextTheme? other) { if (other == null) return this; return copyWith( body: body.merge(other.body), diff --git a/packages/stream_chat_flutter/lib/src/theme/user_list_view_theme.dart b/packages/stream_chat_flutter/lib/src/theme/user_list_view_theme.dart index 0d99ccbd..fb57438b 100644 --- a/packages/stream_chat_flutter/lib/src/theme/user_list_view_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/user_list_view_theme.dart @@ -2,27 +2,33 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/widgets.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +/// {@macro user_list_view_theme} +@Deprecated("Use 'StreamUserListViewTheme' instead") +typedef UserListViewTheme = StreamUserListViewTheme; + +/// {@template user_list_view_theme} /// Overrides the default style of [UserListView] descendants. /// /// See also: /// -/// * [UserListViewThemeData], which is used to configure this theme. -class UserListViewTheme extends InheritedTheme { - /// Creates a [UserListViewTheme]. +/// * [StreamUserListViewThemeData], which is used to configure this theme. +/// {@endtemplate} +class StreamUserListViewTheme extends InheritedTheme { + /// Creates a [StreamUserListViewTheme]. /// /// The [data] parameter must not be null. - const UserListViewTheme({ + const StreamUserListViewTheme({ Key? key, required this.data, required Widget child, }) : super(key: key, child: child); /// The configuration of this theme. - final UserListViewThemeData data; + final StreamUserListViewThemeData data; /// The closest instance of this class that encloses the given context. /// - /// If there is no enclosing [UserListViewTheme] widget, then + /// If there is no enclosing [StreamUserListViewTheme] widget, then /// [StreamChatThemeData.userListViewTheme] is used. /// /// Typical usage is as follows: @@ -30,35 +36,41 @@ class UserListViewTheme extends InheritedTheme { /// ```dart /// UserListViewTheme theme = UserListViewTheme.of(context); /// ``` - static UserListViewThemeData of(BuildContext context) { + static StreamUserListViewThemeData of(BuildContext context) { final userListViewTheme = - context.dependOnInheritedWidgetOfExactType(); + context.dependOnInheritedWidgetOfExactType(); return userListViewTheme?.data ?? StreamChatTheme.of(context).userListViewTheme; } @override Widget wrap(BuildContext context, Widget child) => - UserListViewTheme(data: data, child: child); + StreamUserListViewTheme(data: data, child: child); @override - bool updateShouldNotify(UserListViewTheme oldWidget) => + bool updateShouldNotify(StreamUserListViewTheme oldWidget) => data != oldWidget.data; } +/// {@macro user_list_view_theme_data} +@Deprecated("Use 'StreamUserListViewThemeData' instead") +typedef UserListViewThemeData = StreamUserListViewThemeData; + +/// {@template user_list_view_theme_data} /// A style that overrides the default appearance of [UserListView]s when -/// used with [UserListViewTheme] or with the overall [StreamChatTheme]'s +/// used with [StreamUserListViewTheme] or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.userListViewTheme]. /// /// See also: /// -/// * [UserListViewTheme], the theme which is configured with this class. +/// * [StreamUserListViewTheme], the theme which is configured with this class. /// * [StreamChatThemeData.userListViewTheme], which can be used to override /// the default style for [UserListView]s below the overall /// [StreamChatTheme]. -class UserListViewThemeData with Diagnosticable { - /// Creates a [UserListViewThemeData]. - const UserListViewThemeData({ +/// {@endtemplate} +class StreamUserListViewThemeData with Diagnosticable { + /// Creates a [StreamUserListViewThemeData]. + const StreamUserListViewThemeData({ this.backgroundColor, }); @@ -66,27 +78,27 @@ class UserListViewThemeData with Diagnosticable { final Color? backgroundColor; /// Copies this [ChannelListViewThemeData] to another. - UserListViewThemeData copyWith({ + StreamUserListViewThemeData copyWith({ Color? backgroundColor, }) => - UserListViewThemeData( + StreamUserListViewThemeData( backgroundColor: backgroundColor ?? this.backgroundColor, ); - /// Linearly interpolate between two [UserListViewThemeData] themes. + /// Linearly interpolate between two [StreamUserListViewThemeData] themes. /// /// All the properties must be non-null. - UserListViewThemeData lerp( - UserListViewThemeData a, - UserListViewThemeData b, + StreamUserListViewThemeData lerp( + StreamUserListViewThemeData a, + StreamUserListViewThemeData b, double t, ) => - UserListViewThemeData( + StreamUserListViewThemeData( backgroundColor: Color.lerp(a.backgroundColor, b.backgroundColor, t), ); - /// Merges one [UserListViewThemeData] with another. - UserListViewThemeData merge(UserListViewThemeData? other) { + /// Merges one [StreamUserListViewThemeData] with another. + StreamUserListViewThemeData merge(StreamUserListViewThemeData? other) { if (other == null) return this; return copyWith( backgroundColor: other.backgroundColor, @@ -96,7 +108,7 @@ class UserListViewThemeData with Diagnosticable { @override bool operator ==(Object other) => identical(this, other) || - other is UserListViewThemeData && + other is StreamUserListViewThemeData && runtimeType == other.runtimeType && backgroundColor == other.backgroundColor; diff --git a/packages/stream_chat_flutter/lib/src/thread_header.dart b/packages/stream_chat_flutter/lib/src/thread_header.dart index e7a9372f..052e1bcb 100644 --- a/packages/stream_chat_flutter/lib/src/thread_header.dart +++ b/packages/stream_chat_flutter/lib/src/thread_header.dart @@ -3,6 +3,11 @@ import 'package:flutter/services.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro thread_header} +@Deprecated("Use 'StreamThreadHeader' instead") +typedef ThreadHeader = StreamThreadHeader; + +/// {@template thread_header} /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/thread_header.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/thread_header_paint.png) /// @@ -56,9 +61,11 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// The widget components render the ui based on the first ancestor of type /// [StreamChatTheme] and on its [ChannelTheme.channelHeaderTheme] property. /// Modify it to change the widget appearance. -class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { +/// {@endtemplate} +class StreamThreadHeader extends StatelessWidget + implements PreferredSizeWidget { /// Instantiate a new ThreadHeader - const ThreadHeader({ + const StreamThreadHeader({ Key? key, required this.parent, this.showBackButton = true, @@ -102,12 +109,12 @@ class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { /// if a user is typing in this thread final bool showTypingIndicator; - /// The background color of this [ThreadHeader]. + /// The background color of this [StreamThreadHeader]. final Color? backgroundColor; @override Widget build(BuildContext context) { - final channelHeaderTheme = ChannelHeaderTheme.of(context); + final channelHeaderTheme = StreamChannelHeaderTheme.of(context); final defaultSubtitle = subtitle ?? Row( @@ -162,7 +169,7 @@ class ThreadHeader extends StatelessWidget implements PreferredSizeWidget { const SizedBox(height: 2), if (showTypingIndicator) Align( - child: TypingIndicator( + child: StreamTypingIndicator( channel: StreamChannel.of(context).channel, style: channelHeaderTheme.subtitleStyle, parentId: parent.id, diff --git a/packages/stream_chat_flutter/lib/src/typing_indicator.dart b/packages/stream_chat_flutter/lib/src/typing_indicator.dart index 389d1020..1cb3d8eb 100644 --- a/packages/stream_chat_flutter/lib/src/typing_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/typing_indicator.dart @@ -3,10 +3,16 @@ import 'package:lottie/lottie.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; +/// {@macro typing_indicator} +@Deprecated("Use 'StreamTypingIndicator' instead") +typedef TypingIndicator = StreamTypingIndicator; + +/// {@template typing_indicator} /// Widget to show the current list of typing users -class TypingIndicator extends StatelessWidget { +/// {@endtemplate} +class StreamTypingIndicator extends StatelessWidget { /// Instantiate a new TypingIndicator - const TypingIndicator({ + const StreamTypingIndicator({ Key? key, this.channel, this.alternativeWidget, diff --git a/packages/stream_chat_flutter/lib/src/unread_indicator.dart b/packages/stream_chat_flutter/lib/src/unread_indicator.dart index 958386d1..bf23db1a 100644 --- a/packages/stream_chat_flutter/lib/src/unread_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/unread_indicator.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro unread_indicator} +@Deprecated("Use 'StreamUnreadIndicator' instead") +typedef UnreadIndicator = StreamUnreadIndicator; + +/// {@template unread_indicator} /// Widget for showing an unread indicator -class UnreadIndicator extends StatelessWidget { - /// Constructor for creating an [UnreadIndicator] - const UnreadIndicator({ +/// {@endtemplate} +class StreamUnreadIndicator extends StatelessWidget { + /// Constructor for creating an [StreamUnreadIndicator] + const StreamUnreadIndicator({ Key? key, this.cid, }) : super(key: key); diff --git a/packages/stream_chat_flutter/lib/src/upload_progress_indicator.dart b/packages/stream_chat_flutter/lib/src/upload_progress_indicator.dart index b3fe510d..d11e9609 100644 --- a/packages/stream_chat_flutter/lib/src/upload_progress_indicator.dart +++ b/packages/stream_chat_flutter/lib/src/upload_progress_indicator.dart @@ -1,10 +1,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro upload_progress_indicator} +@Deprecated("Use 'StreamUploadProgressIndicator' instead") +typedef UploadProgressIndicator = StreamUploadProgressIndicator; + +/// {@template upload_progress_indicator} /// Widget for showing upload progress -class UploadProgressIndicator extends StatelessWidget { - /// Constructor for creating an [UploadProgressIndicator] - const UploadProgressIndicator({ +/// {@endtemplate} +class StreamUploadProgressIndicator extends StatelessWidget { + /// Constructor for creating an [StreamUploadProgressIndicator] + const StreamUploadProgressIndicator({ Key? key, required this.uploaded, required this.total, diff --git a/packages/stream_chat_flutter/lib/src/user_avatar.dart b/packages/stream_chat_flutter/lib/src/user_avatar.dart index e638685c..8d634039 100644 --- a/packages/stream_chat_flutter/lib/src/user_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/user_avatar.dart @@ -2,10 +2,16 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro user_avatar} +@Deprecated("Use 'StreamUserAvatar' instead") +typedef UserAvatar = StreamUserAvatar; + +/// {@template user_avatar} /// Widget that displays a user avatar -class UserAvatar extends StatelessWidget { - /// Constructor to create a [UserAvatar] - const UserAvatar({ +/// {@endtemplate} +class StreamUserAvatar extends StatelessWidget { + /// Constructor to create a [StreamUserAvatar] + const StreamUserAvatar({ Key? key, required this.user, this.constraints, diff --git a/packages/stream_chat_flutter/lib/src/user_item.dart b/packages/stream_chat_flutter/lib/src/user_item.dart index c0e3482e..74ccacc2 100644 --- a/packages/stream_chat_flutter/lib/src/user_item.dart +++ b/packages/stream_chat_flutter/lib/src/user_item.dart @@ -2,21 +2,26 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -/// +/// {@macro user_item} +@Deprecated("Use 'StreamUserItem' instead") +typedef UserItem = StreamUserItem; + +/// {@template user_item} /// It shows the current [User] preview. /// /// The widget uses a [StreamBuilder] to render the user information /// image as soon as it updates. /// /// Usually you don't use this widget as it's the default user preview used -/// by [UserListView]. +/// by [StreamUserListView]. /// /// The widget renders the ui based on the first ancestor of type /// [StreamChatTheme]. /// Modify it to change the widget appearance. -class UserItem extends StatelessWidget { +/// {@endtemplate} +class StreamUserItem extends StatelessWidget { /// Instantiate a new UserItem - const UserItem({ + const StreamUserItem({ Key? key, required this.user, this.onTap, @@ -38,10 +43,10 @@ class UserItem extends StatelessWidget { /// The function called when the image is tapped final void Function(User)? onImageTap; - /// If true the [UserItem] will show a trailing checkmark + /// If true the [StreamUserItem] will show a trailing checkmark final bool selected; - /// If true the [UserItem] will show the last seen + /// If true the [StreamUserItem] will show the last seen final bool showLastOnline; @override @@ -58,7 +63,7 @@ class UserItem extends StatelessWidget { onLongPress!(user); } }, - leading: UserAvatar( + leading: StreamUserAvatar( user: user, onTap: (user) { if (onImageTap != null) { diff --git a/packages/stream_chat_flutter/lib/src/user_list_view.dart b/packages/stream_chat_flutter/lib/src/user_list_view.dart index 58af30a7..a604c611 100644 --- a/packages/stream_chat_flutter/lib/src/user_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/user_list_view.dart @@ -8,7 +8,11 @@ typedef UserTapCallback = void Function(User, Widget?); /// Builder used to create a custom [ListUserItem] from a [User] typedef UserItemBuilder = Widget Function(BuildContext, User, bool); -/// +/// {@macro user_list_view} +@Deprecated("Use 'StreamUserListView' instead") +typedef UserListView = StreamUserListView; + +/// {@template user_list_view} /// It shows the list of current users. /// /// ```dart @@ -42,9 +46,10 @@ typedef UserItemBuilder = Widget Function(BuildContext, User, bool); /// The widget components render the ui based on the first ancestor of /// type [StreamChatTheme]. /// Modify it to change the widget appearance. -class UserListView extends StatefulWidget { +/// {@endtemplate} +class StreamUserListView extends StatefulWidget { /// Instantiate a new UserListView - UserListView({ + StreamUserListView({ Key? key, this.filter = const Filter.empty(), this.sort, @@ -160,10 +165,10 @@ class UserListView extends StatefulWidget { final UserListController? userListController; @override - _UserListViewState createState() => _UserListViewState(); + _StreamUserListViewState createState() => _StreamUserListViewState(); } -class _UserListViewState extends State +class _StreamUserListViewState extends State with WidgetsBindingObserver { bool get _isListView => widget.crossAxisCount == 1; @@ -203,7 +208,7 @@ class _UserListViewState extends State userListController: _userListController, ); - final backgroundColor = UserListViewTheme.of(context).backgroundColor; + final backgroundColor = StreamUserListViewTheme.of(context).backgroundColor; Widget child; @@ -332,7 +337,7 @@ class _UserListViewState extends State key: ValueKey('USER-${user.id}'), child: widget.userItemBuilder != null ? widget.userItemBuilder!(context, user, selected) - : UserItem( + : StreamUserItem( user: user, onTap: (user) => widget.onUserTap!(user, widget.userWidget), onLongPress: widget.onUserLongPress, @@ -362,7 +367,7 @@ class _UserListViewState extends State : Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - UserAvatar( + StreamUserAvatar( user: user, borderRadius: BorderRadius.circular(32), selected: selected, diff --git a/packages/stream_chat_flutter/lib/src/user_mention_tile.dart b/packages/stream_chat_flutter/lib/src/user_mention_tile.dart index ff9e145b..b944d912 100644 --- a/packages/stream_chat_flutter/lib/src/user_mention_tile.dart +++ b/packages/stream_chat_flutter/lib/src/user_mention_tile.dart @@ -1,12 +1,18 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro user_mention_tile} +@Deprecated("Use 'StreamUserMentionTile' instead") +typedef UserMentionTile = StreamUserMentionTile; + +/// {@template user_mention_tile} /// This widget is used for showing user tiles for mentions /// Use [title], [subtitle], [leading], [trailing] for /// substituting widgets in respective positions -class UserMentionTile extends StatelessWidget { - /// Constructor for creating a [UserMentionTile] widget - const UserMentionTile( +/// {@endtemplate} +class StreamUserMentionTile extends StatelessWidget { + /// Constructor for creating a [StreamUserMentionTile] widget + const StreamUserMentionTile( this.user, { Key? key, this.title, @@ -41,7 +47,7 @@ class UserMentionTile extends StatelessWidget { width: 16, ), leading ?? - UserAvatar( + StreamUserAvatar( user: user, constraints: BoxConstraints.tight(const Size(40, 40)), ), diff --git a/packages/stream_chat_flutter/lib/src/user_mentions_overlay.dart b/packages/stream_chat_flutter/lib/src/user_mentions_overlay.dart index e3830231..59c86791 100644 --- a/packages/stream_chat_flutter/lib/src/user_mentions_overlay.dart +++ b/packages/stream_chat_flutter/lib/src/user_mentions_overlay.dart @@ -6,16 +6,22 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Builder function for building a mention tile. /// -/// Use [UserMentionTile] for the default implementation. +/// Use [StreamUserMentionTile] for the default implementation. typedef MentionTileBuilder = Widget Function( BuildContext context, User user, ); +/// {@macro user_mention_tile} +@Deprecated("Use 'StreamUserMentionsOverlay' instead") +typedef UserMentionsOverlay = StreamUserMentionsOverlay; + +/// {@template user_mentions_overlay} /// Overlay for displaying users that can be mentioned. -class UserMentionsOverlay extends StatefulWidget { - /// Constructor for creating a [UserMentionsOverlay]. - UserMentionsOverlay({ +/// {@endtemplate} +class StreamUserMentionsOverlay extends StatefulWidget { + /// Constructor for creating a [StreamUserMentionsOverlay]. + StreamUserMentionsOverlay({ Key? key, required this.query, required this.channel, @@ -62,10 +68,11 @@ class UserMentionsOverlay extends StatefulWidget { final void Function(User user)? onMentionUserTap; @override - _UserMentionsOverlayState createState() => _UserMentionsOverlayState(); + _StreamUserMentionsOverlayState createState() => + _StreamUserMentionsOverlayState(); } -class _UserMentionsOverlayState extends State { +class _StreamUserMentionsOverlayState extends State { late Future> userMentionsFuture; @override @@ -75,7 +82,7 @@ class _UserMentionsOverlayState extends State { } @override - void didUpdateWidget(covariant UserMentionsOverlay oldWidget) { + void didUpdateWidget(covariant StreamUserMentionsOverlay oldWidget) { super.didUpdateWidget(oldWidget); if (widget.channel != oldWidget.channel || widget.query != oldWidget.query || @@ -116,7 +123,7 @@ class _UserMentionsOverlayState extends State { child: InkWell( onTap: () => widget.onMentionUserTap?.call(user), child: widget.mentionsTileBuilder?.call(context, user) ?? - UserMentionTile(user), + StreamUserMentionTile(user), ), ); }, diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index f820e040..3b254817 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -131,7 +131,7 @@ class StreamChannelListTile extends StatelessWidget { final channelState = channel.state!; final currentUser = channel.client.state.currentUser!; - final channelPreviewTheme = ChannelPreviewTheme.of(context); + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); final leading = this.leading ?? StreamChannelAvatar( @@ -182,7 +182,7 @@ class StreamChannelListTile extends StatelessWidget { return const Offstage(); } return unreadIndicatorBuilder?.call(context) ?? - UnreadIndicator(cid: channel.cid); + StreamUnreadIndicator(cid: channel.cid); }, ), ], @@ -213,7 +213,7 @@ class StreamChannelListTile extends StatelessWidget { padding: const EdgeInsets.only(right: 4), child: sendingIndicatorBuilder?.call(context, lastMessage) ?? - SendingIndicator( + StreamSendingIndicator( message: lastMessage, size: channelPreviewTheme.indicatorIconSize, isMessageRead: channelState @@ -318,7 +318,7 @@ class ChannelListTileSubtitle extends StatelessWidget { ], ); } - return TypingIndicator( + return StreamTypingIndicator( channel: channel, style: textStyle, alternativeWidget: ChannelLastMessageText( diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart index fd07adc8..95cc14f2 100644 --- a/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart @@ -148,7 +148,7 @@ class StreamChannelAvatar extends StatelessWidget { return BetterStreamBuilder( stream: client.currentUserStream.map((it) => it!), initialData: currentUser, - builder: (context, user) => UserAvatar( + builder: (context, user) => StreamUserAvatar( borderRadius: borderRadius ?? previewTheme?.borderRadius, user: user, constraints: constraints ?? previewTheme?.constraints, @@ -171,7 +171,7 @@ class StreamChannelAvatar extends StatelessWidget { ), ), initialData: member, - builder: (context, member) => UserAvatar( + builder: (context, member) => StreamUserAvatar( borderRadius: borderRadius ?? previewTheme?.borderRadius, user: member.user!, constraints: constraints ?? previewTheme?.constraints, @@ -184,7 +184,7 @@ class StreamChannelAvatar extends StatelessWidget { } // Group conversation - return GroupAvatar( + return StreamGroupAvatar( channel: channel, members: otherMembers, borderRadius: borderRadius ?? previewTheme?.borderRadius, diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart index 5107131d..1a219e91 100644 --- a/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart @@ -52,7 +52,7 @@ class StreamChannelInfoBottomSheet extends StatelessWidget { Widget build(BuildContext context) { final themeData = StreamChatTheme.of(context); final colorTheme = themeData.colorTheme; - final channelPreviewTheme = ChannelPreviewTheme.of(context); + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); final currentUser = channel.client.state.currentUser; final isOneToOneChannel = channel.isDistinct && channel.memberCount == 2; @@ -84,7 +84,7 @@ class StreamChannelInfoBottomSheet extends StatelessWidget { const SizedBox(height: 5), Center( // TODO: Refactor ChannelInfo - child: ChannelInfo( + child: StreamChannelInfo( showTypingIndicator: false, channel: channel, textStyle: channelPreviewTheme.subtitleStyle, @@ -105,7 +105,7 @@ class StreamChannelInfoBottomSheet extends StatelessWidget { final user = member.user!; return Column( children: [ - UserAvatar( + StreamUserAvatar( user: user, constraints: const BoxConstraints( maxHeight: 64, @@ -132,7 +132,7 @@ class StreamChannelInfoBottomSheet extends StatelessWidget { ), ), const SizedBox(height: 24), - OptionListTile( + StreamOptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: StreamSvgIcon.user( @@ -143,7 +143,7 @@ class StreamChannelInfoBottomSheet extends StatelessWidget { onTap: onViewInfoTap, ), if (!isOneToOneChannel) - OptionListTile( + StreamOptionListTile( title: context.translations.leaveGroupLabel, leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), @@ -154,7 +154,7 @@ class StreamChannelInfoBottomSheet extends StatelessWidget { onTap: onLeaveChannelTap, ), if (isOwner) - OptionListTile( + StreamOptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: StreamSvgIcon.delete( @@ -165,7 +165,7 @@ class StreamChannelInfoBottomSheet extends StatelessWidget { titleColor: colorTheme.accentError, onTap: onDeleteConversationTap, ), - OptionListTile( + StreamOptionListTile( leading: Padding( padding: const EdgeInsets.symmetric(horizontal: 16), child: StreamSvgIcon.closeSmall( diff --git a/packages/stream_chat_flutter/lib/src/video_service.dart b/packages/stream_chat_flutter/lib/src/video_service.dart index a50a43c8..fb1db9ed 100644 --- a/packages/stream_chat_flutter/lib/src/video_service.dart +++ b/packages/stream_chat_flutter/lib/src/video_service.dart @@ -66,5 +66,10 @@ class _IVideoService { } /// Get instance of [_IVideoService] +@Deprecated("Use 'StreamVideoService' instead") // ignore: non_constant_identifier_names _IVideoService get VideoService => _IVideoService.instance; + +/// Get instance of [_IVideoService] +// ignore: non_constant_identifier_names +_IVideoService get StreamVideoService => _IVideoService.instance; diff --git a/packages/stream_chat_flutter/lib/src/video_thumbnail_image.dart b/packages/stream_chat_flutter/lib/src/video_thumbnail_image.dart index 2286bc3d..4d253da0 100644 --- a/packages/stream_chat_flutter/lib/src/video_thumbnail_image.dart +++ b/packages/stream_chat_flutter/lib/src/video_thumbnail_image.dart @@ -6,10 +6,16 @@ import 'package:stream_chat_flutter/src/video_service.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:video_thumbnail/video_thumbnail.dart'; +/// {@macro video_thumbnail_image} +@Deprecated("Use 'StreamVideoThumbnailImage' instead") +typedef VideoThumbnailImage = StreamVideoThumbnailImage; + +/// {@template video_thumbnail_image} /// Widget for creating video thumbnail image -class VideoThumbnailImage extends StatefulWidget { - /// Constructor for creating [VideoThumbnailImage] - const VideoThumbnailImage({ +/// {@endtemplate} +class StreamVideoThumbnailImage extends StatefulWidget { + /// Constructor for creating [StreamVideoThumbnailImage] + const StreamVideoThumbnailImage({ Key? key, required this.video, this.width, @@ -42,16 +48,17 @@ class VideoThumbnailImage extends StatefulWidget { final WidgetBuilder? placeholderBuilder; @override - _VideoThumbnailImageState createState() => _VideoThumbnailImageState(); + _StreamVideoThumbnailImageState createState() => + _StreamVideoThumbnailImageState(); } -class _VideoThumbnailImageState extends State { +class _StreamVideoThumbnailImageState extends State { late Future thumbnailFuture; late StreamChatThemeData _streamChatTheme; @override void initState() { - thumbnailFuture = VideoService.generateVideoThumbnail( + thumbnailFuture = StreamVideoService.generateVideoThumbnail( video: widget.video, imageFormat: widget.format, ); @@ -65,9 +72,9 @@ class _VideoThumbnailImageState extends State { } @override - void didUpdateWidget(covariant VideoThumbnailImage oldWidget) { + void didUpdateWidget(covariant StreamVideoThumbnailImage oldWidget) { if (oldWidget.video != widget.video || oldWidget.format != widget.format) { - thumbnailFuture = VideoService.generateVideoThumbnail( + thumbnailFuture = StreamVideoService.generateVideoThumbnail( video: widget.video, imageFormat: widget.format, ); diff --git a/packages/stream_chat_flutter/lib/src/visible_footnote.dart b/packages/stream_chat_flutter/lib/src/visible_footnote.dart index 700e22ad..1456de3a 100644 --- a/packages/stream_chat_flutter/lib/src/visible_footnote.dart +++ b/packages/stream_chat_flutter/lib/src/visible_footnote.dart @@ -2,10 +2,16 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; +/// {@macro visible_footnote} +@Deprecated("Use 'StreamVisibleFootnote' instead") +typedef VisibleFootnote = StreamVisibleFootnote; + +/// {@template visible_footnote} /// Widget for displaying a footnote -class VisibleFootnote extends StatelessWidget { - /// Constructor for creating a [VisibleFootnote] - const VisibleFootnote({Key? key}) : super(key: key); +/// {@endtemplate} +class StreamVisibleFootnote extends StatelessWidget { + /// Constructor for creating a [StreamVisibleFootnote] + const StreamVisibleFootnote({Key? key}) : super(key: key); @override Widget build(BuildContext context) { diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 83a31510..cd5c79d6 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -21,7 +21,6 @@ export 'src/gradient_avatar.dart'; export 'src/info_tile.dart'; export 'src/localization/stream_chat_localizations.dart'; export 'src/localization/translations.dart' show DefaultTranslations; -export 'src/mention_tile.dart'; export 'src/message_action.dart'; export 'src/message_input/countdown_button.dart'; export 'src/message_input/message_input.dart'; diff --git a/packages/stream_chat_flutter/test/src/attachment_widgets_test.dart b/packages/stream_chat_flutter/test/src/attachment_widgets_test.dart index ed4ce267..9747f11d 100644 --- a/packages/stream_chat_flutter/test/src/attachment_widgets_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment_widgets_test.dart @@ -24,7 +24,7 @@ void main() { child: StreamChannel( channel: channel, child: SizedBox( - child: FileAttachment( + child: StreamFileAttachment( size: const Size( 300, 300, diff --git a/packages/stream_chat_flutter/test/src/back_button_test.dart b/packages/stream_chat_flutter/test/src/back_button_test.dart index fca30c5b..f6ec0fc4 100644 --- a/packages/stream_chat_flutter/test/src/back_button_test.dart +++ b/packages/stream_chat_flutter/test/src/back_button_test.dart @@ -136,7 +136,7 @@ void main() { ), ); - expect(find.byType(UnreadIndicator), findsOneWidget); + expect(find.byType(StreamUnreadIndicator), findsOneWidget); }, ); } diff --git a/packages/stream_chat_flutter/test/src/channel_header_test.dart b/packages/stream_chat_flutter/test/src/channel_header_test.dart index 95d2e751..6590ee66 100644 --- a/packages/stream_chat_flutter/test/src/channel_header_test.dart +++ b/packages/stream_chat_flutter/test/src/channel_header_test.dart @@ -58,7 +58,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: ChannelHeader(), + body: StreamChannelHeader(), ), ), ), @@ -67,7 +67,7 @@ void main() { expect(find.text('test'), findsOneWidget); expect(find.byType(ChannelAvatar), findsOneWidget); expect(find.byType(StreamBackButton), findsOneWidget); - expect(find.byType(ChannelInfo), findsOneWidget); + expect(find.byType(StreamChannelInfo), findsOneWidget); }, ); @@ -124,7 +124,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: ChannelHeader( + body: StreamChannelHeader( showConnectionStateTile: true, ), ), @@ -132,8 +132,12 @@ void main() { ), )); - expect(tester.widget(find.byType(InfoTile)).showMessage, true); - expect(tester.widget(find.byType(InfoTile)).message, + expect( + tester + .widget(find.byType(StreamInfoTile)) + .showMessage, + true); + expect(tester.widget(find.byType(StreamInfoTile)).message, 'Disconnected'); }, ); @@ -190,7 +194,7 @@ void main() { channel: channel, showLoading: false, child: const Scaffold( - body: ChannelHeader( + body: StreamChannelHeader( showConnectionStateTile: true, ), ), @@ -200,8 +204,12 @@ void main() { await tester.pump(); - expect(tester.widget(find.byType(InfoTile)).showMessage, true); - expect(tester.widget(find.byType(InfoTile)).message, + expect( + tester + .widget(find.byType(StreamInfoTile)) + .showMessage, + true); + expect(tester.widget(find.byType(StreamInfoTile)).message, 'Reconnecting...'); }, ); @@ -257,7 +265,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: ChannelHeader( + body: StreamChannelHeader( leading: Text('leading'), subtitle: Text('subtitle'), actions: [ @@ -273,7 +281,7 @@ void main() { expect(find.text('test'), findsNothing); expect(find.byType(StreamBackButton), findsNothing); expect(find.byType(ChannelAvatar), findsNothing); - expect(find.byType(ChannelInfo), findsNothing); + expect(find.byType(StreamChannelInfo), findsNothing); expect(find.text('leading'), findsOneWidget); expect(find.text('title'), findsOneWidget); expect(find.text('subtitle'), findsOneWidget); @@ -331,7 +339,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: ChannelHeader( + body: StreamChannelHeader( showTypingIndicator: false, showBackButton: false, ), @@ -343,10 +351,14 @@ void main() { expect(find.byType(StreamBackButton), findsNothing); expect( tester - .widget(find.byType(ChannelInfo)) + .widget(find.byType(StreamChannelInfo)) .showTypingIndicator, false); - expect(tester.widget(find.byType(InfoTile)).showMessage, false); + expect( + tester + .widget(find.byType(StreamInfoTile)) + .showMessage, + false); }, ); @@ -405,7 +417,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: ChannelHeader( + body: StreamChannelHeader( onBackPressed: () => backPressed = true, onImageTap: () => imageTapped = true, onTitleTap: () => titleTapped = true, diff --git a/packages/stream_chat_flutter/test/src/channel_image_test.dart b/packages/stream_chat_flutter/test/src/channel_image_test.dart index be2ade55..3fc1e718 100644 --- a/packages/stream_chat_flutter/test/src/channel_image_test.dart +++ b/packages/stream_chat_flutter/test/src/channel_image_test.dart @@ -169,7 +169,8 @@ void main() { ), )); - final image = tester.widget(find.byType(GroupAvatar)); + final image = + tester.widget(find.byType(StreamGroupAvatar)); final otherMembers = members.where((it) => it.userId != currentUser.id); expect( image.members.map((it) => it.user?.id), diff --git a/packages/stream_chat_flutter/test/src/channel_list_header_test.dart b/packages/stream_chat_flutter/test/src/channel_list_header_test.dart index a2783067..532d07d6 100644 --- a/packages/stream_chat_flutter/test/src/channel_list_header_test.dart +++ b/packages/stream_chat_flutter/test/src/channel_list_header_test.dart @@ -22,14 +22,15 @@ void main() { home: StreamChat( client: client, child: const Scaffold( - body: ChannelListHeader(), + body: StreamChannelListHeader(), ), ), ), ); await tester.pumpAndSettle(); - final userAvatar = tester.widget(find.byType(UserAvatar)); + final userAvatar = + tester.widget(find.byType(StreamUserAvatar)); expect(userAvatar.user, clientState.currentUser); expect(find.byType(StreamNeumorphicButton), findsOneWidget); expect(find.text('Stream Chat'), findsOneWidget); @@ -52,7 +53,7 @@ void main() { home: StreamChat( client: client, child: const Scaffold( - body: ChannelListHeader( + body: StreamChannelListHeader( showConnectionStateTile: true, ), ), @@ -81,7 +82,7 @@ void main() { home: StreamChat( client: client, child: const Scaffold( - body: ChannelListHeader( + body: StreamChannelListHeader( showConnectionStateTile: true, ), ), @@ -110,7 +111,7 @@ void main() { home: StreamChat( client: client, child: Scaffold( - body: ChannelListHeader( + body: StreamChannelListHeader( titleBuilder: (context, status, client) => const Text('TITLE'), subtitle: const Text('SUBTITLE'), leading: const Text('LEADING'), @@ -150,7 +151,7 @@ void main() { home: StreamChat( client: client, child: Scaffold( - body: ChannelListHeader( + body: StreamChannelListHeader( preNavigationCallback: () { tapped = true; }, @@ -161,7 +162,7 @@ void main() { ); await tester.pump(); - await tester.tap(find.byType(UserAvatar)); + await tester.tap(find.byType(StreamUserAvatar)); expect(tapped, true); }, ); @@ -183,7 +184,7 @@ void main() { home: StreamChat( client: client, child: Scaffold( - body: ChannelListHeader( + body: StreamChannelListHeader( onUserAvatarTap: (u) { tapped++; }, @@ -197,7 +198,7 @@ void main() { ); await tester.pump(); - await tester.tap(find.byType(UserAvatar)); + await tester.tap(find.byType(StreamUserAvatar)); await tester.tap(find.byType(StreamNeumorphicButton)); expect(tapped, 2); }, diff --git a/packages/stream_chat_flutter/test/src/channel_preview_test.dart b/packages/stream_chat_flutter/test/src/channel_preview_test.dart index 47554605..63116196 100644 --- a/packages/stream_chat_flutter/test/src/channel_preview_test.dart +++ b/packages/stream_chat_flutter/test/src/channel_preview_test.dart @@ -71,7 +71,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: ChannelPreview( + body: StreamChannelPreview( channel: channel, ), ), diff --git a/packages/stream_chat_flutter/test/src/date_divider_test.dart b/packages/stream_chat_flutter/test/src/date_divider_test.dart index f84d4dce..59ba4be1 100644 --- a/packages/stream_chat_flutter/test/src/date_divider_test.dart +++ b/packages/stream_chat_flutter/test/src/date_divider_test.dart @@ -19,7 +19,7 @@ void main() { home: StreamChat( client: client, child: Scaffold( - body: DateDivider( + body: StreamDateDivider( dateTime: DateTime.now(), ), ), diff --git a/packages/stream_chat_flutter/test/src/deleted_message_test.dart b/packages/stream_chat_flutter/test/src/deleted_message_test.dart index 0d86e89c..171b993d 100644 --- a/packages/stream_chat_flutter/test/src/deleted_message_test.dart +++ b/packages/stream_chat_flutter/test/src/deleted_message_test.dart @@ -20,8 +20,8 @@ void main() { home: StreamChat( client: client, child: const Scaffold( - body: DeletedMessage( - messageTheme: MessageThemeData( + body: StreamDeletedMessage( + messageTheme: StreamMessageThemeData( createdAtStyle: TextStyle( color: Colors.black, ), @@ -75,7 +75,7 @@ void main() { showLoading: false, channel: channel, child: Center( - child: DeletedMessage( + child: StreamDeletedMessage( messageTheme: theme.ownMessageTheme, ), ), @@ -128,7 +128,7 @@ void main() { showLoading: false, channel: channel, child: Center( - child: DeletedMessage( + child: StreamDeletedMessage( messageTheme: theme.ownMessageTheme, ), ), @@ -181,7 +181,7 @@ void main() { showLoading: false, channel: channel, child: Center( - child: DeletedMessage( + child: StreamDeletedMessage( messageTheme: theme.ownMessageTheme, reverse: true, shape: RoundedRectangleBorder( diff --git a/packages/stream_chat_flutter/test/src/full_screen_media_test.dart b/packages/stream_chat_flutter/test/src/full_screen_media_test.dart index 2d271090..c17df733 100644 --- a/packages/stream_chat_flutter/test/src/full_screen_media_test.dart +++ b/packages/stream_chat_flutter/test/src/full_screen_media_test.dart @@ -68,7 +68,7 @@ void main() { client: client, child: StreamChannel( channel: channel, - child: FullScreenMedia( + child: StreamFullScreenMedia( mediaAttachments: [ Attachment( type: 'image', diff --git a/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart b/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart index 6dcc0e2d..073adc55 100644 --- a/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart +++ b/packages/stream_chat_flutter/test/src/gradient_avatar_test.dart @@ -25,7 +25,8 @@ void main() { child: SizedBox( width: 100, height: 100, - child: GradientAvatar(name: 'demo user', userId: 'demo123'), + child: StreamGradientAvatar( + name: 'demo user', userId: 'demo123'), ), ), ), @@ -33,7 +34,7 @@ void main() { ), ); - expect(find.byType(GradientAvatar), findsOneWidget); + expect(find.byType(StreamGradientAvatar), findsOneWidget); }, ); @@ -47,7 +48,8 @@ void main() { child: SizedBox( width: 100, height: 100, - child: GradientAvatar(name: 'demo user', userId: 'demo123'), + child: + StreamGradientAvatar(name: 'demo user', userId: 'demo123'), ), ), ), @@ -68,7 +70,7 @@ void main() { child: SizedBox( width: 100, height: 100, - child: GradientAvatar(name: 'demo', userId: 'demo1'), + child: StreamGradientAvatar(name: 'demo', userId: 'demo1'), ), ), ), @@ -89,7 +91,7 @@ void main() { child: SizedBox( width: 100, height: 100, - child: GradientAvatar( + child: StreamGradientAvatar( name: 'd123@/d de:\$as', userId: 'demo123', ), @@ -113,7 +115,8 @@ void main() { child: SizedBox( width: 100, height: 100, - child: GradientAvatar(name: '123@/d \$as', userId: 'demo123'), + child: StreamGradientAvatar( + name: '123@/d \$as', userId: 'demo123'), ), ), ), diff --git a/packages/stream_chat_flutter/test/src/image_footer_test.dart b/packages/stream_chat_flutter/test/src/image_footer_test.dart index 434a78d4..7fe611b8 100644 --- a/packages/stream_chat_flutter/test/src/image_footer_test.dart +++ b/packages/stream_chat_flutter/test/src/image_footer_test.dart @@ -37,7 +37,7 @@ void main() { child: WillPopScope( onWillPop: () async => false, child: Scaffold( - body: GalleryFooter( + body: StreamGalleryFooter( message: Message(), ), ), diff --git a/packages/stream_chat_flutter/test/src/info_tile_test.dart b/packages/stream_chat_flutter/test/src/info_tile_test.dart index f175ca9a..e0687964 100644 --- a/packages/stream_chat_flutter/test/src/info_tile_test.dart +++ b/packages/stream_chat_flutter/test/src/info_tile_test.dart @@ -22,7 +22,7 @@ void main() { child: const Scaffold( body: Portal( child: SizedBox( - child: InfoTile( + child: StreamInfoTile( showMessage: true, message: 'message', child: Text('test'), @@ -52,7 +52,7 @@ void main() { child: const Scaffold( body: Portal( child: SizedBox( - child: InfoTile( + child: StreamInfoTile( showMessage: false, message: 'message', child: Text('test'), diff --git a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart index 69e43fba..e0f8dcb3 100644 --- a/packages/stream_chat_flutter/test/src/message_action_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/message_action_modal_test.dart @@ -34,7 +34,7 @@ void main() { child: SizedBox( child: StreamChannel( channel: channel, - child: MessageActionsModal( + child: StreamMessageActionsModal( message: Message( text: 'test', user: User( @@ -88,7 +88,7 @@ void main() { child: SizedBox( child: StreamChannel( channel: channel, - child: MessageActionsModal( + child: StreamMessageActionsModal( showCopyMessage: false, showReplyMessage: false, showThreadReplyMessage: false, @@ -143,7 +143,7 @@ void main() { child: SizedBox( child: StreamChannel( channel: channel, - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( text: 'test', @@ -153,7 +153,7 @@ void main() { ), messageTheme: streamTheme.ownMessageTheme, customActions: [ - MessageAction( + StreamMessageAction( leading: const Icon(Icons.check), title: const Text('title'), onTap: (m) { @@ -203,7 +203,7 @@ void main() { child: SizedBox( child: StreamChannel( channel: channel, - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), onReplyTap: (m) { tapped = true; @@ -254,7 +254,7 @@ void main() { child: SizedBox( child: StreamChannel( channel: channel, - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), onThreadReplyTap: (m) { tapped = true; @@ -309,7 +309,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( text: 'test', @@ -330,7 +330,7 @@ void main() { await tester.pumpAndSettle(); - expect(find.byType(MessageInput), findsOneWidget); + expect(find.byType(StreamMessageInput), findsOneWidget); }, ); @@ -359,7 +359,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), editMessageInputBuilder: (context, m) => const Text('test'), message: Message( @@ -412,7 +412,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), onCopyTap: (m) => tapped = true, message: Message( @@ -462,7 +462,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( status: MessageSendingStatus.failed, @@ -512,7 +512,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( status: MessageSendingStatus.failed_update, @@ -560,7 +560,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( id: 'testid', @@ -617,7 +617,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( id: 'testid', @@ -674,7 +674,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( id: 'testid', @@ -729,7 +729,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( id: 'testid', @@ -786,7 +786,7 @@ void main() { showLoading: false, channel: channel, child: SizedBox( - child: MessageActionsModal( + child: StreamMessageActionsModal( messageWidget: const Text('test'), message: Message( id: 'testid', diff --git a/packages/stream_chat_flutter/test/src/message_input_test.dart b/packages/stream_chat_flutter/test/src/message_input_test.dart index 62fe0107..cdedc818 100644 --- a/packages/stream_chat_flutter/test/src/message_input_test.dart +++ b/packages/stream_chat_flutter/test/src/message_input_test.dart @@ -59,7 +59,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: MessageInput(), + body: StreamMessageInput(), ), ), ), @@ -125,7 +125,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: MessageInput(), + body: StreamMessageInput(), ), ), ), diff --git a/packages/stream_chat_flutter/test/src/message_list_view_test.dart b/packages/stream_chat_flutter/test/src/message_list_view_test.dart index b82d53b3..08e23820 100644 --- a/packages/stream_chat_flutter/test/src/message_list_view_test.dart +++ b/packages/stream_chat_flutter/test/src/message_list_view_test.dart @@ -54,7 +54,7 @@ void main() { client: client, child: StreamChannel( channel: channel, - child: MessageListView( + child: StreamMessageListView( emptyBuilder: (_) => Container(key: emptyWidgetKey), ), ), @@ -63,7 +63,7 @@ void main() { ); await tester.pumpAndSettle(); - expect(find.byType(MessageListView), findsOneWidget); + expect(find.byType(StreamMessageListView), findsOneWidget); expect(find.byKey(emptyWidgetKey), findsOneWidget); }); @@ -92,7 +92,7 @@ void main() { child: StreamChat( client: client, streamChatThemeData: StreamChatThemeData.light().copyWith( - messageListViewTheme: const MessageListViewThemeData( + messageListViewTheme: const StreamMessageListViewThemeData( backgroundColor: Colors.grey, backgroundImage: DecorationImage( image: AssetImage('images/placeholder.png'), @@ -102,7 +102,7 @@ void main() { ), child: StreamChannel( channel: channel, - child: const MessageListView( + child: const StreamMessageListView( key: nonEmptyWidgetKey, ), ), @@ -118,7 +118,7 @@ void main() { widget.decoration is BoxDecoration && (widget.decoration! as BoxDecoration).image != null; - expect(find.byType(MessageListView), findsOneWidget); + expect(find.byType(StreamMessageListView), findsOneWidget); expect(find.byKey(nonEmptyWidgetKey), findsOneWidget); expect( find.byWidgetPredicate( diff --git a/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart b/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart index 14877ce7..31812bf2 100644 --- a/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/message_reactions_modal_test.dart @@ -36,7 +36,7 @@ void main() { streamChatThemeData: streamTheme, child: StreamChannel( channel: channel, - child: MessageReactionsModal( + child: StreamMessageReactionsModal( messageWidget: const Text( 'test', key: Key('MessageWidget'), @@ -51,9 +51,9 @@ void main() { await tester.pump(const Duration(milliseconds: 1000)); - expect(find.byType(ReactionBubble), findsNothing); + expect(find.byType(StreamReactionBubble), findsNothing); - expect(find.byType(UserAvatar), findsNothing); + expect(find.byType(StreamUserAvatar), findsNothing); }, ); @@ -96,7 +96,7 @@ void main() { streamChatThemeData: streamTheme, child: StreamChannel( channel: channel, - child: MessageReactionsModal( + child: StreamMessageReactionsModal( messageWidget: const Text( 'test', key: Key('MessageWidget'), @@ -116,8 +116,8 @@ void main() { expect(find.byKey(const Key('MessageWidget')), findsOneWidget); - expect(find.byType(ReactionBubble), findsOneWidget); - expect(find.byType(UserAvatar), findsOneWidget); + expect(find.byType(StreamReactionBubble), findsOneWidget); + expect(find.byType(StreamUserAvatar), findsOneWidget); }, ); } diff --git a/packages/stream_chat_flutter/test/src/message_text_test.dart b/packages/stream_chat_flutter/test/src/message_text_test.dart index 57f0a282..8f2d4c10 100644 --- a/packages/stream_chat_flutter/test/src/message_text_test.dart +++ b/packages/stream_chat_flutter/test/src/message_text_test.dart @@ -65,7 +65,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: MessageText( + body: StreamMessageText( message: Message( text: 'demo', ), @@ -84,7 +84,7 @@ void main() { final clientState = MockClientState(); final channel = MockChannel(); final channelState = MockChannelState(); - const messageTheme = MessageThemeData(); + const messageTheme = StreamMessageThemeData(); final currentUser = OwnUser( id: 'sahil', @@ -122,7 +122,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: MessageText( + body: StreamMessageText( message: message, messageTheme: messageTheme, ), @@ -158,7 +158,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: MessageText( + body: StreamMessageText( message: message, messageTheme: messageTheme, ), @@ -221,7 +221,7 @@ cool.'''; child: StreamChannel( channel: channel, child: Scaffold( - body: MessageText( + body: StreamMessageText( message: Message( text: messageText, ), diff --git a/packages/stream_chat_flutter/test/src/reaction_bubble_test.dart b/packages/stream_chat_flutter/test/src/reaction_bubble_test.dart index 6e823b43..50719b17 100644 --- a/packages/stream_chat_flutter/test/src/reaction_bubble_test.dart +++ b/packages/stream_chat_flutter/test/src/reaction_bubble_test.dart @@ -25,7 +25,7 @@ void main() { streamChatThemeData: theme, connectivityStream: Stream.value(ConnectivityResult.mobile), child: SizedBox( - child: ReactionBubble( + child: StreamReactionBubble( reactions: [ Reaction( type: 'like', @@ -62,7 +62,7 @@ void main() { connectivityStream: Stream.value(ConnectivityResult.mobile), child: Container( color: Colors.black, - child: ReactionBubble( + child: StreamReactionBubble( reactions: [ Reaction( type: 'like', @@ -99,7 +99,7 @@ void main() { connectivityStream: Stream.value(ConnectivityResult.mobile), child: Container( color: Colors.black, - child: ReactionBubble( + child: StreamReactionBubble( reactions: [ Reaction( type: 'like', @@ -144,7 +144,7 @@ void main() { connectivityStream: Stream.value(ConnectivityResult.mobile), child: Container( color: Colors.black, - child: ReactionBubble( + child: StreamReactionBubble( reactions: [ Reaction( type: 'like', @@ -187,7 +187,7 @@ void main() { connectivityStream: Stream.value(ConnectivityResult.mobile), streamChatThemeData: StreamChatThemeData.fromTheme(themeData), child: SizedBox( - child: ReactionBubble( + child: StreamReactionBubble( reactions: [ Reaction( type: 'like', diff --git a/packages/stream_chat_flutter/test/src/system_message_test.dart b/packages/stream_chat_flutter/test/src/system_message_test.dart index 24eccdf6..c723ff24 100644 --- a/packages/stream_chat_flutter/test/src/system_message_test.dart +++ b/packages/stream_chat_flutter/test/src/system_message_test.dart @@ -40,7 +40,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: SystemMessage( + body: StreamSystemMessage( onMessageTap: (m) => tapped = true, message: Message( text: 'demo message', @@ -51,7 +51,7 @@ void main() { ), )); - await tester.tap(find.byType(SystemMessage)); + await tester.tap(find.byType(StreamSystemMessage)); expect(find.text('demo message'), findsOneWidget); expect(tapped, true); @@ -94,7 +94,7 @@ void main() { showLoading: false, channel: channel, child: Center( - child: SystemMessage( + child: StreamSystemMessage( message: Message( text: 'demo message', ), @@ -146,7 +146,7 @@ void main() { showLoading: false, channel: channel, child: Center( - child: SystemMessage( + child: StreamSystemMessage( message: Message( text: 'demo message', ), diff --git a/packages/stream_chat_flutter/test/src/theme/avatar_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/avatar_theme_test.dart index 63e6da86..8d055d52 100644 --- a/packages/stream_chat_flutter/test/src/theme/avatar_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/avatar_theme_test.dart @@ -4,22 +4,23 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() { test('AvatarThemeData copyWith, ==, hashCode basics', () { - expect(const AvatarThemeData(), const AvatarThemeData().copyWith()); - expect(const AvatarThemeData().hashCode, - const AvatarThemeData().copyWith().hashCode); + expect(const StreamAvatarThemeData(), + const StreamAvatarThemeData().copyWith()); + expect(const StreamAvatarThemeData().hashCode, + const StreamAvatarThemeData().copyWith().hashCode); }); group('AvatarThemeData lerps correctly', () { test('Lerp completely', () { expect( - const AvatarThemeData() + const StreamAvatarThemeData() .lerp(_avatarThemeDataControl1, _avatarThemeDataControl2, 1), _avatarThemeDataControl2); }); test('Lerp halfway', () { expect( - const AvatarThemeData() + const StreamAvatarThemeData() .lerp(_avatarThemeDataControl1, _avatarThemeDataControl2, 0.5), _avatarThemeDataControlMidLerp); }); @@ -31,9 +32,9 @@ void main() { }); } -const _avatarThemeDataControl1 = AvatarThemeData(); +const _avatarThemeDataControl1 = StreamAvatarThemeData(); -final _avatarThemeDataControlMidLerp = AvatarThemeData( +final _avatarThemeDataControlMidLerp = StreamAvatarThemeData( borderRadius: BorderRadius.circular(16), constraints: const BoxConstraints.tightFor( height: 33, @@ -41,7 +42,7 @@ final _avatarThemeDataControlMidLerp = AvatarThemeData( ), ); -final _avatarThemeDataControl2 = AvatarThemeData( +final _avatarThemeDataControl2 = StreamAvatarThemeData( borderRadius: BorderRadius.circular(12), constraints: const BoxConstraints.tightFor( height: 34, diff --git a/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart index 475b1084..1b5499dd 100644 --- a/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/channel_header_theme_test.dart @@ -4,10 +4,10 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() { test('ChannelHeaderThemeData copyWith, ==, hashCode basics', () { - expect(const ChannelHeaderThemeData(), - const ChannelHeaderThemeData().copyWith()); - expect(const ChannelHeaderThemeData().hashCode, - const ChannelHeaderThemeData().copyWith().hashCode); + expect(const StreamChannelHeaderThemeData(), + const StreamChannelHeaderThemeData().copyWith()); + expect(const StreamChannelHeaderThemeData().hashCode, + const StreamChannelHeaderThemeData().copyWith().hashCode); }); group('ChannelHeaderThemeData lerps', () { @@ -15,7 +15,7 @@ void main() { '''Light ChannelHeaderThemeData lerps completely to dark ChannelHeaderThemeData''', () { expect( - const ChannelHeaderThemeData() + const StreamChannelHeaderThemeData() .lerp(_channelThemeControl, _channelThemeControlDark, 1), _channelThemeControlDark); }); @@ -24,7 +24,7 @@ void main() { '''Light ChannelHeaderThemeData lerps halfway to dark ChannelHeaderThemeData''', () { expect( - const ChannelHeaderThemeData() + const StreamChannelHeaderThemeData() .lerp(_channelThemeControl, _channelThemeControlDark, 0.5), _channelThemeControlMidLerp); }); @@ -33,7 +33,7 @@ void main() { '''Dark ChannelHeaderThemeData lerps completely to light ChannelHeaderThemeData''', () { expect( - const ChannelHeaderThemeData() + const StreamChannelHeaderThemeData() .lerp(_channelThemeControlDark, _channelThemeControl, 1), _channelThemeControl); }); @@ -45,8 +45,8 @@ void main() { }); } -final _channelThemeControl = ChannelHeaderThemeData( - avatarTheme: AvatarThemeData( +final _channelThemeControl = StreamChannelHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, @@ -54,16 +54,16 @@ final _channelThemeControl = ChannelHeaderThemeData( ), ), color: const Color(0xff101418), - titleStyle: TextTheme.light().headlineBold.copyWith( + titleStyle: StreamTextTheme.light().headlineBold.copyWith( color: const Color(0xffffffff), ), - subtitleStyle: TextTheme.light().footnote.copyWith( + subtitleStyle: StreamTextTheme.light().footnote.copyWith( color: const Color(0xff7a7a7a), ), ); -final _channelThemeControlMidLerp = ChannelHeaderThemeData( - avatarTheme: AvatarThemeData( +final _channelThemeControlMidLerp = StreamChannelHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, @@ -76,22 +76,22 @@ final _channelThemeControlMidLerp = ChannelHeaderThemeData( fontWeight: FontWeight.bold, fontSize: 16, ), - subtitleStyle: TextTheme.light().footnote.copyWith( + subtitleStyle: StreamTextTheme.light().footnote.copyWith( color: const Color(0xff7a7a7a), ), ); -final _channelThemeControlDark = ChannelHeaderThemeData( - avatarTheme: AvatarThemeData( +final _channelThemeControlDark = StreamChannelHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, width: 40, ), ), - color: ColorTheme.dark().barsBg, - titleStyle: TextTheme.dark().headlineBold, - subtitleStyle: TextTheme.dark().footnote.copyWith( + color: StreamColorTheme.dark().barsBg, + titleStyle: StreamTextTheme.dark().headlineBold, + subtitleStyle: StreamTextTheme.dark().footnote.copyWith( color: const Color(0xff7A7A7A), ), ); diff --git a/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart index aa378f3a..14c09706 100644 --- a/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/channel_list_header_theme_test.dart @@ -4,10 +4,10 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() { test('ChannelListHeaderThemeData copyWith, ==, hashCode basics', () { - expect(const ChannelListHeaderThemeData(), - const ChannelListHeaderThemeData().copyWith()); - expect(const ChannelListHeaderThemeData().hashCode, - const ChannelListHeaderThemeData().copyWith().hashCode); + expect(const StreamChannelListHeaderThemeData(), + const StreamChannelListHeaderThemeData().copyWith()); + expect(const StreamChannelListHeaderThemeData().hashCode, + const StreamChannelListHeaderThemeData().copyWith().hashCode); }); group('ChannelListHeaderThemeData lerps', () { @@ -15,7 +15,7 @@ void main() { '''Light ChannelListHeaderThemeData lerps completely to dark ChannelListHeaderThemeData''', () { expect( - const ChannelListHeaderThemeData().lerp( + const StreamChannelListHeaderThemeData().lerp( _channelListHeaderThemeControl, _channelListHeaderThemeControlDark, 1), @@ -26,7 +26,7 @@ void main() { '''Light ChannelListHeaderThemeData lerps halfway to dark ChannelListHeaderThemeData''', () { expect( - const ChannelListHeaderThemeData().lerp( + const StreamChannelListHeaderThemeData().lerp( _channelListHeaderThemeControl, _channelListHeaderThemeControlDark, 0.5), @@ -37,7 +37,7 @@ void main() { '''Dark ChannelListHeaderThemeData lerps completely to light ChannelListHeaderThemeData''', () { expect( - const ChannelListHeaderThemeData().lerp( + const StreamChannelListHeaderThemeData().lerp( _channelListHeaderThemeControlDark, _channelListHeaderThemeControl, 1), @@ -53,20 +53,20 @@ void main() { }); } -final _channelListHeaderThemeControl = ChannelListHeaderThemeData( - avatarTheme: AvatarThemeData( +final _channelListHeaderThemeControl = StreamChannelListHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, width: 40, ), ), - color: ColorTheme.light().barsBg, - titleStyle: TextTheme.light().headlineBold, + color: StreamColorTheme.light().barsBg, + titleStyle: StreamTextTheme.light().headlineBold, ); -final _channelListHeaderThemeControlMidLerp = ChannelListHeaderThemeData( - avatarTheme: AvatarThemeData( +final _channelListHeaderThemeControlMidLerp = StreamChannelListHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, @@ -81,14 +81,14 @@ final _channelListHeaderThemeControlMidLerp = ChannelListHeaderThemeData( ), ); -final _channelListHeaderThemeControlDark = ChannelListHeaderThemeData( - avatarTheme: AvatarThemeData( +final _channelListHeaderThemeControlDark = StreamChannelListHeaderThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, width: 40, ), ), - color: ColorTheme.dark().barsBg, - titleStyle: TextTheme.dark().headlineBold, + color: StreamColorTheme.dark().barsBg, + titleStyle: StreamTextTheme.dark().headlineBold, ); diff --git a/packages/stream_chat_flutter/test/src/theme/channel_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/channel_list_view_theme_test.dart index 079c01e3..37de3140 100644 --- a/packages/stream_chat_flutter/test/src/theme/channel_list_view_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/channel_list_view_theme_test.dart @@ -6,16 +6,18 @@ import '../mocks.dart'; void main() { test('ChannelListViewThemeData copyWith, ==, hashCode basics', () { - expect(const ChannelListViewThemeData(), - const ChannelListViewThemeData().copyWith()); + expect(const StreamChannelListViewThemeData(), + const StreamChannelListViewThemeData().copyWith()); }); test( '''Light ChannelListViewThemeData lerps completely to dark ChannelListViewThemeData''', () { expect( - const ChannelListViewThemeData().lerp(_channelListViewThemeDataControl, - _channelListViewThemeDataControlDark, 1), + const StreamChannelListViewThemeData().lerp( + _channelListViewThemeDataControl, + _channelListViewThemeDataControlDark, + 1), _channelListViewThemeDataControlDark); }); @@ -23,8 +25,10 @@ void main() { '''Light ChannelListViewThemeData lerps halfway to dark ChannelListViewThemeData''', () { expect( - const ChannelListViewThemeData().lerp(_channelListViewThemeDataControl, - _channelListViewThemeDataControlDark, 0.5), + const StreamChannelListViewThemeData().lerp( + _channelListViewThemeDataControl, + _channelListViewThemeDataControlDark, + 0.5), _channelListViewThemeDataControlHalfLerp); }); @@ -32,7 +36,7 @@ void main() { '''Dark ChannelListViewThemeData lerps completely to light ChannelListViewThemeData''', () { expect( - const ChannelListViewThemeData().lerp( + const StreamChannelListViewThemeData().lerp( _channelListViewThemeDataControlDark, _channelListViewThemeDataControl, 1), @@ -70,7 +74,7 @@ void main() { ), ); - final channelListViewTheme = ChannelListViewTheme.of(_context); + final channelListViewTheme = StreamChannelListViewTheme.of(_context); expect(channelListViewTheme.backgroundColor, _channelListViewThemeDataControl.backgroundColor); }); @@ -92,7 +96,7 @@ void main() { return Scaffold( body: StreamChannel( channel: MockChannel(), - child: const MessageListView(), + child: const StreamMessageListView(), ), ); }, @@ -100,20 +104,20 @@ void main() { ), ); - final channelListViewTheme = ChannelListViewTheme.of(_context); + final channelListViewTheme = StreamChannelListViewTheme.of(_context); expect(channelListViewTheme.backgroundColor, _channelListViewThemeDataControlDark.backgroundColor); }); } -final _channelListViewThemeDataControl = ChannelListViewThemeData( - backgroundColor: ColorTheme.light().appBg, +final _channelListViewThemeDataControl = StreamChannelListViewThemeData( + backgroundColor: StreamColorTheme.light().appBg, ); -const _channelListViewThemeDataControlHalfLerp = ChannelListViewThemeData( +const _channelListViewThemeDataControlHalfLerp = StreamChannelListViewThemeData( backgroundColor: Color(0xff818384), ); -final _channelListViewThemeDataControlDark = ChannelListViewThemeData( - backgroundColor: ColorTheme.dark().appBg, +final _channelListViewThemeDataControlDark = StreamChannelListViewThemeData( + backgroundColor: StreamColorTheme.dark().appBg, ); diff --git a/packages/stream_chat_flutter/test/src/theme/channel_preview_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/channel_preview_theme_test.dart index dc5c0529..782be835 100644 --- a/packages/stream_chat_flutter/test/src/theme/channel_preview_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/channel_preview_theme_test.dart @@ -4,10 +4,10 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() { test('ChannelPreviewThemeData copyWith, ==, hashCode basics', () { - expect(const ChannelPreviewThemeData(), - const ChannelPreviewThemeData().copyWith()); - expect(const ChannelPreviewThemeData().hashCode, - const ChannelPreviewThemeData().copyWith().hashCode); + expect(const StreamChannelPreviewThemeData(), + const StreamChannelPreviewThemeData().copyWith()); + expect(const StreamChannelPreviewThemeData().hashCode, + const StreamChannelPreviewThemeData().copyWith().hashCode); }); group('ChannelPreviewThemeData lerps', () { @@ -15,7 +15,7 @@ void main() { '''Light ChannelPreviewThemeData lerps completely to dark ChannelPreviewThemeData''', () { expect( - const ChannelPreviewThemeData().lerp( + const StreamChannelPreviewThemeData().lerp( _channelPreviewThemeControl, _channelPreviewThemeControlDark, 1), _channelPreviewThemeControlDark); }); @@ -24,8 +24,10 @@ void main() { '''Light ChannelPreviewThemeData lerps halfway to dark ChannelPreviewThemeData''', () { expect( - const ChannelPreviewThemeData().lerp(_channelPreviewThemeControl, - _channelPreviewThemeControlDark, 0.5), + const StreamChannelPreviewThemeData().lerp( + _channelPreviewThemeControl, + _channelPreviewThemeControlDark, + 0.5), _channelPreviewThemeControlMidLerp); }); @@ -33,7 +35,7 @@ void main() { '''Dark ChannelPreviewThemeData lerps completely to light ChannelPreviewThemeData''', () { expect( - const ChannelPreviewThemeData().lerp( + const StreamChannelPreviewThemeData().lerp( _channelPreviewThemeControlDark, _channelPreviewThemeControl, 1), _channelPreviewThemeControl); }); @@ -45,28 +47,28 @@ void main() { }); } -final _channelPreviewThemeControl = ChannelPreviewThemeData( - unreadCounterColor: ColorTheme.light().accentError, - avatarTheme: AvatarThemeData( +final _channelPreviewThemeControl = StreamChannelPreviewThemeData( + unreadCounterColor: StreamColorTheme.light().accentError, + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, width: 40, ), ), - titleStyle: TextTheme.light().bodyBold, - subtitleStyle: TextTheme.light().footnote.copyWith( + titleStyle: StreamTextTheme.light().bodyBold, + subtitleStyle: StreamTextTheme.light().footnote.copyWith( color: const Color(0xff7A7A7A), ), - lastMessageAtStyle: TextTheme.light().footnote.copyWith( - color: ColorTheme.light().textHighEmphasis.withOpacity(0.5), + lastMessageAtStyle: StreamTextTheme.light().footnote.copyWith( + color: StreamColorTheme.light().textHighEmphasis.withOpacity(0.5), ), indicatorIconSize: 16, ); -final _channelPreviewThemeControlMidLerp = ChannelPreviewThemeData( +final _channelPreviewThemeControlMidLerp = StreamChannelPreviewThemeData( unreadCounterColor: const Color(0xffff3742), - avatarTheme: AvatarThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, @@ -82,27 +84,27 @@ final _channelPreviewThemeControlMidLerp = ChannelPreviewThemeData( color: Color(0xff7a7a7a), fontSize: 12, ), - lastMessageAtStyle: TextTheme.light().footnote.copyWith( + lastMessageAtStyle: StreamTextTheme.light().footnote.copyWith( color: const Color(0x807f7f7f).withOpacity(0.5), ), indicatorIconSize: 16, ); -final _channelPreviewThemeControlDark = ChannelPreviewThemeData( - unreadCounterColor: ColorTheme.dark().accentError, - avatarTheme: AvatarThemeData( +final _channelPreviewThemeControlDark = StreamChannelPreviewThemeData( + unreadCounterColor: StreamColorTheme.dark().accentError, + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 40, width: 40, ), ), - titleStyle: TextTheme.dark().bodyBold, - subtitleStyle: TextTheme.dark().footnote.copyWith( + titleStyle: StreamTextTheme.dark().bodyBold, + subtitleStyle: StreamTextTheme.dark().footnote.copyWith( color: const Color(0xff7A7A7A), ), - lastMessageAtStyle: TextTheme.dark().footnote.copyWith( - color: ColorTheme.dark().textHighEmphasis.withOpacity(0.5), + lastMessageAtStyle: StreamTextTheme.dark().footnote.copyWith( + color: StreamColorTheme.dark().textHighEmphasis.withOpacity(0.5), ), indicatorIconSize: 16, ); diff --git a/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart index 6a73e34e..0193cb35 100644 --- a/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart @@ -7,18 +7,20 @@ class MockStreamChatClient extends Mock implements StreamChatClient {} void main() { test('GalleryFooterThemeData copyWith, ==, hashCode basics', () { - expect(const GalleryFooterThemeData(), - const GalleryFooterThemeData().copyWith()); - expect(const GalleryFooterThemeData().hashCode, - const GalleryFooterThemeData().copyWith().hashCode); + expect(const StreamGalleryFooterThemeData(), + const StreamGalleryFooterThemeData().copyWith()); + expect(const StreamGalleryFooterThemeData().hashCode, + const StreamGalleryFooterThemeData().copyWith().hashCode); }); test( '''Light GalleryFooterThemeData lerps completely to dark GalleryFooterThemeData''', () { expect( - const GalleryFooterThemeData().lerp(_galleryFooterThemeDataControl, - _galleryFooterThemeDataControlDark, 1), + const StreamGalleryFooterThemeData().lerp( + _galleryFooterThemeDataControl, + _galleryFooterThemeDataControlDark, + 1), _galleryFooterThemeDataControlDark); }); @@ -26,8 +28,10 @@ void main() { '''Light GalleryFooterThemeData lerps halfway to dark GalleryFooterThemeData''', () { expect( - const GalleryFooterThemeData().lerp(_galleryFooterThemeDataControl, - _galleryFooterThemeDataControlDark, 0.5), + const StreamGalleryFooterThemeData().lerp( + _galleryFooterThemeDataControl, + _galleryFooterThemeDataControlDark, + 0.5), _galleryFooterThemeDataControlMidLerp); }); @@ -35,8 +39,10 @@ void main() { '''Dark GalleryFooterThemeData lerps completely to light GalleryFooterThemeData''', () { expect( - const GalleryFooterThemeData().lerp(_galleryFooterThemeDataControlDark, - _galleryFooterThemeDataControl, 1), + const StreamGalleryFooterThemeData().lerp( + _galleryFooterThemeDataControlDark, + _galleryFooterThemeDataControl, + 1), _galleryFooterThemeDataControl); }); @@ -68,7 +74,7 @@ void main() { builder: (context) { _context = context; return Scaffold( - appBar: GalleryFooter( + appBar: StreamGalleryFooter( message: Message(), ), ); @@ -77,7 +83,7 @@ void main() { ), ); - final imageFooterTheme = GalleryFooterTheme.of(_context); + final imageFooterTheme = StreamGalleryFooterTheme.of(_context); expect(imageFooterTheme.backgroundColor, _galleryFooterThemeDataControl.backgroundColor); expect(imageFooterTheme.shareIconColor, @@ -111,7 +117,7 @@ void main() { builder: (context) { _context = context; return Scaffold( - appBar: GalleryFooter( + appBar: StreamGalleryFooter( message: Message(), ), ); @@ -120,7 +126,7 @@ void main() { ), ); - final imageFooterTheme = GalleryFooterTheme.of(_context); + final imageFooterTheme = StreamGalleryFooterTheme.of(_context); expect(imageFooterTheme.backgroundColor, _galleryFooterThemeDataControlDark.backgroundColor); expect(imageFooterTheme.shareIconColor, @@ -141,19 +147,19 @@ void main() { } // Light theme control -final _galleryFooterThemeDataControl = GalleryFooterThemeData( - backgroundColor: ColorTheme.light().barsBg, - shareIconColor: ColorTheme.light().textHighEmphasis, - titleTextStyle: TextTheme.light().headlineBold, - gridIconButtonColor: ColorTheme.light().textHighEmphasis, - bottomSheetBackgroundColor: ColorTheme.light().barsBg, - bottomSheetBarrierColor: ColorTheme.light().overlay, - bottomSheetCloseIconColor: ColorTheme.light().textHighEmphasis, - bottomSheetPhotosTextStyle: TextTheme.light().headlineBold, +final _galleryFooterThemeDataControl = StreamGalleryFooterThemeData( + backgroundColor: StreamColorTheme.light().barsBg, + shareIconColor: StreamColorTheme.light().textHighEmphasis, + titleTextStyle: StreamTextTheme.light().headlineBold, + gridIconButtonColor: StreamColorTheme.light().textHighEmphasis, + bottomSheetBackgroundColor: StreamColorTheme.light().barsBg, + bottomSheetBarrierColor: StreamColorTheme.light().overlay, + bottomSheetCloseIconColor: StreamColorTheme.light().textHighEmphasis, + bottomSheetPhotosTextStyle: StreamTextTheme.light().headlineBold, ); // Mid-lerp theme control -const _galleryFooterThemeDataControlMidLerp = GalleryFooterThemeData( +const _galleryFooterThemeDataControlMidLerp = StreamGalleryFooterThemeData( backgroundColor: Color(0xff87898b), shareIconColor: Color(0xff7f7f7f), titleTextStyle: TextStyle( @@ -173,13 +179,13 @@ const _galleryFooterThemeDataControlMidLerp = GalleryFooterThemeData( ); // Dark theme control -final _galleryFooterThemeDataControlDark = GalleryFooterThemeData( - backgroundColor: ColorTheme.dark().barsBg, - shareIconColor: ColorTheme.dark().textHighEmphasis, - titleTextStyle: TextTheme.dark().headlineBold, - gridIconButtonColor: ColorTheme.dark().textHighEmphasis, - bottomSheetBackgroundColor: ColorTheme.dark().barsBg, - bottomSheetBarrierColor: ColorTheme.dark().overlay, - bottomSheetCloseIconColor: ColorTheme.dark().textHighEmphasis, - bottomSheetPhotosTextStyle: TextTheme.dark().headlineBold, +final _galleryFooterThemeDataControlDark = StreamGalleryFooterThemeData( + backgroundColor: StreamColorTheme.dark().barsBg, + shareIconColor: StreamColorTheme.dark().textHighEmphasis, + titleTextStyle: StreamTextTheme.dark().headlineBold, + gridIconButtonColor: StreamColorTheme.dark().textHighEmphasis, + bottomSheetBackgroundColor: StreamColorTheme.dark().barsBg, + bottomSheetBarrierColor: StreamColorTheme.dark().overlay, + bottomSheetCloseIconColor: StreamColorTheme.dark().textHighEmphasis, + bottomSheetPhotosTextStyle: StreamTextTheme.dark().headlineBold, ); diff --git a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart index 534008ba..0ded6bbf 100644 --- a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart @@ -7,18 +7,20 @@ class MockStreamChatClient extends Mock implements StreamChatClient {} void main() { test('GalleryHeaderThemeData copyWith, ==, hashCode basics', () { - expect(const GalleryHeaderThemeData(), - const GalleryHeaderThemeData().copyWith()); - expect(const GalleryHeaderThemeData().hashCode, - const GalleryHeaderThemeData().copyWith().hashCode); + expect(const StreamGalleryHeaderThemeData(), + const StreamGalleryHeaderThemeData().copyWith()); + expect(const StreamGalleryHeaderThemeData().hashCode, + const StreamGalleryHeaderThemeData().copyWith().hashCode); }); test( '''Light GalleryHeaderThemeData lerps completely to dark GalleryHeaderThemeData''', () { expect( - const GalleryHeaderThemeData().lerp(_galleryHeaderThemeDataControl, - _galleryHeaderThemeDataDarkControl, 1), + const StreamGalleryHeaderThemeData().lerp( + _galleryHeaderThemeDataControl, + _galleryHeaderThemeDataDarkControl, + 1), _galleryHeaderThemeDataDarkControl); }); @@ -26,8 +28,10 @@ void main() { '''Light GalleryHeaderThemeData lerps halfway to dark GalleryHeaderThemeData''', () { expect( - const GalleryHeaderThemeData().lerp(_galleryHeaderThemeDataControl, - _galleryHeaderThemeDataDarkControl, 0.5), + const StreamGalleryHeaderThemeData().lerp( + _galleryHeaderThemeDataControl, + _galleryHeaderThemeDataDarkControl, + 0.5), _galleryHeaderThemeDataHalfLerpControl); }); @@ -35,8 +39,10 @@ void main() { '''Dark GalleryHeaderThemeData lerps completely to light GalleryHeaderThemeData''', () { expect( - const GalleryHeaderThemeData().lerp(_galleryHeaderThemeDataDarkControl, - _galleryHeaderThemeDataControl, 1), + const StreamGalleryHeaderThemeData().lerp( + _galleryHeaderThemeDataDarkControl, + _galleryHeaderThemeDataControl, + 1), _galleryHeaderThemeDataControl); }); @@ -61,7 +67,7 @@ void main() { builder: (context) { _context = context; return Scaffold( - appBar: GalleryHeader( + appBar: StreamGalleryHeader( message: Message(), ), ); @@ -70,7 +76,7 @@ void main() { ), ); - final imageHeaderTheme = GalleryHeaderTheme.of(_context); + final imageHeaderTheme = StreamGalleryHeaderTheme.of(_context); expect(imageHeaderTheme.closeButtonColor, _galleryHeaderThemeDataControl.closeButtonColor); expect(imageHeaderTheme.backgroundColor, @@ -100,7 +106,7 @@ void main() { builder: (context) { _context = context; return Scaffold( - appBar: GalleryHeader( + appBar: StreamGalleryHeader( message: Message(), ), ); @@ -109,7 +115,7 @@ void main() { ), ); - final imageHeaderTheme = GalleryHeaderTheme.of(_context); + final imageHeaderTheme = StreamGalleryHeaderTheme.of(_context); expect(imageHeaderTheme.closeButtonColor, _galleryHeaderThemeDataDarkControl.closeButtonColor); expect(imageHeaderTheme.backgroundColor, @@ -126,7 +132,7 @@ void main() { } // Light theme test control. -final _galleryHeaderThemeDataControl = GalleryHeaderThemeData( +final _galleryHeaderThemeDataControl = StreamGalleryHeaderThemeData( closeButtonColor: const Color(0xff000000), backgroundColor: const Color(0xffffffff), iconMenuPointColor: const Color(0xff000000), @@ -145,7 +151,7 @@ final _galleryHeaderThemeDataControl = GalleryHeaderThemeData( ); // Light theme test control. -final _galleryHeaderThemeDataHalfLerpControl = GalleryHeaderThemeData( +final _galleryHeaderThemeDataHalfLerpControl = StreamGalleryHeaderThemeData( closeButtonColor: const Color(0xff7f7f7f), backgroundColor: const Color(0xff87898b), iconMenuPointColor: const Color(0xff7f7f7f), @@ -164,7 +170,7 @@ final _galleryHeaderThemeDataHalfLerpControl = GalleryHeaderThemeData( ); // Dark theme test control. -final _galleryHeaderThemeDataDarkControl = GalleryHeaderThemeData( +final _galleryHeaderThemeDataDarkControl = StreamGalleryHeaderThemeData( closeButtonColor: const Color(0xffffffff), backgroundColor: const Color(0xff101418), iconMenuPointColor: const Color(0xffffffff), diff --git a/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart index c618d65c..3c62baea 100644 --- a/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/message_input_theme_test.dart @@ -4,30 +4,30 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() { test('MessageInputThemeData copyWith, ==, hashCode basics', () { - expect(const MessageInputThemeData(), - const MessageInputThemeData().copyWith()); - expect(const MessageInputThemeData().hashCode, - const MessageInputThemeData().copyWith().hashCode); + expect(const StreamMessageInputThemeData(), + const StreamMessageInputThemeData().copyWith()); + expect(const StreamMessageInputThemeData().hashCode, + const StreamMessageInputThemeData().copyWith().hashCode); }); group('MessageInputThemeData lerps correctly', () { test('Lerp completely from light to dark', () { expect( - const MessageInputThemeData().lerp( + const StreamMessageInputThemeData().lerp( _messageInputThemeControl, _messageInputThemeControlDark, 1), _messageInputThemeControlDark); }); test('Lerp halfway from light to dark', () { expect( - const MessageInputThemeData().lerp( + const StreamMessageInputThemeData().lerp( _messageInputThemeControl, _messageInputThemeControlDark, 0.5), _messageInputThemeControlMidLerp); }); test('Lerp completely from dark to light', () { expect( - const MessageInputThemeData().lerp( + const StreamMessageInputThemeData().lerp( _messageInputThemeControlDark, _messageInputThemeControl, 1), _messageInputThemeControl); }); @@ -39,33 +39,33 @@ void main() { }); } -final _messageInputThemeControl = MessageInputThemeData( +final _messageInputThemeControl = StreamMessageInputThemeData( borderRadius: BorderRadius.circular(20), sendAnimationDuration: const Duration(milliseconds: 300), - actionButtonColor: ColorTheme.light().accentPrimary, - actionButtonIdleColor: ColorTheme.light().textLowEmphasis, - expandButtonColor: ColorTheme.light().accentPrimary, - sendButtonColor: ColorTheme.light().accentPrimary, - sendButtonIdleColor: ColorTheme.light().disabled, - inputBackgroundColor: ColorTheme.light().barsBg, - inputTextStyle: TextTheme.light().body, + actionButtonColor: StreamColorTheme.light().accentPrimary, + actionButtonIdleColor: StreamColorTheme.light().textLowEmphasis, + expandButtonColor: StreamColorTheme.light().accentPrimary, + sendButtonColor: StreamColorTheme.light().accentPrimary, + sendButtonIdleColor: StreamColorTheme.light().disabled, + inputBackgroundColor: StreamColorTheme.light().barsBg, + inputTextStyle: StreamTextTheme.light().body, idleBorderGradient: LinearGradient( stops: const [0.0, 1.0], colors: [ - ColorTheme.light().disabled, - ColorTheme.light().disabled, + StreamColorTheme.light().disabled, + StreamColorTheme.light().disabled, ], ), activeBorderGradient: LinearGradient( stops: const [0.0, 1.0], colors: [ - ColorTheme.light().disabled, - ColorTheme.light().disabled, + StreamColorTheme.light().disabled, + StreamColorTheme.light().disabled, ], ), ); -final _messageInputThemeControlMidLerp = MessageInputThemeData( +final _messageInputThemeControlMidLerp = StreamMessageInputThemeData( borderRadius: BorderRadius.circular(20), sendAnimationDuration: const Duration(milliseconds: 300), inputBackgroundColor: const Color(0xff87898b), @@ -95,28 +95,28 @@ final _messageInputThemeControlMidLerp = MessageInputThemeData( ), ); -final _messageInputThemeControlDark = MessageInputThemeData( +final _messageInputThemeControlDark = StreamMessageInputThemeData( borderRadius: BorderRadius.circular(20), sendAnimationDuration: const Duration(milliseconds: 300), - actionButtonColor: ColorTheme.dark().accentPrimary, - actionButtonIdleColor: ColorTheme.dark().textLowEmphasis, - expandButtonColor: ColorTheme.dark().accentPrimary, - sendButtonColor: ColorTheme.dark().accentPrimary, - sendButtonIdleColor: ColorTheme.dark().disabled, - inputBackgroundColor: ColorTheme.dark().barsBg, - inputTextStyle: TextTheme.dark().body, + actionButtonColor: StreamColorTheme.dark().accentPrimary, + actionButtonIdleColor: StreamColorTheme.dark().textLowEmphasis, + expandButtonColor: StreamColorTheme.dark().accentPrimary, + sendButtonColor: StreamColorTheme.dark().accentPrimary, + sendButtonIdleColor: StreamColorTheme.dark().disabled, + inputBackgroundColor: StreamColorTheme.dark().barsBg, + inputTextStyle: StreamTextTheme.dark().body, idleBorderGradient: LinearGradient( stops: const [0.0, 1.0], colors: [ - ColorTheme.dark().disabled, - ColorTheme.dark().disabled, + StreamColorTheme.dark().disabled, + StreamColorTheme.dark().disabled, ], ), activeBorderGradient: LinearGradient( stops: const [0.0, 1.0], colors: [ - ColorTheme.dark().disabled, - ColorTheme.dark().disabled, + StreamColorTheme.dark().disabled, + StreamColorTheme.dark().disabled, ], ), ); diff --git a/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart index 94becc06..264710ec 100644 --- a/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/message_list_view_theme_test.dart @@ -9,18 +9,20 @@ class MockStreamChatClient extends Mock implements StreamChatClient {} void main() { test('MessageListViewThemeData copyWith, ==, hashCode basics', () { - expect(const MessageListViewThemeData(), - const MessageListViewThemeData().copyWith()); - expect(const MessageListViewThemeData().hashCode, - const MessageListViewThemeData().copyWith().hashCode); + expect(const StreamMessageListViewThemeData(), + const StreamMessageListViewThemeData().copyWith()); + expect(const StreamMessageListViewThemeData().hashCode, + const StreamMessageListViewThemeData().copyWith().hashCode); }); test( '''Light MessageListViewThemeData lerps completely to dark MessageListViewThemeData''', () { expect( - const MessageListViewThemeData().lerp(_messageListViewThemeDataControl, - _messageListViewThemeDataControlDark, 1), + const StreamMessageListViewThemeData().lerp( + _messageListViewThemeDataControl, + _messageListViewThemeDataControlDark, + 1), _messageListViewThemeDataControlDark); }); @@ -28,8 +30,10 @@ void main() { '''Light MessageListViewThemeData lerps halfway to dark MessageListViewThemeData''', () { expect( - const MessageListViewThemeData().lerp(_messageListViewThemeDataControl, - _messageListViewThemeDataControlDark, 0.5), + const StreamMessageListViewThemeData().lerp( + _messageListViewThemeDataControl, + _messageListViewThemeDataControlDark, + 0.5), _messageListViewThemeDataControlHalfLerp); }); @@ -37,7 +41,7 @@ void main() { '''Dark MessageListViewThemeData lerps completely to light MessageListViewThemeData''', () { expect( - const MessageListViewThemeData().lerp( + const StreamMessageListViewThemeData().lerp( _messageListViewThemeDataControlDark, _messageListViewThemeDataControl, 1), @@ -67,7 +71,7 @@ void main() { return Scaffold( body: StreamChannel( channel: MockChannel(), - child: const MessageListView(), + child: const StreamMessageListView(), ), ); }, @@ -75,7 +79,7 @@ void main() { ), ); - final messageListViewTheme = MessageListViewTheme.of(_context); + final messageListViewTheme = StreamMessageListViewTheme.of(_context); expect(messageListViewTheme.backgroundColor, _messageListViewThemeDataControl.backgroundColor); }); @@ -97,7 +101,7 @@ void main() { return Scaffold( body: StreamChannel( channel: MockChannel(), - child: const MessageListView(), + child: const StreamMessageListView(), ), ); }, @@ -105,7 +109,7 @@ void main() { ), ); - final messageListViewTheme = MessageListViewTheme.of(_context); + final messageListViewTheme = StreamMessageListViewTheme.of(_context); expect(messageListViewTheme.backgroundColor, _messageListViewThemeDataControlDark.backgroundColor); }); @@ -128,7 +132,7 @@ void main() { return Scaffold( body: StreamChannel( channel: MockChannel(), - child: const MessageListView(), + child: const StreamMessageListView(), ), ); }, @@ -136,25 +140,25 @@ void main() { ), ); - final messageListViewTheme = MessageListViewTheme.of(_context); + final messageListViewTheme = StreamMessageListViewTheme.of(_context); expect(messageListViewTheme.backgroundImage, _messageListViewThemeDataImage.backgroundImage); }); } -final _messageListViewThemeDataControl = MessageListViewThemeData( - backgroundColor: ColorTheme.light().barsBg, +final _messageListViewThemeDataControl = StreamMessageListViewThemeData( + backgroundColor: StreamColorTheme.light().barsBg, ); -const _messageListViewThemeDataControlHalfLerp = MessageListViewThemeData( +const _messageListViewThemeDataControlHalfLerp = StreamMessageListViewThemeData( backgroundColor: Color(0xff87898b), ); -final _messageListViewThemeDataControlDark = MessageListViewThemeData( - backgroundColor: ColorTheme.dark().barsBg, +final _messageListViewThemeDataControlDark = StreamMessageListViewThemeData( + backgroundColor: StreamColorTheme.dark().barsBg, ); -const _messageListViewThemeDataImage = MessageListViewThemeData( +const _messageListViewThemeDataImage = StreamMessageListViewThemeData( backgroundImage: DecorationImage( image: AssetImage('example/assets/background_doodle.png'), fit: BoxFit.cover, diff --git a/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart index 69c63abe..bbb27463 100644 --- a/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart @@ -6,17 +6,17 @@ import '../mocks.dart'; void main() { test('MessageSearchListViewThemeData copyWith, ==, hashCode basics', () { - expect(const MessageSearchListViewThemeData(), - const MessageSearchListViewThemeData().copyWith()); - expect(const MessageSearchListViewThemeData().hashCode, - const MessageSearchListViewThemeData().copyWith().hashCode); + expect(const StreamMessageSearchListViewThemeData(), + const StreamMessageSearchListViewThemeData().copyWith()); + expect(const StreamMessageSearchListViewThemeData().hashCode, + const StreamMessageSearchListViewThemeData().copyWith().hashCode); }); test( '''Light MessageSearchListViewThemeData lerps completely to dark MessageSearchListViewThemeData''', () { expect( - const MessageSearchListViewThemeData().lerp( + const StreamMessageSearchListViewThemeData().lerp( _messageSearchListViewThemeDataControl, _messageSearchListViewThemeDataControlDark, 1), @@ -27,7 +27,7 @@ void main() { '''Light MessageSearchListViewThemeData lerps halfway to dark MessageSearchListViewThemeData''', () { expect( - const MessageSearchListViewThemeData().lerp( + const StreamMessageSearchListViewThemeData().lerp( _messageSearchListViewThemeDataControl, _messageSearchListViewThemeDataControlDark, 0.5), @@ -38,7 +38,7 @@ void main() { '''Dark MessageSearchListViewThemeData lerps completely to light MessageSearchListViewThemeData''', () { expect( - const MessageSearchListViewThemeData().lerp( + const StreamMessageSearchListViewThemeData().lerp( _messageSearchListViewThemeDataControlDark, _messageSearchListViewThemeDataControl, 1), @@ -67,7 +67,7 @@ void main() { _context = context; return Scaffold( body: MessageSearchBloc( - child: MessageSearchListView( + child: StreamMessageSearchListView( filters: Filter.in_('members', const ['test_id']), messageQuery: 'test query', ), @@ -78,7 +78,8 @@ void main() { ), ); - final messageSearchListViewTheme = MessageSearchListViewTheme.of(_context); + final messageSearchListViewTheme = + StreamMessageSearchListViewTheme.of(_context); expect(messageSearchListViewTheme.backgroundColor, _messageSearchListViewThemeDataControl.backgroundColor); }); @@ -99,7 +100,7 @@ void main() { _context = context; return Scaffold( body: MessageSearchBloc( - child: MessageSearchListView( + child: StreamMessageSearchListView( filters: Filter.in_('members', const ['test_id']), messageQuery: 'test query', ), @@ -110,22 +111,24 @@ void main() { ), ); - final messageSearchListViewTheme = MessageSearchListViewTheme.of(_context); + final messageSearchListViewTheme = + StreamMessageSearchListViewTheme.of(_context); expect(messageSearchListViewTheme.backgroundColor, _messageSearchListViewThemeDataControlDark.backgroundColor); }); } -final _messageSearchListViewThemeDataControl = MessageSearchListViewThemeData( - backgroundColor: ColorTheme.light().appBg, +final _messageSearchListViewThemeDataControl = + StreamMessageSearchListViewThemeData( + backgroundColor: StreamColorTheme.light().appBg, ); const _messageSearchListViewThemeDataControlHalfLerp = - MessageSearchListViewThemeData( + StreamMessageSearchListViewThemeData( backgroundColor: Color(0xff818384), ); final _messageSearchListViewThemeDataControlDark = - MessageSearchListViewThemeData( - backgroundColor: ColorTheme.dark().appBg, + StreamMessageSearchListViewThemeData( + backgroundColor: StreamColorTheme.dark().appBg, ); diff --git a/packages/stream_chat_flutter/test/src/theme/message_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_theme_test.dart index 502be84a..3b6c3a6f 100644 --- a/packages/stream_chat_flutter/test/src/theme/message_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/message_theme_test.dart @@ -4,16 +4,17 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; void main() { test('MessageThemeData copyWith, ==, hashCode basics', () { - expect(const MessageThemeData(), const MessageThemeData().copyWith()); - expect(const MessageThemeData().hashCode, - const MessageThemeData().copyWith().hashCode); + expect(const StreamMessageThemeData(), + const StreamMessageThemeData().copyWith()); + expect(const StreamMessageThemeData().hashCode, + const StreamMessageThemeData().copyWith().hashCode); }); group('MessageThemeData lerps', () { test('''Light MessageThemeData lerps completely to dark MessageThemeData''', () { expect( - const MessageThemeData() + const StreamMessageThemeData() .lerp(_messageThemeControl, _messageThemeControlDark, 1), _messageThemeControlDark); }); @@ -21,7 +22,7 @@ void main() { test('''Dark MessageThemeData lerps completely to light MessageThemeData''', () { expect( - const MessageThemeData() + const StreamMessageThemeData() .lerp(_messageThemeControlDark, _messageThemeControl, 1), _messageThemeControl); }); @@ -33,23 +34,23 @@ void main() { }); } -final _messageThemeControl = MessageThemeData( - messageAuthorStyle: TextTheme.light().footnote.copyWith( - color: ColorTheme.light().textLowEmphasis, +final _messageThemeControl = StreamMessageThemeData( + messageAuthorStyle: StreamTextTheme.light().footnote.copyWith( + color: StreamColorTheme.light().textLowEmphasis, ), - messageTextStyle: TextTheme.light().body, - createdAtStyle: TextTheme.light().footnote.copyWith( - color: ColorTheme.light().textLowEmphasis, + messageTextStyle: StreamTextTheme.light().body, + createdAtStyle: StreamTextTheme.light().footnote.copyWith( + color: StreamColorTheme.light().textLowEmphasis, ), - repliesStyle: TextTheme.light().footnoteBold.copyWith( - color: ColorTheme.light().accentPrimary, + repliesStyle: StreamTextTheme.light().footnoteBold.copyWith( + color: StreamColorTheme.light().accentPrimary, ), - messageBackgroundColor: ColorTheme.light().disabled, - reactionsBackgroundColor: ColorTheme.light().barsBg, - reactionsBorderColor: ColorTheme.light().borders, - reactionsMaskColor: ColorTheme.light().appBg, - messageBorderColor: ColorTheme.light().disabled, - avatarTheme: AvatarThemeData( + messageBackgroundColor: StreamColorTheme.light().disabled, + reactionsBackgroundColor: StreamColorTheme.light().barsBg, + reactionsBorderColor: StreamColorTheme.light().borders, + reactionsMaskColor: StreamColorTheme.light().appBg, + messageBorderColor: StreamColorTheme.light().disabled, + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 32, @@ -57,28 +58,28 @@ final _messageThemeControl = MessageThemeData( ), ), messageLinksStyle: TextStyle( - color: ColorTheme.light().accentPrimary, + color: StreamColorTheme.light().accentPrimary, ), - linkBackgroundColor: ColorTheme.light().linkBg, + linkBackgroundColor: StreamColorTheme.light().linkBg, ); -final _messageThemeControlDark = MessageThemeData( - messageAuthorStyle: TextTheme.dark().footnote.copyWith( - color: ColorTheme.dark().textLowEmphasis, +final _messageThemeControlDark = StreamMessageThemeData( + messageAuthorStyle: StreamTextTheme.dark().footnote.copyWith( + color: StreamColorTheme.dark().textLowEmphasis, ), - messageTextStyle: TextTheme.dark().body, - createdAtStyle: TextTheme.dark().footnote.copyWith( - color: ColorTheme.dark().textLowEmphasis, + messageTextStyle: StreamTextTheme.dark().body, + createdAtStyle: StreamTextTheme.dark().footnote.copyWith( + color: StreamColorTheme.dark().textLowEmphasis, ), - repliesStyle: TextTheme.dark().footnoteBold.copyWith( - color: ColorTheme.dark().accentPrimary, + repliesStyle: StreamTextTheme.dark().footnoteBold.copyWith( + color: StreamColorTheme.dark().accentPrimary, ), - messageBackgroundColor: ColorTheme.dark().disabled, - reactionsBackgroundColor: ColorTheme.dark().barsBg, - reactionsBorderColor: ColorTheme.dark().borders, - reactionsMaskColor: ColorTheme.dark().appBg, - messageBorderColor: ColorTheme.dark().disabled, - avatarTheme: AvatarThemeData( + messageBackgroundColor: StreamColorTheme.dark().disabled, + reactionsBackgroundColor: StreamColorTheme.dark().barsBg, + reactionsBorderColor: StreamColorTheme.dark().borders, + reactionsMaskColor: StreamColorTheme.dark().appBg, + messageBorderColor: StreamColorTheme.dark().disabled, + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(20), constraints: const BoxConstraints.tightFor( height: 32, @@ -86,7 +87,7 @@ final _messageThemeControlDark = MessageThemeData( ), ), messageLinksStyle: TextStyle( - color: ColorTheme.dark().accentPrimary, + color: StreamColorTheme.dark().accentPrimary, ), - linkBackgroundColor: ColorTheme.dark().linkBg, + linkBackgroundColor: StreamColorTheme.dark().linkBg, ); diff --git a/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart index 3aa20744..6937f4b9 100644 --- a/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart @@ -6,15 +6,15 @@ import '../mocks.dart'; void main() { test('UserListViewThemeData copyWith, ==, hashCode basics', () { - expect(const UserListViewThemeData(), - const UserListViewThemeData().copyWith()); + expect(const StreamUserListViewThemeData(), + const StreamUserListViewThemeData().copyWith()); }); test( '''Light UserListViewThemeData lerps completely to dark UserListViewThemeData''', () { expect( - const UserListViewThemeData().lerp(_userListViewThemeDataControl, + const StreamUserListViewThemeData().lerp(_userListViewThemeDataControl, _userListViewThemeDataControlDark, 1), _userListViewThemeDataControlDark); }); @@ -23,7 +23,7 @@ void main() { '''Light UserListViewThemeData lerps halfway to dark UserListViewThemeData''', () { expect( - const UserListViewThemeData().lerp(_userListViewThemeDataControl, + const StreamUserListViewThemeData().lerp(_userListViewThemeDataControl, _userListViewThemeDataControlDark, 0.5), _userListViewThemeDataControlHalfLerp); }); @@ -32,8 +32,10 @@ void main() { '''Dark UserListViewThemeData lerps completely to light UserListViewThemeData''', () { expect( - const UserListViewThemeData().lerp(_userListViewThemeDataControlDark, - _userListViewThemeDataControl, 1), + const StreamUserListViewThemeData().lerp( + _userListViewThemeDataControlDark, + _userListViewThemeDataControl, + 1), _userListViewThemeDataControl); }); @@ -58,7 +60,7 @@ void main() { _context = context; return Scaffold( body: UsersBloc( - child: UserListView(), + child: StreamUserListView(), ), ); }, @@ -66,7 +68,7 @@ void main() { ), ); - final userListViewTheme = UserListViewTheme.of(_context); + final userListViewTheme = StreamUserListViewTheme.of(_context); expect(userListViewTheme.backgroundColor, _userListViewThemeDataControl.backgroundColor); }); @@ -87,7 +89,7 @@ void main() { _context = context; return Scaffold( body: UsersBloc( - child: UserListView(), + child: StreamUserListView(), ), ); }, @@ -95,20 +97,20 @@ void main() { ), ); - final userListViewTheme = UserListViewTheme.of(_context); + final userListViewTheme = StreamUserListViewTheme.of(_context); expect(userListViewTheme.backgroundColor, _userListViewThemeDataControlDark.backgroundColor); }); } -final _userListViewThemeDataControl = UserListViewThemeData( - backgroundColor: ColorTheme.light().appBg, +final _userListViewThemeDataControl = StreamUserListViewThemeData( + backgroundColor: StreamColorTheme.light().appBg, ); -const _userListViewThemeDataControlHalfLerp = UserListViewThemeData( +const _userListViewThemeDataControlHalfLerp = StreamUserListViewThemeData( backgroundColor: Color(0xff818384), ); -final _userListViewThemeDataControlDark = UserListViewThemeData( - backgroundColor: ColorTheme.dark().appBg, +final _userListViewThemeDataControlDark = StreamUserListViewThemeData( + backgroundColor: StreamColorTheme.dark().appBg, ); diff --git a/packages/stream_chat_flutter/test/src/thread_header_test.dart b/packages/stream_chat_flutter/test/src/thread_header_test.dart index babe4318..6d1758fa 100644 --- a/packages/stream_chat_flutter/test/src/thread_header_test.dart +++ b/packages/stream_chat_flutter/test/src/thread_header_test.dart @@ -51,7 +51,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: ThreadHeader( + body: StreamThreadHeader( parent: Message(), ), ), @@ -112,7 +112,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: ThreadHeader( + body: StreamThreadHeader( parent: Message(), subtitle: const Text('subtitle'), leading: const Text('leading'), diff --git a/packages/stream_chat_flutter/test/src/typing_indicator_test.dart b/packages/stream_chat_flutter/test/src/typing_indicator_test.dart index 0a98aff7..27b3f977 100644 --- a/packages/stream_chat_flutter/test/src/typing_indicator_test.dart +++ b/packages/stream_chat_flutter/test/src/typing_indicator_test.dart @@ -71,7 +71,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: TypingIndicator( + body: StreamTypingIndicator( key: typingKey, ), ), diff --git a/packages/stream_chat_flutter/test/src/unread_indicator_test.dart b/packages/stream_chat_flutter/test/src/unread_indicator_test.dart index 00359089..a470fe74 100644 --- a/packages/stream_chat_flutter/test/src/unread_indicator_test.dart +++ b/packages/stream_chat_flutter/test/src/unread_indicator_test.dart @@ -37,7 +37,7 @@ void main() { child: StreamChannel( channel: channel, child: const Scaffold( - body: UnreadIndicator(), + body: StreamUnreadIndicator(), ), ), ), @@ -75,7 +75,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: UnreadIndicator( + body: StreamUnreadIndicator( cid: channel.cid, ), ), @@ -115,7 +115,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: UnreadIndicator( + body: StreamUnreadIndicator( cid: channel.cid, ), ), diff --git a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart index 9e7b05d1..76bf3854 100644 --- a/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/channels_bloc.dart @@ -16,10 +16,7 @@ import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; /// using Flutter's [BuildContext]. /// /// API docs: https://getstream.io/chat/docs/flutter-dart/query_channels/ -@Deprecated( - "'ChannelsBloc' is deprecated and shouldn't be used. " - "Please use 'StreamChannelListController' instead.", -) +@Deprecated("Use 'StreamChannelListController' instead") class ChannelsBloc extends StatefulWidget { /// Creates a new [ChannelsBloc]. The parameter [child] must be supplied and /// not null. From 45651576648efc08297f879027c90b42af840756 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 10 Mar 2022 14:28:33 +0530 Subject: [PATCH 110/201] chore(ui): export v3 MessageInput widget Signed-off-by: xsahil03x --- packages/stream_chat_flutter/lib/src/message_input.dart | 1 + packages/stream_chat_flutter/lib/stream_chat_flutter.dart | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index dc06fd91..4aa46e56 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -339,6 +339,7 @@ class MessageInput extends StatefulWidget { } /// State of [MessageInput] +@Deprecated("Use 'StreamMessageInput' instead") class MessageInputState extends State { final _attachments = {}; final List _mentionedUsers = []; diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index cd5c79d6..e63db686 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -22,6 +22,7 @@ export 'src/info_tile.dart'; export 'src/localization/stream_chat_localizations.dart'; export 'src/localization/translations.dart' show DefaultTranslations; export 'src/message_action.dart'; +export 'src/message_input.dart' show MessageInput, MessageInputState; export 'src/message_input/countdown_button.dart'; export 'src/message_input/message_input.dart'; export 'src/message_input/stream_attachment_picker.dart'; From a7b4ad3c57aa717c929a93d6dba527d889397a6f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 11 Mar 2022 11:06:07 +0100 Subject: [PATCH 111/201] fix mention username/id replacing --- .../lib/src/channel_list_view.dart | 2 +- .../lib/src/channel_preview.dart | 19 ++++---- .../lib/src/extension.dart | 47 +++++++++++++++++++ .../lib/src/message_input/message_input.dart | 10 ++-- .../lib/src/message_text.dart | 25 +++------- .../stream_channel_list_tile.dart | 6 ++- 6 files changed, 74 insertions(+), 35 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index 1113fda2..f7c39e8e 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -591,7 +591,7 @@ class _ChannelListViewState extends State { decoration: BoxDecoration( color: chatThemeData.channelListViewTheme.backgroundColor, ), - child: StreamChannelPreview( + child: ChannelPreview( onLongPress: widget.onChannelLongPress, channel: channel, onImageTap: widget.onImageTap != null diff --git a/packages/stream_chat_flutter/lib/src/channel_preview.dart b/packages/stream_chat_flutter/lib/src/channel_preview.dart index 1eb28bd2..ed5fe9f8 100644 --- a/packages/stream_chat_flutter/lib/src/channel_preview.dart +++ b/packages/stream_chat_flutter/lib/src/channel_preview.dart @@ -4,10 +4,6 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -/// {@macro channel_preview} -@Deprecated("Use 'StreamChannelPreview' instead") -typedef ChannelPreview = StreamChannelPreview; - /// {@template channel_preview} /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_preview.png) /// ![screenshot](https://raw.githubusercontent.com/GetStream/stream-chat-flutter/master/packages/stream_chat_flutter/screenshots/channel_preview_paint.png) @@ -24,9 +20,10 @@ typedef ChannelPreview = StreamChannelPreview; /// [StreamChatTheme]. /// Modify it to change the widget appearance. /// {@endtemplate} -class StreamChannelPreview extends StatelessWidget { - /// Constructor for creating [StreamChannelPreview] - const StreamChannelPreview({ +@Deprecated("Use 'StreamChannelListTile' instead") +class ChannelPreview extends StatelessWidget { + /// Constructor for creating [ChannelPreview] + const ChannelPreview({ required this.channel, Key? key, this.onTap, @@ -71,7 +68,7 @@ class StreamChannelPreview extends StatelessWidget { @override Widget build(BuildContext context) { - final channelPreviewTheme = StreamChannelPreviewTheme.of(context); + final channelPreviewTheme = ChannelPreviewTheme.of(context); final streamChatState = StreamChat.of(context); return BetterStreamBuilder( stream: channel.isMutedStream, @@ -194,13 +191,13 @@ class StreamChannelPreview extends StatelessWidget { return Text( stringDate, - style: StreamChannelPreviewTheme.of(context).lastMessageAtStyle, + style: ChannelPreviewTheme.of(context).lastMessageAtStyle, ); }, ); Widget _buildSubtitle(BuildContext context) { - final channelPreviewTheme = StreamChannelPreviewTheme.of(context); + final channelPreviewTheme = ChannelPreviewTheme.of(context); if (channel.isMuted) { return Row( crossAxisAlignment: CrossAxisAlignment.end, @@ -253,7 +250,7 @@ class StreamChannelPreview extends StatelessWidget { text = parts.join(' '); - final channelPreviewTheme = StreamChannelPreviewTheme.of(context); + final channelPreviewTheme = ChannelPreviewTheme.of(context); return Text.rich( _getDisplayText( text, diff --git a/packages/stream_chat_flutter/lib/src/extension.dart b/packages/stream_chat_flutter/lib/src/extension.dart index 0feaf185..a0c9d288 100644 --- a/packages/stream_chat_flutter/lib/src/extension.dart +++ b/packages/stream_chat_flutter/lib/src/extension.dart @@ -225,3 +225,50 @@ extension UserListX on List { return entries.map((e) => e.key).toList(growable: false); } } + +/// Extensions on Message +extension MessageX on Message { + /// It replaces the user mentions with the actual user names. + Message replaceMentions({bool linkify = true}) { + var messageTextToRender = text; + for (final user in mentionedUsers.toSet()) { + final userId = user.id; + final userName = user.name; + if (linkify) { + messageTextToRender = messageTextToRender?.replaceAll( + '@$userId', + '[@$userName](@${userName.replaceAll(' ', '')})', + ); + } else { + messageTextToRender = messageTextToRender?.replaceAll( + '@$userId', + '@$userName', + ); + } + } + return copyWith(text: messageTextToRender); + } + + /// It returns the message with the translated text if available locally + Message translate(String language) => + copyWith(text: i18n?['${language}_text'] ?? text); + + /// It returns the message replacing the mentioned user names with + /// the respective user ids + Message replaceMentionsWithId() { + if (mentionedUsers.isEmpty) return this; + + var messageTextToSend = text; + if (messageTextToSend == null) return this; + + for (final user in mentionedUsers.toSet()) { + final userName = user.name; + messageTextToSend = messageTextToSend!.replaceAll( + '@$userName', + '@${user.id}', + ); + } + + return copyWith(text: messageTextToSend); + } +} diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index e7ec69f1..ed5d107c 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -1185,10 +1185,10 @@ class StreamMessageInputState extends State splits[splits.length - 1] = user.name; final rejoin = splits.join('@'); - _effectiveController.text = rejoin + - _effectiveController.text.substring( - _effectiveController.selectionStart, - ); + _effectiveController.text = + '$rejoin${_effectiveController.text.substring( + _effectiveController.selectionStart, + )}'; _onChangedDebounced.cancel(); setState(() => _showMentionsOverlay = false); @@ -1715,6 +1715,8 @@ class StreamMessageInputState extends State await streamChannel.reloadChannel(); } + message = message.replaceMentionsWithId(); + try { Future sendingFuture; if (_isEditing) { diff --git a/packages/stream_chat_flutter/lib/src/message_text.dart b/packages/stream_chat_flutter/lib/src/message_text.dart index 012aa5c7..b6fee801 100644 --- a/packages/stream_chat_flutter/lib/src/message_text.dart +++ b/packages/stream_chat_flutter/lib/src/message_text.dart @@ -1,6 +1,7 @@ import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// {@macro message_text} @@ -40,13 +41,14 @@ class StreamMessageText extends StatelessWidget { stream: streamChat.currentUserStream.map((it) => it!.language ?? 'en'), initialData: streamChat.currentUser!.language ?? 'en', builder: (context, language) { - final translatedText = - message.i18n?['${language}_text'] ?? message.text; - final messageText = - _replaceMentions(translatedText ?? '').replaceAll('\n', '\n\n'); + final messageText = message + .translate(language) + .replaceMentions() + .text + ?.replaceAll('\n', '\n\n'); final themeData = Theme.of(context); return MarkdownBody( - data: messageText, + data: messageText ?? '', onTapLink: ( String link, String? href, @@ -86,17 +88,4 @@ class StreamMessageText extends StatelessWidget { }, ); } - - String _replaceMentions(String text) { - var messageTextToRender = text; - for (final user in message.mentionedUsers.toSet()) { - final userId = user.id; - final userName = user.name; - messageTextToRender = messageTextToRender.replaceAll( - '@$userId', - '[@$userName](@${userName.replaceAll(' ', '')})', - ); - } - return messageTextToRender; - } } diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index 3b254817..0c78b926 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -9,6 +9,7 @@ import 'package:stream_chat_flutter/src/typing_indicator.dart'; import 'package:stream_chat_flutter/src/unread_indicator.dart'; import 'package:stream_chat_flutter/src/v4/stream_channel_avatar.dart'; import 'package:stream_chat_flutter/src/v4/stream_channel_name.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// A widget that displays a channel preview. @@ -359,7 +360,10 @@ class ChannelLastMessageText extends StatelessWidget { if (lastMessage == null) return const Offstage(); - final lastMessageText = lastMessage.text; + final lastMessageText = lastMessage + .translate(channel.client.state.currentUser?.language ?? 'en') + .replaceMentions(linkify: false) + .text; final lastMessageAttachments = lastMessage.attachments; final lastMessageMentionedUsers = lastMessage.mentionedUsers; From d7080641bda6fab850abd932c99d0978cc437323 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Tue, 15 Mar 2022 14:24:20 +0530 Subject: [PATCH 112/201] refactor(ui): remove video compression Signed-off-by: xsahil03x --- .../lib/src/message_input.dart | 75 +++---------------- .../lib/src/message_input/message_input.dart | 44 +---------- .../stream_attachment_picker.dart | 46 +----------- .../lib/src/video_service.dart | 28 ------- packages/stream_chat_flutter/pubspec.yaml | 2 - 5 files changed, 17 insertions(+), 178 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 4aa46e56..b0cce913 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -18,12 +18,8 @@ import 'package:stream_chat_flutter/src/media_list_view.dart'; import 'package:stream_chat_flutter/src/multi_overlay.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; import 'package:stream_chat_flutter/src/user_mentions_overlay.dart'; -import 'package:stream_chat_flutter/src/video_service.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:video_compress/video_compress.dart'; - -export 'package:video_compress/video_compress.dart' show VideoQuality; /// A callback that can be passed to [MessageInput.onError]. /// @@ -191,8 +187,6 @@ class MessageInput extends StatefulWidget { this.mentionsTileBuilder, this.userMentionsTileBuilder, this.maxAttachmentSize = _kDefaultMaxAttachmentSize, - this.compressedVideoQuality = VideoQuality.DefaultQuality, - this.compressedVideoFrameRate = 30, this.onError, this.attachmentLimit = 10, this.onAttachmentLimitExceed, @@ -213,12 +207,6 @@ class MessageInput extends StatefulWidget { /// Message to edit final Message? editMessage; - /// Video quality to use when compressing the videos - final VideoQuality compressedVideoQuality; - - /// Frame rate to use when compressing the videos - final int compressedVideoFrameRate; - /// Max attachment size in bytes /// Defaults to 20 MB /// do not set it if you're using our default CDN @@ -1119,41 +1107,18 @@ class MessageInputState extends State { if (mediaFile == null) return; - var file = AttachmentFile( + final file = AttachmentFile( path: mediaFile.path, size: await mediaFile.length(), bytes: mediaFile.readAsBytesSync(), ); if (file.size! > widget.maxAttachmentSize) { - if (medium.type == AssetType.video && file.path != null) { - final mediaInfo = await StreamVideoService.compressVideo( - file.path!, - frameRate: widget.compressedVideoFrameRate, - quality: widget.compressedVideoQuality, - ); - - if (mediaInfo == null || - mediaInfo.filesize! > widget.maxAttachmentSize) { - _showErrorAlert( - context.translations.fileTooLargeAfterCompressionError( - widget.maxAttachmentSize / (1024 * 1024), - ), - ); - return; - } - file = AttachmentFile( - name: file.name, - size: mediaInfo.filesize, - bytes: await mediaInfo.file?.readAsBytes(), - path: mediaInfo.path, - ); - } else { - _showErrorAlert(context.translations.fileTooLargeError( + return _showErrorAlert( + context.translations.fileTooLargeError( widget.maxAttachmentSize / (1024 * 1024), - )); - return; - } + ), + ); } setState(() { @@ -1678,33 +1643,11 @@ class MessageInputState extends State { ); if (file.size! > widget.maxAttachmentSize) { - if (attachmentType == 'video' && file.path != null) { - final mediaInfo = await (StreamVideoService.compressVideo( - file.path!, - frameRate: widget.compressedVideoFrameRate, - quality: widget.compressedVideoQuality, - ) as FutureOr); - - if (mediaInfo.filesize! > widget.maxAttachmentSize) { - _showErrorAlert( - context.translations.fileTooLargeAfterCompressionError( - widget.maxAttachmentSize / (1024 * 1024), - ), - ); - return; - } - file = AttachmentFile( - name: file.name, - size: mediaInfo.filesize, - bytes: await mediaInfo.file!.readAsBytes(), - path: mediaInfo.path, - ); - } else { - _showErrorAlert(context.translations.fileTooLargeError( + return _showErrorAlert( + context.translations.fileTooLargeError( widget.maxAttachmentSize / (1024 * 1024), - )); - return; - } + ), + ); } setState(() { diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index e7ec69f1..21d5775d 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -18,12 +18,8 @@ import 'package:stream_chat_flutter/src/message_input/tld.dart'; import 'package:stream_chat_flutter/src/multi_overlay.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; import 'package:stream_chat_flutter/src/user_mentions_overlay.dart'; -import 'package:stream_chat_flutter/src/video_service.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:video_compress/video_compress.dart'; - -export 'package:video_compress/video_compress.dart' show VideoQuality; /// A function that returns true if the message is valid and can be sent. typedef MessageValidator = bool Function(Message message); @@ -202,8 +198,6 @@ class StreamMessageInput extends StatefulWidget { this.mentionsTileBuilder, this.userMentionsTileBuilder, this.maxAttachmentSize = _kDefaultMaxAttachmentSize, - this.compressedVideoQuality = VideoQuality.DefaultQuality, - this.compressedVideoFrameRate = 30, this.onError, this.attachmentLimit = 10, this.onAttachmentLimitExceed, @@ -224,12 +218,6 @@ class StreamMessageInput extends StatefulWidget { /// List of options for showing overlays. final List customOverlays; - /// Video quality to use when compressing the videos. - final VideoQuality compressedVideoQuality; - - /// Frame rate to use when compressing the videos. - final int compressedVideoFrameRate; - /// Max attachment size in bytes: /// - Defaults to 20 MB /// - Do not set it if you're using our default CDN @@ -1126,8 +1114,6 @@ class StreamMessageInputState extends State attachmentLimit: widget.attachmentLimit, onAttachmentLimitExceeded: widget.onAttachmentLimitExceed, maxAttachmentSize: widget.maxAttachmentSize, - compressedVideoQuality: widget.compressedVideoQuality, - compressedVideoFrameRate: widget.compressedVideoFrameRate, onError: _showErrorAlert, ); @@ -1639,33 +1625,11 @@ class StreamMessageInputState extends State ); if (file.size! > widget.maxAttachmentSize) { - if (attachmentType == 'video' && file.path != null) { - final mediaInfo = await (StreamVideoService.compressVideo( - file.path!, - frameRate: widget.compressedVideoFrameRate, - quality: widget.compressedVideoQuality, - ) as FutureOr); - - if (mediaInfo.filesize! > widget.maxAttachmentSize) { - _showErrorAlert( - context.translations.fileTooLargeAfterCompressionError( - widget.maxAttachmentSize / (1024 * 1024), - ), - ); - return; - } - file = AttachmentFile( - name: file.name, - size: mediaInfo.filesize, - bytes: await mediaInfo.file!.readAsBytes(), - path: mediaInfo.path, - ); - } else { - _showErrorAlert(context.translations.fileTooLargeError( + return _showErrorAlert( + context.translations.fileTooLargeError( widget.maxAttachmentSize / (1024 * 1024), - )); - return; - } + ), + ); } _addAttachments([ diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 1e1b99c7..2c254223 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -5,9 +5,7 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:photo_manager/photo_manager.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/media_list_view.dart'; -import 'package:stream_chat_flutter/src/video_service.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:video_compress/video_compress.dart'; /// Callback for when a file has to be picked. typedef FilePickerCallback = void Function( @@ -34,8 +32,6 @@ class StreamAttachmentPicker extends StatefulWidget { this.attachmentLimit = 10, this.onAttachmentLimitExceeded, this.maxAttachmentSize = 20971520, - this.compressedVideoQuality = VideoQuality.DefaultQuality, - this.compressedVideoFrameRate = 30, this.onError, this.allowedAttachmentTypes = const [ DefaultAttachmentTypes.image, @@ -66,12 +62,6 @@ class StreamAttachmentPicker extends StatefulWidget { /// Callback for when file is picked. final FilePickerCallback onFilePicked; - /// Video quality to use when compressing the videos. - final VideoQuality compressedVideoQuality; - - /// Frame rate to use when compressing the videos. - final int compressedVideoFrameRate; - /// Max attachment size in bytes: /// - Defaults to 20 MB /// - Do not set it if you're using our default CDN @@ -94,8 +84,6 @@ class StreamAttachmentPicker extends StatefulWidget { int? attachmentLimit, AttachmentLimitExceedListener? onAttachmentLimitExceeded, int? maxAttachmentSize, - VideoQuality? compressedVideoQuality, - int? compressedVideoFrameRate, ValueChanged? onChangeInputState, ValueChanged? onError, List? allowedAttachmentTypes, @@ -112,10 +100,6 @@ class StreamAttachmentPicker extends StatefulWidget { onAttachmentLimitExceeded: onAttachmentLimitExceeded ?? this.onAttachmentLimitExceeded, maxAttachmentSize: maxAttachmentSize ?? this.maxAttachmentSize, - compressedVideoQuality: - compressedVideoQuality ?? this.compressedVideoQuality, - compressedVideoFrameRate: - compressedVideoFrameRate ?? this.compressedVideoFrameRate, onError: onError ?? this.onError, allowedAttachmentTypes: allowedAttachmentTypes ?? this.allowedAttachmentTypes, @@ -375,33 +359,11 @@ class _StreamAttachmentPickerState extends State { ); if (file.size! > widget.maxAttachmentSize) { - if (medium.type == AssetType.video && file.path != null) { - final mediaInfo = await (StreamVideoService.compressVideo( - file.path!, - frameRate: widget.compressedVideoFrameRate, - quality: widget.compressedVideoQuality, - ) as FutureOr); - - if (mediaInfo.filesize! > widget.maxAttachmentSize) { - widget.onError?.call( - context.translations.fileTooLargeAfterCompressionError( - widget.maxAttachmentSize / (1024 * 1024), - ), - ); - return; - } - file = AttachmentFile( - name: file.name, - size: mediaInfo.filesize, - bytes: await mediaInfo.file?.readAsBytes(), - path: mediaInfo.path, - ); - } else { - widget.onError?.call(context.translations.fileTooLargeError( + return widget.onError?.call( + context.translations.fileTooLargeError( widget.maxAttachmentSize / (1024 * 1024), - )); - return; - } + ), + ); } setState(() { diff --git a/packages/stream_chat_flutter/lib/src/video_service.dart b/packages/stream_chat_flutter/lib/src/video_service.dart index fb1db9ed..120460be 100644 --- a/packages/stream_chat_flutter/lib/src/video_service.dart +++ b/packages/stream_chat_flutter/lib/src/video_service.dart @@ -1,8 +1,6 @@ import 'dart:async'; import 'dart:typed_data'; -import 'package:synchronized/synchronized.dart'; -import 'package:video_compress/video_compress.dart'; import 'package:video_thumbnail/video_thumbnail.dart'; /// @@ -12,32 +10,6 @@ class _IVideoService { /// Singleton instance of [_IVideoService] static final _IVideoService instance = _IVideoService._(); - final _lock = Lock(); - - /// compress video from [path] - /// compress video from [path] return [Future] - /// - /// you can choose its [quality] and [frameRate] - /// - /// ## example - /// ```dart - /// final info = await _flutterVideoCompress.compressVideo( - /// file.path, - /// ); - /// debugPrint(info.toJson()); - /// ``` - Future compressVideo( - String path, { - int frameRate = 30, - VideoQuality quality = VideoQuality.DefaultQuality, - }) async => - _lock.synchronized( - () => VideoCompress.compressVideo( - path, - frameRate: frameRate, - quality: quality, - ), - ); /// Generates a thumbnail image data in memory as UInt8List, /// it can be easily used by Image.memory(...). diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index c2d90eb0..5dab31a1 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -38,9 +38,7 @@ dependencies: shimmer: ^2.0.0 stream_chat_flutter_core: ^3.5.0 substring_highlight: ^1.0.26 - synchronized: ^3.0.0 url_launcher: ^6.0.3 - video_compress: ^3.0.0 video_player: ^2.1.0 video_thumbnail: ^0.4.3 visibility_detector: ^0.2.0 From 2b09747cb1e5a1a638acd118fd94a05cb5a6e54d Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Thu, 17 Mar 2022 14:02:51 +0530 Subject: [PATCH 113/201] fix(ui): fix channel list tile style for mentioned users Signed-off-by: xsahil03x --- .../stream_channel_list_tile.dart | 36 ++++++++++++++++--- .../test/src/channel_preview_test.dart | 2 +- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index 0c78b926..16fcc5cc 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -367,6 +367,11 @@ class ChannelLastMessageText extends StatelessWidget { final lastMessageAttachments = lastMessage.attachments; final lastMessageMentionedUsers = lastMessage.mentionedUsers; + final mentionedUsersRegex = RegExp( + lastMessageMentionedUsers.map((it) => '@${it.name}').join('|'), + caseSensitive: false, + ); + final messageTextParts = [ ...lastMessageAttachments.map((it) { if (it.type == 'image') { @@ -380,7 +385,11 @@ class ChannelLastMessageText extends StatelessWidget { ? (it.title ?? 'File') : '${it.title ?? 'File'} , '; }), - if (lastMessageText != null) lastMessageText, + if (lastMessageText != null) + if (lastMessageMentionedUsers.isNotEmpty) + ...mentionedUsersRegex.allMatchesWithSep(lastMessageText) + else + lastMessageText, ]; final fontStyle = (lastMessage.isSystem || lastMessage.isDeleted) @@ -399,7 +408,7 @@ class ChannelLastMessageText extends StatelessWidget { if (lastMessageMentionedUsers.isNotEmpty && lastMessageMentionedUsers.any((it) => '@${it.name}' == part)) TextSpan( - text: '$part ', + text: part, style: mentionsTextStyle, ) else if (lastMessageAttachments.isNotEmpty && @@ -407,12 +416,14 @@ class ChannelLastMessageText extends StatelessWidget { .where((it) => it.title != null) .any((it) => it.title == part)) TextSpan( - text: '$part ', - style: regularTextStyle, + text: part, + style: regularTextStyle?.copyWith( + fontStyle: FontStyle.italic, + ), ) else TextSpan( - text: part == messageTextParts.last ? part : '$part ', + text: part, style: regularTextStyle, ), ]; @@ -426,3 +437,18 @@ class ChannelLastMessageText extends StatelessWidget { }, ); } + +extension _RegExpX on RegExp { + List allMatchesWithSep(String input, [int start = 0]) { + final result = []; + for (final match in allMatches(input, start)) { + result.add(input.substring(start, match.start)); + // ignore: cascade_invocations + result.add(match[0]!); + // ignore: parameter_assignments + start = match.end; + } + result.add(input.substring(start)); + return result; + } +} diff --git a/packages/stream_chat_flutter/test/src/channel_preview_test.dart b/packages/stream_chat_flutter/test/src/channel_preview_test.dart index 63116196..47554605 100644 --- a/packages/stream_chat_flutter/test/src/channel_preview_test.dart +++ b/packages/stream_chat_flutter/test/src/channel_preview_test.dart @@ -71,7 +71,7 @@ void main() { child: StreamChannel( channel: channel, child: Scaffold( - body: StreamChannelPreview( + body: ChannelPreview( channel: channel, ), ), From ec9d0774ffd53f29162d75411fe11eee8d21016d Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Mon, 21 Mar 2022 13:29:05 +0530 Subject: [PATCH 114/201] Changed permission request api in attachment picker --- .../lib/src/message_input/stream_attachment_picker.dart | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart index 2c254223..8389d3c7 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart @@ -426,12 +426,12 @@ class _PickerWidget extends StatefulWidget { } class _PickerWidgetState extends State<_PickerWidget> { - Future? requestPermission; + Future? requestPermission; @override void initState() { super.initState(); - requestPermission = PhotoManager.requestPermission(); + requestPermission = PhotoManager.requestPermissionExtend(); } @override @@ -440,14 +440,15 @@ class _PickerWidgetState extends State<_PickerWidget> { return widget.customAttachmentTypes[widget.filePickerIndex - 1] .pickerBuilder(context); } - return FutureBuilder( + return FutureBuilder( future: requestPermission, builder: (context, snapshot) { if (!snapshot.hasData) { return const Offstage(); } - if (snapshot.data!) { + if ([PermissionState.authorized, PermissionState.limited] + .contains(snapshot.data)) { if (widget.containsFile || !widget.allowedAttachmentTypes .contains(DefaultAttachmentTypes.image)) { From c2f5b2b03836b70f4346f9ff4e94fab202bedde1 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Mon, 21 Mar 2022 14:08:24 +0530 Subject: [PATCH 115/201] Moved autoCorrect flag to v4 message input and added doc comments for scrollToBottomBuilder --- .../stream_chat_flutter/lib/src/message_input.dart | 4 ---- .../lib/src/message_input/message_input.dart | 8 ++++++++ .../lib/src/message_list_view.dart | 14 ++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input.dart index 19a6592d..240d318a 100644 --- a/packages/stream_chat_flutter/lib/src/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input.dart @@ -195,7 +195,6 @@ class MessageInput extends StatefulWidget { this.customOverlays = const [], this.mentionAllAppUsers = false, this.shouldKeepFocusAfterMessage, - this.autocorrectEnabled, }) : assert( initialMessage == null || editMessage == null, "Can't provide both `initialMessage` and `editMessage`", @@ -312,8 +311,6 @@ class MessageInput extends StatefulWidget { /// The default behaviour keeps focus until a command is enabled. final bool? shouldKeepFocusAfterMessage; - final bool? autocorrectEnabled; - @override MessageInputState createState() => MessageInputState(); @@ -701,7 +698,6 @@ class MessageInputState extends State { textAlignVertical: TextAlignVertical.center, decoration: _getInputDecoration(context), textCapitalization: TextCapitalization.sentences, - autocorrect: widget.autocorrectEnabled ?? true, ), ), ], diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 0ffa472c..7116e435 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -213,6 +213,7 @@ class StreamMessageInput extends StatefulWidget { this.enableSafeArea, this.elevation, this.shadow, + this.autoCorrect, }) : super(key: key); /// List of options for showing overlays. @@ -332,6 +333,10 @@ class StreamMessageInput extends StatefulWidget { /// Shadow for the [StreamMessageInput] widget final BoxShadow? shadow; + /// Disable autoCorrect by passing false + /// autoCorrect is enabled by default + final bool? autoCorrect; + static bool _defaultValidator(Message message) => message.text?.isNotEmpty == true || message.attachments.isNotEmpty; @@ -363,6 +368,8 @@ class StreamMessageInputState extends State bool get _isEditing => _effectiveController.value.status != MessageSendingStatus.sending; + bool get _autoCorrect => widget.autoCorrect ?? true; + RestorableMessageInputController? _controller; MessageInputController get _effectiveController => @@ -805,6 +812,7 @@ class StreamMessageInputState extends State textAlignVertical: TextAlignVertical.center, decoration: _getInputDecoration(context), textCapitalization: TextCapitalization.sentences, + autocorrect: _autoCorrect, ), ), ], diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index e7b2d215..1439dfb3 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -248,6 +248,20 @@ class StreamMessageListView extends StatefulWidget { /// messages and the scroll offset is not zero final bool showScrollToBottom; + /// Function used to build a custom scroll to bottom widget + /// + /// Provides the current unread messages count and a reference + /// to the function that is executed on tap of this widget by default + /// + /// As an example: + /// MessageListView( + /// scrollToBottomBuilder: (unreadCount, defaultTapAction) { + /// return InkWell( + /// onTap: () => defaultTapAction(unreadCount), + /// child: Text('Scroll To Bottom'), + /// ); + /// }, + /// ), final Widget Function( int unreadCount, Future Function(int) scrollToBottomDefaultTapAction, From d59a755f7ceb8f4fd00eb328882a8695b20a5627 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Mon, 21 Mar 2022 14:34:21 +0530 Subject: [PATCH 116/201] Add flag to control if default emoji suggestions overlay is visible --- .../lib/src/message_input/message_input.dart | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart index 7116e435..8cd525c1 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/message_input/message_input.dart @@ -214,6 +214,7 @@ class StreamMessageInput extends StatefulWidget { this.elevation, this.shadow, this.autoCorrect, + this.disableEmojiSuggestionsOverlay, }) : super(key: key); /// List of options for showing overlays. @@ -337,6 +338,10 @@ class StreamMessageInput extends StatefulWidget { /// autoCorrect is enabled by default final bool? autoCorrect; + /// Disable the default emoji suggestions + /// Enabled by default + final bool? disableEmojiSuggestionsOverlay; + static bool _defaultValidator(Message message) => message.text?.isNotEmpty == true || message.attachments.isNotEmpty; @@ -370,6 +375,9 @@ class StreamMessageInputState extends State bool get _autoCorrect => widget.autoCorrect ?? true; + bool get _disableEmojiSuggestionsOverlay => + widget.disableEmojiSuggestionsOverlay ?? false; + RestorableMessageInputController? _controller; MessageInputController get _effectiveController => @@ -599,18 +607,19 @@ class StreamMessageInputState extends State visible: _showCommandsOverlay, widget: _buildCommandsOverlayEntry(), ), - OverlayOptions( - visible: _focusNode.hasFocus && - _effectiveController.text.isNotEmpty && - _effectiveController.baseOffset > 0 && - _effectiveController.text - .substring( - 0, - _effectiveController.baseOffset, - ) - .contains(':'), - widget: _buildEmojiOverlay(), - ), + if (!_disableEmojiSuggestionsOverlay) + OverlayOptions( + visible: _focusNode.hasFocus && + _effectiveController.text.isNotEmpty && + _effectiveController.baseOffset > 0 && + _effectiveController.text + .substring( + 0, + _effectiveController.baseOffset, + ) + .contains(':'), + widget: _buildEmojiOverlay(), + ), OverlayOptions( visible: _showMentionsOverlay, widget: _buildMentionsOverlayEntry(), From f907450f1c5740a1933d8d022e452f397d27ff7e Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 21 Mar 2022 16:57:40 +0530 Subject: [PATCH 117/201] feat(ui): Update slidable to 1.2.0 Signed-off-by: xsahil03x --- .../lib/src/channel_list_view.dart | 166 +++++++++--------- packages/stream_chat_flutter/pubspec.yaml | 2 +- 2 files changed, 86 insertions(+), 82 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index f7c39e8e..7280d826 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -207,8 +207,6 @@ class ChannelListView extends StatefulWidget { } class _ChannelListViewState extends State { - final _slideController = SlidableController(); - late final _defaultController = ChannelListController(); ChannelListController get _channelListController => @@ -270,19 +268,21 @@ class _ChannelListViewState extends State { _gridItemBuilder(context, index, channels), ); } - return ListView.separated( - padding: widget.padding, - physics: const AlwaysScrollableScrollPhysics(), - // all channels + progress loader - itemCount: channels.length + 1, - separatorBuilder: (_, index) { - if (widget.separatorBuilder != null) { - return widget.separatorBuilder!(context, index); - } - return _separatorBuilder(context, index); - }, - itemBuilder: (context, index) => - _listItemBuilder(context, index, channels), + return SlidableAutoCloseBehavior( + child: ListView.separated( + padding: widget.padding, + physics: const AlwaysScrollableScrollPhysics(), + // all channels + progress loader + itemCount: channels.length + 1, + separatorBuilder: (_, index) { + if (widget.separatorBuilder != null) { + return widget.separatorBuilder!(context, index); + } + return _separatorBuilder(context, index); + }, + itemBuilder: (context, index) => + _listItemBuilder(context, index, channels), + ), ); } @@ -510,82 +510,86 @@ class _ChannelListViewState extends State { final backgroundColor = chatThemeData.colorTheme.inputBg; final channel = channels[i]; + final canDeleteChannel = + channel.ownCapabilities.contains(PermissionType.deleteChannel); + return StreamChannel( key: ValueKey('CHANNEL-${channel.cid}'), channel: channel, child: Slidable( - controller: _slideController, enabled: widget.swipeToAction, - actionPane: const SlidableBehindActionPane(), - actionExtentRatio: 0.12, - secondaryActions: widget.swipeActions - ?.map((e) => IconSlideAction( - color: e.color, - iconWidget: e.iconWidget, - onTap: () { - e.onTap?.call(channel); - }, - )) - .toList() ?? - [ - IconSlideAction( - color: backgroundColor, - icon: Icons.more_horiz, - onTap: widget.onMoreDetailsPressed != null - ? () { - widget.onMoreDetailsPressed!(channel); - } - : () { - showModalBottomSheet( - clipBehavior: Clip.hardEdge, - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topLeft: Radius.circular(32), - topRight: Radius.circular(32), - ), - ), - context: context, - builder: (context) => StreamChannel( - channel: channel, - child: StreamChannelInfoBottomSheet( - channel: channel, - onViewInfoTap: () { - widget.onViewInfoTap?.call(channel); - }, - ), - ), - ); - }, - ), - if (channel.ownCapabilities - .contains(PermissionType.deleteChannel)) - IconSlideAction( - color: backgroundColor, - iconWidget: StreamSvgIcon.delete( - color: chatThemeData.colorTheme.accentError, - ), - onTap: widget.onDeletePressed != null - ? () { - widget.onDeletePressed?.call(channel); + endActionPane: ActionPane( + extentRatio: canDeleteChannel ? 0.4 : 0.2, + motion: const BehindMotion(), + children: widget.swipeActions + ?.map((e) => CustomSlidableAction( + backgroundColor: e.color ?? Colors.white, + child: e.iconWidget, + onPressed: (_) { + e.onTap?.call(channel); + }, + )) + .toList() ?? + [ + CustomSlidableAction( + backgroundColor: backgroundColor, + onPressed: widget.onMoreDetailsPressed != null + ? (_) { + widget.onMoreDetailsPressed!(channel); } - : () async { - final res = await showConfirmationDialog( - context, - title: context.translations.deleteConversationLabel, - question: - context.translations.deleteConversationQuestion, - okText: context.translations.deleteLabel, - cancelText: context.translations.cancelLabel, - icon: StreamSvgIcon.delete( - color: chatThemeData.colorTheme.accentError, + : (_) { + showModalBottomSheet( + clipBehavior: Clip.hardEdge, + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(32), + topRight: Radius.circular(32), + ), + ), + context: context, + builder: (context) => StreamChannel( + channel: channel, + child: StreamChannelInfoBottomSheet( + channel: channel, + onViewInfoTap: () { + widget.onViewInfoTap?.call(channel); + }, + ), ), ); - if (res == true) { - await channel.delete(); - } }, + child: const Icon(Icons.more_horiz), ), - ], + if (canDeleteChannel) + CustomSlidableAction( + backgroundColor: backgroundColor, + onPressed: widget.onDeletePressed != null + ? (_) { + widget.onDeletePressed?.call(channel); + } + : (_) async { + final res = await showConfirmationDialog( + context, + title: + context.translations.deleteConversationLabel, + question: context + .translations.deleteConversationQuestion, + okText: context.translations.deleteLabel, + cancelText: context.translations.cancelLabel, + icon: StreamSvgIcon.delete( + color: chatThemeData.colorTheme.accentError, + ), + ); + if (res == true) { + await channel.delete(); + } + }, + child: StreamSvgIcon.delete( + color: chatThemeData.colorTheme.accentError, + ), + ), + ], + ), child: widget.channelPreviewBuilder?.call(context, channel) ?? DecoratedBox( decoration: BoxDecoration( diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 9b769039..7305d74b 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -22,7 +22,7 @@ dependencies: sdk: flutter flutter_markdown: ^0.6.1 flutter_portal: ^0.4.0 - flutter_slidable: ^0.6.0 + flutter_slidable: ^1.2.0 flutter_svg: ^1.0.1 http_parser: ^4.0.0 image_gallery_saver: ^1.7.0 From 4be9ff24a97ef6418135890489cd6fb2085c4d17 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Mar 2022 13:26:20 +0100 Subject: [PATCH 118/201] add dependency override to example --- packages/stream_chat_flutter/example/pubspec.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/stream_chat_flutter/example/pubspec.yaml b/packages/stream_chat_flutter/example/pubspec.yaml index bd785a29..ead5158a 100644 --- a/packages/stream_chat_flutter/example/pubspec.yaml +++ b/packages/stream_chat_flutter/example/pubspec.yaml @@ -38,6 +38,10 @@ dev_dependencies: flutter_test: sdk: flutter +dependency_overrides: + stream_chat_flutter: + path: ../ + # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec From 9f120d65c3aff12b7f9be031bcd9c84be74fabb1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Mar 2022 13:54:32 +0100 Subject: [PATCH 119/201] use local deps --- packages/stream_chat_localizations/example/pubspec.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_localizations/example/pubspec.yaml b/packages/stream_chat_localizations/example/pubspec.yaml index 9aaa23c6..904347e6 100644 --- a/packages/stream_chat_localizations/example/pubspec.yaml +++ b/packages/stream_chat_localizations/example/pubspec.yaml @@ -11,8 +11,10 @@ dependencies: cupertino_icons: ^1.0.3 flutter: sdk: flutter - stream_chat_flutter: ^2.2.1 - stream_chat_localizations: ^1.1.0 + stream_chat_flutter: + path: ../stream_chat_flutter + stream_chat_localizations: + path: ../ dev_dependencies: flutter_test: From bd7c74a6f3f9d2b9c906af1f83c30cde7f542b9a Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Mar 2022 14:35:38 +0100 Subject: [PATCH 120/201] fix deps --- packages/stream_chat_localizations/example/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_localizations/example/pubspec.yaml b/packages/stream_chat_localizations/example/pubspec.yaml index 904347e6..6f37dfc4 100644 --- a/packages/stream_chat_localizations/example/pubspec.yaml +++ b/packages/stream_chat_localizations/example/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: flutter: sdk: flutter stream_chat_flutter: - path: ../stream_chat_flutter + path: ../../stream_chat_flutter stream_chat_localizations: path: ../ From d39988fcde59392311f2f1a2a84d4d607958b154 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Mar 2022 15:01:41 +0100 Subject: [PATCH 121/201] use local deps --- packages/stream_chat_localizations/example/pubspec.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/stream_chat_localizations/example/pubspec.yaml b/packages/stream_chat_localizations/example/pubspec.yaml index 6f37dfc4..52363f4b 100644 --- a/packages/stream_chat_localizations/example/pubspec.yaml +++ b/packages/stream_chat_localizations/example/pubspec.yaml @@ -16,6 +16,11 @@ dependencies: stream_chat_localizations: path: ../ + +dependency_overrides: + stream_chat_flutter: + path: ../ + dev_dependencies: flutter_test: sdk: flutter From ed72f290524764f4cf046c7326686d830e7e29ca Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Mar 2022 15:20:51 +0100 Subject: [PATCH 122/201] use local deps --- packages/stream_chat_localizations/example/pubspec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_localizations/example/pubspec.yaml b/packages/stream_chat_localizations/example/pubspec.yaml index 52363f4b..db447618 100644 --- a/packages/stream_chat_localizations/example/pubspec.yaml +++ b/packages/stream_chat_localizations/example/pubspec.yaml @@ -19,8 +19,8 @@ dependencies: dependency_overrides: stream_chat_flutter: - path: ../ - + path: ../../stream_chat_flutter + dev_dependencies: flutter_test: sdk: flutter From 48b93fd6304b95ed23a13fbcff023e636b347960 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 21 Mar 2022 15:36:08 +0100 Subject: [PATCH 123/201] fix android build? --- .../example/android/app/src/main/AndroidManifest.xml | 2 +- .../example/ios/Flutter/AppFrameworkInfo.plist | 2 +- .../example/ios/Runner.xcodeproj/project.pbxproj | 4 ++-- .../Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_localizations/example/android/app/src/main/AndroidManifest.xml b/packages/stream_chat_localizations/example/android/app/src/main/AndroidManifest.xml index 55ca830c..9b3997fe 100644 --- a/packages/stream_chat_localizations/example/android/app/src/main/AndroidManifest.xml +++ b/packages/stream_chat_localizations/example/android/app/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/project.pbxproj b/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/project.pbxproj index 3ea4f826..52fdc740 100644 --- a/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 50; objects = { /* Begin PBXBuildFile section */ @@ -156,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { diff --git a/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cf..3db53b6e 100644 --- a/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/stream_chat_localizations/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Date: Mon, 21 Mar 2022 16:07:48 +0100 Subject: [PATCH 124/201] fix android build for persistence --- .../stream_chat_persistence/example/android/app/build.gradle | 2 +- .../example/android/app/src/main/AndroidManifest.xml | 2 +- packages/stream_chat_persistence/example/android/build.gradle | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_persistence/example/android/app/build.gradle b/packages/stream_chat_persistence/example/android/app/build.gradle index 3932aa91..31d3553b 100644 --- a/packages/stream_chat_persistence/example/android/app/build.gradle +++ b/packages/stream_chat_persistence/example/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 29 + compileSdkVersion 31 sourceSets { main.java.srcDirs += 'src/main/kotlin' diff --git a/packages/stream_chat_persistence/example/android/app/src/main/AndroidManifest.xml b/packages/stream_chat_persistence/example/android/app/src/main/AndroidManifest.xml index 55ca830c..9b3997fe 100644 --- a/packages/stream_chat_persistence/example/android/app/src/main/AndroidManifest.xml +++ b/packages/stream_chat_persistence/example/android/app/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> Date: Tue, 22 Mar 2022 15:09:00 +0530 Subject: [PATCH 125/201] feat(ui): Calculate slidable extentRatio in case of custom actions Signed-off-by: xsahil03x --- .../stream_chat_flutter/lib/src/channel_list_view.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/channel_list_view.dart b/packages/stream_chat_flutter/lib/src/channel_list_view.dart index 7280d826..819ed40f 100644 --- a/packages/stream_chat_flutter/lib/src/channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/channel_list_view.dart @@ -513,13 +513,19 @@ class _ChannelListViewState extends State { final canDeleteChannel = channel.ownCapabilities.contains(PermissionType.deleteChannel); + final actionPaneChildren = + widget.swipeActions?.length ?? (canDeleteChannel ? 2 : 1); + final actionPaneExtentRatio = actionPaneChildren > 5 + ? 1 / actionPaneChildren + : actionPaneChildren * 0.2; + return StreamChannel( key: ValueKey('CHANNEL-${channel.cid}'), channel: channel, child: Slidable( enabled: widget.swipeToAction, endActionPane: ActionPane( - extentRatio: canDeleteChannel ? 0.4 : 0.2, + extentRatio: actionPaneExtentRatio, motion: const BehindMotion(), children: widget.swipeActions ?.map((e) => CustomSlidableAction( From 5f12802799e2c49cb42d2ebe5e6dfc4d42597cb8 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 22 Mar 2022 16:34:06 +0100 Subject: [PATCH 126/201] fix reconnection event --- .../stream_chat/lib/src/client/client.dart | 11 ++++++---- .../example/android/app/build.gradle | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 21 ++++++++++++++----- .../src/stream_channel_list_controller.dart | 5 +---- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index cab864b9..a3daa653 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -417,6 +417,7 @@ class StreamChatClient { } void _connectionStatusHandler(ConnectionStatus status) async { + final previousState = wsConnectionStatus; final currentState = _wsConnectionStatus = status; handleEvent(Event( @@ -436,10 +437,12 @@ class StreamChatClient { await sync(cids: cids, lastSyncAt: _lastSyncedAt); } } - handleEvent(Event( - type: EventType.connectionRecovered, - online: true, - )); + if (previousState != ConnectionStatus.connected) { + handleEvent(Event( + type: EventType.connectionRecovered, + online: true, + )); + } } } diff --git a/packages/stream_chat_flutter/example/android/app/build.gradle b/packages/stream_chat_flutter/example/android/app/build.gradle index 3974f949..6576512a 100644 --- a/packages/stream_chat_flutter/example/android/app/build.gradle +++ b/packages/stream_chat_flutter/example/android/app/build.gradle @@ -40,7 +40,7 @@ android { defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.example.example" - minSdkVersion 21 + minSdkVersion 22 targetSdkVersion 31 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj index 4b1a8d5d..2550e7a5 100644 --- a/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/stream_chat_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -68,7 +68,6 @@ 59062C6EC2CCFE110AC70AB8 /* Pods-Runner.release.xcconfig */, 4684439012E1DB1A82103E26 /* Pods-Runner.profile.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -356,13 +355,17 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = EHV7XZLAHA; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", @@ -488,13 +491,17 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = EHV7XZLAHA; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", @@ -515,13 +522,17 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = EHV7XZLAHA; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", ); INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); LIBRARY_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Flutter", diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart index 7d3a281f..3b7342e5 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart @@ -221,6 +221,7 @@ class StreamChannelListController extends PagedValueNotifier { } _channelEventSubscription = client.on().listen((event) { + print('event.type: ${event.type}'); // Returns early if the event is already handled by the listener. if (eventListener?.call(event) ?? false) return; @@ -237,10 +238,6 @@ class StreamChannelListController extends PagedValueNotifier { _eventHandler.onChannelVisible(event, this); } else if (eventType == EventType.connectionRecovered) { _eventHandler.onConnectionRecovered(event, this); - } else if (eventType == EventType.connectionChanged) { - if (event.online != null) { - _eventHandler.onConnectionRecovered(event, this); - } } else if (eventType == EventType.messageNew) { _eventHandler.onMessageNew(event, this); } else if (eventType == EventType.notificationAddedToChannel) { From 2c2b6bdac24925a86c2194af27d5647f3f04db3c Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Mar 2022 09:59:24 +0100 Subject: [PATCH 127/201] fix reconnection event --- packages/stream_chat/lib/src/client/client.dart | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index a3daa653..76a72c93 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -425,7 +425,8 @@ class StreamChatClient { online: status == ConnectionStatus.connected, )); - if (currentState == ConnectionStatus.connected) { + if (currentState == ConnectionStatus.connected && + previousState != ConnectionStatus.connected) { // connection recovered final cids = state.channels.keys.toList(growable: false); if (cids.isNotEmpty) { @@ -437,12 +438,10 @@ class StreamChatClient { await sync(cids: cids, lastSyncAt: _lastSyncedAt); } } - if (previousState != ConnectionStatus.connected) { - handleEvent(Event( - type: EventType.connectionRecovered, - online: true, - )); - } + handleEvent(Event( + type: EventType.connectionRecovered, + online: true, + )); } } From d387ae260ff398bbd26bc768d270607ee7a89e61 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Mar 2022 11:02:46 +0100 Subject: [PATCH 128/201] update pubspec and changelogs --- packages/stream_chat/CHANGELOG.md | 10 ++++++++++ packages/stream_chat/lib/version.dart | 2 +- packages/stream_chat/pubspec.yaml | 2 +- packages/stream_chat_flutter/CHANGELOG.md | 19 +++++++++++++++++++ .../stream_chat_flutter/example/lib/main.dart | 3 ++- .../example/lib/tutorial_part_1.dart | 3 ++- .../example/lib/tutorial_part_2.dart | 3 ++- .../example/lib/tutorial_part_3.dart | 7 ++++--- .../example/lib/tutorial_part_4.dart | 6 ++++-- .../lib/src/attachment_actions_modal.dart | 3 ++- .../lib/src/localization/translations.dart | 5 +++-- .../lib/src/message_widget.dart | 3 ++- .../src/theme/channel_list_header_theme.dart | 6 ++++-- .../src/theme/channel_list_view_theme.dart | 6 ++++-- .../lib/src/theme/channel_preview_theme.dart | 3 ++- .../lib/src/theme/message_input_theme.dart | 6 ++++-- .../src/theme/message_list_view_theme.dart | 6 ++++-- .../theme/message_search_list_view_theme.dart | 4 ++-- .../stream_channel_list_tile.dart | 9 --------- .../message_input/countdown_button.dart | 0 .../message_input/simple_safe_area.dart | 0 .../stream_attachment_picker.dart | 2 +- .../message_input/stream_message_input.dart} | 7 ++++--- .../stream_message_send_button.dart | 0 .../stream_message_text_field.dart | 0 .../lib/src/{ => v4}/message_input/tld.dart | 0 .../lib/stream_chat_flutter.dart | 11 +++++------ packages/stream_chat_flutter/pubspec.yaml | 2 +- .../stream_chat_flutter_core/CHANGELOG.md | 15 +++++++++++---- .../stream_chat_flutter_core/pubspec.yaml | 4 ++-- .../stream_chat_localizations/CHANGELOG.md | 4 ++++ .../stream_chat_localizations/pubspec.yaml | 4 ++-- packages/stream_chat_persistence/CHANGELOG.md | 4 ++++ packages/stream_chat_persistence/pubspec.yaml | 4 ++-- 34 files changed, 108 insertions(+), 55 deletions(-) rename packages/stream_chat_flutter/lib/src/{ => v4}/message_input/countdown_button.dart (100%) rename packages/stream_chat_flutter/lib/src/{ => v4}/message_input/simple_safe_area.dart (100%) rename packages/stream_chat_flutter/lib/src/{ => v4}/message_input/stream_attachment_picker.dart (99%) rename packages/stream_chat_flutter/lib/src/{message_input/message_input.dart => v4/message_input/stream_message_input.dart} (99%) rename packages/stream_chat_flutter/lib/src/{ => v4}/message_input/stream_message_send_button.dart (100%) rename packages/stream_chat_flutter/lib/src/{ => v4}/message_input/stream_message_text_field.dart (100%) rename packages/stream_chat_flutter/lib/src/{ => v4}/message_input/tld.dart (100%) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index a74b920e..9b048e2a 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,3 +1,13 @@ +## 4.0.0-beta.0 + +✅ Added + +- Added support for ownCapabilities. + +🐞 Fixed + +- Minor fixes and improvements. + ## 3.5.1 🐞 Fixed diff --git a/packages/stream_chat/lib/version.dart b/packages/stream_chat/lib/version.dart index 8d0584a0..533df1ce 100644 --- a/packages/stream_chat/lib/version.dart +++ b/packages/stream_chat/lib/version.dart @@ -3,4 +3,4 @@ import 'package:stream_chat/src/client/client.dart'; /// Current package version /// Used in [StreamChatClient] to build the `x-stream-client` header // ignore: constant_identifier_names -const PACKAGE_VERSION = '3.5.1'; +const PACKAGE_VERSION = '4.0.0-beta.0'; diff --git a/packages/stream_chat/pubspec.yaml b/packages/stream_chat/pubspec.yaml index 2e195f6b..bf2c84e6 100644 --- a/packages/stream_chat/pubspec.yaml +++ b/packages/stream_chat/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat homepage: https://getstream.io/ description: The official Dart client for Stream Chat, a service for building chat applications. -version: 3.5.1 +version: 4.0.0-beta.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index fe8d6cd1..d116d50d 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,22 @@ +## 4.0.0-beta.0 + +✅ Added + +- Deprecated old widgets in favor of Stream-prefixed ones. +- Use channel capabilities to show/hide actions. +- Deprecated `ChannelListView` in favor of `StreamChannelListView`. +- Deprecated `ChannelPreview` in favor of `StreamChannelListTile`. +- Deprecated `ChannelAvatar` in favor of `StreamChannelAvatar`. +- Deprecated `ChannelName` in favor of `StreamChannelName`. +- Deprecated `MessageInput` in favor of `StreamMessageInput`. +- Separated `MessageInput` widget in smaller components. (For example `CountDownButton`, `StreamAttachmentPicker`...) +- Updated `stream_chat_flutter_core` dependency to [`4.0.0-beta.0`](https://pub.dev/packages/stream_chat_flutter_core/changelog). +- Added OpenGraph preview support for links in `StreamMessageInput`. + +🐞 Fixed + +- Minor fixes and improvements + ## 3.5.1 🛑️ Breaking Changes diff --git a/packages/stream_chat_flutter/example/lib/main.dart b/packages/stream_chat_flutter/example/lib/main.dart index 4a7eabf4..7b015689 100644 --- a/packages/stream_chat_flutter/example/lib/main.dart +++ b/packages/stream_chat_flutter/example/lib/main.dart @@ -87,7 +87,8 @@ class MyApp extends StatelessWidget { /// A list of messages sent in the current channel. /// -/// This is implemented using [StreamMessageListView], a widget that provides query +/// This is implemented using [StreamMessageListView], +/// a widget that provides query /// functionalities fetching the messages from the api and showing them in a /// listView. class ChannelPage extends StatelessWidget { diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart index cd3bb12e..2c43230e 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart @@ -27,7 +27,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// - We make [StreamChat] the root Widget of our application /// /// - We create a single [ChannelPage] widget under [StreamChat] with three -/// widgets: [StreamChannelHeader], [StreamMessageListView] and [StreamMessageInput] +/// widgets: [StreamChannelHeader], [StreamMessageListView] +/// and [StreamMessageInput] /// /// If you now run the simulator you will see a single channel UI. void main() async { diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart index 0ca2356e..a46043e3 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart @@ -25,7 +25,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// The [ChannelListPage] widget retrieves the list of channels based on a /// custom query and ordering. In this case we are showing the list of /// channels in which the current user is a member and we order them based -/// on the time they had a new message. [StreamChannelListView] handles pagination +/// on the time they had a new message. +/// [StreamChannelListView] handles pagination /// and updates automatically when new channels are created or when a new /// message is added to a channel. void main() async { diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart index 8eb01fbb..aec63c57 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart @@ -15,9 +15,10 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// We start by changing how channel previews are shown in the channel list /// and include the number of unread messages for each. /// -/// We're passing a custom widget to [StreamChannelListView.channelPreviewBuilder]; -/// this will override the default [StreamChannelPreview] and allows you to create -/// one yourself. +/// We're passing a custom widget +/// to [StreamChannelListView.channelPreviewBuilder]; +/// this will override the default [StreamChannelPreview] and allows you +/// to create one yourself. /// /// There are a couple interesting things we do in this widget: /// diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart index 89aa55f7..5a4d13fe 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart @@ -8,8 +8,10 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// to create sub-conversations inside the same channel. /// /// Using threaded conversations is very simple and mostly a matter of -/// plugging the [StreamMessageListView] to another widget that renders the widget. -/// To make this simple, such a widget only needs to build [StreamMessageListView] +/// plugging the [StreamMessageListView] +/// to another widget that renders the widget. +/// To make this simple, such a widget only needs +/// to build [StreamMessageListView] /// with the parent attribute set to the thread’s root message. /// /// Now we can open threads and create new ones as well. If you long-press a diff --git a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart index 41e6fd11..a1b20450 100644 --- a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart @@ -58,7 +58,8 @@ class AttachmentActionsModal extends StatelessWidget { /// List of custom actions final List customActions; - /// Creates a copy of [StreamMessageWidget] with specified attributes overridden. + /// Creates a copy of [StreamMessageWidget] with + /// specified attributes overridden. AttachmentActionsModal copyWith({ Key? key, int? currentIndex, diff --git a/packages/stream_chat_flutter/lib/src/localization/translations.dart b/packages/stream_chat_flutter/lib/src/localization/translations.dart index 2a87e76d..83682c6d 100644 --- a/packages/stream_chat_flutter/lib/src/localization/translations.dart +++ b/packages/stream_chat_flutter/lib/src/localization/translations.dart @@ -1,8 +1,8 @@ import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/connection_status_builder.dart'; -import 'package:stream_chat_flutter/src/message_input/message_input.dart'; import 'package:stream_chat_flutter/src/message_list_view.dart'; import 'package:stream_chat_flutter/src/message_search_list_view.dart'; +import 'package:stream_chat_flutter/src/v4/message_input/stream_message_input.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart' show User; @@ -87,7 +87,8 @@ abstract class Translations { /// The label for "reconnecting" in [StreamConnectionStatusBuilder] String get reconnectingLabel; - /// The label for also send as direct message "checkbox"" in [StreamMessageInput] + /// The label for also send + /// as direct message "checkbox"" in [StreamMessageInput] String get alsoSendAsDirectMessageLabel; /// The label for search Gif diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index 05bff7ba..3108803e 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -428,7 +428,8 @@ class StreamMessageWidget extends StatefulWidget { /// Customize onTap on attachment final void Function(Message message, Attachment attachment)? onAttachmentTap; - /// Creates a copy of [StreamMessageWidget] with specified attributes overridden. + /// Creates a copy of [StreamMessageWidget] with + /// specified attributes overridden. StreamMessageWidget copyWith({ Key? key, void Function(User)? onMentionTap, diff --git a/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart b/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart index 7cff2b90..87ba0127 100644 --- a/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/channel_list_header_theme.dart @@ -12,7 +12,8 @@ typedef ChannelListHeaderTheme = StreamChannelListHeaderTheme; /// /// See also: /// -/// * [StreamChannelListHeaderThemeData], which is used to configure this theme. +/// * [StreamChannelListHeaderThemeData], which is used +/// to configure this theme. /// {@endtemplate} class StreamChannelListHeaderTheme extends InheritedTheme { /// Creates a [StreamChannelListHeaderTheme]. @@ -90,7 +91,8 @@ class StreamChannelListHeaderThemeData with Diagnosticable { color: color ?? this.color, ); - /// Linearly interpolate from one [StreamChannelListHeaderThemeData] to another. + /// Linearly interpolate from one [StreamChannelListHeaderThemeData] + /// to another. StreamChannelListHeaderThemeData lerp( StreamChannelListHeaderThemeData a, StreamChannelListHeaderThemeData b, diff --git a/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart b/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart index 4d6bd7d0..d3ed33eb 100644 --- a/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/channel_list_view_theme.dart @@ -58,12 +58,14 @@ typedef ChannelListViewThemeData = StreamChannelListViewThemeData; /// {@template channel_list_view_theme_data} /// A style that overrides the default appearance of [ChannelListView]s when -/// used with [StreamChannelListViewTheme] or with the overall [StreamChatTheme]'s +/// used with [StreamChannelListViewTheme] +/// or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.channelListViewTheme]. /// /// See also: /// -/// * [StreamChannelListViewTheme], the theme which is configured with this class. +/// * [StreamChannelListViewTheme], the theme +/// which is configured with this class. /// * [StreamChatThemeData.channelListViewTheme], which can be used to override /// the default style for [ChannelListView]s below the overall /// [StreamChatTheme]. diff --git a/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart b/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart index 3df974b2..e89ce4a6 100644 --- a/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/channel_preview_theme.dart @@ -64,7 +64,8 @@ typedef ChannelPreviewThemeData = StreamChannelPreviewThemeData; /// /// See also: /// -/// * [StreamChannelPreviewTheme], the theme which is configured with this class. +/// * [StreamChannelPreviewTheme], the theme +/// which is configured with this class. /// * [StreamChatThemeData.channelPreviewTheme], which can be used to override /// the default style for [ChannelHeader]s below the overall [StreamChatTheme]. /// {@endtemplate} diff --git a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart index c3874ef6..bd78bd1b 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_input_theme.dart @@ -61,7 +61,8 @@ typedef MessageInputThemeData = StreamMessageInputThemeData; /// {@template message_input_theme_data} /// A style that overrides the default appearance of [MessageInput] widgets -/// when used with [StreamMessageInputTheme] or with the overall [StreamChatTheme]'s +/// when used with [StreamMessageInputTheme] +/// or with the overall [StreamChatTheme]'s /// [StreamChatThemeData.messageInputTheme]. /// {@endtemplate} class StreamMessageInputThemeData with Diagnosticable { @@ -133,7 +134,8 @@ class StreamMessageInputThemeData with Diagnosticable { /// Shadow for the [MessageInput] widget final BoxShadow? shadow; - /// Returns a new [StreamMessageInputThemeData] replacing some of its properties + /// Returns a new [StreamMessageInputThemeData] + /// replacing some of its properties StreamMessageInputThemeData copyWith({ Duration? sendAnimationDuration, Color? inputBackgroundColor, diff --git a/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart index 882d4708..e882a9f6 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_list_view_theme.dart @@ -58,12 +58,14 @@ typedef MessageListViewThemeData = StreamMessageListViewThemeData; /// {@template message_list_view_theme_data} /// A style that overrides the default appearance of [MessageListView]s when -/// used with [StreamMessageListViewTheme] or with the overall [StreamChatTheme]'s +/// used with [StreamMessageListViewTheme] or with +/// the overall [StreamChatTheme]'s /// [StreamChatThemeData.messageListViewTheme]. /// /// See also: /// -/// * [StreamMessageListViewTheme], the theme which is configured with this class. +/// * [StreamMessageListViewTheme], the theme +/// which is configured with this class. /// * [StreamChatThemeData.messageListViewTheme], which can be used to override /// the default style for [MessageListView]s below the overall /// [StreamChatTheme]. diff --git a/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart b/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart index 83ef032a..535846ae 100644 --- a/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart +++ b/packages/stream_chat_flutter/lib/src/theme/message_search_list_view_theme.dart @@ -63,8 +63,8 @@ typedef MessageSearchListViewThemeData = StreamMessageSearchListViewThemeData; /// /// See also: /// -/// * [StreamMessageSearchListViewTheme], the theme which is configured with this -/// class. +/// * [StreamMessageSearchListViewTheme], the theme +/// which is configured with this class. /// * [StreamChatThemeData.messageSearchListViewTheme], which can be used to /// override the default style for [UserListView]s below the overall /// [StreamChatTheme]. diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index 16fcc5cc..f54c6db9 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -1,16 +1,7 @@ import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; -import 'package:jiffy/jiffy.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/sending_indicator.dart'; -import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; -import 'package:stream_chat_flutter/src/theme/channel_preview_theme.dart'; -import 'package:stream_chat_flutter/src/typing_indicator.dart'; -import 'package:stream_chat_flutter/src/unread_indicator.dart'; -import 'package:stream_chat_flutter/src/v4/stream_channel_avatar.dart'; -import 'package:stream_chat_flutter/src/v4/stream_channel_name.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// A widget that displays a channel preview. /// diff --git a/packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/countdown_button.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/message_input/countdown_button.dart rename to packages/stream_chat_flutter/lib/src/v4/message_input/countdown_button.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/simple_safe_area.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/message_input/simple_safe_area.dart rename to packages/stream_chat_flutter/lib/src/v4/message_input/simple_safe_area.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_attachment_picker.dart similarity index 99% rename from packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart rename to packages/stream_chat_flutter/lib/src/v4/message_input/stream_attachment_picker.dart index 8389d3c7..cb3859be 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_attachment_picker.dart @@ -352,7 +352,7 @@ class _StreamAttachmentPickerState extends State { if (mediaFile == null) return; - var file = AttachmentFile( + final file = AttachmentFile( path: mediaFile.path, size: await mediaFile.length(), bytes: mediaFile.readAsBytesSync(), diff --git a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart similarity index 99% rename from packages/stream_chat_flutter/lib/src/message_input/message_input.dart rename to packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart index 0ffa472c..085b021a 100644 --- a/packages/stream_chat_flutter/lib/src/message_input/message_input.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart @@ -13,11 +13,11 @@ import 'package:stream_chat_flutter/src/commands_overlay.dart'; import 'package:stream_chat_flutter/src/emoji/emoji.dart'; import 'package:stream_chat_flutter/src/emoji_overlay.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/message_input/simple_safe_area.dart'; -import 'package:stream_chat_flutter/src/message_input/tld.dart'; import 'package:stream_chat_flutter/src/multi_overlay.dart'; import 'package:stream_chat_flutter/src/quoted_message_widget.dart'; import 'package:stream_chat_flutter/src/user_mentions_overlay.dart'; +import 'package:stream_chat_flutter/src/v4/message_input/simple_safe_area.dart'; +import 'package:stream_chat_flutter/src/v4/message_input/tld.dart'; import 'package:stream_chat_flutter/src/video_thumbnail_image.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -34,7 +34,8 @@ typedef ErrorListener = void Function( StackTrace? stackTrace, ); -/// A callback that can be passed to [StreamMessageInput.onAttachmentLimitExceed]. +/// A callback that can be passed to +/// [StreamMessageInput.onAttachmentLimitExceed]. /// /// This callback should not throw. /// diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_send_button.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/message_input/stream_message_send_button.dart rename to packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_send_button.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_text_field.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/message_input/stream_message_text_field.dart rename to packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_text_field.dart diff --git a/packages/stream_chat_flutter/lib/src/message_input/tld.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/tld.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/message_input/tld.dart rename to packages/stream_chat_flutter/lib/src/v4/message_input/tld.dart diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index e63db686..4b129d1f 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -23,11 +23,6 @@ export 'src/localization/stream_chat_localizations.dart'; export 'src/localization/translations.dart' show DefaultTranslations; export 'src/message_action.dart'; export 'src/message_input.dart' show MessageInput, MessageInputState; -export 'src/message_input/countdown_button.dart'; -export 'src/message_input/message_input.dart'; -export 'src/message_input/stream_attachment_picker.dart'; -export 'src/message_input/stream_message_send_button.dart'; -export 'src/message_input/stream_message_text_field.dart'; export 'src/message_list_view.dart'; export 'src/message_search_item.dart'; export 'src/message_search_list_view.dart'; @@ -51,11 +46,15 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; - // v4 export 'src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; export 'src/v4/channel_list_view/stream_channel_list_tile.dart'; export 'src/v4/channel_list_view/stream_channel_list_view.dart'; +export 'src/v4/message_input/countdown_button.dart'; +export 'src/v4/message_input/stream_attachment_picker.dart'; +export 'src/v4/message_input/stream_message_input.dart'; +export 'src/v4/message_input/stream_message_send_button.dart'; +export 'src/v4/message_input/stream_message_text_field.dart'; export 'src/v4/stream_channel_avatar.dart'; export 'src/v4/stream_channel_info_bottom_sheet.dart'; export 'src/v4/stream_channel_name.dart'; diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 7305d74b..8fc47ac2 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter. -version: 3.5.1 +version: 4.0.0-beta.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index ab1e2504..1fb6c164 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,3 +1,14 @@ +## 4.0.0-beta.0 + +✅ Added + +- Added `MessageInputController` to hold `Message` related data. +- Deprecated old widgets in favor of Stream-prefixed ones. +- Deprecated `ChannelsBloc` in favor of `StreamChannelListController` to control the channel list. +- Added `MessageTextFieldController` to be used with the new `StreamTextField` ui widget. + +- Updated `stream_chat` dependency to [`4.0.0-beta.0`](https://pub.dev/packages/stream_chat/changelog). + ## 3.5.1 - Updated `stream_chat` dependency to [`3.5.1`](https://pub.dev/packages/stream_chat/changelog). @@ -9,10 +20,6 @@ ## 3.4.0 - Updated `stream_chat` dependency to [`3.4.0`](https://pub.dev/packages/stream_chat/changelog). -✅ Added - -- Added `MessageInputController` to hold `Message` related data. - 🐞 Fixed - Do not move a channel to top if the new message is from a thread. diff --git a/packages/stream_chat_flutter_core/pubspec.yaml b/packages/stream_chat_flutter_core/pubspec.yaml index 09ce3733..4e5e39b7 100644 --- a/packages/stream_chat_flutter_core/pubspec.yaml +++ b/packages/stream_chat_flutter_core/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter_core homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK Core. Build your own chat experience using Dart and Flutter. -version: 3.5.1 +version: 4.0.0-beta.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -17,7 +17,7 @@ dependencies: freezed_annotation: ^1.0.0 meta: ^1.3.0 rxdart: ^0.27.0 - stream_chat: ^3.5.1 + stream_chat: ^4.0.0-beta.0 dev_dependencies: build_runner: ^2.0.1 diff --git a/packages/stream_chat_localizations/CHANGELOG.md b/packages/stream_chat_localizations/CHANGELOG.md index 94dc71c3..1e4f4c35 100644 --- a/packages/stream_chat_localizations/CHANGELOG.md +++ b/packages/stream_chat_localizations/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.0.0-beta.0 + +* Updated `stream_chat_flutter` dependency to [`4.0.0-beta.0`](https://pub.dev/packages/stream_chat_flutter/changelog). + ## 2.1.0 ✅ Added diff --git a/packages/stream_chat_localizations/pubspec.yaml b/packages/stream_chat_localizations/pubspec.yaml index 00606a7b..02bc1075 100644 --- a/packages/stream_chat_localizations/pubspec.yaml +++ b/packages/stream_chat_localizations/pubspec.yaml @@ -1,6 +1,6 @@ name: stream_chat_localizations description: The Official localizations for Stream Chat Flutter, a service for building chat applications -version: 2.1.0 +version: 3.0.0-beta.0 homepage: https://github.com/GetStream/stream-chat-flutter repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -14,7 +14,7 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter - stream_chat_flutter: ^3.4.0 + stream_chat_flutter: ^4.0.0-beta.0 dev_dependencies: dart_code_metrics: ^4.4.0 diff --git a/packages/stream_chat_persistence/CHANGELOG.md b/packages/stream_chat_persistence/CHANGELOG.md index ea67fa88..5e80bd62 100644 --- a/packages/stream_chat_persistence/CHANGELOG.md +++ b/packages/stream_chat_persistence/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.0.0-beta.0 + +- Updated `stream_chat` dependency to [`4.0.0-beta.0`](https://pub.dev/packages/stream_chat/changelog). + ## 3.1.0 - Bump `drift` to `1.3.0`. diff --git a/packages/stream_chat_persistence/pubspec.yaml b/packages/stream_chat_persistence/pubspec.yaml index 06167a11..0d28870e 100644 --- a/packages/stream_chat_persistence/pubspec.yaml +++ b/packages/stream_chat_persistence/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_persistence homepage: https://github.com/GetStream/stream-chat-flutter description: Official Stream Chat Persistence library. Build your own chat experience using Dart and Flutter. -version: 3.1.0 +version: 4.0.0-beta.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -19,7 +19,7 @@ dependencies: path: ^1.8.0 path_provider: ^2.0.1 sqlite3_flutter_libs: ^0.5.0 - stream_chat: ^3.4.0 + stream_chat: ^4.0.0-beta.0 dev_dependencies: build_runner: ^2.0.1 From 9eefb74600075eadaf9b0cfac951eda37fb861d3 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Mar 2022 11:34:44 +0100 Subject: [PATCH 129/201] remove log --- .../lib/src/stream_channel_list_controller.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart index 3b7342e5..b7ca36c9 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart @@ -221,7 +221,6 @@ class StreamChannelListController extends PagedValueNotifier { } _channelEventSubscription = client.on().listen((event) { - print('event.type: ${event.type}'); // Returns early if the event is already handled by the listener. if (eventListener?.call(event) ?? false) return; From 0a4eb0a1711ba3f5f71f98ac752776b4343a94c7 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 23 Mar 2022 16:25:51 +0530 Subject: [PATCH 130/201] feat(ui): only handle the latest events in channelEventSubscription Signed-off-by: xsahil03x --- .../lib/src/stream_channel_list_controller.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart index 3b7342e5..7fa3b226 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart @@ -220,8 +220,8 @@ class StreamChannelListController extends PagedValueNotifier { _unsubscribeFromChannelListEvents(); } - _channelEventSubscription = client.on().listen((event) { - print('event.type: ${event.type}'); + _channelEventSubscription = client.on().skip(1) // skip the initial event + .listen((event) { // Returns early if the event is already handled by the listener. if (eventListener?.call(event) ?? false) return; From 67dad76e46d90cd23d761cfb997ea2fc01b83fea Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Wed, 23 Mar 2022 16:33:20 +0530 Subject: [PATCH 131/201] feat(ui): improve the message for skipping the event. Signed-off-by: xsahil03x --- .../lib/src/stream_channel_list_controller.dart | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart index 7fa3b226..9fe5594c 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_controller.dart @@ -220,8 +220,10 @@ class StreamChannelListController extends PagedValueNotifier { _unsubscribeFromChannelListEvents(); } - _channelEventSubscription = client.on().skip(1) // skip the initial event - .listen((event) { + _channelEventSubscription = + client.on().skip(1) // Skipping the last emitted event. + // We only need to handle the latest events. + .listen((event) { // Returns early if the event is already handled by the listener. if (eventListener?.call(event) ?? false) return; From 363c95148e6a402733a0e5e84f8636d251383fa4 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Mar 2022 14:25:51 +0100 Subject: [PATCH 132/201] update changelog --- packages/stream_chat_flutter/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index d116d50d..f26f3fcb 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -12,6 +12,7 @@ - Separated `MessageInput` widget in smaller components. (For example `CountDownButton`, `StreamAttachmentPicker`...) - Updated `stream_chat_flutter_core` dependency to [`4.0.0-beta.0`](https://pub.dev/packages/stream_chat_flutter_core/changelog). - Added OpenGraph preview support for links in `StreamMessageInput`. +- Removed video compression. 🐞 Fixed From a0f353373e76c7118904bc65375b2f74f47deb26 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Mar 2022 14:47:57 +0100 Subject: [PATCH 133/201] fix format --- packages/stream_chat_flutter/example/lib/main.dart | 2 +- packages/stream_chat_flutter/example/lib/tutorial_part_1.dart | 2 +- packages/stream_chat_flutter/example/lib/tutorial_part_2.dart | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/example/lib/main.dart b/packages/stream_chat_flutter/example/lib/main.dart index 7b015689..ab8d0dfc 100644 --- a/packages/stream_chat_flutter/example/lib/main.dart +++ b/packages/stream_chat_flutter/example/lib/main.dart @@ -87,7 +87,7 @@ class MyApp extends StatelessWidget { /// A list of messages sent in the current channel. /// -/// This is implemented using [StreamMessageListView], +/// This is implemented using [StreamMessageListView], /// a widget that provides query /// functionalities fetching the messages from the api and showing them in a /// listView. diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart index 2c43230e..7c73693e 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart @@ -27,7 +27,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// - We make [StreamChat] the root Widget of our application /// /// - We create a single [ChannelPage] widget under [StreamChat] with three -/// widgets: [StreamChannelHeader], [StreamMessageListView] +/// widgets: [StreamChannelHeader], [StreamMessageListView] /// and [StreamMessageInput] /// /// If you now run the simulator you will see a single channel UI. diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart index a46043e3..8f2ba8b1 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart @@ -25,7 +25,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// The [ChannelListPage] widget retrieves the list of channels based on a /// custom query and ordering. In this case we are showing the list of /// channels in which the current user is a member and we order them based -/// on the time they had a new message. +/// on the time they had a new message. /// [StreamChannelListView] handles pagination /// and updates automatically when new channels are created or when a new /// message is added to a channel. From 21a8110bd28df3a769351ce735025b2411db06d1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Mar 2022 16:36:03 +0100 Subject: [PATCH 134/201] fix format --- .../lib/src/v4/stream_channel_info_bottom_sheet.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart index 1a219e91..986a9cb3 100644 --- a/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_info_bottom_sheet.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:stream_chat/stream_chat.dart'; import 'package:stream_chat_flutter/src/channel_info.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/option_list_tile.dart'; @@ -8,6 +7,7 @@ import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/theme/themes.dart'; import 'package:stream_chat_flutter/src/user_avatar.dart'; import 'package:stream_chat_flutter/src/v4/stream_channel_name.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// A [BottomSheet] that shows information about a [Channel]. class StreamChannelInfoBottomSheet extends StatelessWidget { From a8e04e84282489791ef05e60e22db8030ce8a14a Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 23 Mar 2022 16:49:16 +0100 Subject: [PATCH 135/201] fix imports --- packages/stream_chat_flutter/CHANGELOG.md | 2 +- packages/stream_chat_flutter/pubspec.yaml | 4 ++-- packages/stream_chat_localizations/CHANGELOG.md | 4 ++-- packages/stream_chat_localizations/pubspec.yaml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index f26f3fcb..c26bfa2d 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,4 +1,4 @@ -## 4.0.0-beta.0 +## 4.0.0-beta.1 ✅ Added diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 8fc47ac2..87246386 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter. -version: 4.0.0-beta.0 +version: 4.0.0-beta.1 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -36,7 +36,7 @@ dependencies: rxdart: ^0.27.0 share_plus: ^4.0.1 shimmer: ^2.0.0 - stream_chat_flutter_core: ^3.5.1 + stream_chat_flutter_core: ^4.0.0-beta.0 substring_highlight: ^1.0.26 url_launcher: ^6.0.3 video_player: ^2.1.0 diff --git a/packages/stream_chat_localizations/CHANGELOG.md b/packages/stream_chat_localizations/CHANGELOG.md index 1e4f4c35..2a8addab 100644 --- a/packages/stream_chat_localizations/CHANGELOG.md +++ b/packages/stream_chat_localizations/CHANGELOG.md @@ -1,6 +1,6 @@ -## 3.0.0-beta.0 +## 3.0.0-beta.1 -* Updated `stream_chat_flutter` dependency to [`4.0.0-beta.0`](https://pub.dev/packages/stream_chat_flutter/changelog). +* Updated `stream_chat_flutter` dependency to [`4.0.0-beta.1`](https://pub.dev/packages/stream_chat_flutter/changelog). ## 2.1.0 diff --git a/packages/stream_chat_localizations/pubspec.yaml b/packages/stream_chat_localizations/pubspec.yaml index 02bc1075..a47eabbb 100644 --- a/packages/stream_chat_localizations/pubspec.yaml +++ b/packages/stream_chat_localizations/pubspec.yaml @@ -1,6 +1,6 @@ name: stream_chat_localizations description: The Official localizations for Stream Chat Flutter, a service for building chat applications -version: 3.0.0-beta.0 +version: 3.0.0-beta.1 homepage: https://github.com/GetStream/stream-chat-flutter repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -14,7 +14,7 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter - stream_chat_flutter: ^4.0.0-beta.0 + stream_chat_flutter: ^4.0.0-beta.1 dev_dependencies: dart_code_metrics: ^4.4.0 From 44f17f0d95475726ac98a05eb227bf89abbb43f1 Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Mon, 4 Apr 2022 16:54:01 +0200 Subject: [PATCH 136/201] docs(ui): update code documentation and tutorials --- .../example/lib/tutorial_part_1.dart | 3 +- .../example/lib/tutorial_part_2.dart | 11 ++++-- .../example/lib/tutorial_part_3.dart | 13 ++++--- .../example/lib/tutorial_part_4.dart | 10 ++++-- .../example/lib/tutorial_part_5.dart | 9 +++-- .../example/lib/tutorial_part_6.dart | 10 +++++- .../lib/src/channel_avatar.dart | 2 +- .../lib/src/message_list_view.dart | 34 ++++++++----------- .../message_input/stream_message_input.dart | 32 ++++++++--------- .../lib/src/v4/stream_channel_avatar.dart | 2 +- 10 files changed, 74 insertions(+), 52 deletions(-) diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart index 7c73693e..94524ebb 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_1.dart @@ -1,4 +1,5 @@ // ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_expression_function_bodies import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -67,10 +68,8 @@ class MyApp extends StatelessWidget { final Channel channel; @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return MaterialApp( - // ignore: prefer_expression_function_bodies builder: (context, widget) { return StreamChat( client: client, diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart index 8f2ba8b1..15f7914c 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_2.dart @@ -1,4 +1,6 @@ // ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_expression_function_bodies + import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -14,7 +16,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// > Note: the SDK uses Flutter’s [Navigator] to move from one route to /// another. This allows us to avoid any boiler-plate code. /// > Of course, you can take total control of how navigation works by -/// customizing widgets like [Channel] and [ChannelList]. +/// customizing widgets like [StreamChannel] and [StreamChannelListView]. /// /// If you run the application, you will see that the first screen shows a /// list of conversations, you can open each by tapping and go back to the list. @@ -56,7 +58,6 @@ class MyApp extends StatelessWidget { final StreamChatClient client; @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return MaterialApp( builder: (context, child) => StreamChat( @@ -92,6 +93,12 @@ class _ChannelListPageState extends State { sort: const [SortOption('last_message_at')], ); + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) => Scaffold( body: RefreshIndicator( diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart index aec63c57..122c62a3 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart @@ -1,4 +1,5 @@ // ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_expression_function_bodies import 'package:collection/collection.dart' show IterableExtension; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -16,8 +17,8 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// and include the number of unread messages for each. /// /// We're passing a custom widget -/// to [StreamChannelListView.channelPreviewBuilder]; -/// this will override the default [StreamChannelPreview] and allows you +/// to [StreamChannelListView.itemBuilder]; +/// this will override the default [StreamChannelListTile] and allows you /// to create one yourself. /// /// There are a couple interesting things we do in this widget: @@ -57,7 +58,6 @@ class MyApp extends StatelessWidget { final StreamChatClient client; @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return MaterialApp( builder: (context, child) => StreamChat( @@ -89,6 +89,12 @@ class _ChannelListPageState extends State { limit: 20, ); + @override + void dispose() { + _listController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) => Scaffold( body: StreamChannelListView( @@ -160,7 +166,6 @@ class ChannelPage extends StatelessWidget { }) : super(key: key); @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( appBar: const StreamChannelHeader(), diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart index 5a4d13fe..209af7ea 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart @@ -1,4 +1,6 @@ // ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_expression_function_bodies + import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -43,7 +45,6 @@ class MyApp extends StatelessWidget { final StreamChatClient client; @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return MaterialApp( builder: (context, child) => StreamChat( @@ -75,6 +76,12 @@ class _ChannelListPageState extends State { limit: 20, ); + @override + void dispose() { + _listController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) => Scaffold( body: StreamChannelListView( @@ -125,7 +132,6 @@ class ThreadPage extends StatelessWidget { final Message? parent; @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( appBar: StreamThreadHeader( diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart index fd6081f7..7977d3be 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_5.dart @@ -1,4 +1,5 @@ // ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_expression_function_bodies import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -47,7 +48,6 @@ class MyApp extends StatelessWidget { final StreamChatClient client; @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return MaterialApp( builder: (context, child) => StreamChat( @@ -79,6 +79,12 @@ class _ChannelListPageState extends State { limit: 20, ); + @override + void dispose() { + _listController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) => Scaffold( body: StreamChannelListView( @@ -103,7 +109,6 @@ class ChannelPage extends StatelessWidget { }) : super(key: key); @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( appBar: const StreamChannelHeader(), diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart index 6ff1bb64..a872fb6e 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart @@ -1,4 +1,6 @@ // ignore_for_file: public_member_api_docs +// ignore_for_file: prefer_expression_function_bodies + import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; @@ -112,6 +114,13 @@ class _ChannelListPageState extends State { sort: const [SortOption('last_message_at')], limit: 20, ); + + @override + void dispose() { + _listController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) => Scaffold( body: StreamChannelListView( @@ -162,7 +171,6 @@ class ThreadPage extends StatelessWidget { final Message? parent; @override - // ignore: prefer_expression_function_bodies Widget build(BuildContext context) { return Scaffold( appBar: StreamThreadHeader( diff --git a/packages/stream_chat_flutter/lib/src/channel_avatar.dart b/packages/stream_chat_flutter/lib/src/channel_avatar.dart index 077302dd..cf0c74b1 100644 --- a/packages/stream_chat_flutter/lib/src/channel_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/channel_avatar.dart @@ -24,7 +24,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// child: StreamChannel( /// channel: channel, /// child: Center( -/// child: ChannelImage( +/// child: ChannelAvatar( /// channel: channel, /// ), /// ), diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index 0bf2e44d..f4a8fef8 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -136,29 +136,25 @@ typedef MessageListView = StreamMessageListView; /// ```dart /// class ChannelPage extends StatelessWidget { /// const ChannelPage({ -/// Key key, +/// Key? key, /// }) : super(key: key); /// /// @override -/// Widget build(BuildContext context) { -/// return Scaffold( -/// appBar: ChannelHeader(), -/// body: Column( -/// children: [ -/// Expanded( -/// child: MessageListView( -/// threadBuilder: (_, parentMessage) { -/// return ThreadPage( +/// Widget build(BuildContext context) => Scaffold( +/// appBar: const StreamChannelHeader(), +/// body: Column( +/// children: [ +/// Expanded( +/// child: StreamMessageListView( +/// threadBuilder: (_, parentMessage) => ThreadPage( /// parent: parentMessage, -/// ); -/// }, +/// ), +/// ), /// ), -/// ), -/// MessageInput(), -/// ], -/// ), -/// ); -/// } +/// const StreamMessageInput(), +/// ], +/// ), +/// ); /// } /// ``` /// @@ -172,7 +168,7 @@ typedef MessageListView = StreamMessageListView; /// Modify it to change the widget appearance. /// {@endtemplate} class StreamMessageListView extends StatefulWidget { - /// Instantiate a new MessageListView + /// Instantiate a new StreamMessageListView. const StreamMessageListView({ Key? key, this.showScrollToBottom = true, diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart index 085b021a..321ea3bc 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart @@ -144,29 +144,25 @@ const _kDefaultMaxAttachmentSize = 20971520; // 20MB in Bytes /// ```dart /// class ChannelPage extends StatelessWidget { /// const ChannelPage({ -/// Key key, +/// Key? key, /// }) : super(key: key); /// /// @override -/// Widget build(BuildContext context) { -/// return Scaffold( -/// appBar: ChannelHeader(), -/// body: Column( -/// children: [ -/// Expanded( -/// child: MessageListView( -/// threadBuilder: (_, parentMessage) { -/// return ThreadPage( +/// Widget build(BuildContext context) => Scaffold( +/// appBar: const StreamChannelHeader(), +/// body: Column( +/// children: [ +/// Expanded( +/// child: StreamMessageListView( +/// threadBuilder: (_, parentMessage) => ThreadPage( /// parent: parentMessage, -/// ); -/// }, +/// ), +/// ), /// ), -/// ), -/// MessageInput(), -/// ], -/// ), -/// ); -/// } +/// const StreamMessageInput(), +/// ], +/// ), +/// ); /// } /// ``` /// diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart b/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart index 95cc14f2..448e39d8 100644 --- a/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart +++ b/packages/stream_chat_flutter/lib/src/v4/stream_channel_avatar.dart @@ -24,7 +24,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// child: StreamChannel( /// channel: channel, /// child: Center( -/// child: ChannelImage( +/// child: StreamChannelAvatar( /// channel: channel, /// ), /// ), From 67c094b12bb5cb172da4e923371f902f86c49bdb Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Tue, 5 Apr 2022 13:46:57 +0530 Subject: [PATCH 137/201] Added an option to pass InlineSpan builders for full control of message input --- .../lib/src/message_input_controller.dart | 16 +++++----- .../src/message_text_field_controller.dart | 29 +++++++++---------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index 65c6d8d8..f7ddc1e1 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -19,37 +19,37 @@ class MessageInputController extends ValueNotifier { /// message. factory MessageInputController({ Message? message, - Map? textPatternStyle, + Map? textPatternSpan, }) => MessageInputController._( initialMessage: message ?? Message(), - textPatternStyle: textPatternStyle, + textPatternSpan: textPatternSpan, ); /// Creates a controller for an editable text field from an initial [text]. factory MessageInputController.fromText( String? text, { - Map? textPatternStyle, + Map? textPatternSpan, }) => MessageInputController._( initialMessage: Message(text: text), - textPatternStyle: textPatternStyle, + textPatternSpan: textPatternSpan, ); /// Creates a controller for an editable text field from initial /// [attachments]. factory MessageInputController.fromAttachments( List attachments, { - Map? textPatternStyle, + Map? textPatternSpan, }) => MessageInputController._( initialMessage: Message(attachments: attachments), - textPatternStyle: textPatternStyle, + textPatternSpan: textPatternSpan, ); MessageInputController._({ required Message initialMessage, - Map? textPatternStyle, + Map? textPatternSpan, }) : _textEditingController = MessageTextFieldController.fromValue( initialMessage.text == null ? const TextEditingValue() @@ -57,7 +57,7 @@ class MessageInputController extends ValueNotifier { text: initialMessage.text!, composing: TextRange.collapsed(initialMessage.text!.length), ), - textPatternStyle: textPatternStyle, + textPatternSpan: textPatternSpan, ), _initialMessage = initialMessage, super(initialMessage) { diff --git a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart index 0f9f75c6..cba47cf2 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -/// A function that takes a [BuildContext] and returns a [TextStyle]. -typedef TextStyleBuilder = TextStyle? Function( +/// A function that takes a [BuildContext] and returns an [InlineSpan]. +typedef InlineSpanBuilder = InlineSpan Function( BuildContext context, String text, ); @@ -11,17 +11,17 @@ class MessageTextFieldController extends TextEditingController { /// Returns a new MessageTextFieldController MessageTextFieldController({ String? text, - this.textPatternStyle, + this.textPatternSpan, }) : super(text: text); /// Returns a new MessageTextFieldController with the given text [value]. MessageTextFieldController.fromValue( TextEditingValue? value, { - this.textPatternStyle, + this.textPatternSpan, }) : super.fromValue(value); /// A map of style to apply to the text matching the RegExp patterns. - final Map? textPatternStyle; + final Map? textPatternSpan; /// Builds a [TextSpan] from the current text, /// highlighting the matches for [textPatternStyle]. @@ -31,7 +31,7 @@ class MessageTextFieldController extends TextEditingController { TextStyle? style, required bool withComposing, }) { - final pattern = textPatternStyle; + final pattern = textPatternSpan; if (pattern == null || pattern.isEmpty) { return super.buildTextSpan( context: context, @@ -45,13 +45,10 @@ class MessageTextFieldController extends TextEditingController { onMatch: (match) { final text = match[0]!; final key = pattern.keys.firstWhere((it) => it.hasMatch(text)); - return TextSpan( - text: text, - style: pattern[key]?.call( - context, - text, - ), - ); + return pattern[key]?.call(context, text) ?? + TextSpan( + text: text, + ); }, ); } @@ -60,10 +57,10 @@ class MessageTextFieldController extends TextEditingController { extension _TextSpanX on TextSpan { TextSpan splitMapJoin( Pattern pattern, { - TextSpan Function(Match)? onMatch, - TextSpan Function(TextSpan)? onNonMatch, + InlineSpan Function(Match)? onMatch, + InlineSpan Function(InlineSpan)? onNonMatch, }) { - final children = []; + final children = []; toPlainText().splitMapJoin( pattern, From c37560ca9e67d7dbb08f833b9e0fd4c3b5aa9679 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 6 Apr 2022 11:16:58 +0200 Subject: [PATCH 138/201] fix(ui): fix messageInput removing last space --- .../lib/src/v4/message_input/stream_message_input.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart index 085b021a..2eb95936 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart @@ -987,9 +987,7 @@ class StreamMessageInputState extends State .channel .ownCapabilities .contains(PermissionType.sendLinks)) { - _effectiveController - ..text = value - ..clearOGAttachment(); + _effectiveController.clearOGAttachment(); return; } From 92b8711ccf1ff5d78092532183e81fd0a489cce1 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Wed, 6 Apr 2022 18:26:09 +0530 Subject: [PATCH 139/201] Removed the inline span builder code from messageinput --- .../lib/src/message_input_controller.dart | 16 +++++----- .../src/message_text_field_controller.dart | 29 ++++++++++--------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index f7ddc1e1..65c6d8d8 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -19,37 +19,37 @@ class MessageInputController extends ValueNotifier { /// message. factory MessageInputController({ Message? message, - Map? textPatternSpan, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: message ?? Message(), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from an initial [text]. factory MessageInputController.fromText( String? text, { - Map? textPatternSpan, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: Message(text: text), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from initial /// [attachments]. factory MessageInputController.fromAttachments( List attachments, { - Map? textPatternSpan, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: Message(attachments: attachments), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ); MessageInputController._({ required Message initialMessage, - Map? textPatternSpan, + Map? textPatternStyle, }) : _textEditingController = MessageTextFieldController.fromValue( initialMessage.text == null ? const TextEditingValue() @@ -57,7 +57,7 @@ class MessageInputController extends ValueNotifier { text: initialMessage.text!, composing: TextRange.collapsed(initialMessage.text!.length), ), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ), _initialMessage = initialMessage, super(initialMessage) { diff --git a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart index cba47cf2..0f9f75c6 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -/// A function that takes a [BuildContext] and returns an [InlineSpan]. -typedef InlineSpanBuilder = InlineSpan Function( +/// A function that takes a [BuildContext] and returns a [TextStyle]. +typedef TextStyleBuilder = TextStyle? Function( BuildContext context, String text, ); @@ -11,17 +11,17 @@ class MessageTextFieldController extends TextEditingController { /// Returns a new MessageTextFieldController MessageTextFieldController({ String? text, - this.textPatternSpan, + this.textPatternStyle, }) : super(text: text); /// Returns a new MessageTextFieldController with the given text [value]. MessageTextFieldController.fromValue( TextEditingValue? value, { - this.textPatternSpan, + this.textPatternStyle, }) : super.fromValue(value); /// A map of style to apply to the text matching the RegExp patterns. - final Map? textPatternSpan; + final Map? textPatternStyle; /// Builds a [TextSpan] from the current text, /// highlighting the matches for [textPatternStyle]. @@ -31,7 +31,7 @@ class MessageTextFieldController extends TextEditingController { TextStyle? style, required bool withComposing, }) { - final pattern = textPatternSpan; + final pattern = textPatternStyle; if (pattern == null || pattern.isEmpty) { return super.buildTextSpan( context: context, @@ -45,10 +45,13 @@ class MessageTextFieldController extends TextEditingController { onMatch: (match) { final text = match[0]!; final key = pattern.keys.firstWhere((it) => it.hasMatch(text)); - return pattern[key]?.call(context, text) ?? - TextSpan( - text: text, - ); + return TextSpan( + text: text, + style: pattern[key]?.call( + context, + text, + ), + ); }, ); } @@ -57,10 +60,10 @@ class MessageTextFieldController extends TextEditingController { extension _TextSpanX on TextSpan { TextSpan splitMapJoin( Pattern pattern, { - InlineSpan Function(Match)? onMatch, - InlineSpan Function(InlineSpan)? onNonMatch, + TextSpan Function(Match)? onMatch, + TextSpan Function(TextSpan)? onNonMatch, }) { - final children = []; + final children = []; toPlainText().splitMapJoin( pattern, From 1bb3c0566e703ca8580925e6668504a20e675eb2 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 7 Apr 2022 10:50:00 +0200 Subject: [PATCH 140/201] fix tests --- .../stream_chat_flutter/test/src/channel_header_test.dart | 6 +++--- .../stream_chat_flutter/test/src/channel_preview_test.dart | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/test/src/channel_header_test.dart b/packages/stream_chat_flutter/test/src/channel_header_test.dart index 6590ee66..831809a7 100644 --- a/packages/stream_chat_flutter/test/src/channel_header_test.dart +++ b/packages/stream_chat_flutter/test/src/channel_header_test.dart @@ -65,7 +65,7 @@ void main() { )); expect(find.text('test'), findsOneWidget); - expect(find.byType(ChannelAvatar), findsOneWidget); + expect(find.byType(StreamChannelAvatar), findsOneWidget); expect(find.byType(StreamBackButton), findsOneWidget); expect(find.byType(StreamChannelInfo), findsOneWidget); }, @@ -428,8 +428,8 @@ void main() { )); await tester.tap(find.byType(StreamBackButton)); - await tester.tap(find.byType(ChannelAvatar)); - await tester.tap(find.byType(ChannelName)); + await tester.tap(find.byType(StreamChannelAvatar)); + await tester.tap(find.byType(StreamChannelName)); expect(backPressed, true); expect(imageTapped, true); diff --git a/packages/stream_chat_flutter/test/src/channel_preview_test.dart b/packages/stream_chat_flutter/test/src/channel_preview_test.dart index 47554605..285a5373 100644 --- a/packages/stream_chat_flutter/test/src/channel_preview_test.dart +++ b/packages/stream_chat_flutter/test/src/channel_preview_test.dart @@ -83,7 +83,7 @@ void main() { expect(find.text('test name'), findsOneWidget); expect(find.text('1'), findsOneWidget); expect(find.text('hello'), findsOneWidget); - expect(find.byType(ChannelAvatar), findsOneWidget); + expect(find.byType(StreamChannelAvatar), findsOneWidget); }, ); } From 0d3ed3f1e1ecf80bdb4b08efbb09fa62280be7d0 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 12 Apr 2022 15:13:00 +0200 Subject: [PATCH 141/201] chore(ui): update changelog --- packages/stream_chat_flutter/CHANGELOG.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 198ad8ea..3feb52ab 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -17,11 +17,6 @@ 🐞 Fixed - Minor fixes and improvements - -## Upcoming - -🐞 Fixed - -[[#892]](https://github.com/GetStream/stream-chat-flutter/issues/892): Fix default `initialAlignment` in `MessageListView`. ## 3.5.1 From 180c24ae72b98c9a95c4f29011ef2cae38223432 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Wed, 13 Apr 2022 18:02:49 +0530 Subject: [PATCH 142/201] Implemented StreamAttachmentPackage and fixed operations in widgets linked to full screen implementation, also fixed tests --- analysis_options.yaml | 1 - .../lib/src/attachment/giphy_attachment.dart | 3 +- .../lib/src/attachment/image_attachment.dart | 4 +- .../lib/src/attachment/video_attachment.dart | 4 +- .../lib/src/attachment_actions_modal.dart | 155 +++++++----- .../lib/src/full_screen_media.dart | 118 +++++---- .../lib/src/gallery_footer.dart | 27 +-- .../lib/src/gallery_header.dart | 12 +- .../lib/src/image_group.dart | 3 +- .../lib/src/stream_attachment_package.dart | 18 ++ .../stream_chat_flutter/lib/src/utils.dart | 17 ++ .../lib/stream_chat_flutter.dart | 2 + packages/stream_chat_flutter/pubspec.yaml | 2 +- .../src/attachment_actions_modal_test.dart | 223 ++++++++++-------- .../test/src/full_screen_media_test.dart | 23 +- .../test/src/image_footer_test.dart | 2 +- .../src/theme/gallery_footer_theme_test.dart | 4 +- .../src/theme/gallery_header_theme_test.dart | 8 +- 18 files changed, 373 insertions(+), 253 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/stream_attachment_package.dart diff --git a/analysis_options.yaml b/analysis_options.yaml index 03a4220e..336d222e 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -91,7 +91,6 @@ linter: - prefer_constructors_over_static_methods - prefer_contains - prefer_equal_for_default_values - - prefer_expression_function_bodies - prefer_final_fields - prefer_final_in_for_each - prefer_final_locals diff --git a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart index 28e14e5e..6381c345 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart @@ -250,10 +250,9 @@ class StreamGiphyAttachment extends StreamAttachmentWidget { return StreamChannel( channel: channel, child: StreamFullScreenMedia( - mediaAttachments: message.attachments, + mediaAttachmentPackages: message.getAttachmentPackageList(), startIndex: message.attachments.indexOf(attachment), userName: message.user?.name, - message: message, onShowMessage: onShowMessage, ), ); diff --git a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart index b6de6bc1..bb4d8161 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/image_attachment.dart @@ -144,11 +144,11 @@ class StreamImageAttachment extends StreamAttachmentWidget { return StreamChannel( channel: channel, child: StreamFullScreenMedia( - mediaAttachments: message.attachments, + mediaAttachmentPackages: + message.getAttachmentPackageList(), startIndex: message.attachments.indexOf(attachment), userName: message.user?.name, - message: message, onShowMessage: onShowMessage, ), ); diff --git a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart index 541f1484..620ae66b 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/video_attachment.dart @@ -91,11 +91,11 @@ class StreamVideoAttachment extends StreamAttachmentWidget { builder: (_) => StreamChannel( channel: channel, child: StreamFullScreenMedia( - mediaAttachments: message.attachments, + mediaAttachmentPackages: + message.getAttachmentPackageList(), startIndex: message.attachments.indexOf(attachment), userName: message.user?.name, - message: message, onShowMessage: onShowMessage, ), ), diff --git a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart index a1b20450..3b5582df 100644 --- a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart @@ -9,14 +9,18 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart'; typedef AttachmentDownloader = Future Function( Attachment attachment, { ProgressCallback? progressCallback, + DownloadedPathCallback? downloadedPathCallback, }); +/// Callback to receive the path once the attachment asset is downloaded +typedef DownloadedPathCallback = void Function(String? path); + /// Widget that shows the options in the gallery view class AttachmentActionsModal extends StatelessWidget { /// Returns a new [AttachmentActionsModal] const AttachmentActionsModal({ Key? key, - required this.currentIndex, + required this.attachment, required this.message, this.onShowMessage, this.imageDownloader, @@ -28,12 +32,12 @@ class AttachmentActionsModal extends StatelessWidget { this.customActions = const [], }) : super(key: key); + /// The attachment object for which the actions are to be performed + final Attachment attachment; + /// The message containing the attachments final Message message; - /// Current page index - final int currentIndex; - /// Callback to show the message final VoidCallback? onShowMessage; @@ -62,7 +66,7 @@ class AttachmentActionsModal extends StatelessWidget { /// specified attributes overridden. AttachmentActionsModal copyWith({ Key? key, - int? currentIndex, + Attachment? attachment, Message? message, VoidCallback? onShowMessage, AttachmentDownloader? imageDownloader, @@ -75,7 +79,7 @@ class AttachmentActionsModal extends StatelessWidget { }) => AttachmentActionsModal( key: key ?? this.key, - currentIndex: currentIndex ?? this.currentIndex, + attachment: attachment ?? this.attachment, message: message ?? this.message, onShowMessage: onShowMessage ?? this.onShowMessage, imageDownloader: imageDownloader ?? this.imageDownloader, @@ -138,7 +142,7 @@ class AttachmentActionsModal extends StatelessWidget { if (showSave) _buildButton( context, - message.attachments[currentIndex].type == 'video' + attachment.type == 'video' ? context.translations.saveVideoLabel : context.translations.saveImageLabel, StreamSvgIcon.iconSave( @@ -146,15 +150,16 @@ class AttachmentActionsModal extends StatelessWidget { color: theme.colorTheme.textLowEmphasis, ), () { - final attachment = message.attachments[currentIndex]; final isImage = attachment.type == 'image'; final Future Function( Attachment, { void Function(int, int) progressCallback, + DownloadedPathCallback downloadedPathCallback, }) saveFile = fileDownloader ?? _downloadAttachment; final Future Function( Attachment, { void Function(int, int) progressCallback, + DownloadedPathCallback downloadedPathCallback, }) saveImage = imageDownloader ?? _downloadAttachment; final downloader = isImage ? saveImage : saveFile; @@ -162,15 +167,25 @@ class AttachmentActionsModal extends StatelessWidget { ValueNotifier<_DownloadProgress?>( _DownloadProgress.initial(), ); + final downloadedPathNotifier = ValueNotifier( + null, + ); downloader( attachment, progressCallback: (received, total) { + print('>>>>>>>>>>>>>>>'); + print('>>r : $received'); + print('>>t : $total'); + print('>>>>>>>>>>>>>>>'); progressNotifier.value = _DownloadProgress( total, received, ); }, + downloadedPathCallback: (String? path) { + downloadedPathNotifier.value = path; + }, ).catchError((e, stk) { progressNotifier.value = null; }); @@ -186,6 +201,7 @@ class AttachmentActionsModal extends StatelessWidget { builder: (context) => _buildDownloadProgressDialog( context, progressNotifier, + downloadedPathNotifier, ), ); }, @@ -204,8 +220,12 @@ class AttachmentActionsModal extends StatelessWidget { final channel = StreamChannel.of(context).channel; if (message.attachments.length > 1 || message.text?.isNotEmpty == true) { + final currentAttachmentIndex = + message.attachments.indexWhere( + (element) => element.id == attachment.id, + ); final remainingAttachments = [...message.attachments] - ..removeAt(currentIndex); + ..removeAt(currentAttachmentIndex); channel.updateMessage(message.copyWith( attachments: remainingAttachments, )); @@ -285,73 +305,86 @@ class AttachmentActionsModal extends StatelessWidget { Widget _buildDownloadProgressDialog( BuildContext context, ValueNotifier<_DownloadProgress?> progressNotifier, + ValueNotifier downloadedFilePathNotifier, ) { final theme = StreamChatTheme.of(context); return ValueListenableBuilder( - valueListenable: progressNotifier, - builder: (_, _DownloadProgress? progress, __) { - // Pop the dialog in case the progress is null or it's completed. - if (progress == null || progress.toProgressIndicatorValue == 1.0) { + valueListenable: downloadedFilePathNotifier, + builder: (_, String? path, __) { + final _downloadComplete = path != null && path.isNotEmpty; + // Pop the dialog in case the download has completed + if (_downloadComplete) { Future.delayed( const Duration(milliseconds: 500), () => Navigator.of(context).maybePop(), ); } - return Material( - type: MaterialType.transparency, - child: Center( - child: Container( - height: 182, - width: 182, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(16), - color: theme.colorTheme.barsBg, - ), + return ValueListenableBuilder( + valueListenable: progressNotifier, + builder: (_, _DownloadProgress? progress, __) { + // Pop the dialog in case the progress is null. + if (progress == null) { + Future.delayed( + const Duration(milliseconds: 500), + () => Navigator.of(context).maybePop(), + ); + } + return Material( + type: MaterialType.transparency, child: Center( - child: progress == null - ? SizedBox( - height: 100, - width: 100, - child: StreamSvgIcon.error( - color: theme.colorTheme.disabled, - ), - ) - : progress.toProgressIndicatorValue == 1.0 + child: Container( + height: 182, + width: 182, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + color: theme.colorTheme.barsBg, + ), + child: Center( + child: progress == null ? SizedBox( - key: const Key('completedIcon'), - height: 160, - width: 160, - child: StreamSvgIcon.check( + height: 100, + width: 100, + child: StreamSvgIcon.error( color: theme.colorTheme.disabled, ), ) - : SizedBox( - height: 100, - width: 100, - child: Stack( - fit: StackFit.expand, - children: [ - CircularProgressIndicator( - value: progress.toProgressIndicatorValue, - strokeWidth: 8, - valueColor: AlwaysStoppedAnimation( - theme.colorTheme.accentPrimary, - ), + : _downloadComplete + ? SizedBox( + key: const Key('completedIcon'), + height: 160, + width: 160, + child: StreamSvgIcon.check( + color: theme.colorTheme.disabled, ), - Center( - child: Text( - '${progress.toPercentage}%', - style: theme.textTheme.headline.copyWith( - color: theme.colorTheme.textLowEmphasis, + ) + : SizedBox( + height: 100, + width: 100, + child: Stack( + fit: StackFit.expand, + children: [ + CircularProgressIndicator( + strokeWidth: 8, + color: theme.colorTheme.accentPrimary, ), - ), + Center( + child: Text( + '${progress.receivedValueInMB} MB', + style: + theme.textTheme.headline.copyWith( + color: + theme.colorTheme.textLowEmphasis, + ), + ), + ), + ], ), - ], - ), - ), + ), + ), + ), ), - ), - ), + ); + }, ); }, ); @@ -360,6 +393,7 @@ class AttachmentActionsModal extends StatelessWidget { Future _downloadAttachment( Attachment attachment, { ProgressCallback? progressCallback, + DownloadedPathCallback? downloadedPathCallback, }) async { String? filePath; final appDocDir = await getTemporaryDirectory(); @@ -375,6 +409,7 @@ class AttachmentActionsModal extends StatelessWidget { onReceiveProgress: progressCallback, ); final result = await ImageGallerySaver.saveFile(filePath!); + downloadedPathCallback?.call((result as Map)['filePath']); return (result as Map)['filePath']; } } @@ -388,6 +423,8 @@ class _DownloadProgress { final int total; final int received; + String get receivedValueInMB => ((received / 1024) / 1024).toStringAsFixed(2); + double get toProgressIndicatorValue => received / total; int get toPercentage => (received * 100) ~/ total; diff --git a/packages/stream_chat_flutter/lib/src/full_screen_media.dart b/packages/stream_chat_flutter/lib/src/full_screen_media.dart index 0ae3a475..37809b40 100644 --- a/packages/stream_chat_flutter/lib/src/full_screen_media.dart +++ b/packages/stream_chat_flutter/lib/src/full_screen_media.dart @@ -5,6 +5,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:chewie/chewie.dart'; import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; +import 'package:stream_chat_flutter/src/stream_attachment_package.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:video_player/video_player.dart'; @@ -32,8 +33,7 @@ class StreamFullScreenMedia extends StatefulWidget { /// Instantiate a new FullScreenImage const StreamFullScreenMedia({ Key? key, - required this.mediaAttachments, - required this.message, + required this.mediaAttachmentPackages, this.startIndex = 0, String? userName, this.onShowMessage, @@ -43,10 +43,7 @@ class StreamFullScreenMedia extends StatefulWidget { super(key: key); /// The url of the image - final List mediaAttachments; - - /// Message where attachments are attached - final Message message; + final List mediaAttachmentPackages; /// First index of media shown final int startIndex; @@ -100,8 +97,8 @@ class _StreamFullScreenMediaState extends State duration: const Duration(milliseconds: 300), ); _pageController = PageController(initialPage: widget.startIndex); - for (var i = 0; i < widget.mediaAttachments.length; i++) { - final attachment = widget.mediaAttachments[i]; + for (var i = 0; i < widget.mediaAttachmentPackages.length; i++) { + final attachment = widget.mediaAttachmentPackages[i].attachment; if (attachment.type != 'video') continue; final package = VideoPackage(attachment, showControls: true); videoPackages[attachment.id] = package; @@ -114,7 +111,8 @@ class _StreamFullScreenMediaState extends State return; } - final currentAttachment = widget.mediaAttachments[widget.startIndex]; + final currentAttachment = + widget.mediaAttachmentPackages[widget.startIndex].attachment; await Future.wait(videoPackages.values.map( (it) => it.initialize(), @@ -142,7 +140,8 @@ class _StreamFullScreenMediaState extends State return; } - final currentAttachment = widget.mediaAttachments[val]; + final currentAttachment = + widget.mediaAttachmentPackages[val].attachment; for (final e in videoPackages.values) { if (e._attachment != currentAttachment) { @@ -157,7 +156,9 @@ class _StreamFullScreenMediaState extends State } }, itemBuilder: (context, index) { - final attachment = widget.mediaAttachments[index]; + final currentAttachmentPackage = + widget.mediaAttachmentPackages[index]; + final attachment = currentAttachmentPackage.attachment; if (attachment.type == 'image' || attachment.type == 'giphy') { final imageUrl = attachment.imageUrl ?? attachment.assetUrl ?? @@ -174,7 +175,7 @@ class _StreamFullScreenMediaState extends State maxScale: PhotoViewComputedScale.covered, minScale: PhotoViewComputedScale.contained, heroAttributes: PhotoViewHeroAttributes( - tag: widget.mediaAttachments, + tag: widget.mediaAttachmentPackages, ), backgroundDecoration: BoxDecoration( color: ColorTween( @@ -218,53 +219,66 @@ class _StreamFullScreenMediaState extends State } return const SizedBox(); }, - itemCount: widget.mediaAttachments.length, + itemCount: widget.mediaAttachmentPackages.length, ), FadeTransition( opacity: _opacityAnimation, child: ValueListenableBuilder( valueListenable: _currentPage, - builder: (context, value, child) => Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - StreamGalleryHeader( - userName: widget.userName, - sentAt: context.translations.sentAtText( - date: widget.message.createdAt, - time: widget.message.createdAt, - ), - onBackPressed: () { - Navigator.of(context).pop(); - }, - message: widget.message, - currentIndex: value, - onShowMessage: () { - widget.onShowMessage?.call( - widget.message, - StreamChannel.of(context).channel, - ); - }, - attachmentActionsModalBuilder: - widget.attachmentActionsModalBuilder, - ), - if (!widget.message.isEphemeral) - StreamGalleryFooter( - currentPage: value, - totalPages: widget.mediaAttachments.length, - mediaAttachments: widget.mediaAttachments, - message: widget.message, - mediaSelectedCallBack: (val) { - _currentPage.value = val; - _pageController.animateToPage( - val, - duration: const Duration(milliseconds: 300), - curve: Curves.easeInOut, - ); - Navigator.pop(context); + builder: (context, value, child) { + final _currentAttachmentPackage = + widget.mediaAttachmentPackages[value]; + final _currentMessage = _currentAttachmentPackage.message; + final _currentAttachment = + _currentAttachmentPackage.attachment; + return Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + StreamGalleryHeader( + userName: widget.userName, + sentAt: context.translations.sentAtText( + date: widget + .mediaAttachmentPackages[_currentPage.value] + .message + .createdAt, + time: widget + .mediaAttachmentPackages[_currentPage.value] + .message + .createdAt, + ), + onBackPressed: () { + Navigator.of(context).pop(); }, + message: _currentMessage, + attachment: _currentAttachment, + onShowMessage: () { + widget.onShowMessage?.call( + _currentMessage, + StreamChannel.of(context).channel, + ); + }, + attachmentActionsModalBuilder: + widget.attachmentActionsModalBuilder, ), - ], - ), + if (!_currentMessage.isEphemeral) + StreamGalleryFooter( + currentPage: value, + totalPages: widget.mediaAttachmentPackages.length, + mediaAttachmentPackages: + widget.mediaAttachmentPackages, + mediaSelectedCallBack: (val) { + _currentPage.value = val; + _pageController.animateToPage( + val, + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + Navigator.pop(context); + }, + ), + ], + ); + }, ), ), ], diff --git a/packages/stream_chat_flutter/lib/src/gallery_footer.dart b/packages/stream_chat_flutter/lib/src/gallery_footer.dart index a137281c..24cea1f2 100644 --- a/packages/stream_chat_flutter/lib/src/gallery_footer.dart +++ b/packages/stream_chat_flutter/lib/src/gallery_footer.dart @@ -18,16 +18,15 @@ typedef GalleryFooter = StreamGalleryFooter; /// {@endtemplate} class StreamGalleryFooter extends StatefulWidget implements PreferredSizeWidget { - /// Creates a channel header + /// Creates a StreamGalleryFooter const StreamGalleryFooter({ Key? key, - required this.message, this.onBackPressed, this.onTitleTap, this.onImageTap, this.currentPage = 0, this.totalPages = 0, - this.mediaAttachments = const [], + required this.mediaAttachmentPackages, this.mediaSelectedCallBack, this.backgroundColor, }) : preferredSize = const Size.fromHeight(kToolbarHeight), @@ -50,10 +49,7 @@ class StreamGalleryFooter extends StatefulWidget final int totalPages; /// All attachments to show - final List mediaAttachments; - - /// Message which attachments are attached to - final Message message; + final List mediaAttachmentPackages; /// Callback when media is selected final ValueChanged? mediaSelectedCallBack; @@ -99,8 +95,8 @@ class _StreamGalleryFooterState extends State { color: galleryFooterThemeData.shareIconColor, ), onPressed: () async { - final attachment = - widget.mediaAttachments[widget.currentPage]; + final attachment = widget + .mediaAttachmentPackages[widget.currentPage].attachment; final url = attachment.imageUrl ?? attachment.assetUrl ?? attachment.thumbUrl!; @@ -171,7 +167,7 @@ class _StreamGalleryFooterState extends State { builder: (context) { const crossAxisCount = 3; final noOfRowToShowInitially = - widget.mediaAttachments.length > crossAxisCount ? 2 : 1; + widget.mediaAttachmentPackages.length > crossAxisCount ? 2 : 1; final size = MediaQuery.of(context).size; final initialChildSize = 48 + (size.width * noOfRowToShowInitially) / crossAxisCount; @@ -212,7 +208,7 @@ class _StreamGalleryFooterState extends State { child: GridView.builder( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), - itemCount: widget.mediaAttachments.length, + itemCount: widget.mediaAttachmentPackages.length, padding: const EdgeInsets.all(1), // ignore: lines_longer_than_80_chars gridDelegate: @@ -223,7 +219,10 @@ class _StreamGalleryFooterState extends State { ), itemBuilder: (context, index) { Widget media; - final attachment = widget.mediaAttachments[index]; + final attachmentPackage = + widget.mediaAttachmentPackages[index]; + final attachment = attachmentPackage.attachment; + final message = attachmentPackage.message; if (attachment.type == 'video') { media = InkWell( onTap: () => widget.mediaSelectedCallBack!(index), @@ -253,7 +252,7 @@ class _StreamGalleryFooterState extends State { return Stack( children: [ media, - if (widget.message.user != null) + if (message.user != null) Padding( padding: const EdgeInsets.all(8), child: Container( @@ -272,7 +271,7 @@ class _StreamGalleryFooterState extends State { ], ), child: StreamUserAvatar( - user: widget.message.user!, + user: message.user!, constraints: BoxConstraints.tight(const Size(24, 24)), showOnlineStatus: false, diff --git a/packages/stream_chat_flutter/lib/src/gallery_header.dart b/packages/stream_chat_flutter/lib/src/gallery_header.dart index 9c8650b2..4f9b83dc 100644 --- a/packages/stream_chat_flutter/lib/src/gallery_header.dart +++ b/packages/stream_chat_flutter/lib/src/gallery_header.dart @@ -28,7 +28,7 @@ class StreamGalleryHeader extends StatelessWidget const StreamGalleryHeader({ Key? key, required this.message, - this.currentIndex = 0, + required this.attachment, this.showBackButton = true, this.onBackPressed, this.onShowMessage, @@ -60,15 +60,15 @@ class StreamGalleryHeader extends StatelessWidget /// Message which attachments are attached to final Message message; + /// The attachment that's currently in focus + final Attachment attachment; + /// Username of sender final String userName; /// Text which connotes the time the message was sent final String sentAt; - /// Stores the current index of media shown - final int currentIndex; - /// The background color of this [StreamGalleryHeader]. final Color? backgroundColor; @@ -146,14 +146,14 @@ class StreamGalleryHeader extends StatelessWidget StreamChatTheme.of(context).galleryHeaderTheme; final defaultModal = AttachmentActionsModal( + attachment: attachment, message: message, - currentIndex: currentIndex, onShowMessage: onShowMessage, ); final effectiveModal = attachmentActionsModalBuilder?.call( context, - message.attachments[currentIndex], + attachment, defaultModal, ) ?? defaultModal; diff --git a/packages/stream_chat_flutter/lib/src/image_group.dart b/packages/stream_chat_flutter/lib/src/image_group.dart index fa723bef..9a803c88 100644 --- a/packages/stream_chat_flutter/lib/src/image_group.dart +++ b/packages/stream_chat_flutter/lib/src/image_group.dart @@ -136,10 +136,9 @@ class StreamImageGroup extends StatelessWidget { builder: (context) => StreamChannel( channel: channel, child: StreamFullScreenMedia( - mediaAttachments: images, + mediaAttachmentPackages: message.getAttachmentPackageList(), startIndex: index, userName: message.user?.name, - message: message, onShowMessage: onShowMessage, ), ), diff --git a/packages/stream_chat_flutter/lib/src/stream_attachment_package.dart b/packages/stream_chat_flutter/lib/src/stream_attachment_package.dart new file mode 100644 index 00000000..0ede5142 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/stream_attachment_package.dart @@ -0,0 +1,18 @@ +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// The [StreamAttachmentPackage] class is basically meant to wrap +/// individual attachments with their corresponding message +class StreamAttachmentPackage { + /// Default constructor to prepare an [StreamAttachmentPackage] object + StreamAttachmentPackage({ + required this.attachment, + required this.message, + }); + + /// This is the individual attachment + final Attachment attachment; + + /// This is the message that the attachment belongs to + /// The message object may have attachemnt(s) other than the one packaged + final Message message; +} diff --git a/packages/stream_chat_flutter/lib/src/utils.dart b/packages/stream_chat_flutter/lib/src/utils.dart index 2d661fbc..74c721c9 100644 --- a/packages/stream_chat_flutter/lib/src/utils.dart +++ b/packages/stream_chat_flutter/lib/src/utils.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:math' as math; import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/stream_attachment_package.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -429,3 +430,19 @@ int levenshtein(String s, String t, {bool caseSensitive = true}) { return v1[t.length]; } + +/// An easy way to handle attachment related operations on a message +extension AttachmentPackagesX on Message { + /// This extension will return a List of type [StreamAttachmentPackage] from the + /// existing attachments of the message + List getAttachmentPackageList() { + final _attachmentPackages = List.generate( + attachments.length, + (index) => StreamAttachmentPackage( + attachment: attachments[index], + message: this, + ), + ); + return _attachmentPackages; + } +} diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 4b129d1f..50f39721 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -28,10 +28,12 @@ export 'src/message_search_item.dart'; export 'src/message_search_list_view.dart'; export 'src/message_text.dart'; export 'src/message_widget.dart'; +export 'src/multi_overlay.dart'; export 'src/option_list_tile.dart'; export 'src/reaction_icon.dart'; export 'src/reaction_picker.dart'; export 'src/sending_indicator.dart'; +export 'src/stream_attachment_package.dart'; export 'src/stream_chat.dart'; export 'src/stream_chat_theme.dart'; export 'src/stream_neumorphic_button.dart'; diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 87246386..1cb3842e 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: chewie: ^1.3.0 collection: ^1.15.0 diacritic: ^0.1.3 - dio: ^4.0.0 + dio: ^4.0.6 ezanimation: ^0.6.0 file_picker: ^4.1.3 flutter: diff --git a/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart b/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart index 3b711a85..2d42f558 100644 --- a/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart @@ -9,13 +9,16 @@ import 'mocks.dart'; class MockAttachmentDownloader extends Mock { ProgressCallback? progressCallback; + DownloadedPathCallback? downloadedPathCallback; Completer completer = Completer(); Future call( Attachment attachment, { ProgressCallback? progressCallback, + DownloadedPathCallback? downloadedPathCallback, }) { this.progressCallback = progressCallback; + this.downloadedPathCallback = downloadedPathCallback; return completer.future; } } @@ -38,6 +41,19 @@ void main() { final themeData = ThemeData(); final streamTheme = StreamChatThemeData.fromTheme(themeData); + final attachment = Attachment( + type: 'image', + title: 'text.jpg', + ); + final message = Message( + text: 'test', + user: User( + id: 'user-id', + ), + attachments: [ + attachment, + ], + ); await tester.pumpWidget( MaterialApp( theme: themeData, @@ -45,19 +61,8 @@ void main() { streamChatThemeData: streamTheme, client: client, child: AttachmentActionsModal( - message: Message( - text: 'test', - user: User( - id: 'user-id', - ), - attachments: [ - Attachment( - type: 'image', - title: 'text.jpg', - ), - ], - ), - currentIndex: 0, + message: message, + attachment: attachment, ), ), ), @@ -80,6 +85,19 @@ void main() { final themeData = ThemeData(); final streamTheme = StreamChatThemeData.fromTheme(themeData); + final attachment = Attachment( + type: 'image', + title: 'text.jpg', + ); + final message = Message( + text: 'test', + user: User( + id: 'user-id', + ), + attachments: [ + attachment, + ], + ); await tester.pumpWidget( MaterialApp( theme: themeData, @@ -87,19 +105,8 @@ void main() { streamChatThemeData: streamTheme, client: client, child: AttachmentActionsModal( - message: Message( - text: 'test', - user: User( - id: 'user-id', - ), - attachments: [ - Attachment( - type: 'image', - title: 'text.jpg', - ), - ], - ), - currentIndex: 0, + message: message, + attachment: attachment, ), ), ), @@ -122,6 +129,19 @@ void main() { final themeData = ThemeData(); final streamTheme = StreamChatThemeData.fromTheme(themeData); + final attachment = Attachment( + type: 'video', + title: 'video.mp4', + ); + final message = Message( + text: 'test', + user: User( + id: 'user-id', + ), + attachments: [ + attachment, + ], + ); await tester.pumpWidget( MaterialApp( theme: themeData, @@ -130,19 +150,8 @@ void main() { client: client, child: SizedBox( child: AttachmentActionsModal( - message: Message( - text: 'test', - user: User( - id: 'user-id', - ), - attachments: [ - Attachment( - type: 'video', - title: 'video.mp4', - ), - ], - ), - currentIndex: 0, + message: message, + attachment: attachment, ), ), ), @@ -166,16 +175,17 @@ void main() { final mockObserver = MockNavigatorObserver(); + final attachment = Attachment( + type: 'image', + title: 'image.jpg', + ); final message = Message( text: 'test', user: User( id: 'user-id', ), attachments: [ - Attachment( - type: 'image', - title: 'image.jpg', - ), + attachment, ], ); await tester.pumpWidget( @@ -188,7 +198,7 @@ void main() { child: SizedBox( child: AttachmentActionsModal( message: message, - currentIndex: 0, + attachment: attachment, ), ), ), @@ -212,6 +222,20 @@ void main() { final streamTheme = StreamChatThemeData.fromTheme(themeData); final onShowMessage = MockVoidCallback(); + final attachment = Attachment( + type: 'image', + title: 'image.jpg', + ); + final message = Message( + text: 'test', + user: User( + id: 'user-id', + ), + attachments: [ + attachment, + ], + ); + await tester.pumpWidget( MaterialApp( theme: themeData, @@ -221,18 +245,8 @@ void main() { child: SizedBox( child: AttachmentActionsModal( onShowMessage: onShowMessage, - message: Message( - text: 'test', - user: User( - id: 'user-id', - ), - attachments: [ - Attachment( - type: 'image', - title: 'image.jpg', - ), - ]), - currentIndex: 0, + message: message, + attachment: attachment, ), ), ), @@ -255,20 +269,22 @@ void main() { when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); + final targetAttachment = Attachment( + type: 'image', + title: 'image.jpg', + ); + final remainingAttachment = Attachment( + type: 'image', + title: 'image.jpg', + ); final message = Message( text: 'test', user: User( id: 'user-id', ), attachments: [ - Attachment( - type: 'image', - title: 'image.jpg', - ), - Attachment( - type: 'image', - title: 'image.jpg', - ), + targetAttachment, + remainingAttachment, ], ); @@ -283,7 +299,7 @@ void main() { channel: mockChannel, child: AttachmentActionsModal( message: message, - currentIndex: 0, + attachment: targetAttachment, ), ), ), @@ -309,16 +325,17 @@ void main() { when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); + final attachment = Attachment( + type: 'image', + title: 'image.jpg', + ); final message = Message( text: 'test', user: User( id: 'user-id', ), attachments: [ - Attachment( - type: 'image', - title: 'image.jpg', - ), + attachment, ], ); @@ -333,7 +350,7 @@ void main() { channel: mockChannel, child: AttachmentActionsModal( message: message, - currentIndex: 0, + attachment: attachment, ), ), ), @@ -358,15 +375,16 @@ void main() { when(() => client.state).thenReturn(clientState); when(() => clientState.currentUser).thenReturn(OwnUser(id: 'user-id')); + final attachment = Attachment( + type: 'image', + title: 'image.jpg', + ); final message = Message( user: User( id: 'user-id', ), attachments: [ - Attachment( - type: 'image', - title: 'image.jpg', - ), + attachment, ], ); @@ -381,7 +399,7 @@ void main() { channel: mockChannel, child: AttachmentActionsModal( message: message, - currentIndex: 0, + attachment: attachment, ), ), ), @@ -402,6 +420,20 @@ void main() { final imageDownloader = MockAttachmentDownloader(); + final attachment = Attachment( + type: 'image', + title: 'image.jpg', + ); + final message = Message( + text: 'test', + user: User( + id: 'user-id', + ), + attachments: [ + attachment, + ], + ); + await tester.pumpWidget( MaterialApp( builder: (context, child) => StreamChat( @@ -411,18 +443,8 @@ void main() { home: SizedBox( child: AttachmentActionsModal( imageDownloader: imageDownloader, - message: Message( - text: 'test', - user: User( - id: 'user-id', - ), - attachments: [ - Attachment( - type: 'image', - title: 'image.jpg', - ), - ]), - currentIndex: 0, + message: message, + attachment: attachment, ), ), ), @@ -457,6 +479,19 @@ void main() { final fileDownloader = MockAttachmentDownloader(); + final attachment = Attachment( + type: 'video', + title: 'video.mp4', + ); + final message = Message( + text: 'test', + user: User( + id: 'user-id', + ), + attachments: [ + attachment, + ]); + await tester.pumpWidget( MaterialApp( builder: (context, child) => StreamChat( @@ -466,18 +501,8 @@ void main() { home: SizedBox( child: AttachmentActionsModal( fileDownloader: fileDownloader, - message: Message( - text: 'test', - user: User( - id: 'user-id', - ), - attachments: [ - Attachment( - type: 'video', - title: 'video.mp4', - ), - ]), - currentIndex: 0, + message: message, + attachment: attachment, ), ), ), diff --git a/packages/stream_chat_flutter/test/src/full_screen_media_test.dart b/packages/stream_chat_flutter/test/src/full_screen_media_test.dart index c17df733..7a815888 100644 --- a/packages/stream_chat_flutter/test/src/full_screen_media_test.dart +++ b/packages/stream_chat_flutter/test/src/full_screen_media_test.dart @@ -63,22 +63,29 @@ void main() { Event(type: EventType.typingStart), })); + final attachment = Attachment( + type: 'image', + title: 'demo image', + imageUrl: '', + ); + final message = Message( + createdAt: DateTime.now(), + attachments: [ + attachment, + ], + ); await tester.pumpWidget(MaterialApp( home: StreamChat( client: client, child: StreamChannel( channel: channel, child: StreamFullScreenMedia( - mediaAttachments: [ - Attachment( - type: 'image', - title: 'demo image', - imageUrl: '', + mediaAttachmentPackages: [ + StreamAttachmentPackage( + attachment: attachment, + message: message, ), ], - message: Message( - createdAt: DateTime.now(), - ), ), ), ), diff --git a/packages/stream_chat_flutter/test/src/image_footer_test.dart b/packages/stream_chat_flutter/test/src/image_footer_test.dart index 7fe611b8..2e2771b4 100644 --- a/packages/stream_chat_flutter/test/src/image_footer_test.dart +++ b/packages/stream_chat_flutter/test/src/image_footer_test.dart @@ -38,7 +38,7 @@ void main() { onWillPop: () async => false, child: Scaffold( body: StreamGalleryFooter( - message: Message(), + mediaAttachmentPackages: Message().getAttachmentPackageList(), ), ), ), diff --git a/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart index 0193cb35..f8d1d164 100644 --- a/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/gallery_footer_theme_test.dart @@ -75,7 +75,7 @@ void main() { _context = context; return Scaffold( appBar: StreamGalleryFooter( - message: Message(), + mediaAttachmentPackages: Message().getAttachmentPackageList(), ), ); }, @@ -118,7 +118,7 @@ void main() { _context = context; return Scaffold( appBar: StreamGalleryFooter( - message: Message(), + mediaAttachmentPackages: Message().getAttachmentPackageList(), ), ); }, diff --git a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart index 0ded6bbf..50be7d57 100644 --- a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart @@ -66,9 +66,11 @@ void main() { home: Builder( builder: (context) { _context = context; + final _message = Message(); return Scaffold( appBar: StreamGalleryHeader( - message: Message(), + message: _message, + attachment: _message.attachments[0], ), ); }, @@ -105,9 +107,11 @@ void main() { home: Builder( builder: (context) { _context = context; + final _message = Message(); return Scaffold( appBar: StreamGalleryHeader( - message: Message(), + message: _message, + attachment: _message.attachments[0], ), ); }, From 5587622587e1fb31e1935d4209189db0434ef09b Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Wed, 13 Apr 2022 18:22:06 +0530 Subject: [PATCH 143/201] Removed print statements from code, sorry for that --- .../stream_chat_flutter/lib/src/attachment_actions_modal.dart | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart index 3b5582df..cf8e65ca 100644 --- a/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/attachment_actions_modal.dart @@ -174,10 +174,6 @@ class AttachmentActionsModal extends StatelessWidget { downloader( attachment, progressCallback: (received, total) { - print('>>>>>>>>>>>>>>>'); - print('>>r : $received'); - print('>>t : $total'); - print('>>>>>>>>>>>>>>>'); progressNotifier.value = _DownloadProgress( total, received, From 4facc3011761a236168ebf99c0dd0a7f909540b2 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Wed, 13 Apr 2022 20:27:01 +0530 Subject: [PATCH 144/201] Added the updates in changelog --- packages/stream_chat_flutter/CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 3ba30484..1550bb5f 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,3 +1,11 @@ +## Upcoming + +✅ Added + +- Added support to pass `autoCorrect` to `StreamMessageInput` for the text input field +- Added support to control the visibility of the default emoji suggestions overlay +- Added support to build custom widget for scrollToBottom in `StreamMessageListView` + ## 4.0.0-beta.1 ✅ Added From 1926076598f5775da1585c864b68aedffc14baeb Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 13 Apr 2022 17:08:27 +0200 Subject: [PATCH 145/201] chore(llc,core,ui): update pubspec and changelogs --- packages/stream_chat/CHANGELOG.md | 18 ++++++++++++++++++ packages/stream_chat/lib/version.dart | 2 +- packages/stream_chat/pubspec.yaml | 2 +- packages/stream_chat_flutter/CHANGELOG.md | 9 ++++++++- packages/stream_chat_flutter/pubspec.yaml | 4 ++-- packages/stream_chat_flutter_core/CHANGELOG.md | 4 ++++ packages/stream_chat_flutter_core/pubspec.yaml | 4 ++-- 7 files changed, 36 insertions(+), 7 deletions(-) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index a4de2b67..27caf39e 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,3 +1,21 @@ +## 4.0.0-beta.2 + +🐞 Fixed + +- Fixed reactions not working for threads in offline mode. +- [[#1046]](https://github.com/GetStream/stream-chat-flutter/issues/1046) After `/mute` command on reload cannot access + any channel. +- [[#1047]](https://github.com/GetStream/stream-chat-flutter/issues/1047) `own_capabilities` extraData missing after + channel update. +- [[#1054]](https://github.com/GetStream/stream-chat-flutter/issues/1054) Fix `Unsupported operation: Cannot remove from an unmodifiable list`. +- [[#1033]](https://github.com/GetStream/stream-chat-flutter/issues/1033) Hard delete from dashboard does not delete message from client. +- Send only `user_id` while reconnecting. + +✅ Added + +- Handle `event.message` in `channel.truncate` events +- Added additional parameters to `channel.truncate` + ## 4.0.0-beta.0 ✅ Added diff --git a/packages/stream_chat/lib/version.dart b/packages/stream_chat/lib/version.dart index 533df1ce..cc799a9a 100644 --- a/packages/stream_chat/lib/version.dart +++ b/packages/stream_chat/lib/version.dart @@ -3,4 +3,4 @@ import 'package:stream_chat/src/client/client.dart'; /// Current package version /// Used in [StreamChatClient] to build the `x-stream-client` header // ignore: constant_identifier_names -const PACKAGE_VERSION = '4.0.0-beta.0'; +const PACKAGE_VERSION = '4.0.0-beta.2'; diff --git a/packages/stream_chat/pubspec.yaml b/packages/stream_chat/pubspec.yaml index bf2c84e6..9ba44ec4 100644 --- a/packages/stream_chat/pubspec.yaml +++ b/packages/stream_chat/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat homepage: https://getstream.io/ description: The official Dart client for Stream Chat, a service for building chat applications. -version: 4.0.0-beta.0 +version: 4.0.0-beta.2 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 1550bb5f..7407f7bc 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,4 +1,4 @@ -## Upcoming +## 4.0.0-beta.2 ✅ Added @@ -6,6 +6,13 @@ - Added support to control the visibility of the default emoji suggestions overlay - Added support to build custom widget for scrollToBottom in `StreamMessageListView` +🐞 Fixed + +- Minor fixes and improvements +-[[#892]](https://github.com/GetStream/stream-chat-flutter/issues/892): Fix default `initialAlignment` in `MessageListView`. +- Fix `MessageInputTheme.inputBackgroundColor` color not being used in some widgets of `MessageInput` +- Removed dependency on `visibility_detector` + ## 4.0.0-beta.1 ✅ Added diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index e0ba6fd8..fe5a73b4 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter. -version: 4.0.0-beta.1 +version: 4.0.0-beta.2 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -36,7 +36,7 @@ dependencies: rxdart: ^0.27.0 share_plus: ^4.0.1 shimmer: ^2.0.0 - stream_chat_flutter_core: ^4.0.0-beta.0 + stream_chat_flutter_core: ^4.0.0-beta.2 substring_highlight: ^1.0.26 url_launcher: ^6.0.3 video_player: ^2.1.0 diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index 703e3294..26178eef 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.0.0-beta.2 + +- Updated `stream_chat` dependency to [`4.0.0-beta.2`](https://pub.dev/packages/stream_chat/changelog). + ## 4.0.0-beta.0 ✅ Added diff --git a/packages/stream_chat_flutter_core/pubspec.yaml b/packages/stream_chat_flutter_core/pubspec.yaml index 4e5e39b7..ad41ad58 100644 --- a/packages/stream_chat_flutter_core/pubspec.yaml +++ b/packages/stream_chat_flutter_core/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter_core homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK Core. Build your own chat experience using Dart and Flutter. -version: 4.0.0-beta.0 +version: 4.0.0-beta.2 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -17,7 +17,7 @@ dependencies: freezed_annotation: ^1.0.0 meta: ^1.3.0 rxdart: ^0.27.0 - stream_chat: ^4.0.0-beta.0 + stream_chat: ^4.0.0-beta.2 dev_dependencies: build_runner: ^2.0.1 From 2e8d663dac9670bd29909f1a3b036b19b6596806 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Wed, 13 Apr 2022 20:46:57 +0530 Subject: [PATCH 146/201] Added attachment change update to changelog --- packages/stream_chat_flutter/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 7407f7bc..7e9fa4cf 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -12,6 +12,7 @@ -[[#892]](https://github.com/GetStream/stream-chat-flutter/issues/892): Fix default `initialAlignment` in `MessageListView`. - Fix `MessageInputTheme.inputBackgroundColor` color not being used in some widgets of `MessageInput` - Removed dependency on `visibility_detector` +- [[#1071]](https://github.com/GetStream/stream-chat-flutter/issues/1071): Fixed the way attachment actions were handled in full screen ## 4.0.0-beta.1 From affe37e684f58562b7337332238813b77c9e707d Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 14 Apr 2022 10:10:21 +0200 Subject: [PATCH 147/201] fix(ui): align new widgets to develop fixes --- packages/stream_chat/CHANGELOG.md | 1 - packages/stream_chat_flutter/CHANGELOG.md | 2 +- .../lib/src/v4/message_input/stream_message_input.dart | 2 ++ 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index 30fcd45a..a390a823 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -10,7 +10,6 @@ - [[#1054]](https://github.com/GetStream/stream-chat-flutter/issues/1054) Fix `Unsupported operation: Cannot remove from an unmodifiable list`. - [[#1033]](https://github.com/GetStream/stream-chat-flutter/issues/1033) Hard delete from dashboard does not delete message from client. - Send only `user_id` while reconnecting. -- [[#1081]](https://github.com/GetStream/stream-chat-flutter/issues/1081) Fixed a bug with user reconnection. ✅ Added diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index 183efd7c..ef980e29 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -3,7 +3,7 @@ ✅ Added - Added support to pass `autoCorrect` to `StreamMessageInput` for the text input field -- Added support to control the visibility of the default emoji suggestions overlay +- Added support to control the visibility of the default emoji suggestions overlay in `StreamMessageInput` - Added support to build custom widget for scrollToBottom in `StreamMessageListView` 🐞 Fixed diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart index a78f9b37..63872fc2 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart @@ -593,6 +593,7 @@ class StreamMessageInputState extends State elevation: widget.elevation ?? _streamChatTheme.messageInputTheme.elevation ?? 8, + color: _messageInputTheme.inputBackgroundColor, child: child, ); } @@ -789,6 +790,7 @@ class StreamMessageInputState extends State gradient: _focusNode.hasFocus ? _messageInputTheme.activeBorderGradient : _messageInputTheme.idleBorderGradient, + color: _messageInputTheme.inputBackgroundColor, ), child: Padding( padding: const EdgeInsets.all(1.5), From 478033078fd65b85819e0315f91b9147ce6d8db4 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Thu, 14 Apr 2022 14:37:39 +0530 Subject: [PATCH 148/201] Fixed failing tests --- packages/stream_chat_flutter/pubspec.yaml | 4 ---- .../src/attachment_actions_modal_test.dart | 22 ++++++++++--------- .../src/theme/gallery_header_theme_test.dart | 22 +++++++++++++++++-- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index 667c031b..e0ba6fd8 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -36,11 +36,7 @@ dependencies: rxdart: ^0.27.0 share_plus: ^4.0.1 shimmer: ^2.0.0 -<<<<<<< HEAD stream_chat_flutter_core: ^4.0.0-beta.0 -======= - stream_chat_flutter_core: ^3.6.1 ->>>>>>> develop substring_highlight: ^1.0.26 url_launcher: ^6.0.3 video_player: ^2.1.0 diff --git a/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart b/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart index 2d42f558..d59b8002 100644 --- a/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart +++ b/packages/stream_chat_flutter/test/src/attachment_actions_modal_test.dart @@ -452,15 +452,16 @@ void main() { await tester.tap(find.text('Save Image')); - imageDownloader.progressCallback!(0, 100); + imageDownloader.progressCallback!(0, 100000); await tester.pump(); - expect(find.text('0%'), findsOneWidget); + expect(find.text('0.00 MB'), findsOneWidget); - imageDownloader.progressCallback!(50, 100); + imageDownloader.progressCallback!(50000, 100000); await tester.pump(); - expect(find.text('50%'), findsOneWidget); + expect(find.text('0.05 MB'), findsOneWidget); - imageDownloader.progressCallback!(100, 100); + imageDownloader.progressCallback!(100000, 100000); + imageDownloader.downloadedPathCallback!('path'); imageDownloader.completer.complete('path'); await tester.pump(); expect(find.byKey(const Key('completedIcon')), findsOneWidget); @@ -510,15 +511,16 @@ void main() { await tester.tap(find.text('Save Video')); - fileDownloader.progressCallback!(0, 100); + fileDownloader.progressCallback!(0, 100000); await tester.pump(); - expect(find.text('0%'), findsOneWidget); + expect(find.text('0.00 MB'), findsOneWidget); - fileDownloader.progressCallback!(50, 100); + fileDownloader.progressCallback!(50000, 100000); await tester.pump(); - expect(find.text('50%'), findsOneWidget); + expect(find.text('0.05 MB'), findsOneWidget); - fileDownloader.progressCallback!(100, 100); + fileDownloader.progressCallback!(100000, 100000); + fileDownloader.downloadedPathCallback!('path'); fileDownloader.completer.complete('path'); await tester.pump(); expect(find.byKey(const Key('completedIcon')), findsOneWidget); diff --git a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart index 50be7d57..651da1ce 100644 --- a/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/gallery_header_theme_test.dart @@ -66,7 +66,16 @@ void main() { home: Builder( builder: (context) { _context = context; - final _message = Message(); + final attachment = Attachment( + type: 'video', + title: 'video.mp4', + ); + final _message = Message( + createdAt: DateTime.now(), + attachments: [ + attachment, + ], + ); return Scaffold( appBar: StreamGalleryHeader( message: _message, @@ -107,7 +116,16 @@ void main() { home: Builder( builder: (context) { _context = context; - final _message = Message(); + final attachment = Attachment( + type: 'video', + title: 'video.mp4', + ); + final _message = Message( + createdAt: DateTime.now(), + attachments: [ + attachment, + ], + ); return Scaffold( appBar: StreamGalleryHeader( message: _message, From da4fd16af7c38ebfd396b9d220dea8432909d6f9 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 14 Apr 2022 11:32:32 +0200 Subject: [PATCH 149/201] add test --- .../test/src/ws/websocket_test.dart | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/packages/stream_chat/test/src/ws/websocket_test.dart b/packages/stream_chat/test/src/ws/websocket_test.dart index 5519b2b3..68242333 100644 --- a/packages/stream_chat/test/src/ws/websocket_test.dart +++ b/packages/stream_chat/test/src/ws/websocket_test.dart @@ -59,7 +59,10 @@ void main() { }); test('`connect` successfully with the provided user', () async { - final user = OwnUser(id: 'test-user'); + final user = OwnUser( + id: 'test-user', + name: 'test', + ); const connectionId = 'test-connection-id'; // Sends connect event to web-socket stream final timer = Timer(const Duration(milliseconds: 300), () { @@ -90,6 +93,44 @@ void main() { addTearDown(timer.cancel); }); + test('`connect` successfully without user details', () async { + final user = OwnUser( + id: 'test-user', + name: 'test', + ); + const connectionId = 'test-connection-id'; + // Sends connect event to web-socket stream + final timer = Timer(const Duration(milliseconds: 300), () { + final event = Event( + type: EventType.healthCheck, + connectionId: connectionId, + me: user, + ); + webSocketSink.add(json.encode(event)); + }); + + expectLater( + webSocket.connectionStatusStream, + emitsInOrder([ + ConnectionStatus.disconnected, + ConnectionStatus.connecting, + ConnectionStatus.connected, + ]), + ); + + final event = await webSocket.connect( + user, + includeUserDetails: true, + ); + + expect(event.type, EventType.healthCheck); + expect(event.connectionId, connectionId); + expect(event.me, isNotNull); + expect(event.me!.id, user.id); + + addTearDown(timer.cancel); + }); + test('`connect` should throw if already in connection attempt', () async { final user = OwnUser(id: 'test-user'); webSocket.connect(user); From 2323c59ed403959fc9787466ac921200ee54d69a Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 14 Apr 2022 16:16:57 +0200 Subject: [PATCH 150/201] fix scroll to bottom glitching --- packages/stream_chat_flutter/lib/src/message_list_view.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index d8c6a569..e6bbba99 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -881,7 +881,6 @@ class _StreamMessageListViewState extends State { _scrollController!.jumpTo(index: 0); }); } else { - _showScrollToBottom.value = false; _scrollController!.scrollTo( index: 0, duration: const Duration(seconds: 1), From f074bccdc579c66c439f8a269a91bdd75d7a938e Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Tue, 19 Apr 2022 12:37:45 +0530 Subject: [PATCH 151/201] feat(ui, core): add remaining v4 list-views Signed-off-by: xsahil03x --- .../example/lib/tutorial_part_3.dart | 4 +- .../lib/src/message_search_item.dart | 13 +- .../lib/src/message_search_list_view.dart | 21 +- .../lib/src/stream_chat_theme.dart | 2 +- .../lib/src/user_list_view.dart | 13 +- .../stream_channel_list_tile.dart | 93 +--- .../stream_channel_list_view.dart | 215 ++++----- .../stream_message_search_list_tile.dart | 235 +++++++++ .../stream_message_search_list_view.dart | 446 ++++++++++++++++++ ...ream_list_view_indexed_widget_builder.dart | 9 + .../src/v4/stream_message_preview_text.dart | 116 +++++ .../user_list_view/stream_user_list_tile.dart | 193 ++++++++ .../user_list_view/stream_user_list_view.dart | 441 +++++++++++++++++ .../lib/stream_chat_flutter.dart | 7 + .../message_search_list_view_theme_test.dart | 4 +- .../src/theme/user_list_view_theme_test.dart | 4 +- .../lib/src/paged_value_list_view.dart | 297 ++++++++++++ ...stream_message_search_list_controller.dart | 205 ++++++++ .../lib/src/stream_user_list_controller.dart | 165 +++++++ .../lib/stream_chat_flutter_core.dart | 3 + 20 files changed, 2227 insertions(+), 259 deletions(-) create mode 100644 packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/stream_message_preview_text.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart create mode 100644 packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart create mode 100644 packages/stream_chat_flutter_core/lib/src/stream_message_search_list_controller.dart create mode 100644 packages/stream_chat_flutter_core/lib/src/stream_user_list_controller.dart diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart index 122c62a3..7d994ae1 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_3.dart @@ -115,9 +115,11 @@ class _ChannelListPageState extends State { Widget _channelPreviewBuilder( BuildContext context, - Channel channel, + List channels, + int index, StreamChannelListTile defaultTile, ) { + final channel = channels[index]; final lastMessage = channel.state?.messages.reversed.firstWhereOrNull( (message) => !message.isDeleted, ); diff --git a/packages/stream_chat_flutter/lib/src/message_search_item.dart b/packages/stream_chat_flutter/lib/src/message_search_item.dart index fe6d02b7..f8721d13 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_item.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_item.dart @@ -2,23 +2,20 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; -/// {@macro message_search_item} -@Deprecated("Use 'StreamMessageSearchItem' instead") -typedef MessageSearchItem = StreamMessageSearchItem; - /// {@template message_search_item} /// It shows the current [Message] preview. /// /// Usually you don't use this widget as it's the default item used by -/// [StreamMessageSearchListView]. +/// [MessageSearchListView]. /// /// The widget renders the ui based on the first ancestor of type /// [StreamChatTheme]. /// Modify it to change the widget appearance. /// {@endtemplate} -class StreamMessageSearchItem extends StatelessWidget { +@Deprecated("Use 'StreamMessageSearchItem' instead") +class MessageSearchItem extends StatelessWidget { /// Instantiate a new MessageSearchItem - const StreamMessageSearchItem({ + const MessageSearchItem({ Key? key, required this.getMessageResponse, this.onTap, @@ -31,7 +28,7 @@ class StreamMessageSearchItem extends StatelessWidget { /// Function called when tapping this widget final VoidCallback? onTap; - /// If true the [StreamMessageSearchItem] will show the current online Status + /// If true the [MessageSearchItem] will show the current online Status final bool showOnlineStatus; @override diff --git a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart index 380b6545..2554b242 100644 --- a/packages/stream_chat_flutter/lib/src/message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_search_list_view.dart @@ -11,16 +11,12 @@ typedef MessageSearchItemBuilder = Widget Function( GetMessageResponse, ); -/// Builder used when [StreamMessageSearchListView] is empty +/// Builder used when [MessageSearchListView] is empty typedef EmptyMessageSearchBuilder = Widget Function( BuildContext context, String searchQuery, ); -/// {@macro message_search_list_view} -@Deprecated("Use 'StreamMessageSearchListView' instead") -typedef MessageSearchListView = StreamMessageSearchListView; - /// {@template message_search_list_view} /// It shows the list of searched messages. /// @@ -52,9 +48,10 @@ typedef MessageSearchListView = StreamMessageSearchListView; /// [StreamChatTheme]. /// Modify it to change the widget appearance. /// {@endtemplate} -class StreamMessageSearchListView extends StatefulWidget { +@Deprecated("Use 'StreamMessageSearchListView' instead") +class MessageSearchListView extends StatefulWidget { /// Instantiate a new MessageSearchListView - const StreamMessageSearchListView({ + const MessageSearchListView({ Key? key, required this.filters, this.messageQuery, @@ -101,7 +98,7 @@ class StreamMessageSearchListView extends StatefulWidget { /// Builder used to create a custom item preview final MessageSearchItemBuilder? itemBuilder; - /// Function called when tapping on a [StreamMessageSearchItem] + /// Function called when tapping on a [MessageSearchItem] final MessageSearchItemTapCallback? onItemTap; /// Builder used to create a custom item separator @@ -135,12 +132,10 @@ class StreamMessageSearchListView extends StatefulWidget { final MessageSearchListController? messageSearchListController; @override - _StreamMessageSearchListViewState createState() => - _StreamMessageSearchListViewState(); + _MessageSearchListViewState createState() => _MessageSearchListViewState(); } -class _StreamMessageSearchListViewState - extends State { +class _MessageSearchListViewState extends State { late final _defaultController = MessageSearchListController(); MessageSearchListController get _messageSearchListController => @@ -226,7 +221,7 @@ class _StreamMessageSearchListViewState if (widget.itemBuilder != null) { return widget.itemBuilder!(context, getMessageResponse); } - return StreamMessageSearchItem( + return MessageSearchItem( getMessageResponse: getMessageResponse, onTap: () => widget.onItemTap!(getMessageResponse), ); diff --git a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart index 32b4830f..4ece0bf2 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat_theme.dart @@ -414,7 +414,7 @@ class StreamChatThemeData { /// Theme configuration for the [StreamUserListView] widget. final StreamUserListViewThemeData userListViewTheme; - /// Theme configuration for the [StreamMessageSearchListView] widget. + /// Theme configuration for the [MessageSearchListView] widget. final StreamMessageSearchListViewThemeData messageSearchListViewTheme; /// Creates a copy of [StreamChatThemeData] with specified attributes diff --git a/packages/stream_chat_flutter/lib/src/user_list_view.dart b/packages/stream_chat_flutter/lib/src/user_list_view.dart index a604c611..6f1804e7 100644 --- a/packages/stream_chat_flutter/lib/src/user_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/user_list_view.dart @@ -8,10 +8,6 @@ typedef UserTapCallback = void Function(User, Widget?); /// Builder used to create a custom [ListUserItem] from a [User] typedef UserItemBuilder = Widget Function(BuildContext, User, bool); -/// {@macro user_list_view} -@Deprecated("Use 'StreamUserListView' instead") -typedef UserListView = StreamUserListView; - /// {@template user_list_view} /// It shows the list of current users. /// @@ -47,9 +43,10 @@ typedef UserListView = StreamUserListView; /// type [StreamChatTheme]. /// Modify it to change the widget appearance. /// {@endtemplate} -class StreamUserListView extends StatefulWidget { +@Deprecated("Use 'StreamUserListView' instead") +class UserListView extends StatefulWidget { /// Instantiate a new UserListView - StreamUserListView({ + UserListView({ Key? key, this.filter = const Filter.empty(), this.sort, @@ -165,10 +162,10 @@ class StreamUserListView extends StatefulWidget { final UserListController? userListController; @override - _StreamUserListViewState createState() => _StreamUserListViewState(); + _UserListViewState createState() => _UserListViewState(); } -class _StreamUserListViewState extends State +class _UserListViewState extends State with WidgetsBindingObserver { bool get _isListView => widget.crossAxisCount == 1; diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart index f54c6db9..8c5acea6 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart @@ -1,6 +1,7 @@ import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/v4/stream_message_preview_text.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// A widget that displays a channel preview. @@ -351,95 +352,11 @@ class ChannelLastMessageText extends StatelessWidget { if (lastMessage == null) return const Offstage(); - final lastMessageText = lastMessage - .translate(channel.client.state.currentUser?.language ?? 'en') - .replaceMentions(linkify: false) - .text; - final lastMessageAttachments = lastMessage.attachments; - final lastMessageMentionedUsers = lastMessage.mentionedUsers; - - final mentionedUsersRegex = RegExp( - lastMessageMentionedUsers.map((it) => '@${it.name}').join('|'), - caseSensitive: false, - ); - - final messageTextParts = [ - ...lastMessageAttachments.map((it) { - if (it.type == 'image') { - return '📷'; - } else if (it.type == 'video') { - return '🎬'; - } else if (it.type == 'giphy') { - return '[GIF]'; - } - return it == lastMessage.attachments.last - ? (it.title ?? 'File') - : '${it.title ?? 'File'} , '; - }), - if (lastMessageText != null) - if (lastMessageMentionedUsers.isNotEmpty) - ...mentionedUsersRegex.allMatchesWithSep(lastMessageText) - else - lastMessageText, - ]; - - final fontStyle = (lastMessage.isSystem || lastMessage.isDeleted) - ? FontStyle.italic - : FontStyle.normal; - - final regularTextStyle = textStyle?.copyWith(fontStyle: fontStyle); - - final mentionsTextStyle = textStyle?.copyWith( - fontStyle: fontStyle, - fontWeight: FontWeight.bold, - ); - - final spans = [ - for (final part in messageTextParts) - if (lastMessageMentionedUsers.isNotEmpty && - lastMessageMentionedUsers.any((it) => '@${it.name}' == part)) - TextSpan( - text: part, - style: mentionsTextStyle, - ) - else if (lastMessageAttachments.isNotEmpty && - lastMessageAttachments - .where((it) => it.title != null) - .any((it) => it.title == part)) - TextSpan( - text: part, - style: regularTextStyle?.copyWith( - fontStyle: FontStyle.italic, - ), - ) - else - TextSpan( - text: part, - style: regularTextStyle, - ), - ]; - - return Text.rich( - TextSpan(children: spans), - maxLines: 1, - overflow: TextOverflow.ellipsis, - textAlign: TextAlign.start, + return StreamMessagePreviewText( + message: lastMessage, + textStyle: textStyle, + language: channel.client.state.currentUser?.language, ); }, ); } - -extension _RegExpX on RegExp { - List allMatchesWithSep(String input, [int start = 0]) { - final result = []; - for (final match in allMatches(input, start)) { - result.add(input.substring(start, match.start)); - // ignore: cascade_invocations - result.add(match[0]!); - // ignore: parameter_assignments - start = match.end; - } - result.add(input.substring(start)); - return result; - } -} diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index 1d88f354..f0a32f7d 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -5,19 +5,21 @@ import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_tile.dart'; +import 'package:stream_chat_flutter/src/v4/stream_list_view_indexed_widget_builder.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Default separator builder for [StreamChannelListView]. -Widget defaultSeparatorBuilder(BuildContext context, int index) => +Widget defaultChannelListViewSeparatorBuilder( + BuildContext context, + List items, + int index, +) => const StreamChannelListSeparator(); /// Signature for the item builder that creates the children of the /// [StreamChannelListView]. -typedef StreamChannelListViewItemBuilder = Widget Function( - BuildContext context, - Channel channel, - StreamChannelListTile defaultWidget, -); +typedef StreamChannelListViewIndexedWidgetBuilder + = StreamListViewIndexedWidgetBuilder; /// A [ListView] that shows a list of [Channel]s, /// it uses [StreamChannelListTile] as a default item. @@ -42,18 +44,19 @@ typedef StreamChannelListViewItemBuilder = Widget Function( /// See also: /// * [StreamChannelListTile] /// * [StreamChannelListController] -class StreamChannelListView extends StatefulWidget { +class StreamChannelListView extends StatelessWidget { /// Creates a new instance of [StreamChannelListView]. const StreamChannelListView({ Key? key, required this.controller, this.itemBuilder, - this.separatorBuilder = defaultSeparatorBuilder, + this.separatorBuilder = defaultChannelListViewSeparatorBuilder, this.emptyBuilder, this.loadingBuilder, this.errorBuilder, this.onChannelTap, this.onChannelLongPress, + this.loadMoreTriggerIndex = 3, this.padding, this.physics, this.reverse = false, @@ -75,14 +78,14 @@ class StreamChannelListView extends StatefulWidget { /// The `channel` parameter is the [Channel] at this position in the list /// and the `defaultWidget` is the default widget used /// i.e: [StreamChannelListTile]. - final StreamChannelListViewItemBuilder? itemBuilder; + final StreamChannelListViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the list separator. - final IndexedWidgetBuilder separatorBuilder; + final PagedValueListViewIndexedWidgetBuilder separatorBuilder; /// A builder that is called to build the empty state of the list. /// - /// If not provider, [StreamChannelListEmptyWidget] will be used. + /// If not provided, [StreamChannelListEmptyWidget] will be used. final WidgetBuilder? emptyBuilder; /// A builder that is called to build the loading state of the list. @@ -101,6 +104,9 @@ class StreamChannelListView extends StatefulWidget { /// Called when the user long-presses on this list tile. final void Function(Channel)? onChannelLongPress; + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + /// The amount of space by which to inset the children. final EdgeInsetsGeometry? padding; @@ -235,135 +241,72 @@ class StreamChannelListView extends StatefulWidget { final String? restorationId; @override - _StreamChannelListViewState createState() => _StreamChannelListViewState(); -} + Widget build(BuildContext context) => PagedValueListView( + padding: padding, + physics: physics, + reverse: reverse, + controller: controller, + primary: primary, + shrinkWrap: shrinkWrap, + keyboardDismissBehavior: keyboardDismissBehavior, + restorationId: restorationId, + dragStartBehavior: dragStartBehavior, + cacheExtent: cacheExtent, + loadMoreTriggerIndex: loadMoreTriggerIndex, + separatorBuilder: separatorBuilder, + itemBuilder: (context, channels, index) { + final channel = channels[index]; + final onTap = onChannelTap; + final onLongPress = onChannelLongPress; -class _StreamChannelListViewState extends State { - StreamChannelListController get _controller => widget.controller; + final streamChannelListTile = StreamChannelListTile( + channel: channel, + onTap: onTap == null ? null : () => onTap(channel), + onLongPress: + onLongPress == null ? null : () => onLongPress(channel), + ); - // Avoids duplicate requests on rebuilds. - bool _hasRequestedNextPage = false; - - @override - void initState() { - super.initState(); - _controller.doInitialLoad(); - } - - @override - void didUpdateWidget(covariant StreamChannelListView oldWidget) { - super.didUpdateWidget(oldWidget); - if (_controller != oldWidget.controller) { - // reset duplicate requests flag - _hasRequestedNextPage = false; - _controller.doInitialLoad(); - } - } - - @override - Widget build(BuildContext context) => - PagedValueListenableBuilder( - valueListenable: widget.controller, - builder: (context, value, _) => value.when( - (channels, nextPageKey, error) { - if (channels.isEmpty) { - return widget.emptyBuilder?.call(context) ?? - const Center( - child: Padding( - padding: EdgeInsets.all(8), - child: StreamChannelListEmptyWidget(), - ), - ); - } - - return ListView.separated( - padding: widget.padding, - physics: widget.physics, - reverse: widget.reverse, - controller: widget.scrollController, - primary: widget.primary, - shrinkWrap: widget.shrinkWrap, - keyboardDismissBehavior: widget.keyboardDismissBehavior, - restorationId: widget.restorationId, - dragStartBehavior: widget.dragStartBehavior, - cacheExtent: widget.cacheExtent, - itemCount: value.itemCount, - separatorBuilder: widget.separatorBuilder, - itemBuilder: (context, index) { - if (!_hasRequestedNextPage) { - final newPageRequestTriggerIndex = channels.length - 3; - final isBuildingTriggerIndexItem = - index == newPageRequestTriggerIndex; - if (nextPageKey != null && isBuildingTriggerIndexItem) { - // Schedules the request for the end of this frame. - WidgetsBinding.instance?.addPostFrameCallback((_) async { - if (error == null) { - await _controller.loadMore(nextPageKey); - } - _hasRequestedNextPage = false; - }); - _hasRequestedNextPage = true; - } - } - - if (index == channels.length) { - if (error != null) { - return StreamChannelListLoadMoreError( - onTap: _controller.retry, - ); - } - return const Center( - child: Padding( - padding: EdgeInsets.all(16), - child: StreamChannelListLoadMoreIndicator(), - ), - ); - } - - final channel = channels[index]; - - final onTap = widget.onChannelTap; - final onLongPress = widget.onChannelLongPress; - - final streamChannelListTile = StreamChannelListTile( - channel: channel, - onTap: onTap == null ? null : () => onTap(channel), - onLongPress: - onLongPress == null ? null : () => onLongPress(channel), - ); - - final itemBuilder = widget.itemBuilder; - - if (itemBuilder != null) { - return itemBuilder( - context, - channel, - streamChannelListTile, - ); - } - - return streamChannelListTile; - }, - ); - }, - loading: () => - widget.loadingBuilder?.call(context) ?? - ListView.separated( - padding: widget.padding, - physics: widget.physics, - reverse: widget.reverse, - itemCount: 25, - separatorBuilder: widget.separatorBuilder, - itemBuilder: (_, __) => const StreamChannelListLoadingTile(), - ), - error: (error) => - widget.errorBuilder?.call(context, error) ?? - Center( - child: StreamChannelListErrorWidget( - onPressed: _controller.refresh, - ), + return itemBuilder?.call( + context, + channels, + index, + streamChannelListTile, + ) ?? + streamChannelListTile; + }, + emptyBuilder: (context) => + emptyBuilder?.call(context) ?? + const Center( + child: Padding( + padding: EdgeInsets.all(8), + child: StreamChannelListEmptyWidget(), ), + ), + loadMoreErrorBuilder: (context, error) => + StreamChannelListLoadMoreError(onTap: controller.retry), + loadMoreIndicatorBuilder: (context) => const Center( + child: Padding( + padding: EdgeInsets.all(16), + child: StreamChannelListLoadMoreIndicator(), + ), ), + loadingBuilder: (context) => + loadingBuilder?.call(context) ?? + ListView.separated( + padding: padding, + physics: physics, + reverse: reverse, + itemCount: 25, + separatorBuilder: (_, __) => const StreamChannelListSeparator(), + itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + ), + errorBuilder: (context, error) => + errorBuilder?.call(context, error) ?? + Center( + child: StreamChannelListErrorWidget( + onPressed: controller.refresh, + ), + ), ); } diff --git a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_tile.dart new file mode 100644 index 00000000..f67597f0 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_tile.dart @@ -0,0 +1,235 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/v4/stream_message_preview_text.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// A widget that displays a message search item. +/// +/// This widget is intended to be used as a +/// Tile in [StreamMessageSearchListView]. +/// +/// It displays the message's text, channel, sender, and timestamp. +/// +/// See also: +/// * [StreamMessageSearchListView] +/// * [StreamUserAvatar] +class StreamMessageSearchListTile extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchListTile]. + const StreamMessageSearchListTile({ + Key? key, + required this.messageResponse, + this.leading, + this.title, + this.subtitle, + this.trailing, + this.onTap, + this.onLongPress, + this.tileColor, + this.visualDensity = VisualDensity.compact, + this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), + }) : super(key: key); + + /// The message response to display. + final GetMessageResponse messageResponse; + + /// A widget to display before the title. + final Widget? leading; + + /// The primary content of the list tile. + final Widget? title; + + /// Additional content displayed below the title. + final Widget? subtitle; + + /// A widget to display at the end of tile. + final Widget? trailing; + + /// Called when the user taps this list tile. + final GestureTapCallback? onTap; + + /// Called when the user long-presses on this list tile. + final GestureLongPressCallback? onLongPress; + + /// {@template flutter.material.ListTile.tileColor} + /// Defines the background color of `ListTile`. + /// + /// When the value is null, + /// the `tileColor` is set to [ListTileTheme.tileColor] + /// if it's not null and to [Colors.transparent] if it's null. + /// {@endtemplate} + final Color? tileColor; + + /// Defines how compact the list tile's layout will be. + /// + /// {@macro flutter.material.themedata.visualDensity} + /// + /// See also: + /// + /// * [ThemeData.visualDensity], which specifies the [visualDensity] for all + /// widgets within a [Theme]. + final VisualDensity visualDensity; + + /// The tile's internal padding. + /// + /// Insets a [ListTile]'s contents: its [leading], [title], [subtitle], + /// and [trailing] widgets. + /// + /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. + final EdgeInsetsGeometry contentPadding; + + /// Creates a copy of this tile but with the given fields replaced with + /// the new values. + StreamMessageSearchListTile copyWith({ + Key? key, + GetMessageResponse? messageResponse, + Widget? leading, + Widget? title, + Widget? subtitle, + Widget? trailing, + GestureTapCallback? onTap, + GestureLongPressCallback? onLongPress, + Color? tileColor, + VisualDensity? visualDensity, + EdgeInsetsGeometry? contentPadding, + }) => + StreamMessageSearchListTile( + key: key ?? this.key, + messageResponse: messageResponse ?? this.messageResponse, + leading: leading ?? this.leading, + title: title ?? this.title, + subtitle: subtitle ?? this.subtitle, + trailing: trailing ?? this.trailing, + onTap: onTap ?? this.onTap, + onLongPress: onLongPress ?? this.onLongPress, + tileColor: tileColor ?? this.tileColor, + visualDensity: visualDensity ?? this.visualDensity, + contentPadding: contentPadding ?? this.contentPadding, + ); + + @override + Widget build(BuildContext context) { + final message = messageResponse.message; + final user = message.user!; + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); + + final leading = this.leading ?? + StreamUserAvatar( + user: user, + constraints: const BoxConstraints.tightFor( + height: 40, + width: 40, + ), + ); + + final title = this.title ?? + MessageSearchListTileTitle( + messageResponse: messageResponse, + textStyle: channelPreviewTheme.titleStyle, + ); + + final subtitle = this.subtitle ?? + Row( + children: [ + Expanded( + child: StreamMessagePreviewText( + message: message, + textStyle: channelPreviewTheme.subtitleStyle, + ), + ), + const SizedBox(width: 16), + MessageSearchTileMessageDate( + message: message, + textStyle: channelPreviewTheme.lastMessageAtStyle, + ), + ], + ); + + return ListTile( + onTap: onTap, + onLongPress: onLongPress, + visualDensity: visualDensity, + contentPadding: contentPadding, + tileColor: tileColor, + leading: leading, + trailing: trailing, + title: title, + subtitle: subtitle, + ); + } +} + +class MessageSearchListTileTitle extends StatelessWidget { + const MessageSearchListTileTitle({ + Key? key, + required this.messageResponse, + this.textStyle, + }) : super(key: key); + + final GetMessageResponse messageResponse; + + final TextStyle? textStyle; + + @override + Widget build(BuildContext context) { + final user = messageResponse.message.user!; + final channel = messageResponse.channel; + final channelName = channel?.extraData['name']; + + return Row( + children: [ + Text( + user.id == StreamChat.of(context).currentUser?.id + ? context.translations.youText + : user.name, + style: textStyle, + ), + if (channelName != null) ...[ + Text( + ' ${context.translations.inText} ', + style: textStyle?.copyWith( + fontWeight: FontWeight.normal, + ), + ), + Text( + channelName as String, + style: textStyle, + ), + ], + ], + ); + } +} + +class MessageSearchTileMessageDate extends StatelessWidget { + /// Creates a new instance of [MessageSearchTileMessageDate]. + const MessageSearchTileMessageDate({ + Key? key, + required this.message, + this.textStyle, + }) : super(key: key); + + /// The searched message response. + final Message message; + + /// The text style to use for the date. + final TextStyle? textStyle; + + @override + Widget build(BuildContext context) { + final createdAt = message.createdAt; + String stringDate; + final now = DateTime.now(); + if (now.year != createdAt.year || + now.month != createdAt.month || + now.day != createdAt.day) { + stringDate = Jiffy(createdAt.toLocal()).yMd; + } else { + stringDate = Jiffy(createdAt.toLocal()).jm; + } + + return Text( + stringDate, + style: textStyle, + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart new file mode 100644 index 00000000..d7423ef5 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart @@ -0,0 +1,446 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/v4/stream_list_view_indexed_widget_builder.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// Default separator builder for [StreamMessageSearchListView]. +Widget defaultMessageSearchListViewSeparatorBuilder( + BuildContext context, + List responses, + int index, +) => + const StreamMessageSearchListSeparator(); + +/// Signature for the item builder that creates the children of the +/// [StreamMessageSearchListView]. +typedef StreamMessageSearchListViewIndexedWidgetBuilder + = StreamListViewIndexedWidgetBuilder; + +/// A [ListView] that shows a list of [GetMessageResponse]s, +/// it uses [StreamMessageSearchListTile] as a default item. +/// +/// This is the new version of [MessageSearchListView] that uses +/// [StreamMessageSearchListController]. +/// +/// Example: +/// +/// ```dart +/// StreamMessageSearchListView( +/// controller: controller, +/// onMessageTap: (user) { +/// // Handle user tap event +/// }, +/// onMessageLongPress: (user) { +/// // Handle user long press event +/// }, +/// ) +/// ``` +/// +/// See also: +/// * [StreamMessageSearchListTile] +/// * [StreamMessageSearchListController] +class StreamMessageSearchListView extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchListView]. + const StreamMessageSearchListView({ + Key? key, + required this.controller, + this.itemBuilder, + this.separatorBuilder = defaultMessageSearchListViewSeparatorBuilder, + this.emptyBuilder, + this.loadingBuilder, + this.errorBuilder, + this.onMessageTap, + this.onMessageLongPress, + this.loadMoreTriggerIndex = 3, + this.padding, + this.physics, + this.reverse = false, + this.scrollController, + this.primary, + this.scrollBehavior, + this.shrinkWrap = false, + this.cacheExtent, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + }) : super(key: key); + + /// The [StreamUserListController] used to control the list of + /// searched messages. + final StreamMessageSearchListController controller; + + /// A builder that is called to build items in the [ListView]. + /// + /// The `messageResponse` parameter is the [GetMessageResponse] at this + /// position in the list and the `defaultWidget` is the default widget used + /// i.e: [StreamMessageSearchListTile]. + final StreamMessageSearchListViewIndexedWidgetBuilder? itemBuilder; + + /// A builder that is called to build the list separator. + final PagedValueListViewIndexedWidgetBuilder + separatorBuilder; + + /// A builder that is called to build the empty state of the list. + /// + /// If not provided, [StreamMessageSearchListEmptyWidget] will be used. + final WidgetBuilder? emptyBuilder; + + /// A builder that is called to build the loading state of the list. + /// + /// If not provided, [StreamMessageSearchListLoadingTile] will be used. + final WidgetBuilder? loadingBuilder; + + /// A builder that is called to build the error state of the list. + /// + /// If not provided, [StreamMessageSearchListErrorWidget] will be used. + final Widget Function(BuildContext, StreamChatError)? errorBuilder; + + /// Called when the user taps this list tile. + final void Function(GetMessageResponse)? onMessageTap; + + /// Called when the user long-presses on this list tile. + final void Function(GetMessageResponse)? onMessageLongPress; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the + /// application, the ScrollAction will be evaluated using this scroll view, + /// for example, when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollController] is null. + final bool? primary; + + /// {@macro flutter.widgets.shadow.scrollBehavior} + /// + /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit + /// [ScrollPhysics] is provided in [physics], it will take precedence, + /// followed by [scrollBehavior], and then the inherited ancestor + /// [ScrollBehavior]. + final ScrollBehavior? scrollBehavior; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + @override + Widget build(BuildContext context) => + PagedValueListView( + padding: padding, + physics: physics, + reverse: reverse, + controller: controller, + primary: primary, + shrinkWrap: shrinkWrap, + keyboardDismissBehavior: keyboardDismissBehavior, + restorationId: restorationId, + dragStartBehavior: dragStartBehavior, + cacheExtent: cacheExtent, + loadMoreTriggerIndex: loadMoreTriggerIndex, + separatorBuilder: separatorBuilder, + itemBuilder: (context, messageResponses, index) { + final messageResponse = messageResponses[index]; + final onTap = onMessageTap; + final onLongPress = onMessageLongPress; + + final streamUserListTile = StreamMessageSearchListTile( + messageResponse: messageResponse, + onTap: onTap == null ? null : () => onTap(messageResponse), + onLongPress: + onLongPress == null ? null : () => onLongPress(messageResponse), + ); + + return itemBuilder?.call( + context, + messageResponses, + index, + streamUserListTile, + ) ?? + streamUserListTile; + }, + emptyBuilder: (context) => + emptyBuilder?.call(context) ?? + const Center( + child: Padding( + padding: EdgeInsets.all(8), + child: StreamMessageSearchListEmptyWidget(), + ), + ), + loadMoreErrorBuilder: (context, error) => + StreamMessageSearchListLoadMoreError(onTap: controller.retry), + loadMoreIndicatorBuilder: (context) => const Center( + child: Padding( + padding: EdgeInsets.all(16), + child: StreamMessageSearchListLoadMoreIndicator(), + ), + ), + loadingBuilder: (context) => + loadingBuilder?.call(context) ?? + ListView.separated( + padding: padding, + physics: physics, + reverse: reverse, + itemCount: 25, + separatorBuilder: (_, __) => + const StreamMessageSearchListSeparator(), + itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + ), + errorBuilder: (context, error) => + errorBuilder?.call(context, error) ?? + Center( + child: StreamMessageSearchListErrorWidget( + onPressed: controller.refresh, + ), + ), + ); +} + +/// A [StreamMessageSearchListTile] that can be used in a [ListView] to show a +/// loading tile while waiting for the [StreamMessageSearchListController] to +/// load more messages. +class StreamMessageSearchListLoadMoreIndicator extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchListLoadMoreIndicator]. + const StreamMessageSearchListLoadMoreIndicator({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) => const SizedBox( + height: 16, + width: 16, + child: CircularProgressIndicator.adaptive(), + ); +} + +/// A [StreamMessageSearchListTile] that is used to display the error indicator +/// when loading more messages fails. +class StreamMessageSearchListLoadMoreError extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchListLoadMoreError]. + const StreamMessageSearchListLoadMoreError({ + Key? key, + this.onTap, + }) : super(key: key); + + /// The callback to invoke when the user taps on the error indicator. + final GestureTapCallback? onTap; + + @override + Widget build(BuildContext context) { + final theme = StreamChatTheme.of(context); + return InkWell( + onTap: onTap, + child: Container( + color: theme.colorTheme.textLowEmphasis.withOpacity(0.9), + child: Padding( + padding: const EdgeInsets.all(16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + context.translations.loadingChannelsError, + style: theme.textTheme.body.copyWith( + color: Colors.white, + ), + ), + StreamSvgIcon.retry(color: Colors.white), + ], + ), + ), + ), + ); + } +} + +/// A widget that is used to display a separator between +/// [StreamMessageSearchListTile] items. +class StreamMessageSearchListSeparator extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchListSeparator]. + const StreamMessageSearchListSeparator({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final effect = StreamChatTheme.of(context).colorTheme.borderBottom; + return Container( + height: 1, + color: effect.color!.withOpacity(effect.alpha ?? 1.0), + ); + } +} + +/// A widget that is used to display an error screen +/// when [StreamMessageSearchListController] fails to load initial messages. +class StreamMessageSearchListErrorWidget extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchListErrorWidget] widget. + const StreamMessageSearchListErrorWidget({ + Key? key, + this.onPressed, + }) : super(key: key); + + /// The callback to invoke when the user taps on the retry button. + final VoidCallback? onPressed; + + @override + Widget build(BuildContext context) => Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text.rich( + TextSpan( + children: [ + const WidgetSpan( + child: Padding( + padding: EdgeInsets.only(right: 2), + child: Icon(Icons.error_outline), + ), + ), + TextSpan(text: context.translations.loadingChannelsError), + ], + ), + style: Theme.of(context).textTheme.headline6, + ), + TextButton( + onPressed: onPressed, + child: Text(context.translations.retryLabel), + ), + ], + ); +} + +/// A widget that is used to display an empty state when +/// [StreamMessageSearchListController] loads zero messages. +class StreamMessageSearchListEmptyWidget extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchListEmptyWidget] widget. + const StreamMessageSearchListEmptyWidget({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final chatThemeData = StreamChatTheme.of(context); + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + StreamSvgIcon.message( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + const SizedBox(height: 28), + Text( + context.translations.letsStartChattingLabel, + style: chatThemeData.textTheme.headline, + ), + ], + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart b/packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart new file mode 100644 index 00000000..e235e36a --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart @@ -0,0 +1,9 @@ +import 'package:flutter/material.dart'; + +typedef StreamListViewIndexedWidgetBuilder + = Widget Function( + BuildContext context, + List items, + int index, + WidgetType defaultWidget, +); diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_message_preview_text.dart b/packages/stream_chat_flutter/lib/src/v4/stream_message_preview_text.dart new file mode 100644 index 00000000..53d260a2 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/stream_message_preview_text.dart @@ -0,0 +1,116 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// A widget that renders a preview of the message text. +class StreamMessagePreviewText extends StatelessWidget { + /// Creates a new instance of [StreamMessagePreviewText]. + const StreamMessagePreviewText({ + Key? key, + required this.message, + this.language, + this.textStyle, + }) : super(key: key); + + /// The message to display. + final Message message; + + /// The language to use for translations. + final String? language; + + /// The style to use for the text. + final TextStyle? textStyle; + + @override + Widget build(BuildContext context) { + final messageText = message + .translate(language ?? 'en') + .replaceMentions(linkify: false) + .text; + final messageAttachments = message.attachments; + final messageMentionedUsers = message.mentionedUsers; + + final mentionedUsersRegex = RegExp( + messageMentionedUsers.map((it) => '@${it.name}').join('|'), + caseSensitive: false, + ); + + final messageTextParts = [ + ...messageAttachments.map((it) { + if (it.type == 'image') { + return '📷'; + } else if (it.type == 'video') { + return '🎬'; + } else if (it.type == 'giphy') { + return '[GIF]'; + } + return it == message.attachments.last + ? (it.title ?? 'File') + : '${it.title ?? 'File'} , '; + }), + if (messageText != null) + if (messageMentionedUsers.isNotEmpty) + ...mentionedUsersRegex.allMatchesWithSep(messageText) + else + messageText, + ]; + + final fontStyle = (message.isSystem || message.isDeleted) + ? FontStyle.italic + : FontStyle.normal; + + final regularTextStyle = textStyle?.copyWith(fontStyle: fontStyle); + + final mentionsTextStyle = textStyle?.copyWith( + fontStyle: fontStyle, + fontWeight: FontWeight.bold, + ); + + final spans = [ + for (final part in messageTextParts) + if (messageMentionedUsers.isNotEmpty && + messageMentionedUsers.any((it) => '@${it.name}' == part)) + TextSpan( + text: part, + style: mentionsTextStyle, + ) + else if (messageAttachments.isNotEmpty && + messageAttachments + .where((it) => it.title != null) + .any((it) => it.title == part)) + TextSpan( + text: part, + style: regularTextStyle?.copyWith( + fontStyle: FontStyle.italic, + ), + ) + else + TextSpan( + text: part, + style: regularTextStyle, + ), + ]; + + return Text.rich( + TextSpan(children: spans), + maxLines: 1, + overflow: TextOverflow.ellipsis, + textAlign: TextAlign.start, + ); + } +} + +extension _RegExpX on RegExp { + List allMatchesWithSep(String input, [int start = 0]) { + final result = []; + for (final match in allMatches(input, start)) { + result.add(input.substring(start, match.start)); + // ignore: cascade_invocations + result.add(match[0]!); + // ignore: parameter_assignments + start = match.end; + } + result.add(input.substring(start)); + return result; + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_tile.dart new file mode 100644 index 00000000..0d6c79ba --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_tile.dart @@ -0,0 +1,193 @@ +import 'package:flutter/material.dart'; +import 'package:jiffy/jiffy.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; +import 'package:stream_chat_flutter/src/user_avatar.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart' + show User; + +/// A widget that displays a user. +/// +/// This widget is intended to be used as a Tile in [StreamUserListView] +/// +/// It shows the user's avatar, name and last message. +/// +/// See also: +/// * [StreamUserListView] +/// * [StreamUserAvatar] +class StreamUserListTile extends StatelessWidget { + /// Creates a new instance of [StreamUserListTile]. + const StreamUserListTile({ + Key? key, + required this.user, + this.leading, + this.title, + this.subtitle, + this.selected = false, + this.selectedWidget, + this.onTap, + this.onLongPress, + this.tileColor, + this.visualDensity = VisualDensity.compact, + this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), + }) : super(key: key); + + /// The user to display. + final User user; + + /// A widget to display before the title. + final Widget? leading; + + /// The primary content of the list tile. + final Widget? title; + + /// Additional content displayed below the title. + final Widget? subtitle; + + /// A widget to display at the end of tile. + final Widget? selectedWidget; + + /// If this tile is also [enabled] then icons and text are rendered with the same color. + /// + /// By default the selected color is the theme's primary color. The selected color + /// can be overridden with a [ListTileTheme]. + /// + /// {@tool dartpad} + /// Here is an example of using a [StatefulWidget] to keep track of the + /// selected index, and using that to set the `selected` property on the + /// corresponding [ListTile]. + /// + /// ** See code in examples/api/lib/material/list_tile/list_tile.selected.0.dart ** + /// {@end-tool} + final bool selected; + + /// Called when the user taps this list tile. + final GestureTapCallback? onTap; + + /// Called when the user long-presses on this list tile. + final GestureLongPressCallback? onLongPress; + + /// {@template flutter.material.ListTile.tileColor} + /// Defines the background color of `ListTile`. + /// + /// When the value is null, + /// the `tileColor` is set to [ListTileTheme.tileColor] + /// if it's not null and to [Colors.transparent] if it's null. + /// {@endtemplate} + final Color? tileColor; + + /// Defines how compact the list tile's layout will be. + /// + /// {@macro flutter.material.themedata.visualDensity} + /// + /// See also: + /// + /// * [ThemeData.visualDensity], which specifies the [visualDensity] for all + /// widgets within a [Theme]. + final VisualDensity visualDensity; + + /// The tile's internal padding. + /// + /// Insets a [ListTile]'s contents: its [leading], [title], [subtitle], + /// and [trailing] widgets. + /// + /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. + final EdgeInsetsGeometry contentPadding; + + /// Creates a copy of this tile but with the given fields replaced with + /// the new values. + StreamUserListTile copyWith({ + Key? key, + User? user, + Widget? leading, + Widget? title, + Widget? subtitle, + Widget? selectedWidget, + bool? selected, + GestureTapCallback? onTap, + GestureLongPressCallback? onLongPress, + Color? tileColor, + VisualDensity? visualDensity, + EdgeInsetsGeometry? contentPadding, + }) => + StreamUserListTile( + key: key ?? this.key, + user: user ?? this.user, + leading: leading ?? this.leading, + title: title ?? this.title, + subtitle: subtitle ?? this.subtitle, + selectedWidget: selectedWidget ?? this.selectedWidget, + selected: selected ?? this.selected, + onTap: onTap ?? this.onTap, + onLongPress: onLongPress ?? this.onLongPress, + tileColor: tileColor ?? this.tileColor, + visualDensity: visualDensity ?? this.visualDensity, + contentPadding: contentPadding ?? this.contentPadding, + ); + + @override + Widget build(BuildContext context) { + final chatThemeData = StreamChatTheme.of(context); + + final leading = this.leading ?? + StreamUserAvatar( + user: user, + constraints: const BoxConstraints.tightFor( + height: 40, + width: 40, + ), + ); + + final title = this.title ?? + Text( + user.name, + style: chatThemeData.textTheme.bodyBold, + ); + + final subtitle = this.subtitle ?? + UserLastActive( + user: user, + ); + + final selectedWidget = this.selectedWidget ?? + StreamSvgIcon.checkSend( + color: chatThemeData.colorTheme.accentPrimary, + ); + + return ListTile( + onTap: onTap, + onLongPress: onLongPress, + leading: leading, + trailing: selected ? selectedWidget : null, + title: title, + subtitle: subtitle, + ); + } +} + +/// A widget that displays a user's last active time. +class UserLastActive extends StatelessWidget { + /// Creates a new instance of the [UserLastActive] widget. + const UserLastActive({ + Key? key, + required this.user, + }) : super(key: key); + + /// The user whose last active time is displayed. + final User user; + + @override + Widget build(BuildContext context) { + final chatTheme = StreamChatTheme.of(context); + return Text( + user.online + ? context.translations.userOnlineText + : '${context.translations.userLastOnlineText} ' + '${Jiffy(user.lastActive).fromNow()}', + style: chatTheme.textTheme.footnote.copyWith( + color: chatTheme.colorTheme.textHighEmphasis.withOpacity(0.5), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart new file mode 100644 index 00000000..3f715193 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart @@ -0,0 +1,441 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/v4/stream_list_view_indexed_widget_builder.dart'; +import 'package:stream_chat_flutter/src/v4/user_list_view/stream_user_list_tile.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// Default separator builder for [StreamUserListView]. +Widget defaultUserListViewSeparatorBuilder( + BuildContext context, + List users, + int index, +) => + const StreamUserListSeparator(); + +/// Signature for the item builder that creates the children of the +/// [StreamUserListView]. +typedef StreamUserListViewIndexedWidgetBuilder + = StreamListViewIndexedWidgetBuilder; + +/// A [ListView] that shows a list of [User]s, +/// it uses [StreamUserListTile] as a default item. +/// +/// This is the new version of [UserListView] that uses +/// [StreamUserListController]. +/// +/// Example: +/// +/// ```dart +/// StreamUserListView( +/// controller: controller, +/// onUserTap: (user) { +/// // Handle user tap event +/// }, +/// onUserLongPress: (user) { +/// // Handle user long press event +/// }, +/// ) +/// ``` +/// +/// See also: +/// * [StreamUserListTile] +/// * [StreamUserListController] +class StreamUserListView extends StatelessWidget { + /// Creates a new instance of [StreamUserListView]. + const StreamUserListView({ + Key? key, + required this.controller, + this.itemBuilder, + this.separatorBuilder = defaultUserListViewSeparatorBuilder, + this.emptyBuilder, + this.loadingBuilder, + this.errorBuilder, + this.onUserTap, + this.onUserLongPress, + this.loadMoreTriggerIndex = 3, + this.padding, + this.physics, + this.reverse = false, + this.scrollController, + this.primary, + this.scrollBehavior, + this.shrinkWrap = false, + this.cacheExtent, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + }) : super(key: key); + + /// The [StreamUserListController] used to control the list of users. + final StreamUserListController controller; + + /// A builder that is called to build items in the [ListView]. + /// + /// The `user` parameter is the [User] at this position in the list + /// and the `defaultWidget` is the default widget used + /// i.e: [StreamUserListTile]. + final StreamUserListViewIndexedWidgetBuilder? itemBuilder; + + /// A builder that is called to build the list separator. + final PagedValueListViewIndexedWidgetBuilder separatorBuilder; + + /// A builder that is called to build the empty state of the list. + /// + /// If not provided, [StreamUserListEmptyWidget] will be used. + final WidgetBuilder? emptyBuilder; + + /// A builder that is called to build the loading state of the list. + /// + /// If not provided, [StreamUserListLoadingTile] will be used. + final WidgetBuilder? loadingBuilder; + + /// A builder that is called to build the error state of the list. + /// + /// If not provided, [StreamUserListErrorWidget] will be used. + final Widget Function(BuildContext, StreamChatError)? errorBuilder; + + /// Called when the user taps this list tile. + final void Function(User)? onUserTap; + + /// Called when the user long-presses on this list tile. + final void Function(User)? onUserLongPress; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the + /// application, the ScrollAction will be evaluated using this scroll view, + /// for example, when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollController] is null. + final bool? primary; + + /// {@macro flutter.widgets.shadow.scrollBehavior} + /// + /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit + /// [ScrollPhysics] is provided in [physics], it will take precedence, + /// followed by [scrollBehavior], and then the inherited ancestor + /// [ScrollBehavior]. + final ScrollBehavior? scrollBehavior; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + @override + Widget build(BuildContext context) => PagedValueListView( + padding: padding, + physics: physics, + reverse: reverse, + controller: controller, + primary: primary, + shrinkWrap: shrinkWrap, + keyboardDismissBehavior: keyboardDismissBehavior, + restorationId: restorationId, + dragStartBehavior: dragStartBehavior, + cacheExtent: cacheExtent, + loadMoreTriggerIndex: loadMoreTriggerIndex, + separatorBuilder: separatorBuilder, + itemBuilder: (context, users, index) { + final user = users[index]; + final onTap = onUserTap; + final onLongPress = onUserLongPress; + + final streamUserListTile = StreamUserListTile( + user: user, + onTap: onTap == null ? null : () => onTap(user), + onLongPress: onLongPress == null ? null : () => onLongPress(user), + ); + + return itemBuilder?.call( + context, + users, + index, + streamUserListTile, + ) ?? + streamUserListTile; + }, + loadMoreErrorBuilder: (context, error) => + StreamUserListLoadMoreError(onTap: controller.retry), + loadMoreIndicatorBuilder: (context) => const Center( + child: Padding( + padding: EdgeInsets.all(16), + child: StreamUserListLoadMoreIndicator(), + ), + ), + emptyBuilder: (context) => + emptyBuilder?.call(context) ?? + const Center( + child: Padding( + padding: EdgeInsets.all(8), + child: StreamUserListEmptyWidget(), + ), + ), + loadingBuilder: (context) => + loadingBuilder?.call(context) ?? + ListView.separated( + padding: padding, + physics: physics, + reverse: reverse, + itemCount: 25, + separatorBuilder: (_, __) => const StreamUserListSeparator(), + itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + ), + errorBuilder: (context, error) => + errorBuilder?.call(context, error) ?? + Center( + child: StreamUserListErrorWidget( + onPressed: controller.refresh, + ), + ), + ); +} + +/// A [StreamUserListTile] that can be used in a [ListView] to show a +/// loading tile while waiting for the [StreamUserListController] to load +/// more channels. +class StreamUserListLoadMoreIndicator extends StatelessWidget { + /// Creates a new instance of [StreamUserListLoadMoreIndicator]. + const StreamUserListLoadMoreIndicator({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) => const SizedBox( + height: 16, + width: 16, + child: CircularProgressIndicator.adaptive(), + ); +} + +/// A [StreamUserListTile] that is used to display the error indicator when +/// loading more users fails. +class StreamUserListLoadMoreError extends StatelessWidget { + /// Creates a new instance of [StreamUserListLoadMoreError]. + const StreamUserListLoadMoreError({ + Key? key, + this.onTap, + }) : super(key: key); + + /// The callback to invoke when the user taps on the error indicator. + final GestureTapCallback? onTap; + + @override + Widget build(BuildContext context) { + final theme = StreamChatTheme.of(context); + return InkWell( + onTap: onTap, + child: Container( + color: theme.colorTheme.textLowEmphasis.withOpacity(0.9), + child: Padding( + padding: const EdgeInsets.all(16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text( + context.translations.loadingChannelsError, + style: theme.textTheme.body.copyWith( + color: Colors.white, + ), + ), + StreamSvgIcon.retry(color: Colors.white), + ], + ), + ), + ), + ); + } +} + +/// A widget that is used to display a separator between +/// [StreamUserListTile] items. +class StreamUserListSeparator extends StatelessWidget { + /// Creates a new instance of [StreamUserListSeparator]. + const StreamUserListSeparator({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final effect = StreamChatTheme.of(context).colorTheme.borderBottom; + return Container( + height: 1, + color: effect.color!.withOpacity(effect.alpha ?? 1.0), + ); + } +} + +/// A widget that is used to display an error screen +/// when [StreamUserListController] fails to load initial users. +class StreamUserListErrorWidget extends StatelessWidget { + /// Creates a new instance of [StreamUserListErrorWidget] widget. + const StreamUserListErrorWidget({ + Key? key, + this.onPressed, + }) : super(key: key); + + /// The callback to invoke when the user taps on the retry button. + final VoidCallback? onPressed; + + @override + Widget build(BuildContext context) => Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text.rich( + TextSpan( + children: [ + const WidgetSpan( + child: Padding( + padding: EdgeInsets.only(right: 2), + child: Icon(Icons.error_outline), + ), + ), + TextSpan(text: context.translations.loadingChannelsError), + ], + ), + style: Theme.of(context).textTheme.headline6, + ), + TextButton( + onPressed: onPressed, + child: Text(context.translations.retryLabel), + ), + ], + ); +} + +/// A widget that is used to display an empty state when +/// [StreamUserListController] loads zero users. +class StreamUserListEmptyWidget extends StatelessWidget { + /// Creates a new instance of [StreamUserListEmptyWidget] widget. + const StreamUserListEmptyWidget({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final chatThemeData = StreamChatTheme.of(context); + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + StreamSvgIcon.message( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + const SizedBox(height: 28), + Text( + context.translations.letsStartChattingLabel, + style: chatThemeData.textTheme.headline, + ), + ], + ); + } +} diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 50f39721..0c2fc44b 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -48,6 +48,7 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; + // v4 export 'src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; export 'src/v4/channel_list_view/stream_channel_list_tile.dart'; @@ -57,7 +58,13 @@ export 'src/v4/message_input/stream_attachment_picker.dart'; export 'src/v4/message_input/stream_message_input.dart'; export 'src/v4/message_input/stream_message_send_button.dart'; export 'src/v4/message_input/stream_message_text_field.dart'; +export 'src/v4/message_search_list_view/stream_message_search_list_tile.dart'; +export 'src/v4/message_search_list_view/stream_message_search_list_view.dart'; export 'src/v4/stream_channel_avatar.dart'; export 'src/v4/stream_channel_info_bottom_sheet.dart'; export 'src/v4/stream_channel_name.dart'; +export 'src/v4/stream_list_view_indexed_widget_builder.dart'; +export 'src/v4/stream_message_preview_text.dart'; +export 'src/v4/user_list_view/stream_user_list_tile.dart'; +export 'src/v4/user_list_view/stream_user_list_view.dart'; export 'src/visible_footnote.dart'; diff --git a/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart index bbb27463..556f8109 100644 --- a/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/message_search_list_view_theme_test.dart @@ -67,7 +67,7 @@ void main() { _context = context; return Scaffold( body: MessageSearchBloc( - child: StreamMessageSearchListView( + child: MessageSearchListView( filters: Filter.in_('members', const ['test_id']), messageQuery: 'test query', ), @@ -100,7 +100,7 @@ void main() { _context = context; return Scaffold( body: MessageSearchBloc( - child: StreamMessageSearchListView( + child: MessageSearchListView( filters: Filter.in_('members', const ['test_id']), messageQuery: 'test query', ), diff --git a/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart b/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart index 6937f4b9..27ef0ea7 100644 --- a/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart +++ b/packages/stream_chat_flutter/test/src/theme/user_list_view_theme_test.dart @@ -60,7 +60,7 @@ void main() { _context = context; return Scaffold( body: UsersBloc( - child: StreamUserListView(), + child: UserListView(), ), ); }, @@ -89,7 +89,7 @@ void main() { _context = context; return Scaffold( body: UsersBloc( - child: StreamUserListView(), + child: UserListView(), ), ); }, diff --git a/packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart b/packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart new file mode 100644 index 00000000..75708589 --- /dev/null +++ b/packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart @@ -0,0 +1,297 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter_core/src/paged_value_notifier.dart'; + +/// Signature for a function that creates a widget for a given index, e.g., in a +/// [PagedValueListView]. +typedef PagedValueListViewIndexedWidgetBuilder = Widget Function( + BuildContext context, + List values, + int index, +); + +/// Signature for the item builder that creates the children of the +/// [PagedValueListView]. +typedef PagedValueListViewLoadMoreErrorBuilder = Widget Function( + BuildContext context, + StreamChatError error, +); + +/// A [ListView] that loads more pages when the user scrolls to the end of the +/// list. +/// +/// Use [loadMoreTriggerIndex] to set the index of the item that triggers the +/// loading of the next page. +class PagedValueListView extends StatefulWidget { + /// Creates a new instance of [PagedValueListView] widget. + const PagedValueListView({ + Key? key, + required this.controller, + required this.itemBuilder, + required this.separatorBuilder, + required this.emptyBuilder, + required this.loadMoreErrorBuilder, + required this.loadMoreIndicatorBuilder, + required this.loadingBuilder, + required this.errorBuilder, + this.loadMoreTriggerIndex = 3, + this.padding, + this.physics, + this.reverse = false, + this.scrollController, + this.primary, + this.scrollBehavior, + this.shrinkWrap = false, + this.cacheExtent, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + }) : super(key: key); + + /// The [PagedValueNotifier] used to control the list of items. + final PagedValueNotifier controller; + + /// A builder that is called to build items in the [ListView]. + /// + /// The `value` parameter is the [V] at this position in the list. + final PagedValueListViewIndexedWidgetBuilder itemBuilder; + + /// A builder that is called to build the list separator. + final PagedValueListViewIndexedWidgetBuilder separatorBuilder; + + /// A builder that is called to build the empty state of the list. + final WidgetBuilder emptyBuilder; + + /// A builder that is called to build the load more error state of the list. + final PagedValueListViewLoadMoreErrorBuilder loadMoreErrorBuilder; + + /// A builder that is called to build the load more indicator of the list. + final WidgetBuilder loadMoreIndicatorBuilder; + + /// A builder that is called to build the loading state of the list. + final WidgetBuilder loadingBuilder; + + /// A builder that is called to build the error state of the list. + final Widget Function(BuildContext, StreamChatError) errorBuilder; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the + /// application, the ScrollAction will be evaluated using this scroll view, + /// for example, when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollController] is null. + final bool? primary; + + /// {@macro flutter.widgets.shadow.scrollBehavior} + /// + /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit + /// [ScrollPhysics] is provided in [physics], it will take precedence, + /// followed by [scrollBehavior], and then the inherited ancestor + /// [ScrollBehavior]. + final ScrollBehavior? scrollBehavior; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + @override + State> createState() => + _PagedValueListViewState(); +} + +class _PagedValueListViewState extends State> { + PagedValueNotifier get _controller => widget.controller; + + // Avoids duplicate requests on rebuilds. + bool _hasRequestedNextPage = false; + + @override + void initState() { + super.initState(); + _controller.doInitialLoad(); + } + + @override + void didUpdateWidget(covariant PagedValueListView oldWidget) { + super.didUpdateWidget(oldWidget); + if (_controller != oldWidget.controller) { + // reset duplicate requests flag + _hasRequestedNextPage = false; + _controller.doInitialLoad(); + } + } + + @override + Widget build(BuildContext context) => PagedValueListenableBuilder( + valueListenable: _controller, + builder: (context, value, _) => value.when( + (items, nextPageKey, error) { + if (items.isEmpty) { + return widget.emptyBuilder(context); + } + + return ListView.separated( + padding: widget.padding, + physics: widget.physics, + reverse: widget.reverse, + controller: widget.scrollController, + primary: widget.primary, + shrinkWrap: widget.shrinkWrap, + keyboardDismissBehavior: widget.keyboardDismissBehavior, + restorationId: widget.restorationId, + dragStartBehavior: widget.dragStartBehavior, + cacheExtent: widget.cacheExtent, + itemCount: value.itemCount, + separatorBuilder: (context, index) => + widget.separatorBuilder(context, items, index), + itemBuilder: (context, index) { + if (!_hasRequestedNextPage) { + final newPageRequestTriggerIndex = + items.length - widget.loadMoreTriggerIndex; + final isBuildingTriggerIndexItem = + index == newPageRequestTriggerIndex; + if (nextPageKey != null && isBuildingTriggerIndexItem) { + // Schedules the request for the end of this frame. + WidgetsBinding.instance?.addPostFrameCallback((_) async { + if (error == null) { + await _controller.loadMore(nextPageKey); + } + _hasRequestedNextPage = false; + }); + _hasRequestedNextPage = true; + } + } + + if (index == items.length) { + if (error != null) { + return widget.loadMoreErrorBuilder(context, error); + } + return widget.loadMoreIndicatorBuilder(context); + } + + return widget.itemBuilder(context, items, index); + }, + ); + }, + loading: () => widget.loadingBuilder(context), + error: (error) => widget.errorBuilder(context, error), + ), + ); +} diff --git a/packages/stream_chat_flutter_core/lib/src/stream_message_search_list_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_message_search_list_controller.dart new file mode 100644 index 00000000..d5b8a2f3 --- /dev/null +++ b/packages/stream_chat_flutter_core/lib/src/stream_message_search_list_controller.dart @@ -0,0 +1,205 @@ +import 'dart:async'; +import 'dart:math'; + +import 'package:stream_chat/stream_chat.dart' hide Success; +import 'package:stream_chat_flutter_core/src/paged_value_notifier.dart'; + +/// The default channel page limit to load. +const defaultMessageSearchPagedLimit = 10; + +const _kDefaultBackendPaginationLimit = 30; + +/// A controller for a user list. +/// +/// This class lets you perform tasks such as: +/// * Load initial data. +/// * Load more data using [loadMore]. +/// * Replace the previously loaded users. +class StreamMessageSearchListController + extends PagedValueNotifier { + /// Creates a Stream user list controller. + /// + /// * `client` is the Stream chat client to use for the channels list. + /// + /// * `filter` is the query filters to use. + /// + /// * `sort` is the sorting used for the users matching the filters. + /// + /// * `presence` sets whether you'll receive user presence updates via the + /// websocket events. + /// + /// * `limit` is the limit to apply to the user list. + StreamMessageSearchListController({ + required this.client, + required this.filter, + this.messageFilter, + this.searchQuery, + this.sort, + this.limit = defaultMessageSearchPagedLimit, + }) : assert( + messageFilter != null || searchQuery != null, + 'Either messageFilter or searchQuery must be provided', + ), + assert( + messageFilter == null || searchQuery == null, + 'Only one of messageFilter or searchQuery can be provided', + ), + _activeFilter = filter, + _activeMessageFilter = messageFilter, + _activeSearchQuery = searchQuery, + _activeSort = sort, + super(const PagedValue.loading()); + + /// Creates a [StreamUserListController] from the passed [value]. + StreamMessageSearchListController.fromValue( + PagedValue value, { + required this.client, + required this.filter, + this.messageFilter, + this.searchQuery, + this.sort, + this.limit = defaultMessageSearchPagedLimit, + }) : assert( + messageFilter != null || searchQuery != null, + 'Either messageFilter or searchQuery must be provided', + ), + assert( + messageFilter == null || searchQuery == null, + 'Only one of messageFilter or searchQuery can be provided', + ), + _activeFilter = filter, + _activeMessageFilter = messageFilter, + _activeSearchQuery = searchQuery, + _activeSort = sort, + super(value); + + /// The client to use for the channels list. + final StreamChatClient client; + + /// The query filters to use. + /// + /// You can query on any of the custom fields you've defined on the [User]. + /// + /// You can also filter other built-in channel fields. + final Filter filter; + Filter _activeFilter; + + /// The message query filters to use. + /// + /// You can query on any of the custom fields you've defined on the [Channel]. + /// + /// You can also filter other built-in channel fields. + final Filter? messageFilter; + Filter? _activeMessageFilter; + + /// Message String to search on. + final String? searchQuery; + String? _activeSearchQuery; + + /// The sorting used for the users matching the filters. + /// + /// Sorting is based on field and direction, multiple sorting options + /// can be provided. + /// + /// Direction can be ascending or descending. + final List? sort; + List? _activeSort; + + /// The limit to apply to the user list. The default is set to + /// [defaultUserPagedLimit]. + final int limit; + + /// Allows for the change of filters used for user queries. + /// + /// Use this if you need to support runtime filter changes, + /// through custom filters UI. + set filter(Filter value) => _activeFilter = value; + + /// Allows for the change of message filters used for user queries. + /// + /// Use this if you need to support runtime filter changes, + /// through custom filters UI. + set messageFilter(Filter? value) => _activeMessageFilter = value; + + /// Allows for the change of filters used for user queries. + /// + /// Use this if you need to support runtime filter changes, + /// through custom filters UI. + set searchQuery(String? value) => _activeSearchQuery = value; + + /// Allows for the change of the query sort used for user queries. + /// + /// Use this if you need to support runtime sort changes, + /// through custom sort UI. + set sort(List? value) => _activeSort = value; + + @override + Future doInitialLoad() async { + final limit = min( + this.limit * defaultInitialPagedLimitMultiplier, + _kDefaultBackendPaginationLimit, + ); + try { + final response = await client.search( + _activeFilter, + sort: _activeSort, + query: _activeSearchQuery, + messageFilters: _activeMessageFilter, + paginationParams: PaginationParams(limit: limit), + ); + + final results = response.results; + final nextKey = response.next; + value = PagedValue( + items: results, + nextPageKey: nextKey, + ); + } on StreamChatError catch (error) { + value = PagedValue.error(error); + } catch (error) { + final chatError = StreamChatError(error.toString()); + value = PagedValue.error(chatError); + } + } + + @override + Future loadMore(String nextPageKey) async { + final previousValue = value.asSuccess; + + try { + final response = await client.search( + _activeFilter, + sort: _activeSort, + query: _activeSearchQuery, + messageFilters: _activeMessageFilter, + paginationParams: PaginationParams(limit: limit, next: nextPageKey), + ); + + final results = response.results; + final previousItems = previousValue.items; + final newItems = previousItems + results; + final next = response.next; + final nextKey = next != null && next.isNotEmpty ? next : null; + value = PagedValue( + items: newItems, + nextPageKey: nextKey, + ); + } on StreamChatError catch (error) { + value = previousValue.copyWith(error: error); + } catch (error) { + final chatError = StreamChatError(error.toString()); + value = previousValue.copyWith(error: chatError); + } + } + + @override + Future refresh({bool resetValue = true}) { + if (resetValue) { + _activeFilter = filter; + _activeMessageFilter = messageFilter; + _activeSearchQuery = searchQuery; + _activeSort = sort; + } + return super.refresh(resetValue: resetValue); + } +} diff --git a/packages/stream_chat_flutter_core/lib/src/stream_user_list_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_user_list_controller.dart new file mode 100644 index 00000000..1881e868 --- /dev/null +++ b/packages/stream_chat_flutter_core/lib/src/stream_user_list_controller.dart @@ -0,0 +1,165 @@ +import 'dart:async'; +import 'dart:math'; + +import 'package:stream_chat/stream_chat.dart' hide Success; +import 'package:stream_chat_flutter_core/src/paged_value_notifier.dart'; + +/// The default channel page limit to load. +const defaultUserPagedLimit = 10; + +const _kDefaultBackendPaginationLimit = 30; + +/// A controller for a user list. +/// +/// This class lets you perform tasks such as: +/// * Load initial data. +/// * Load more data using [loadMore]. +/// * Replace the previously loaded users. +class StreamUserListController extends PagedValueNotifier { + /// Creates a Stream user list controller. + /// + /// * `client` is the Stream chat client to use for the channels list. + /// + /// * `filter` is the query filters to use. + /// + /// * `sort` is the sorting used for the users matching the filters. + /// + /// * `presence` sets whether you'll receive user presence updates via the + /// websocket events. + /// + /// * `limit` is the limit to apply to the user list. + StreamUserListController({ + required this.client, + this.filter, + this.sort, + this.presence = true, + this.limit = defaultUserPagedLimit, + }) : _activeFilter = filter, + _activeSort = sort, + super(const PagedValue.loading()); + + /// Creates a [StreamUserListController] from the passed [value]. + StreamUserListController.fromValue( + PagedValue value, { + required this.client, + this.filter, + this.sort, + this.presence = true, + this.limit = defaultUserPagedLimit, + }) : _activeFilter = filter, + _activeSort = sort, + super(value); + + /// The client to use for the channels list. + final StreamChatClient client; + + /// The query filters to use. + /// + /// You can query on any of the custom fields you've defined on the [User]. + /// + /// You can also filter other built-in channel fields. + final Filter? filter; + Filter? _activeFilter; + + /// The sorting used for the users matching the filters. + /// + /// Sorting is based on field and direction, multiple sorting options + /// can be provided. + /// + /// Direction can be ascending or descending. + final List? sort; + List? _activeSort; + + /// If true you’ll receive user presence updates via the websocket events + final bool presence; + + /// The limit to apply to the user list. The default is set to + /// [defaultUserPagedLimit]. + final int limit; + + /// Allows for the change of filters used for user queries. + /// + /// Use this if you need to support runtime filter changes, + /// through custom filters UI. + set filter(Filter? value) => _activeFilter = value; + + /// Allows for the change of the query sort used for user queries. + /// + /// Use this if you need to support runtime sort changes, + /// through custom sort UI. + set sort(List? value) => _activeSort = value; + + @override + Future doInitialLoad() async { + final limit = min( + this.limit * defaultInitialPagedLimitMultiplier, + _kDefaultBackendPaginationLimit, + ); + try { + final userResponse = await client.queryUsers( + filter: _activeFilter, + sort: _activeSort, + presence: presence, + pagination: PaginationParams(limit: limit), + ); + + final users = userResponse.users; + final nextKey = users.length < limit ? null : users.length; + value = PagedValue( + items: users, + nextPageKey: nextKey, + ); + } on StreamChatError catch (error) { + value = PagedValue.error(error); + } catch (error) { + final chatError = StreamChatError(error.toString()); + value = PagedValue.error(chatError); + } + } + + @override + Future loadMore(int nextPageKey) async { + final previousValue = value.asSuccess; + + try { + final userResponse = await client.queryUsers( + filter: _activeFilter, + sort: _activeSort, + presence: presence, + pagination: PaginationParams(limit: limit, offset: nextPageKey), + ); + + final users = userResponse.users; + final previousItems = previousValue.items; + final newItems = previousItems + users; + final nextKey = users.length < limit ? null : newItems.length; + value = PagedValue( + items: newItems, + nextPageKey: nextKey, + ); + } on StreamChatError catch (error) { + value = previousValue.copyWith(error: error); + } catch (error) { + final chatError = StreamChatError(error.toString()); + value = previousValue.copyWith(error: chatError); + } + } + + @override + Future refresh({bool resetValue = true}) { + if (resetValue) { + _activeFilter = filter; + _activeSort = sort; + } + return super.refresh(resetValue: resetValue); + } + + /// Replaces the previously loaded users with [users] and updates + /// the nextPageKey. + set users(List users) { + value = PagedValue( + items: users, + nextPageKey: users.length, + ); + } +} diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index 78d82d8b..b5e61d7c 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -12,11 +12,14 @@ export 'src/message_list_core.dart' hide MessageListCoreState; export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; export 'src/message_text_field_controller.dart'; +export 'src/paged_value_list_view.dart'; export 'src/paged_value_notifier.dart' show PagedValueListenableBuilder; export 'src/stream_channel.dart'; export 'src/stream_channel_list_controller.dart'; export 'src/stream_channel_list_event_handler.dart'; export 'src/stream_chat_core.dart'; +export 'src/stream_message_search_list_controller.dart'; +export 'src/stream_user_list_controller.dart'; export 'src/typedef.dart'; export 'src/user_list_core.dart' hide UserListCoreState; export 'src/users_bloc.dart'; From 0f8c92f486449e15246cc5862f8909e847ef716d Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 22 Apr 2022 18:14:32 +0530 Subject: [PATCH 152/201] chore(core): deprecate UsersBloc and MessageSearchBloc Signed-off-by: xsahil03x --- .../stream_chat_flutter_core/lib/src/message_search_bloc.dart | 1 + packages/stream_chat_flutter_core/lib/src/users_bloc.dart | 1 + 2 files changed, 2 insertions(+) diff --git a/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart b/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart index 96a761c1..0e8d011d 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_search_bloc.dart @@ -11,6 +11,7 @@ import 'package:stream_chat_flutter_core/src/stream_controller_extension.dart'; /// using Flutter's [BuildContext]. /// /// API docs: https://getstream.io/chat/docs/flutter-dart/send_message/ +@Deprecated("Use 'StreamMessageSearchListController' instead") class MessageSearchBloc extends StatefulWidget { /// Instantiate a new MessageSearchBloc const MessageSearchBloc({ diff --git a/packages/stream_chat_flutter_core/lib/src/users_bloc.dart b/packages/stream_chat_flutter_core/lib/src/users_bloc.dart index e0a09116..63b88974 100644 --- a/packages/stream_chat_flutter_core/lib/src/users_bloc.dart +++ b/packages/stream_chat_flutter_core/lib/src/users_bloc.dart @@ -9,6 +9,7 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// using Flutter's [BuildContext]. /// /// API docs: https://getstream.io/chat/docs/flutter-dart/init_and_users/ +@Deprecated("Use 'StreamUserListController' instead") class UsersBloc extends StatefulWidget { /// Instantiate a new [UsersBloc]. The parameter [child] must be supplied and /// not null. From 1781f3169c7763c7e85eac2ec2f7c836b2dd1dd1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 22 Apr 2022 17:10:21 +0200 Subject: [PATCH 153/201] chore(ui): update changelog --- .../lib/src/v4/message_input/stream_message_input.dart | 7 +++---- packages/stream_chat_flutter_core/CHANGELOG.md | 5 +++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart index 63872fc2..9c33d83c 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart @@ -486,10 +486,9 @@ class StreamMessageInputState extends State @override Widget build(BuildContext context) { - if (!StreamChannel.of(context) - .channel - .ownCapabilities - .contains(PermissionType.sendMessage)) { + final channel = StreamChannel.of(context).channel; + if (channel.state != null && + !channel.ownCapabilities.contains(PermissionType.sendMessage)) { return SafeArea( child: Padding( padding: const EdgeInsets.symmetric( diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index 21d41dab..507c5f90 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,3 +1,8 @@ +## Upcoming + +- Deprecated `UsersBloc` in favor of `StreamUserListController` to control the user list. +- Deprecated `MessageSearchBloc` in favor of `StreamMessageSearchListController` to control the user list. + ## 4.0.0-beta.2 - Updated `stream_chat` dependency to [`4.0.0-beta.2`](https://pub.dev/packages/stream_chat/changelog). From 942af38146f4aee41c0f691db334f4737b59e302 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 25 Apr 2022 16:56:29 +0530 Subject: [PATCH 154/201] feat(core, ui): added PagedValueGridView, added additional params in ListViews Signed-off-by: xsahil03x --- .../stream_channel_list_view.dart | 78 +- .../stream_message_search_list_view.dart | 80 +- .../user_list_view/stream_user_list_view.dart | 80 +- .../lib/src/paged_value_list_view.dart | 297 -------- .../lib/src/paged_value_scroll_view.dart | 707 ++++++++++++++++++ .../lib/stream_chat_flutter_core.dart | 2 +- 6 files changed, 907 insertions(+), 337 deletions(-) delete mode 100644 packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart create mode 100644 packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart index f0a32f7d..1e76a25b 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart @@ -57,17 +57,21 @@ class StreamChannelListView extends StatelessWidget { this.onChannelTap, this.onChannelLongPress, this.loadMoreTriggerIndex = 3, - this.padding, - this.physics, + this.scrollDirection = Axis.vertical, this.reverse = false, this.scrollController, this.primary, - this.scrollBehavior, + this.physics, this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, this.cacheExtent, this.dragStartBehavior = DragStartBehavior.start, this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, this.restorationId, + this.clipBehavior = Clip.hardEdge, }) : super(key: key); /// The [StreamChannelListController] used to control the list of channels. @@ -81,7 +85,7 @@ class StreamChannelListView extends StatelessWidget { final StreamChannelListViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the list separator. - final PagedValueListViewIndexedWidgetBuilder separatorBuilder; + final PagedValueScrollViewIndexedWidgetBuilder separatorBuilder; /// A builder that is called to build the empty state of the list. /// @@ -107,9 +111,56 @@ class StreamChannelListView extends StatelessWidget { /// The index to take into account when triggering [controller.loadMore]. final int loadMoreTriggerIndex; + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + /// The amount of space by which to inset the children. final EdgeInsetsGeometry? padding; + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + /// {@template flutter.widgets.scroll_view.reverse} /// Whether the scroll view scrolls in the reading direction. /// @@ -157,14 +208,6 @@ class StreamChannelListView extends StatelessWidget { /// Defaults to true when [scrollController] is null. final bool? primary; - /// {@macro flutter.widgets.shadow.scrollBehavior} - /// - /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit - /// [ScrollPhysics] is provided in [physics], it will take precedence, - /// followed by [scrollBehavior], and then the inherited ancestor - /// [ScrollBehavior]. - final ScrollBehavior? scrollBehavior; - /// {@template flutter.widgets.scroll_view.shrinkWrap} /// Whether the extent of the scroll view in the [scrollDirection] should be /// determined by the contents being viewed. @@ -240,18 +283,29 @@ class StreamChannelListView extends StatelessWidget { /// {@macro flutter.widgets.scrollable.restorationId} final String? restorationId; + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + @override Widget build(BuildContext context) => PagedValueListView( + scrollDirection: scrollDirection, padding: padding, physics: physics, reverse: reverse, controller: controller, + scrollController: scrollController, primary: primary, shrinkWrap: shrinkWrap, + addAutomaticKeepAlives: addAutomaticKeepAlives, + addRepaintBoundaries: addRepaintBoundaries, + addSemanticIndexes: addSemanticIndexes, keyboardDismissBehavior: keyboardDismissBehavior, restorationId: restorationId, dragStartBehavior: dragStartBehavior, cacheExtent: cacheExtent, + clipBehavior: clipBehavior, loadMoreTriggerIndex: loadMoreTriggerIndex, separatorBuilder: separatorBuilder, itemBuilder: (context, channels, index) { diff --git a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart index d7423ef5..0b23c331 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart @@ -1,7 +1,6 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/v4/stream_list_view_indexed_widget_builder.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Default separator builder for [StreamMessageSearchListView]. @@ -54,17 +53,21 @@ class StreamMessageSearchListView extends StatelessWidget { this.onMessageTap, this.onMessageLongPress, this.loadMoreTriggerIndex = 3, - this.padding, - this.physics, + this.scrollDirection = Axis.vertical, this.reverse = false, this.scrollController, this.primary, - this.scrollBehavior, + this.physics, this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, this.cacheExtent, this.dragStartBehavior = DragStartBehavior.start, this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, this.restorationId, + this.clipBehavior = Clip.hardEdge, }) : super(key: key); /// The [StreamUserListController] used to control the list of @@ -79,7 +82,7 @@ class StreamMessageSearchListView extends StatelessWidget { final StreamMessageSearchListViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the list separator. - final PagedValueListViewIndexedWidgetBuilder + final PagedValueScrollViewIndexedWidgetBuilder separatorBuilder; /// A builder that is called to build the empty state of the list. @@ -106,9 +109,56 @@ class StreamMessageSearchListView extends StatelessWidget { /// The index to take into account when triggering [controller.loadMore]. final int loadMoreTriggerIndex; + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + /// The amount of space by which to inset the children. final EdgeInsetsGeometry? padding; + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + /// {@template flutter.widgets.scroll_view.reverse} /// Whether the scroll view scrolls in the reading direction. /// @@ -156,14 +206,6 @@ class StreamMessageSearchListView extends StatelessWidget { /// Defaults to true when [scrollController] is null. final bool? primary; - /// {@macro flutter.widgets.shadow.scrollBehavior} - /// - /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit - /// [ScrollPhysics] is provided in [physics], it will take precedence, - /// followed by [scrollBehavior], and then the inherited ancestor - /// [ScrollBehavior]. - final ScrollBehavior? scrollBehavior; - /// {@template flutter.widgets.scroll_view.shrinkWrap} /// Whether the extent of the scroll view in the [scrollDirection] should be /// determined by the contents being viewed. @@ -239,19 +281,31 @@ class StreamMessageSearchListView extends StatelessWidget { /// {@macro flutter.widgets.scrollable.restorationId} final String? restorationId; + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + + @override Widget build(BuildContext context) => PagedValueListView( + scrollDirection: scrollDirection, padding: padding, physics: physics, reverse: reverse, controller: controller, + scrollController: scrollController, primary: primary, shrinkWrap: shrinkWrap, + addAutomaticKeepAlives: addAutomaticKeepAlives, + addRepaintBoundaries: addRepaintBoundaries, + addSemanticIndexes: addSemanticIndexes, keyboardDismissBehavior: keyboardDismissBehavior, restorationId: restorationId, dragStartBehavior: dragStartBehavior, cacheExtent: cacheExtent, + clipBehavior: clipBehavior, loadMoreTriggerIndex: loadMoreTriggerIndex, separatorBuilder: separatorBuilder, itemBuilder: (context, messageResponses, index) { diff --git a/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart index 3f715193..45fd37bb 100644 --- a/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart @@ -1,8 +1,6 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/v4/stream_list_view_indexed_widget_builder.dart'; -import 'package:stream_chat_flutter/src/v4/user_list_view/stream_user_list_tile.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Default separator builder for [StreamUserListView]. @@ -54,17 +52,21 @@ class StreamUserListView extends StatelessWidget { this.onUserTap, this.onUserLongPress, this.loadMoreTriggerIndex = 3, - this.padding, - this.physics, + this.scrollDirection = Axis.vertical, this.reverse = false, this.scrollController, this.primary, - this.scrollBehavior, + this.physics, this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, this.cacheExtent, this.dragStartBehavior = DragStartBehavior.start, this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, this.restorationId, + this.clipBehavior = Clip.hardEdge, }) : super(key: key); /// The [StreamUserListController] used to control the list of users. @@ -78,7 +80,7 @@ class StreamUserListView extends StatelessWidget { final StreamUserListViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the list separator. - final PagedValueListViewIndexedWidgetBuilder separatorBuilder; + final PagedValueScrollViewIndexedWidgetBuilder separatorBuilder; /// A builder that is called to build the empty state of the list. /// @@ -104,9 +106,56 @@ class StreamUserListView extends StatelessWidget { /// The index to take into account when triggering [controller.loadMore]. final int loadMoreTriggerIndex; + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + /// The amount of space by which to inset the children. final EdgeInsetsGeometry? padding; + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + /// {@template flutter.widgets.scroll_view.reverse} /// Whether the scroll view scrolls in the reading direction. /// @@ -154,14 +203,6 @@ class StreamUserListView extends StatelessWidget { /// Defaults to true when [scrollController] is null. final bool? primary; - /// {@macro flutter.widgets.shadow.scrollBehavior} - /// - /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit - /// [ScrollPhysics] is provided in [physics], it will take precedence, - /// followed by [scrollBehavior], and then the inherited ancestor - /// [ScrollBehavior]. - final ScrollBehavior? scrollBehavior; - /// {@template flutter.widgets.scroll_view.shrinkWrap} /// Whether the extent of the scroll view in the [scrollDirection] should be /// determined by the contents being viewed. @@ -237,18 +278,29 @@ class StreamUserListView extends StatelessWidget { /// {@macro flutter.widgets.scrollable.restorationId} final String? restorationId; + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + @override Widget build(BuildContext context) => PagedValueListView( + scrollDirection: scrollDirection, padding: padding, physics: physics, reverse: reverse, controller: controller, + scrollController: scrollController, primary: primary, shrinkWrap: shrinkWrap, + addAutomaticKeepAlives: addAutomaticKeepAlives, + addRepaintBoundaries: addRepaintBoundaries, + addSemanticIndexes: addSemanticIndexes, keyboardDismissBehavior: keyboardDismissBehavior, restorationId: restorationId, dragStartBehavior: dragStartBehavior, cacheExtent: cacheExtent, + clipBehavior: clipBehavior, loadMoreTriggerIndex: loadMoreTriggerIndex, separatorBuilder: separatorBuilder, itemBuilder: (context, users, index) { diff --git a/packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart b/packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart deleted file mode 100644 index 75708589..00000000 --- a/packages/stream_chat_flutter_core/lib/src/paged_value_list_view.dart +++ /dev/null @@ -1,297 +0,0 @@ -import 'package:flutter/gestures.dart'; -import 'package:flutter/material.dart'; -import 'package:stream_chat/stream_chat.dart'; -import 'package:stream_chat_flutter_core/src/paged_value_notifier.dart'; - -/// Signature for a function that creates a widget for a given index, e.g., in a -/// [PagedValueListView]. -typedef PagedValueListViewIndexedWidgetBuilder = Widget Function( - BuildContext context, - List values, - int index, -); - -/// Signature for the item builder that creates the children of the -/// [PagedValueListView]. -typedef PagedValueListViewLoadMoreErrorBuilder = Widget Function( - BuildContext context, - StreamChatError error, -); - -/// A [ListView] that loads more pages when the user scrolls to the end of the -/// list. -/// -/// Use [loadMoreTriggerIndex] to set the index of the item that triggers the -/// loading of the next page. -class PagedValueListView extends StatefulWidget { - /// Creates a new instance of [PagedValueListView] widget. - const PagedValueListView({ - Key? key, - required this.controller, - required this.itemBuilder, - required this.separatorBuilder, - required this.emptyBuilder, - required this.loadMoreErrorBuilder, - required this.loadMoreIndicatorBuilder, - required this.loadingBuilder, - required this.errorBuilder, - this.loadMoreTriggerIndex = 3, - this.padding, - this.physics, - this.reverse = false, - this.scrollController, - this.primary, - this.scrollBehavior, - this.shrinkWrap = false, - this.cacheExtent, - this.dragStartBehavior = DragStartBehavior.start, - this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, - this.restorationId, - }) : super(key: key); - - /// The [PagedValueNotifier] used to control the list of items. - final PagedValueNotifier controller; - - /// A builder that is called to build items in the [ListView]. - /// - /// The `value` parameter is the [V] at this position in the list. - final PagedValueListViewIndexedWidgetBuilder itemBuilder; - - /// A builder that is called to build the list separator. - final PagedValueListViewIndexedWidgetBuilder separatorBuilder; - - /// A builder that is called to build the empty state of the list. - final WidgetBuilder emptyBuilder; - - /// A builder that is called to build the load more error state of the list. - final PagedValueListViewLoadMoreErrorBuilder loadMoreErrorBuilder; - - /// A builder that is called to build the load more indicator of the list. - final WidgetBuilder loadMoreIndicatorBuilder; - - /// A builder that is called to build the loading state of the list. - final WidgetBuilder loadingBuilder; - - /// A builder that is called to build the error state of the list. - final Widget Function(BuildContext, StreamChatError) errorBuilder; - - /// The index to take into account when triggering [controller.loadMore]. - final int loadMoreTriggerIndex; - - /// The amount of space by which to inset the children. - final EdgeInsetsGeometry? padding; - - /// {@template flutter.widgets.scroll_view.reverse} - /// Whether the scroll view scrolls in the reading direction. - /// - /// For example, if [scrollDirection] is [Axis.vertical], then the scroll view - /// scrolls from top to bottom when [reverse] is false and from bottom to top - /// when [reverse] is true. - /// - /// Defaults to false. - /// {@endtemplate} - final bool reverse; - - /// {@template flutter.widgets.scroll_view.controller} - /// An object that can be used to control the position to which this scroll - /// view is scrolled. - /// - /// Must be null if [primary] is true. - /// - /// A [ScrollController] serves several purposes. It can be used to control - /// the initial scroll position (see [ScrollController.initialScrollOffset]). - /// It can be used to control whether the scroll view should automatically - /// save and restore its scroll position in the [PageStorage] (see - /// [ScrollController.keepScrollOffset]). It can be used to read the current - /// scroll position (see [ScrollController.offset]), or change it (see - /// [ScrollController.animateTo]). - /// {@endtemplate} - final ScrollController? scrollController; - - /// {@template flutter.widgets.scroll_view.primary} - /// Whether this is the primary scroll view associated with the parent - /// [PrimaryScrollController]. - /// - /// When this is true, the scroll view is scrollable even if it does not have - /// sufficient content to actually scroll. Otherwise, by default the user can - /// only scroll the view if it has sufficient content. See [physics]. - /// - /// Also when true, the scroll view is used for default [ScrollAction]s. If a - /// ScrollAction is not handled by an otherwise focused part of the - /// application, the ScrollAction will be evaluated using this scroll view, - /// for example, when executing [Shortcuts] key events like page up and down. - /// - /// On iOS, this also identifies the scroll view that will scroll to top in - /// response to a tap in the status bar. - /// {@endtemplate} - /// - /// Defaults to true when [scrollController] is null. - final bool? primary; - - /// {@macro flutter.widgets.shadow.scrollBehavior} - /// - /// [ScrollBehavior]s also provide [ScrollPhysics]. If an explicit - /// [ScrollPhysics] is provided in [physics], it will take precedence, - /// followed by [scrollBehavior], and then the inherited ancestor - /// [ScrollBehavior]. - final ScrollBehavior? scrollBehavior; - - /// {@template flutter.widgets.scroll_view.shrinkWrap} - /// Whether the extent of the scroll view in the [scrollDirection] should be - /// determined by the contents being viewed. - /// - /// If the scroll view does not shrink wrap, then the scroll view will expand - /// to the maximum allowed size in the [scrollDirection]. If the scroll view - /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must - /// be true. - /// - /// Shrink wrapping the content of the scroll view is significantly more - /// expensive than expanding to the maximum allowed size because the content - /// can expand and contract during scrolling, which means the size of the - /// scroll view needs to be recomputed whenever the scroll position changes. - /// - /// Defaults to false. - /// {@endtemplate} - final bool shrinkWrap; - - /// {@template flutter.widgets.scroll_view.physics} - /// How the scroll view should respond to user input. - /// - /// For example, determines how the scroll view continues to animate after the - /// user stops dragging the scroll view. - /// - /// Defaults to matching platform conventions. Furthermore, if [primary] is - /// false, then the user cannot scroll if there is insufficient content to - /// scroll, while if [primary] is true, they can always attempt to scroll. - /// - /// To force the scroll view to always be scrollable even if there is - /// insufficient content, as if [primary] was true but without necessarily - /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics - /// object, as in: - /// - /// ```dart - /// physics: const AlwaysScrollableScrollPhysics(), - /// ``` - /// - /// To force the scroll view to use the default platform conventions and not - /// be scrollable if there is insufficient content, regardless of the value of - /// [primary], provide an explicit [ScrollPhysics] object, as in: - /// - /// ```dart - /// physics: const ScrollPhysics(), - /// ``` - /// - /// The physics can be changed dynamically (by providing a new object in a - /// subsequent build), but new physics will only take effect if the _class_ of - /// the provided object changes. Merely constructing a new instance with a - /// different configuration is insufficient to cause the physics to be - /// reapplied. (This is because the final object used is generated - /// dynamically, which can be relatively expensive, and it would be - /// inefficient to speculatively create this object each frame to see if the - /// physics should be updated.) - /// {@endtemplate} - /// - /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the - /// [ScrollPhysics] provided by that behavior will take precedence after - /// [physics]. - final ScrollPhysics? physics; - - /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} - final double? cacheExtent; - - /// {@macro flutter.widgets.scrollable.dragStartBehavior} - final DragStartBehavior dragStartBehavior; - - /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} - /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will - /// dismiss the keyboard automatically. - /// {@endtemplate} - final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; - - /// {@macro flutter.widgets.scrollable.restorationId} - final String? restorationId; - - @override - State> createState() => - _PagedValueListViewState(); -} - -class _PagedValueListViewState extends State> { - PagedValueNotifier get _controller => widget.controller; - - // Avoids duplicate requests on rebuilds. - bool _hasRequestedNextPage = false; - - @override - void initState() { - super.initState(); - _controller.doInitialLoad(); - } - - @override - void didUpdateWidget(covariant PagedValueListView oldWidget) { - super.didUpdateWidget(oldWidget); - if (_controller != oldWidget.controller) { - // reset duplicate requests flag - _hasRequestedNextPage = false; - _controller.doInitialLoad(); - } - } - - @override - Widget build(BuildContext context) => PagedValueListenableBuilder( - valueListenable: _controller, - builder: (context, value, _) => value.when( - (items, nextPageKey, error) { - if (items.isEmpty) { - return widget.emptyBuilder(context); - } - - return ListView.separated( - padding: widget.padding, - physics: widget.physics, - reverse: widget.reverse, - controller: widget.scrollController, - primary: widget.primary, - shrinkWrap: widget.shrinkWrap, - keyboardDismissBehavior: widget.keyboardDismissBehavior, - restorationId: widget.restorationId, - dragStartBehavior: widget.dragStartBehavior, - cacheExtent: widget.cacheExtent, - itemCount: value.itemCount, - separatorBuilder: (context, index) => - widget.separatorBuilder(context, items, index), - itemBuilder: (context, index) { - if (!_hasRequestedNextPage) { - final newPageRequestTriggerIndex = - items.length - widget.loadMoreTriggerIndex; - final isBuildingTriggerIndexItem = - index == newPageRequestTriggerIndex; - if (nextPageKey != null && isBuildingTriggerIndexItem) { - // Schedules the request for the end of this frame. - WidgetsBinding.instance?.addPostFrameCallback((_) async { - if (error == null) { - await _controller.loadMore(nextPageKey); - } - _hasRequestedNextPage = false; - }); - _hasRequestedNextPage = true; - } - } - - if (index == items.length) { - if (error != null) { - return widget.loadMoreErrorBuilder(context, error); - } - return widget.loadMoreIndicatorBuilder(context); - } - - return widget.itemBuilder(context, items, index); - }, - ); - }, - loading: () => widget.loadingBuilder(context), - error: (error) => widget.errorBuilder(context, error), - ), - ); -} diff --git a/packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart b/packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart new file mode 100644 index 00000000..3990dc5f --- /dev/null +++ b/packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart @@ -0,0 +1,707 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat/stream_chat.dart'; +import 'package:stream_chat_flutter_core/src/paged_value_notifier.dart'; + +/// Signature for a function that creates a widget for a given index, e.g., in a +/// [PagedValueListView] and [PagedValueGridView]. +typedef PagedValueScrollViewIndexedWidgetBuilder = Widget Function( + BuildContext context, + List values, + int index, +); + +/// Signature for the item builder that creates the children of the +/// [PagedValueListView] and [PagedValueGridView]. +typedef PagedValueScrollViewLoadMoreErrorBuilder = Widget Function( + BuildContext context, + StreamChatError error, +); + +/// A [ListView] that loads more pages when the user scrolls to the end of the +/// list. +/// +/// Use [loadMoreTriggerIndex] to set the index of the item that triggers the +/// loading of the next page. +class PagedValueListView extends StatefulWidget { + /// Creates a new instance of [PagedValueListView] widget. + const PagedValueListView({ + Key? key, + required this.controller, + required this.itemBuilder, + required this.separatorBuilder, + required this.emptyBuilder, + required this.loadMoreErrorBuilder, + required this.loadMoreIndicatorBuilder, + required this.loadingBuilder, + required this.errorBuilder, + this.loadMoreTriggerIndex = 3, + this.scrollDirection = Axis.vertical, + this.reverse = false, + this.scrollController, + this.primary, + this.physics, + this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, + this.cacheExtent, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + this.clipBehavior = Clip.hardEdge, + }) : super(key: key); + + /// The [PagedValueNotifier] used to control the list of items. + final PagedValueNotifier controller; + + /// A builder that is called to build items in the [ListView]. + /// + /// The `value` parameter is the [V] at this position in the list. + final PagedValueScrollViewIndexedWidgetBuilder itemBuilder; + + /// A builder that is called to build the list separator. + final PagedValueScrollViewIndexedWidgetBuilder separatorBuilder; + + /// A builder that is called to build the empty state of the list. + final WidgetBuilder emptyBuilder; + + /// A builder that is called to build the load more error state of the list. + final PagedValueScrollViewLoadMoreErrorBuilder loadMoreErrorBuilder; + + /// A builder that is called to build the load more indicator of the list. + final WidgetBuilder loadMoreIndicatorBuilder; + + /// A builder that is called to build the loading state of the list. + final WidgetBuilder loadingBuilder; + + /// A builder that is called to build the error state of the list. + final Widget Function(BuildContext, StreamChatError) errorBuilder; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the + /// application, the ScrollAction will be evaluated using this scroll view, + /// for example, when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollController] is null. + final bool? primary; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + + @override + State> createState() => + _PagedValueListViewState(); +} + +class _PagedValueListViewState extends State> { + PagedValueNotifier get _controller => widget.controller; + + // Avoids duplicate requests on rebuilds. + bool _hasRequestedNextPage = false; + + @override + void initState() { + super.initState(); + _controller.doInitialLoad(); + } + + @override + void didUpdateWidget(covariant PagedValueListView oldWidget) { + super.didUpdateWidget(oldWidget); + if (_controller != oldWidget.controller) { + // reset duplicate requests flag + _hasRequestedNextPage = false; + _controller.doInitialLoad(); + } + } + + @override + Widget build(BuildContext context) => PagedValueListenableBuilder( + valueListenable: _controller, + builder: (context, value, _) => value.when( + (items, nextPageKey, error) { + if (items.isEmpty) { + return widget.emptyBuilder(context); + } + + return ListView.separated( + scrollDirection: widget.scrollDirection, + padding: widget.padding, + physics: widget.physics, + reverse: widget.reverse, + controller: widget.scrollController, + primary: widget.primary, + shrinkWrap: widget.shrinkWrap, + addAutomaticKeepAlives: widget.addAutomaticKeepAlives, + addRepaintBoundaries: widget.addRepaintBoundaries, + addSemanticIndexes: widget.addSemanticIndexes, + keyboardDismissBehavior: widget.keyboardDismissBehavior, + restorationId: widget.restorationId, + dragStartBehavior: widget.dragStartBehavior, + cacheExtent: widget.cacheExtent, + clipBehavior: widget.clipBehavior, + itemCount: value.itemCount, + separatorBuilder: (context, index) => + widget.separatorBuilder(context, items, index), + itemBuilder: (context, index) { + if (!_hasRequestedNextPage) { + final newPageRequestTriggerIndex = + items.length - widget.loadMoreTriggerIndex; + final isBuildingTriggerIndexItem = + index == newPageRequestTriggerIndex; + if (nextPageKey != null && isBuildingTriggerIndexItem) { + // Schedules the request for the end of this frame. + WidgetsBinding.instance?.addPostFrameCallback((_) async { + if (error == null) { + await _controller.loadMore(nextPageKey); + } + _hasRequestedNextPage = false; + }); + _hasRequestedNextPage = true; + } + } + + if (index == items.length) { + if (error != null) { + return widget.loadMoreErrorBuilder(context, error); + } + return widget.loadMoreIndicatorBuilder(context); + } + + return widget.itemBuilder(context, items, index); + }, + ); + }, + loading: () => widget.loadingBuilder(context), + error: (error) => widget.errorBuilder(context, error), + ), + ); +} + +/// A [GridView] that loads more pages when the user scrolls to the end of the +/// grid. +/// +/// Use [loadMoreTriggerIndex] to set the index of the item that triggers the +/// loading of the next page. +class PagedValueGridView extends StatefulWidget { + /// Creates a new instance of [PagedValueGridView] widget. + const PagedValueGridView({ + Key? key, + required this.controller, + required this.gridDelegate, + required this.itemBuilder, + required this.emptyBuilder, + required this.loadMoreErrorBuilder, + required this.loadMoreIndicatorBuilder, + required this.loadingBuilder, + required this.errorBuilder, + this.loadMoreTriggerIndex = 3, + this.scrollDirection = Axis.vertical, + this.reverse = false, + this.scrollController, + this.primary, + this.physics, + this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, + this.cacheExtent, + this.semanticChildCount, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + this.clipBehavior = Clip.hardEdge, + }) : super(key: key); + + /// The [PagedValueNotifier] used to control the list of items. + final PagedValueNotifier controller; + + /// A delegate that controls the layout of the children within + /// the [PagedValueGridView]. + final SliverGridDelegate gridDelegate; + + /// A builder that is called to build items in the [PagedValueGridView]. + /// + /// The `value` parameter is the [V] at this position in the list. + final PagedValueScrollViewIndexedWidgetBuilder itemBuilder; + + /// A builder that is called to build the empty state of the list. + final WidgetBuilder emptyBuilder; + + /// A builder that is called to build the load more error state of the list. + final PagedValueScrollViewLoadMoreErrorBuilder loadMoreErrorBuilder; + + /// A builder that is called to build the load more indicator of the list. + final WidgetBuilder loadMoreIndicatorBuilder; + + /// A builder that is called to build the loading state of the list. + final WidgetBuilder loadingBuilder; + + /// A builder that is called to build the error state of the list. + final Widget Function(BuildContext, StreamChatError) errorBuilder; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if the reading direction is left-to-right and + /// [scrollDirection] is [Axis.horizontal], then the scroll view scrolls from + /// left to right when [reverse] is false and from right to left when + /// [reverse] is true. + /// + /// Similarly, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the application, + /// the ScrollAction will be evaluated using this scroll view, for example, + /// when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollDirection] is [Axis.vertical] and + /// [controller] is null. + final bool? primary; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// The number of children that will contribute semantic information. + /// + /// Some subtypes of [ScrollView] can infer this value automatically. For + /// example [ListView] will use the number of widgets in the child list, + /// while the [ListView.separated] constructor will use half that amount. + /// + /// For [CustomScrollView] and other types which do not receive a builder + /// or list of widgets, the child count must be explicitly provided. If the + /// number is unknown or unbounded this should be left unset or set to null. + /// + /// See also: + /// + /// * [SemanticsConfiguration.scrollChildCount], the corresponding semantics property. + final int? semanticChildCount; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + + @override + State> createState() => + _PagedValueGridViewState(); +} + +class _PagedValueGridViewState extends State> { + PagedValueNotifier get _controller => widget.controller; + + // Avoids duplicate requests on rebuilds. + bool _hasRequestedNextPage = false; + + @override + void initState() { + super.initState(); + _controller.doInitialLoad(); + } + + @override + void didUpdateWidget(covariant PagedValueGridView oldWidget) { + super.didUpdateWidget(oldWidget); + if (_controller != oldWidget.controller) { + // reset duplicate requests flag + _hasRequestedNextPage = false; + _controller.doInitialLoad(); + } + } + + @override + Widget build(BuildContext context) => PagedValueListenableBuilder( + valueListenable: _controller, + builder: (context, value, _) => value.when( + (items, nextPageKey, error) { + if (items.isEmpty) { + return widget.emptyBuilder(context); + } + + return GridView.builder( + scrollDirection: widget.scrollDirection, + reverse: widget.reverse, + controller: widget.scrollController, + primary: widget.primary, + physics: widget.physics, + shrinkWrap: widget.shrinkWrap, + padding: widget.padding, + addAutomaticKeepAlives: widget.addAutomaticKeepAlives, + addRepaintBoundaries: widget.addRepaintBoundaries, + addSemanticIndexes: widget.addSemanticIndexes, + cacheExtent: widget.cacheExtent, + semanticChildCount: widget.semanticChildCount, + dragStartBehavior: widget.dragStartBehavior, + keyboardDismissBehavior: widget.keyboardDismissBehavior, + restorationId: widget.restorationId, + clipBehavior: widget.clipBehavior, + itemCount: value.itemCount, + gridDelegate: widget.gridDelegate, + itemBuilder: (context, index) { + if (!_hasRequestedNextPage) { + final newPageRequestTriggerIndex = + items.length - widget.loadMoreTriggerIndex; + final isBuildingTriggerIndexItem = + index == newPageRequestTriggerIndex; + if (nextPageKey != null && isBuildingTriggerIndexItem) { + // Schedules the request for the end of this frame. + WidgetsBinding.instance?.addPostFrameCallback((_) async { + if (error == null) { + await _controller.loadMore(nextPageKey); + } + _hasRequestedNextPage = false; + }); + _hasRequestedNextPage = true; + } + } + + if (index == items.length) { + if (error != null) { + return widget.loadMoreErrorBuilder(context, error); + } + return widget.loadMoreIndicatorBuilder(context); + } + + return widget.itemBuilder(context, items, index); + }, + // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + // crossAxisCount: widget.crossAxisCount, + // ), + ); + }, + loading: () => widget.loadingBuilder(context), + error: (error) => widget.errorBuilder(context, error), + ), + ); +} diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index b5e61d7c..cddae515 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -12,8 +12,8 @@ export 'src/message_list_core.dart' hide MessageListCoreState; export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; export 'src/message_text_field_controller.dart'; -export 'src/paged_value_list_view.dart'; export 'src/paged_value_notifier.dart' show PagedValueListenableBuilder; +export 'src/paged_value_scroll_view.dart'; export 'src/stream_channel.dart'; export 'src/stream_channel_list_controller.dart'; export 'src/stream_channel_list_event_handler.dart'; From 381e1c06f590a87b953b519f9fe29123305c8b23 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 25 Apr 2022 17:04:10 +0530 Subject: [PATCH 155/201] chore(core): remove dead code Signed-off-by: xsahil03x --- .../lib/src/paged_value_scroll_view.dart | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart b/packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart index 3990dc5f..56037075 100644 --- a/packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart +++ b/packages/stream_chat_flutter_core/lib/src/paged_value_scroll_view.dart @@ -695,9 +695,6 @@ class _PagedValueGridViewState extends State> { return widget.itemBuilder(context, items, index); }, - // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - // crossAxisCount: widget.crossAxisCount, - // ), ); }, loading: () => widget.loadingBuilder(context), From b6bb3608e5c0325800d256ef2651a544fb6aeabf Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Tue, 26 Apr 2022 21:11:24 +0530 Subject: [PATCH 156/201] Migrated llc Lists to be nullable instead of being an empty array --- .../stream_chat/lib/src/client/channel.dart | 77 +++++++++++-------- .../stream_chat/lib/src/client/client.dart | 2 +- .../lib/src/core/models/attachment.dart | 3 +- .../lib/src/core/models/attachment.g.dart | 7 +- .../lib/src/core/models/channel_state.dart | 30 +++----- .../lib/src/core/models/channel_state.g.dart | 35 ++++----- .../lib/src/core/models/message.g.dart | 8 +- .../lib/src/db/chat_persistence_client.dart | 47 ++++++----- .../test/src/core/api/channel_api_test.dart | 10 +-- .../test/src/core/models/attachment_test.dart | 4 +- .../src/core/models/channel_state_test.dart | 10 ++- .../src/db/chat_persistence_client_test.dart | 9 ++- .../lib/src/attachment/giphy_attachment.dart | 2 +- .../lib/src/stream_channel.dart | 12 ++- .../example/lib/main.dart | 3 +- .../lib/src/dao/member_dao.dart | 14 +++- .../lib/src/dao/message_dao.dart | 8 +- .../lib/src/dao/pinned_message_dao.dart | 8 +- .../lib/src/dao/read_dao.dart | 8 +- .../lib/src/db/drift_chat_database.dart | 2 +- .../src/stream_chat_persistence_client.dart | 8 +- .../test/src/mapper/channel_mapper_test.dart | 8 +- .../stream_chat_persistence_client_test.dart | 16 ++-- 23 files changed, 178 insertions(+), 153 deletions(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index 995de15c..a1945883 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1259,7 +1259,9 @@ class Channel { if (preferOffline && cid != null) { final updatedState = await _client.chatPersistenceClient ?.getChannelStateByCid(cid!, messagePagination: messagesPagination); - if (updatedState != null && updatedState.messages.isNotEmpty) { + if (updatedState != null && + updatedState.messages != null && + updatedState.messages!.isNotEmpty) { if (this.state == null) { _initState(updatedState); } else { @@ -1570,7 +1572,7 @@ class ChannelClientState { void _checkExpiredAttachmentMessages(ChannelState channelState) async { final expiredAttachmentMessagesId = channelState.messages - .where((m) => + ?.where((m) => !_updatedMessagesIds.contains(m.id) && m.attachments.isNotEmpty && m.attachments.any((e) { @@ -1597,7 +1599,8 @@ class ChannelClientState { .map((e) => e.id) .toList(); - if (expiredAttachmentMessagesId.isNotEmpty) { + if (expiredAttachmentMessagesId != null && + expiredAttachmentMessagesId.isNotEmpty) { await _channel._initializedCompleter.future; _updatedMessagesIds.addAll(expiredAttachmentMessagesId); _channel.getMessagesById(expiredAttachmentMessagesId); @@ -1607,9 +1610,10 @@ class ChannelClientState { void _listenMemberAdded() { _subscriptions.add(_channel.on(EventType.memberAdded).listen((Event e) { final member = e.member; + final existingMembers = channelState.members ?? []; updateChannelState(channelState.copyWith( members: [ - ...channelState.members, + ...existingMembers, member!, ], )); @@ -1619,11 +1623,13 @@ class ChannelClientState { void _listenMemberRemoved() { _subscriptions.add(_channel.on(EventType.memberRemoved).listen((Event e) { final user = e.user; + final existingMembers = channelState.members ?? []; + final existingRead = channelState.read ?? []; updateChannelState(channelState.copyWith( - members: channelState.members + members: existingMembers .where((m) => m.userId != user!.id) .toList(growable: false), - read: channelState.read + read: existingRead .where((r) => r.user.id != user!.id) .toList(growable: false), )); @@ -1793,9 +1799,10 @@ class ChannelClientState { updateMessage(message); if (message.pinned) { + final _existingPinnedMessages = _channelState.pinnedMessages ?? []; _channelState = _channelState.copyWith( pinnedMessages: [ - ..._channelState.pinnedMessages, + ..._existingPinnedMessages, message, ], ); @@ -1931,7 +1938,7 @@ class ChannelClientState { ) .listen( (event) { - final readList = List.from(_channelState.read); + final readList = List.from(_channelState.read ?? []); final userReadIndex = read.indexWhere((r) => r.user.id == event.user!.id); @@ -1952,31 +1959,34 @@ class ChannelClientState { } /// Channel message list. - List get messages => _channelState.messages; + List get messages => _channelState.messages ?? []; /// Channel message list as a stream. Stream> get messagesStream => channelStateStream - .map((cs) => cs.messages) + .map((cs) => cs.messages ?? []) .distinct(const ListEquality().equals); /// Channel pinned message list. - List get pinnedMessages => _channelState.pinnedMessages; + List get pinnedMessages => + _channelState.pinnedMessages ?? []; /// Channel pinned message list as a stream. Stream> get pinnedMessagesStream => channelStateStream - .map((cs) => cs.pinnedMessages) + .map((cs) => cs.pinnedMessages ?? []) .distinct(const ListEquality().equals); /// Get channel last message. Message? get lastMessage => - _channelState.messages.isNotEmpty ? _channelState.messages.last : null; + _channelState.messages != null && _channelState.messages!.isNotEmpty + ? _channelState.messages!.last + : null; /// Get channel last message. Stream get lastMessageStream => messagesStream.map((event) => event.isNotEmpty ? event.last : null); /// Channel members list. - List get members => _channelState.members + List get members => (_channelState.members ?? []) .map((e) => e.copyWith(user: _channel.client.state.users[e.user!.id])) .toList(); @@ -1997,7 +2007,7 @@ class ChannelClientState { channelStateStream.map((cs) => cs.watcherCount); /// Channel watchers list. - List get watchers => _channelState.watchers + List get watchers => (_channelState.watchers ?? []) .map((e) => _channel.client.state.users[e.id] ?? e) .toList(); @@ -2018,10 +2028,11 @@ class ChannelClientState { String? get currentUserRole => currentUserMember?.role; /// Channel read list. - List get read => _channelState.read; + List get read => _channelState.read ?? []; /// Channel read list as a stream. - Stream> get readStream => channelStateStream.map((cs) => cs.read); + Stream> get readStream => + channelStateStream.map((cs) => cs.read ?? []); bool _isCurrentUserRead(Read read) => read.user.id == _channel._client.state.currentUser!.id; @@ -2042,7 +2053,7 @@ class ChannelClientState { /// Setter for unread count. set unreadCount(int count) { - final reads = [..._channelState.read]; + final reads = [...read]; final currentUserReadIndex = reads.indexWhere(_isCurrentUserRead); if (currentUserReadIndex < 0) return; @@ -2097,31 +2108,37 @@ class ChannelClientState { /// Update channelState with updated information. void updateChannelState(ChannelState updatedState) { + final _existingStateMessages = _channelState.messages ?? []; + final _updatedStateMessages = updatedState.messages ?? []; final newMessages = [ - ...updatedState.messages, - ..._channelState.messages + ..._updatedStateMessages, + ..._existingStateMessages .where((m) => - !updatedState.messages.any((newMessage) => newMessage.id == m.id)) + !_updatedStateMessages.any((newMessage) => newMessage.id == m.id)) .toList(), ]..sort(_sortByCreatedAt); + final _existingStateWatchers = _channelState.watchers ?? []; + final _updatedStateWatchers = updatedState.watchers ?? []; final newWatchers = [ - ...updatedState.watchers, - ..._channelState.watchers + ..._updatedStateWatchers, + ..._existingStateWatchers .where((w) => - !updatedState.watchers.any((newWatcher) => newWatcher.id == w.id)) + !_updatedStateWatchers.any((newWatcher) => newWatcher.id == w.id)) .toList(), ]; final newMembers = [ - ...updatedState.members, + ...updatedState.members ?? [], ]; + final _existingStateRead = _channelState.read ?? []; + final _updatedStateRead = updatedState.read ?? []; final newReads = [ - ...updatedState.read, - ..._channelState.read + ..._updatedStateRead, + ..._existingStateRead .where((r) => - !updatedState.read.any((newRead) => newRead.user.id == r.user.id)) + !_updatedStateRead.any((newRead) => newRead.user.id == r.user.id)) .toList(), ]; @@ -2273,9 +2290,9 @@ class ChannelClientState { _pinnedMessagesTimer = Timer.periodic(const Duration(seconds: 30), (_) { final now = DateTime.now(); var expiredMessages = channelState.pinnedMessages - .where((m) => m.pinExpires?.isBefore(now) == true) + ?.where((m) => m.pinExpires?.isBefore(now) == true) .toList(); - if (expiredMessages.isNotEmpty) { + if (expiredMessages != null && expiredMessages.isNotEmpty) { expiredMessages = expiredMessages .map((m) => m.copyWith( pinExpires: null, diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 0fca0d2c..6e9ecc33 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -623,7 +623,7 @@ class StreamChatClient { final channels = res.channels; final users = channels - .expand((it) => it.members) + .expand((it) => it.members ?? []) .map((it) => it.user) .toList(growable: false); diff --git a/packages/stream_chat/lib/src/core/models/attachment.dart b/packages/stream_chat/lib/src/core/models/attachment.dart index 325dbe11..72ff5525 100644 --- a/packages/stream_chat/lib/src/core/models/attachment.dart +++ b/packages/stream_chat/lib/src/core/models/attachment.dart @@ -124,8 +124,7 @@ class Attachment extends Equatable { final String? assetUrl; /// Actions from a command - @JsonKey(defaultValue: []) - final List actions; + final List? actions; final Uri? localUri; diff --git a/packages/stream_chat/lib/src/core/models/attachment.g.dart b/packages/stream_chat/lib/src/core/models/attachment.g.dart index 381eb99c..2ebe8c53 100644 --- a/packages/stream_chat/lib/src/core/models/attachment.g.dart +++ b/packages/stream_chat/lib/src/core/models/attachment.g.dart @@ -26,9 +26,8 @@ Attachment _$AttachmentFromJson(Map json) => Attachment( authorIcon: json['author_icon'] as String?, assetUrl: json['asset_url'] as String?, actions: (json['actions'] as List?) - ?.map((e) => Action.fromJson(e as Map)) - .toList() ?? - [], + ?.map((e) => Action.fromJson(e as Map)) + .toList(), extraData: json['extra_data'] as Map? ?? const {}, file: json['file'] == null ? null @@ -64,7 +63,7 @@ Map _$AttachmentToJson(Attachment instance) { writeNotNull('author_link', instance.authorLink); writeNotNull('author_icon', instance.authorIcon); writeNotNull('asset_url', instance.assetUrl); - val['actions'] = instance.actions.map((e) => e.toJson()).toList(); + writeNotNull('actions', instance.actions?.map((e) => e.toJson()).toList()); writeNotNull('file', instance.file?.toJson()); val['upload_state'] = instance.uploadState.toJson(); val['extra_data'] = instance.extraData; diff --git a/packages/stream_chat/lib/src/core/models/channel_state.dart b/packages/stream_chat/lib/src/core/models/channel_state.dart index 17439dc0..3ba3c5f8 100644 --- a/packages/stream_chat/lib/src/core/models/channel_state.dart +++ b/packages/stream_chat/lib/src/core/models/channel_state.dart @@ -7,42 +7,40 @@ import 'package:stream_chat/src/core/models/user.dart'; part 'channel_state.g.dart'; -const _emptyPinnedMessages = []; - /// The class that contains the information about a channel @JsonSerializable() class ChannelState { /// Constructor used for json serialization ChannelState({ this.channel, - this.messages = const [], - this.members = const [], - this.pinnedMessages = _emptyPinnedMessages, + this.messages, + this.members, + this.pinnedMessages, this.watcherCount, - this.watchers = const [], - this.read = const [], + this.watchers, + this.read, }); /// The channel to which this state belongs final ChannelModel? channel; /// A paginated list of channel messages - final List messages; + final List? messages; /// A paginated list of channel members - final List members; + final List? members; /// A paginated list of pinned messages - final List pinnedMessages; + final List? pinnedMessages; /// The count of users watching the channel final int? watcherCount; /// A paginated list of users watching the channel - final List watchers; + final List? watchers; /// The list of channel reads - final List read; + final List? read; /// Create a new instance from a json static ChannelState fromJson(Map json) => @@ -56,7 +54,7 @@ class ChannelState { ChannelModel? channel, List? messages, List? members, - List pinnedMessages = _emptyPinnedMessages, + List? pinnedMessages, int? watcherCount, List? watchers, List? read, @@ -65,11 +63,7 @@ class ChannelState { channel: channel ?? this.channel, messages: messages ?? this.messages, members: members ?? this.members, - // Hack to avoid using the default value in case nothing is provided. - // FIXME: Use non-nullable by default instead of empty list. - pinnedMessages: pinnedMessages == _emptyPinnedMessages - ? this.pinnedMessages - : pinnedMessages, + pinnedMessages: pinnedMessages ?? this.pinnedMessages, watcherCount: watcherCount ?? this.watcherCount, watchers: watchers ?? this.watchers, read: read ?? this.read, diff --git a/packages/stream_chat/lib/src/core/models/channel_state.g.dart b/packages/stream_chat/lib/src/core/models/channel_state.g.dart index 5100932c..afec76c4 100644 --- a/packages/stream_chat/lib/src/core/models/channel_state.g.dart +++ b/packages/stream_chat/lib/src/core/models/channel_state.g.dart @@ -11,36 +11,31 @@ ChannelState _$ChannelStateFromJson(Map json) => ChannelState( ? null : ChannelModel.fromJson(json['channel'] as Map), messages: (json['messages'] as List?) - ?.map((e) => Message.fromJson(e as Map)) - .toList() ?? - const [], + ?.map((e) => Message.fromJson(e as Map)) + .toList(), members: (json['members'] as List?) - ?.map((e) => Member.fromJson(e as Map)) - .toList() ?? - const [], + ?.map((e) => Member.fromJson(e as Map)) + .toList(), pinnedMessages: (json['pinned_messages'] as List?) - ?.map((e) => Message.fromJson(e as Map)) - .toList() ?? - _emptyPinnedMessages, + ?.map((e) => Message.fromJson(e as Map)) + .toList(), watcherCount: json['watcher_count'] as int?, watchers: (json['watchers'] as List?) - ?.map((e) => User.fromJson(e as Map)) - .toList() ?? - const [], + ?.map((e) => User.fromJson(e as Map)) + .toList(), read: (json['read'] as List?) - ?.map((e) => Read.fromJson(e as Map)) - .toList() ?? - const [], + ?.map((e) => Read.fromJson(e as Map)) + .toList(), ); Map _$ChannelStateToJson(ChannelState instance) => { 'channel': instance.channel?.toJson(), - 'messages': instance.messages.map((e) => e.toJson()).toList(), - 'members': instance.members.map((e) => e.toJson()).toList(), + 'messages': instance.messages?.map((e) => e.toJson()).toList(), + 'members': instance.members?.map((e) => e.toJson()).toList(), 'pinned_messages': - instance.pinnedMessages.map((e) => e.toJson()).toList(), + instance.pinnedMessages?.map((e) => e.toJson()).toList(), 'watcher_count': instance.watcherCount, - 'watchers': instance.watchers.map((e) => e.toJson()).toList(), - 'read': instance.read.map((e) => e.toJson()).toList(), + 'watchers': instance.watchers?.map((e) => e.toJson()).toList(), + 'read': instance.read?.map((e) => e.toJson()).toList(), }; diff --git a/packages/stream_chat/lib/src/core/models/message.g.dart b/packages/stream_chat/lib/src/core/models/message.g.dart index b3b58c58..e2ff89b4 100644 --- a/packages/stream_chat/lib/src/core/models/message.g.dart +++ b/packages/stream_chat/lib/src/core/models/message.g.dart @@ -49,6 +49,9 @@ Message _$MessageFromJson(Map json) => Message( updatedAt: json['updated_at'] == null ? null : DateTime.parse(json['updated_at'] as String), + deletedAt: json['deleted_at'] == null + ? null + : DateTime.parse(json['deleted_at'] as String), user: json['user'] == null ? null : User.fromJson(json['user'] as Map), @@ -63,9 +66,6 @@ Message _$MessageFromJson(Map json) => Message( ? null : User.fromJson(json['pinned_by'] as Map), extraData: json['extra_data'] as Map? ?? const {}, - deletedAt: json['deleted_at'] == null - ? null - : DateTime.parse(json['deleted_at'] as String), i18n: (json['i18n'] as Map?)?.map( (k, e) => MapEntry(k, e as String), ), @@ -99,6 +99,7 @@ Map _$MessageToJson(Message instance) { val['silent'] = instance.silent; writeNotNull('shadowed', readonly(instance.shadowed)); writeNotNull('command', readonly(instance.command)); + writeNotNull('deleted_at', readonly(instance.deletedAt)); writeNotNull('created_at', readonly(instance.createdAt)); writeNotNull('updated_at', readonly(instance.updatedAt)); writeNotNull('user', readonly(instance.user)); @@ -107,7 +108,6 @@ Map _$MessageToJson(Message instance) { val['pin_expires'] = instance.pinExpires?.toIso8601String(); val['pinned_by'] = readonly(instance.pinnedBy); val['extra_data'] = instance.extraData; - writeNotNull('deleted_at', readonly(instance.deletedAt)); writeNotNull('i18n', instance.i18n); return val; } diff --git a/packages/stream_chat/lib/src/db/chat_persistence_client.dart b/packages/stream_chat/lib/src/db/chat_persistence_client.dart index 2dfb7cd7..b1769807 100644 --- a/packages/stream_chat/lib/src/db/chat_persistence_client.dart +++ b/packages/stream_chat/lib/src/db/chat_persistence_client.dart @@ -44,10 +44,10 @@ abstract class ChatPersistenceClient { Future getChannelByCid(String cid); /// Get stored channel [Member]s by providing channel [cid] - Future> getMembersByCid(String cid); + Future?> getMembersByCid(String cid); /// Get stored channel [Read]s by providing channel [cid] - Future> getReadsByCid(String cid); + Future?> getReadsByCid(String cid); /// Get stored [Message]s by providing channel [cid] /// @@ -78,15 +78,11 @@ abstract class ChatPersistenceClient { getPinnedMessagesByCid(cid, messagePagination: pinnedMessagePagination), ]); return ChannelState( - // ignore: cast_nullable_to_non_nullable - members: data[0] as List, - // ignore: cast_nullable_to_non_nullable - read: data[1] as List, + members: data[0] as List?, + read: data[1] as List?, channel: data[2] as ChannelModel?, - // ignore: cast_nullable_to_non_nullable - messages: data[3] as List, - // ignore: cast_nullable_to_non_nullable - pinnedMessages: data[4] as List, + messages: data[3] as List?, + pinnedMessages: data[4] as List?, ); } @@ -146,7 +142,7 @@ abstract class ChatPersistenceClient { bulkUpdateMessages({cid: messages}); /// Bulk updates the message data of multiple channels. - Future bulkUpdateMessages(Map> messages); + Future bulkUpdateMessages(Map?> messages); /// Updates the pinned message data of a particular channel [cid] with /// the new [messages] data @@ -154,7 +150,7 @@ abstract class ChatPersistenceClient { bulkUpdatePinnedMessages({cid: messages}); /// Bulk updates the message data of multiple channels. - Future bulkUpdatePinnedMessages(Map> messages); + Future bulkUpdatePinnedMessages(Map?> messages); /// Returns all the threads by parent message of a particular channel by /// providing channel [cid] @@ -169,7 +165,7 @@ abstract class ChatPersistenceClient { bulkUpdateMembers({cid: members}); /// Bulk updates the members data of multiple channels. - Future bulkUpdateMembers(Map> members); + Future bulkUpdateMembers(Map?> members); /// Updates the read data of a particular channel [cid] with /// the new [reads] data @@ -177,7 +173,7 @@ abstract class ChatPersistenceClient { bulkUpdateReads({cid: reads}); /// Bulk updates the read data of multiple channels. - Future bulkUpdateReads(Map> reads); + Future bulkUpdateReads(Map?> reads); /// Updates the users data with the new [users] data Future updateUsers(List users); @@ -230,10 +226,10 @@ abstract class ChatPersistenceClient { final membersToDelete = []; final channels = []; - final channelWithMessages = >{}; - final channelWithPinnedMessages = >{}; - final channelWithReads = >{}; - final channelWithMembers = >{}; + final channelWithMessages = ?>{}; + final channelWithPinnedMessages = ?>{}; + final channelWithReads = ?>{}; + final channelWithMembers = ?>{}; final users = []; final reactions = []; @@ -252,8 +248,9 @@ abstract class ChatPersistenceClient { // Preparing deletion data membersToDelete.add(cid); - reactionsToDelete.addAll(state.messages.map((it) => it.id)); - pinnedReactionsToDelete.addAll(state.pinnedMessages.map((it) => it.id)); + reactionsToDelete.addAll(state.messages?.map((it) => it.id) ?? []); + pinnedReactionsToDelete + .addAll(state.pinnedMessages?.map((it) => it.id) ?? []); // preparing addition data channelWithReads[cid] = reads; @@ -261,14 +258,14 @@ abstract class ChatPersistenceClient { channelWithMessages[cid] = messages; channelWithPinnedMessages[cid] = pinnedMessages; - reactions.addAll(messages.expand(_expandReactions)); - pinnedReactions.addAll(pinnedMessages.expand(_expandReactions)); + reactions.addAll(messages?.expand(_expandReactions) ?? []); + pinnedReactions.addAll(pinnedMessages?.expand(_expandReactions) ?? []); users.addAll([ channel.createdBy, - ...messages.map((it) => it.user), - ...reads.map((it) => it.user), - ...members.map((it) => it.user), + ...messages?.map((it) => it.user) ?? [], + ...reads?.map((it) => it.user) ?? [], + ...members?.map((it) => it.user) ?? [], ...reactions.map((it) => it.user), ...pinnedReactions.map((it) => it.user), ].withNullifyer); diff --git a/packages/stream_chat/test/src/core/api/channel_api_test.dart b/packages/stream_chat/test/src/core/api/channel_api_test.dart index a7856c92..bd0403de 100644 --- a/packages/stream_chat/test/src/core/api/channel_api_test.dart +++ b/packages/stream_chat/test/src/core/api/channel_api_test.dart @@ -105,11 +105,11 @@ void main() { ); expect(res, isNotNull); - expect(res.messages.length, channelState.messages.length); - expect(res.pinnedMessages.length, channelState.pinnedMessages.length); - expect(res.members.length, channelState.members.length); - expect(res.read.length, channelState.read.length); - expect(res.watchers.length, channelState.watchers.length); + expect(res.messages?.length, channelState.messages?.length); + expect(res.pinnedMessages?.length, channelState.pinnedMessages?.length); + expect(res.members?.length, channelState.members?.length); + expect(res.read?.length, channelState.read?.length); + expect(res.watchers?.length, channelState.watchers?.length); expect(res.watcherCount, channelState.watcherCount); verify(() => client.post(path, data: any(named: 'data'))).called(1); diff --git a/packages/stream_chat/test/src/core/models/attachment_test.dart b/packages/stream_chat/test/src/core/models/attachment_test.dart index 4e08f7f2..edcc0da6 100644 --- a/packages/stream_chat/test/src/core/models/attachment_test.dart +++ b/packages/stream_chat/test/src/core/models/attachment_test.dart @@ -19,8 +19,10 @@ void main() { attachment.thumbUrl, 'https://media0.giphy.com/media/3o7TKnCdBx5cMg0qti/giphy.gif', ); + expect(attachment.actions, isNotNull); + expect(attachment.actions, isNotEmpty); expect(attachment.actions, hasLength(3)); - expect(attachment.actions[0], isA()); + expect(attachment.actions![0], isA()); }); test('should serialize to json correctly', () { diff --git a/packages/stream_chat/test/src/core/models/channel_state_test.dart b/packages/stream_chat/test/src/core/models/channel_state_test.dart index 58f810a4..65a589b8 100644 --- a/packages/stream_chat/test/src/core/models/channel_state_test.dart +++ b/packages/stream_chat/test/src/core/models/channel_state_test.dart @@ -30,14 +30,16 @@ void main() { channelState.channel?.extraData['image'], 'https://cdn.chrisshort.net/testing-certificate-chains-in-go/GOPHER_MIC_DROP.png', ); + expect(channelState.messages, isNotNull); + expect(channelState.messages, isNotEmpty); expect(channelState.messages, hasLength(25)); - expect(channelState.messages[0], isA()); - expect(channelState.messages[0], isNotNull); + expect(channelState.messages![0], isA()); + expect(channelState.messages![0], isNotNull); expect( - channelState.messages[0].createdAt, + channelState.messages![0].createdAt, DateTime.parse('2020-01-29T03:23:02.843948Z'), ); - expect(channelState.messages[0].user, isA()); + expect(channelState.messages![0].user, isA()); expect(channelState.watcherCount, 5); }); diff --git a/packages/stream_chat/test/src/db/chat_persistence_client_test.dart b/packages/stream_chat/test/src/db/chat_persistence_client_test.dart index 7c49cc7d..121d279d 100644 --- a/packages/stream_chat/test/src/db/chat_persistence_client_test.dart +++ b/packages/stream_chat/test/src/db/chat_persistence_client_test.dart @@ -117,19 +117,20 @@ class TestPersistenceClient extends ChatPersistenceClient { Future updateUsers(List users) => Future.value(); @override - Future bulkUpdateMembers(Map> members) => + Future bulkUpdateMembers(Map?> members) => Future.value(); @override - Future bulkUpdateMessages(Map> messages) => + Future bulkUpdateMessages(Map?> messages) => Future.value(); @override - Future bulkUpdatePinnedMessages(Map> messages) => + Future bulkUpdatePinnedMessages(Map?> messages) => Future.value(); @override - Future bulkUpdateReads(Map> reads) => Future.value(); + Future bulkUpdateReads(Map?> reads) => + Future.value(); } void main() { diff --git a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart index 6381c345..dc354432 100644 --- a/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart +++ b/packages/stream_chat_flutter/lib/src/attachment/giphy_attachment.dart @@ -45,7 +45,7 @@ class StreamGiphyAttachment extends StreamAttachmentWidget { if (imageUrl == null) { return const AttachmentError(); } - if (attachment.actions.isNotEmpty) { + if (attachment.actions != null && attachment.actions!.isNotEmpty) { return _buildSendingAttachment(context, imageUrl); } return _buildSentAttachment(context, imageUrl); diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel.dart index bcfb613e..47822791 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel.dart @@ -106,7 +106,9 @@ class StreamChannelState extends State { limit: limit, preferOffline: preferOffline, ); - if (state.messages.isEmpty || state.messages.length < limit) { + if (state.messages == null || + state.messages!.isEmpty || + state.messages!.length < limit) { _topPaginationEnded = true; } _queryTopMessagesController.safeAdd(false); @@ -137,7 +139,9 @@ class StreamChannelState extends State { limit: limit, preferOffline: preferOffline, ); - if (state.messages.isEmpty || state.messages.length < limit) { + if (state.messages == null || + state.messages!.isEmpty || + state.messages!.length < limit) { _bottomPaginationEnded = true; } _queryBottomMessagesController.safeAdd(false); @@ -299,7 +303,9 @@ class StreamChannelState extends State { ), preferOffline: preferOffline, ); - if (state.messages.isEmpty || state.messages.length < limit) { + if (state.messages == null || + state.messages!.isEmpty || + state.messages!.length < limit) { channel.state?.isUpToDate = true; } return state; diff --git a/packages/stream_chat_persistence/example/lib/main.dart b/packages/stream_chat_persistence/example/lib/main.dart index d420b7f5..049868fa 100644 --- a/packages/stream_chat_persistence/example/lib/main.dart +++ b/packages/stream_chat_persistence/example/lib/main.dart @@ -98,8 +98,9 @@ class HomeScreen extends StatelessWidget { AsyncSnapshot snapshot, ) { if (snapshot.hasData && snapshot.data != null) { + final _messages = snapshot.data!.messages ?? []; return MessageView( - messages: snapshot.data!.messages.reversed.toList(), + messages: _messages.reversed.toList(), channel: channel, ); } else if (snapshot.hasError) { diff --git a/packages/stream_chat_persistence/lib/src/dao/member_dao.dart b/packages/stream_chat_persistence/lib/src/dao/member_dao.dart index 3a604ca1..9f81879c 100644 --- a/packages/stream_chat_persistence/lib/src/dao/member_dao.dart +++ b/packages/stream_chat_persistence/lib/src/dao/member_dao.dart @@ -34,14 +34,20 @@ class MemberDao extends DatabaseAccessor bulkUpdateMembers({cid: memberList}); /// Bulk updates the members data of multiple channels - Future bulkUpdateMembers(Map> channelWithMembers) { + Future bulkUpdateMembers( + Map?> channelWithMembers, + ) { final entities = channelWithMembers.entries - .map((entry) => entry.value.map( + .map((entry) => + (entry.value?.map( (member) => member.toEntity(cid: entry.key), - )) + )) ?? + []) .expand((it) => it) .toList(growable: false); - return batch((batch) => batch.insertAllOnConflictUpdate(members, entities)); + return batch( + (batch) => batch.insertAllOnConflictUpdate(members, entities), + ); } /// Deletes all the members whose [Members.channelCid] is present in [cids] diff --git a/packages/stream_chat_persistence/lib/src/dao/message_dao.dart b/packages/stream_chat_persistence/lib/src/dao/message_dao.dart index 31ca74ee..ccaefced 100644 --- a/packages/stream_chat_persistence/lib/src/dao/message_dao.dart +++ b/packages/stream_chat_persistence/lib/src/dao/message_dao.dart @@ -183,12 +183,14 @@ class MessageDao extends DatabaseAccessor /// Bulk updates the message data of multiple channels Future bulkUpdateMessages( - Map> channelWithMessages, + Map?> channelWithMessages, ) { final entities = channelWithMessages.entries - .map((entry) => entry.value.map( + .map((entry) => + entry.value?.map( (message) => message.toEntity(cid: entry.key), - )) + ) ?? + []) .expand((it) => it) .toList(growable: false); return batch( diff --git a/packages/stream_chat_persistence/lib/src/dao/pinned_message_dao.dart b/packages/stream_chat_persistence/lib/src/dao/pinned_message_dao.dart index 8712dea5..8be2399b 100644 --- a/packages/stream_chat_persistence/lib/src/dao/pinned_message_dao.dart +++ b/packages/stream_chat_persistence/lib/src/dao/pinned_message_dao.dart @@ -183,12 +183,14 @@ class PinnedMessageDao extends DatabaseAccessor /// Bulk updates the message data of multiple channels Future bulkUpdateMessages( - Map> channelWithMessages, + Map?> channelWithMessages, ) { final entities = channelWithMessages.entries - .map((entry) => entry.value.map( + .map((entry) => + entry.value?.map( (message) => message.toPinnedEntity(cid: entry.key), - )) + ) ?? + []) .expand((it) => it) .toList(growable: false); return batch( diff --git a/packages/stream_chat_persistence/lib/src/dao/read_dao.dart b/packages/stream_chat_persistence/lib/src/dao/read_dao.dart index 0a578d69..9e46f818 100644 --- a/packages/stream_chat_persistence/lib/src/dao/read_dao.dart +++ b/packages/stream_chat_persistence/lib/src/dao/read_dao.dart @@ -33,11 +33,13 @@ class ReadDao extends DatabaseAccessor with _$ReadDaoMixin { bulkUpdateReads({cid: readList}); /// Bulk updates the reads data of multiple channels - Future bulkUpdateReads(Map> channelWithReads) { + Future bulkUpdateReads(Map?> channelWithReads) { final entities = channelWithReads.entries - .map((entry) => entry.value.map( + .map((entry) => + entry.value?.map( (read) => read.toEntity(cid: entry.key), - )) + ) ?? + []) .expand((it) => it) .toList(growable: false); return batch((batch) => batch.insertAllOnConflictUpdate(reads, entities)); diff --git a/packages/stream_chat_persistence/lib/src/db/drift_chat_database.dart b/packages/stream_chat_persistence/lib/src/db/drift_chat_database.dart index 8561eed4..9b73312d 100644 --- a/packages/stream_chat_persistence/lib/src/db/drift_chat_database.dart +++ b/packages/stream_chat_persistence/lib/src/db/drift_chat_database.dart @@ -56,7 +56,7 @@ class DriftChatDatabase extends _$DriftChatDatabase { // you should bump this number whenever you change or add a table definition. @override - int get schemaVersion => 6; + int get schemaVersion => 7; @override MigrationStrategy get migration => MigrationStrategy( diff --git a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart index 2dc61f18..5b180e30 100644 --- a/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart +++ b/packages/stream_chat_persistence/lib/src/stream_chat_persistence_client.dart @@ -295,21 +295,21 @@ class StreamChatPersistenceClient extends ChatPersistenceClient { } @override - Future bulkUpdateMembers(Map> members) { + Future bulkUpdateMembers(Map?> members) { assert(_debugIsConnected, ''); _logger.info('bulkUpdateMembers'); return _readProtected(() => db!.memberDao.bulkUpdateMembers(members)); } @override - Future bulkUpdateMessages(Map> messages) { + Future bulkUpdateMessages(Map?> messages) { assert(_debugIsConnected, ''); _logger.info('bulkUpdateMessages'); return _readProtected(() => db!.messageDao.bulkUpdateMessages(messages)); } @override - Future bulkUpdatePinnedMessages(Map> messages) { + Future bulkUpdatePinnedMessages(Map?> messages) { assert(_debugIsConnected, ''); _logger.info('bulkUpdatePinnedMessages'); return _readProtected( @@ -334,7 +334,7 @@ class StreamChatPersistenceClient extends ChatPersistenceClient { } @override - Future bulkUpdateReads(Map> reads) { + Future bulkUpdateReads(Map?> reads) { assert(_debugIsConnected, ''); _logger.info('bulkUpdateReads'); return _readProtected(() => db!.readDao.bulkUpdateReads(reads)); diff --git a/packages/stream_chat_persistence/test/src/mapper/channel_mapper_test.dart b/packages/stream_chat_persistence/test/src/mapper/channel_mapper_test.dart index e9718af9..d89687d3 100644 --- a/packages/stream_chat_persistence/test/src/mapper/channel_mapper_test.dart +++ b/packages/stream_chat_persistence/test/src/mapper/channel_mapper_test.dart @@ -61,10 +61,10 @@ void main() { ); expect(channelState, isA()); - expect(channelState.members.length, members.length); - expect(channelState.read.length, reads.length); - expect(channelState.messages.length, messages.length); - expect(channelState.pinnedMessages.length, messages.length); + expect(channelState.members?.length, members.length); + expect(channelState.read?.length, reads.length); + expect(channelState.messages?.length, messages.length); + expect(channelState.pinnedMessages?.length, messages.length); final channelModel = channelState.channel!; expect(channelModel.id, entity.id); diff --git a/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart b/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart index 4900aab2..8d7ab8be 100644 --- a/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart +++ b/packages/stream_chat_persistence/test/stream_chat_persistence_client_test.dart @@ -219,10 +219,10 @@ void main() { .thenAnswer((_) async => messages); final fetchedChannelState = await client.getChannelStateByCid(cid); - expect(fetchedChannelState.messages.length, messages.length); - expect(fetchedChannelState.pinnedMessages.length, messages.length); - expect(fetchedChannelState.members.length, members.length); - expect(fetchedChannelState.read.length, reads.length); + expect(fetchedChannelState.messages?.length, messages.length); + expect(fetchedChannelState.pinnedMessages?.length, messages.length); + expect(fetchedChannelState.members?.length, members.length); + expect(fetchedChannelState.read?.length, reads.length); expect(fetchedChannelState.channel!.cid, channel.cid); verify(() => mockDatabase.memberDao.getMembersByCid(cid)).called(1); @@ -277,10 +277,10 @@ void main() { for (var i = 0; i < fetchedChannelStates.length; i++) { final original = channelStates[i]; final fetched = fetchedChannelStates[i]; - expect(fetched.members.length, original.members.length); - expect(fetched.messages.length, original.messages.length); - expect(fetched.pinnedMessages.length, original.pinnedMessages.length); - expect(fetched.read.length, original.read.length); + expect(fetched.members?.length, original.members?.length); + expect(fetched.messages?.length, original.messages?.length); + expect(fetched.pinnedMessages?.length, original.pinnedMessages?.length); + expect(fetched.read?.length, original.read?.length); expect(fetched.channel!.cid, original.channel!.cid); } From 38ace99788c4aad3b8e0a66146caa354f6423782 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 27 Apr 2022 11:09:46 +0200 Subject: [PATCH 157/201] format --- .../stream_message_search_list_view.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart index 0b23c331..aef76b10 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart @@ -286,7 +286,6 @@ class StreamMessageSearchListView extends StatelessWidget { /// Defaults to [Clip.hardEdge]. final Clip clipBehavior; - @override Widget build(BuildContext context) => PagedValueListView( From a3a23feb3e44c7e0e3fa18f57c768ddd2cfbf3b7 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 11:15:38 +0200 Subject: [PATCH 158/201] versioning docs --- .../flutter-docusaurus-dontent-docs.plugin.js | 19 + .../assets/authentication_demo_app.jpg | Bin 0 -> 29335 bytes .../Flutter/assets/channel_header.png | Bin 0 -> 31547 bytes .../assets/channel_header_custom_title.png | Bin 0 -> 35151 bytes .../Flutter/assets/channel_list_header.png | Bin 0 -> 27067 bytes .../channel_list_header_custom_subtitle.png | Bin 0 -> 36495 bytes .../Flutter/assets/channel_list_view.png | Bin 0 -> 1140947 bytes .../Flutter/assets/channel_preview.png | Bin 0 -> 897000 bytes .../Flutter/assets/chat_basics.png | Bin 0 -> 63987 bytes ..._page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png | Bin 0 -> 159029 bytes .../assets/dashboard_firebase_enable.jpeg | Bin 0 -> 10753 bytes .../assets/dashboard_firebase_key.jpeg | Bin 0 -> 13315 bytes .../assets/dashboard_save_changes.jpeg | Bin 0 -> 3971 bytes .../Flutter/assets/end_to_end_encryption.png | Bin 0 -> 130649 bytes .../firebase_authentication_dashboard.jpg | Bin 0 -> 54976 bytes ...oggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png | Bin 0 -> 110625 bytes .../assets/firebase_project_settings.jpeg | Bin 0 -> 9407 bytes .../Flutter/assets/hashtag_example.jpg | Bin 0 -> 10727 bytes .../Flutter/assets/live_stream_1.jpg | Bin 0 -> 26070 bytes .../Flutter/assets/live_stream_2.jpg | Bin 0 -> 30178 bytes .../Flutter/assets/localization_support.jpg | Bin 0 -> 88489 bytes .../assets/location_sharing_example.jpg | Bin 0 -> 25629 bytes .../location_sharing_example_message.jpg | Bin 0 -> 34932 bytes ...tion_sharing_example_message_thumbnail.jpg | Bin 0 -> 12822 bytes .../Flutter/assets/message_actions.jpg | Bin 0 -> 60906 bytes .../Flutter/assets/message_input.png | Bin 0 -> 18904 bytes .../assets/message_input_change_position.png | Bin 0 -> 18303 bytes .../assets/message_input_quoted_message.png | Bin 0 -> 45822 bytes .../Flutter/assets/message_list_view.png | Bin 0 -> 389577 bytes .../Flutter/assets/message_list_view_pin.png | Bin 0 -> 470429 bytes .../assets/message_list_view_threads.png | Bin 0 -> 25365 bytes .../assets/message_reaction_theming.png | Bin 0 -> 2660 bytes .../Flutter/assets/message_rounded_avatar.png | Bin 0 -> 3445 bytes .../assets/message_search_list_view.png | Bin 0 -> 247832 bytes .../Flutter/assets/message_styles.png | Bin 0 -> 7728 bytes .../Flutter/assets/message_theming.png | Bin 0 -> 15746 bytes .../Flutter/assets/message_widget_actions.png | Bin 0 -> 37574 bytes .../Flutter/assets/sdk_title.png | Bin 0 -> 577110 bytes .../Flutter/assets/server_key.png | Bin 0 -> 13442 bytes .../assets/stream_chat_user_database.jpg | Bin 0 -> 55473 bytes .../Flutter/assets/swipe_channel.png | Bin 0 -> 17035 bytes .../Flutter/assets/user_list_view.png | Bin 0 -> 264835 bytes .../Flutter/assets/using_theme.jpg | Bin 0 -> 14067 bytes .../Flutter/basics/_category_.json | 4 + .../Flutter/basics/choose_package.mdx | 55 +++ .../Flutter/basics/introduction.mdx | 77 +++ .../Flutter/basics/versioning_policy.mdx | 20 + .../Flutter/guides/_category_.json | 4 + .../adding_chat_to_video_livestreams.mdx | 93 ++++ .../guides/adding_custom_attachments.mdx | 264 +++++++++++ .../guides/adding_local_data_persistence.mdx | 76 +++ .../Flutter/guides/adding_localization.mdx | 191 ++++++++ .../guides/adding_push_notifications.mdx | 263 ++++++++++ .../guides/adding_push_notifications_v2.mdx | 301 ++++++++++++ .../guides/customize_message_actions.mdx | 82 ++++ .../guides/customize_message_widget.mdx | 182 +++++++ .../guides/customize_text_messages.mdx | 158 ++++++ .../guides/end_to_end_chat_encryption.mdx | 258 ++++++++++ .../Flutter/guides/migration_guide_2_0.mdx | 298 ++++++++++++ .../Flutter/guides/understanding_filters.mdx | 194 ++++++++ ...er_token_generation_with_firebase_auth.mdx | 448 ++++++++++++++++++ .../stream_chat_flutter/_category_.json | 4 + .../stream_chat_flutter/channel_header.mdx | 84 ++++ .../channel_list_header.mdx | 88 ++++ .../stream_chat_flutter/channel_list_view.mdx | 111 +++++ .../stream_chat_flutter/introduction.mdx | 18 + .../stream_chat_flutter/message_input.mdx | 170 +++++++ .../stream_chat_flutter/message_list_view.mdx | 115 +++++ .../message_search_list_view.mdx | 62 +++ .../stream_chat_flutter/message_widget.mdx | 98 ++++ .../Flutter/stream_chat_flutter/setup.mdx | 48 ++ .../stream_chat_and_theming.mdx | 71 +++ .../stream_chat_flutter/user_list_view.mdx | 88 ++++ .../stream_chat_flutter_core/_category_.json | 4 + .../channel_list_core.mdx | 68 +++ .../channels_bloc.mdx | 90 ++++ .../stream_chat_flutter_core/introduction.mdx | 80 ++++ .../message_list_core.mdx | 70 +++ .../message_search_bloc.mdx | 40 ++ .../message_search_list_core.mdx | 41 ++ .../stream_chat_flutter_core/setup.mdx | 28 ++ .../stream_chat_core.mdx | 26 + .../user_list_core.mdx | 64 +++ .../stream_chat_flutter_core/users_bloc.mdx | 37 ++ .../version-3.x.x-sidebars.json | 8 + docusaurus/flutter_versions.json | 3 + 86 files changed, 4503 insertions(+) create mode 100644 docusaurus/flutter-docusaurus-dontent-docs.plugin.js create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/authentication_demo_app.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_header.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_header_custom_title.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_list_header.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_list_header_custom_subtitle.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_list_view.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_preview.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/chat_basics.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/dashboard_firebase_enable.jpeg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/dashboard_firebase_key.jpeg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/dashboard_save_changes.jpeg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/end_to_end_encryption.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/firebase_authentication_dashboard.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/firebase_project_settings.jpeg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/hashtag_example.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/live_stream_1.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/live_stream_2.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/localization_support.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/location_sharing_example.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/location_sharing_example_message.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/location_sharing_example_message_thumbnail.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_actions.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_input.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_input_change_position.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_input_quoted_message.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_list_view.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_list_view_pin.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_list_view_threads.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_reaction_theming.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_rounded_avatar.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_search_list_view.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_styles.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_theming.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_widget_actions.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/sdk_title.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/server_key.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/stream_chat_user_database.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/swipe_channel.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/user_list_view.png create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/using_theme.jpg create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/_category_.json create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/choose_package.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/introduction.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/versioning_policy.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/_category_.json create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_chat_to_video_livestreams.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_custom_attachments.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_local_data_persistence.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications_v2.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_actions.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_widget.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_text_messages.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/end_to_end_chat_encryption.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/migration_guide_2_0.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/understanding_filters.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/user_token_generation_with_firebase_auth.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/_category_.json create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_header.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_header.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_view.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/introduction.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_input.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_list_view.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_search_list_view.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_widget.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/setup.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/stream_chat_and_theming.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/user_list_view.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/_category_.json create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channel_list_core.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channels_bloc.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/introduction.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_list_core.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_bloc.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_list_core.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/setup.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/stream_chat_core.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/user_list_core.mdx create mode 100644 docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/users_bloc.mdx create mode 100644 docusaurus/flutter_versioned_sidebars/version-3.x.x-sidebars.json create mode 100644 docusaurus/flutter_versions.json diff --git a/docusaurus/flutter-docusaurus-dontent-docs.plugin.js b/docusaurus/flutter-docusaurus-dontent-docs.plugin.js new file mode 100644 index 00000000..7a09ae26 --- /dev/null +++ b/docusaurus/flutter-docusaurus-dontent-docs.plugin.js @@ -0,0 +1,19 @@ +module.exports = { + plugins: [ + [ + '@docusaurus/plugin-content-docs', + { + lastVersion: 'current', + versions: { + current: { + label: 'v4' + }, + '3.x.x': { + label: 'v3', + path: 'v3' + } + } + } + ] + ] +} diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/authentication_demo_app.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/authentication_demo_app.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eed57c3374d9be8b0b35b9fc0e11e6b12a6d260c GIT binary patch literal 29335 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%0Dqma8JZt?XJfSg`LB^=%I?il(+M) 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 N=d7Mqp{Dhne*@bQ-(dg% literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_list_view.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/channel_list_view.png new file mode 100644 index 0000000000000000000000000000000000000000..a4390c2eacc30331f50a4c25cc26df040c49f891 GIT binary patch literal 1140947 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

Epz7av z%mrD-yCdGi+An21LD(s$LnmXyofLO5S7o~E?X^s|gs9+Q6I0OU)|v* zT*a&G9U6=6D%kT$72T_U94zwkKHMn!&ZMW?chm8<)!`2BrWX^@?vY(fN>L9hBb~tf zRo#B^9o_P_mh^&RF&0k?>|3w0{|)x}F5^CXCBs_1JbXE}TkcG|iaO&XBlBbI_b&Ki z&1$-Dtrp0y+*hPh%hq=x;1u`hO=!qRR%VE4?Bbyzg5~7Ie4(9yo6R6iW_V;A_c_$g zleXq#SX47$4N&87zsN(RYEsEVsrziNTR<@ru#`+2pInx=Id#S;GF-aPL5UcbaNe{@ zUZWYh9^zTzWLLXS?q;=_liB%#L;6PDYCK>9;w8@n{j*O0o;*I-8NBbiNUY#*q8|liPB6}=QiB;Pu9k#?$>d*UJ ziloY&8Aj;u%Wd8&on+U;?zlR^EFiHf__D|=rW9W1UP(M*e0B@GOYfInJ?I<(RO%-w zLB2r*Lk42;n8oTkX_PfZiOHF?IOq*#p!ebsW(6lO$STcNtn}P#rG>tii9B@Z2Xv8K~s^?$LjblOo6@HE9fL}{y4;g zYC;~+;FPPcU@0WM5_|~Vy-f6TbeF^(wdPE*>}3fx*bQ736 ls_7_hociroV&67j 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

I%HE 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ð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 z

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⁢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

KHM zS!@P$aclhkTJ-$rYy`UnBr8)e6c~r}=_d#%;PAXtEUe_q?+nA}La}Y6V+tK>b)C_J zwNYTH;P%o5)(^z;oBGc7LHX+x{>0p7VF(;Bp`Nt{ZkY+euXW*L;19T>?&t+Kd6=x2 z672HD9&7TS2V*2YR-oaDpT_Pt-o_5<4&C%;MS{B&U7AtB#e<{$K0c_FlKEUGJSyNX zlNRH6WW6_Cim)L`3;jIS+g!}9`=ZLJ1frcqIW!#4J=FM>8kr_z02iy0K9cc`6ihb; z@|7jns3wpc_u&7a2Z7$mcpwXt)}L;Toh~gKiarx@yT9J(kBprq<)^?~GRU=csk< zXvCnCig2Y+w!?pbR*bwW`bxW(&#Odnu;Xp@QZ8B;pG8F8VjiFHR1fw|#FFi5n&sL` z$5k1wbpX9K1;6HNw4Mkg;o4WL1^+dL**VJRcIs5%#CYkgeAidbO~UwC-WRHe~CK3W2sTr zCxu>#id6`$+u%2Qb!#6hI$V4y3j=e3rH_*2z-B;5=A)_&z*LC-BSqICoUUs;@eQZ* za@?;7k6A3ou-o1h2CPZ$VsKo~q3;Y*PEvq|IGLJyaXS)1>|+ZYYGM>2655knu|RrG zM2f=ITMR#}UmWJTo4!#Y)-}@>?@`L{C{`3^t_s^n`6_N==z^HBRy01`JSswQCes3Y z>?!=T@&kAj#NI37A&br8HY0t3L*Q;}%8X3Qf;B+tRMf{`E_L5QGy?>5Ec{@B;sWSR zQBTMMf10l~N)?KXj99@y$JkS18nyR%o0V=|MB9Te-==K`eizo z<9WAChd%$MM}-1^or))xeKXcf%xtky1{v{(a!l#^JR!d11UxDgS*o>M^yaVCS8=UQ zJ+|)pw2>1`$635?H>No{I_Wv{9*jcL*{iz~zP2m#h%J=>cDAe!q|u-8E^&s)7B$Am zq4Vo0GHJsVKiu{7TY@z7y)WINq!ZbLKOLI2G#09)dimUj80Egz`vwk_Ok?Q8+@sLl zl8u|FR+jxFS9dRUo**S|u>E(_`A-*r_^{C1Od}I>hV{4&8+6Wr?m)8+um8q{``x^4 zw^Zi^L1XpVKE&{cjXBp%zx;TECB|D5`TmZ}0Dm(%>mBD(>jDB+35!ZVoxn@YR+?_r zR7joew(wh^^%8q8i#>^cGzL*DQ5Lq~KaMM=+Q-@yby*A&P^`+0%%?@ThO}u&&LwT} zHz`{5G#gzTj-vr1tv+Jmpd^ScFXkaoH~W^Hu1J<=5BE*6=>!(w+eai#A}meZ&QsB% ziJ_T&NY0WXnA6B=#bUqA(p&}O-NG0gp!%A)Qau@AkgVOT8alv)8WNe%$T&}&9pr-0 zo5{%JsHPb}q}^iebo7M@iT|vV-`U-lA?Fmk4wEE`1OdJ8iXz1Vwp6GvJnsy>4|nAd zeRx7sEGCeDq@5yCBlzEC!1_WFk?1QJX*3aZyr^V-r556X1|xV)^wj3fyoXhQ_H$J= z)OgVfDuqw8hb}U(Sj%pC^;}=`CJ=XWN-p)tJM8^9A!X$}`DGd5L7tw$3PWp(@+tL7 z5c7RSVO@obppq|=P}+X9x{{j!2;iM#pSEHaB=gxE%2A6RxD-E{9=P5pY~8q|U{hLd zI7qv#b~dG@5aY_RBhn1NevAW>HsWf}f>$zZ|Jc!O8EIzTrPF4PWTPKPASPB$a zpVlfhi1DpTnb&UMOjFg1i>C!p2jpgP6#0AtS=T&I19L9ZGAQ`Y9+U0TU*0s=Z)N%L z%`Q}IyJ6RvK+`iky((U~werdtTe#cX88yo98*}KSaoG)8xwHcbUwl zR1@E~v?6>uVb_mcvdN7746*!ERqXR5*tqIYvn}d#HjKH^aqlqyCT=}^Yheg^QPWuN z@vA+0o4G<# zi@hP|^Cw#8M(25!jeL9uoaz$@G7K$|hDLkjL-~7mI96{^NPE>#z zD8GgcILa5Lhz?B7R5EbM{vI<|1t62qjoRGac~I!Xw1I)>L$?4`+Ga27>58eQ@qtMK z@JR`W{GeI zc&Sq1{;H;q&VrVPhC3fV7n`GFK8kHXCS%Vp62(>LLOhnsMPq*XFP;2=cH8+ zhc*6q)A|i7e#RfNkVvvNl@Osxn*~~*qeZbi+~Z(@Ikv2kNu&Lbyx99_s+)v@qCiI3 zac^jH{))zFa_M3F8#uc<0$eqDotA)ptmq*xmy-Jy6RN6{E0n>ZB%5$mnd*nl$D*Q` z3gBrAxIURJag$KU>Iqy~t2S27^Afbs=E&r+UW3i9cha_IoE*U*DV270wR1u`kHTz` z*e29iX|(OuW=5?Jb}0|M=Jf~ZJVHda*QIqURPrAJ&juP14#`1pZKqxR+^7K`6?hwv zJ-Mdk2PCv->*hsKd5fOHD82eZO+vGqr#G3PE3?)iR_fO?u(ntE^3bnNlRZ#mh0ss$@}4W)()xR`fCK^Q z^y&T;pDD?zi!R69{zSC1TeV1xt14gdFh_giigFy)<@xZ8&OYF(*H1^QN&K_C>M$O> zL~k+29gRsr-BEXT-DfOsdjS{lVyazz!HUXb@;E_rJUnlY`HnJg89=#>o(1NSD~nEp+bI& zm|+Hxxdl-kHV{az(lbFz{_01-T<2_wi{cIb`!ILw(WVyA+=cah?d1L&LJO?_Ym4}w zh3P4{D%1g_{**6jQYgB`aQ`GG;?_xo&lU5#^^u@eX32|b3E-ohb{Z~vF`A_PZXDm& z=;A7|v$A-QhT42EV4>bTwcT;H!S8$_Eq0Yh&8Npg=OM z`Na=!7emn|_g{%I+`QQDsMg;D$zmh*q)s5vAF`QxxiHBvxH60WGltJv6J8MHI;9{L zS0X&NqN5-WOf1sOr;~sCQt({`BnvwbjUW~yk2hhP8qRFflq5(bXfCgi3S_iS?XY~t zC(^?GYl-=L3R(3<0F8N)|9!VGBwM5VBF1JP`OL?&32^cN+>n7DBfQF$pBGEKo&XGa zC84slC}kG&D5*BS<;fgd;-yJXp)8Y?E(Uk{P!q?co~QU1ui2AdGINzKmj zLT5RzpcfK*FT-__m|=H*91cz=IMS_IfG`2Lun@cb^-3+vj)&997BPd_>L;1eQRadl zX%qLBTH8hQiPq-VWFeq6?6S}AuW^#OEK`5_K$kt1w5Fm~1=z+Uzi<6kfF8b3NL!Hk z!OjK&{x=c+-?fP|7Tuav2_k%n&Ei7jS87eir*2jL7@FSLPKZw+@tNO1{R=Y5#&A*C zY}^)DyNFAqnNlUVr`|ebcls>+Glr*p9=X#1aS@*BSF0ZhiU&a4{m9{5n_Zve=TzGu zjYysKXbJLflE0b)ozkXV#L;&4&7RTcC$>a}` zlFlsm=&QXJFxRz4iqz3Rxe;YBw4Q%qmU~0VFu=6S7|rqv8#R3^&WwNP*KG4ZO3DH* z_}t=F@LGZYo;%Pb=jnCBn3XK)X-X1lll<2&{>%Wb6)#Y=+F#uKkNh2HKhNGP5<>by z-T)G@DHXieE?Rh(y*Y943Ztw|9>p0tAxy?R3gg-9m~= z@_*o!)xee!2T$v~LW_lVUnK47@>m7D$yzQwV|});mzwJtj65&j>NC$$uKdl{PBHEA zi3-YY80<i{<>o zIBH+zvPX=TuUeCI)WLpl>3FJ)id+zyqprMeegy@+b8w0t3++l({r-P69INqov6JqS+@K zt!!+0CPFIFjIsl1)?GIH35er{M;oCo*%c#&7cKftJT+D#m2a~lkS+lL zS$nFR2ciPZzLs{E2#_ORxGr0}$E~;<8bWmcXk#K)bYJ$Y5@Raknv)~K7XU62+k)+J z^91wgl#62du3k(9W_X#Zf95<~_`#!8P>>YlksnT;F1a^xdaJtZy6FNlG)&cQ<*i_s z-eR5S5Aw&m9=qih{LOpv7=4;={9&+(wAm}x2($@%k4dQVdUrNeT_Gqyla zHFv&FzX10VuksOtkc~D{X+y5H-3h6T*l$qyd0Wddm8Z#g_7n4)qLN9ctFucyd)YJV zkrel%Q4|G&rHNQ#?33DO{}1)-4YtC$F>)Tl1*&Xgo>NSCvz^9p4;Bt(KWxTc@ojhW zf9KR>`XHa~mRrwo_2f+1Q7k`iFROTE;j#3TWV&AMYm<<9SjB=-5;U?CIU$~DZF3*l zc!q0Qv|fH2no4(vCyGF7Oe;JdTh_(mtB!Ph6|WDA)(QMQH{;ZdLtL0mOWod~->1E? zK|AWx_&h~b@xo^KxhIs|h9RNTyz4ecr=ShQIDsKlSYf69%tcbzXms{@XtaG<@`9>id=dE<{JQ6v@B;z#(wv@c{ zdy7wy8ds^f$CEIeR4BweHE#2VUrBRF$k!wb_z)6R5GoS|;RZMHSGW(RsVx=VAmUba zmiU?C=v;A)3jJHVmelf$oP_9#6prf-fu6;c1tcWMnXvfE2gbXe=t< z-ns$f3#J9wWMS!Ou(J@i?E|m826qbWruBKcSP0CD%{9zPvnLk~X(HFU7701~Qeuf% zXe{~8(7k=SkzNouC!^`vw^ddWGL%-kH!9xUiam^Zu8GzW+~fbJ4xi5JxMiW@SBy}n zDrXgA>uJEga7e@2QWYv4~ zuq`V}Fsc6Ag?j3@Yy2=_p>Czm_~WJVg$Fn?d^; zDfg73ZkFQ4`PC;U1yAQtf>KE|G=e)~gb&B9U>++-UCyLNVeh6M($}ZKN0>`I#g&R_{hpfL4xNj0 zLrxx?vkDv&AN_=yUEiD`Wan9YY6GkcA$*_G&Ys7C!C=3=11Lc@jjI(G;}|hlgXv4v zS25o&1~63nXCk>tB|$I9RdRcPDv2Kw_&s`}(jU*vgU%`w(Kr)=63<^$A`MC47QJD} z6pSI)plJx6&-&~{W)KWzl5hxZ6ID2X1gjT};dn-QS}wN}rMI%Y+^LSYS?<<3UI=j# zy7`Po8*16zbP6R)xs=C}O}rYCB-$b(R8EIDRGi1iCDTN7aV*iWT8!G<$hmN2(pt^1 zz|#h`6;gMa85^1LMi{{p!`jR*SHH4~a1MY4i$;>*F92)8*VmxyGK%U}STkjldd71_ zrffDhWtK4;MLE~gry(7Pq(K`Db+v&aLIxUhr7is{PP%D*uR{9H(~>!lmeH3>n3)L! z{7ia;bv8kMIDI^mgWpR>sDv>+ALCB_bVL_sXOve%SPm)LReZS%PUA4l*596Np#s1!c;1xwllFBfsw>BMTCV+Zm{1iNA3KY++&M*O~kj zecVw&x`KO>h$IWX<^6YbI@{1e3*b0jY@}H$rFt3ld}v9v?vo0VRBdPCIj6;w$C94& zJ2E;kV25V8tBAb^N`zGAZDKD~*zRFa`n&^hb@7}%N&U6TG|F&E5+Ey0VG#SunSsWD zYr!>k8)}uhPQ{K)Q?S)ZaQENn2|O&NdbEX|oFoV?WtZi>cP+?6nm^g*u_%+JbQvR) z0G7Kw){d0lcAs7{5PUQ6R9qdD!>B zJN?bKqxM{W2wRMIg}y0pn>$aLJLwz9P15{KaY1Q*%5zZW0DAvUcm(!Du~7RcXVim# zT;zB3>2!+*S=PtNlGe!68-{!`mw<)*o3U0-ei|NpaXOB$pkBJJ>ivC`?%i5_Q5)FV zmwzl%Rra>d5w{V)ZGxtplPRa|5wAzRljtvz*-`QX_HWGrD%PUN=&x9AYAyG%g` z`F6!s-jDU#ClCVm=f8YjZhkCQdECd^uMYWmT+n>n7r8^IhDh>>3^+W$ITK&5HA=6! zEL!)vuLEs7p;ccme(Nz+f$7Bj0@bw!iLwsA^3`-PZ06-i2`e?0bIXMov%RfJ4GVw% zL%yzFs>`u)8!{k#b?}Nq(ff3p^swq9u$ZDOV}9J`z8JR_{mFJrwsRNlSI|MDhlVJVh6{tPK&OaZoJXRdretE0O%E}55x|9G!19VR-!$9!8iRjbg z@6y?JkvWJ%m0)Ca!MFF_JCVTx>)}yp-M4$WQ0+&7h;6Igv2-pjVXlM>dgg z8mhYfuQGJ^dkukXdBlII{GFdw?5nNaYS*?nuc^1~C^fY#3WUV#jay^CZ2ZC}zQ~p2 zp9)@8EEpfpSET3pkiDBdI&L{)NssoyeZM2yzfTXx^4)6(uQ1e=*PQ4E#?y9sO?5^v zC%qq?_fNr<>wmAcg70XbR~cL=QrsWc2zh4Iz=QlYYTyMm)OOE}^CSc;Z3!HIJozqE zk{i283P=c@(pfZ9J#1neB4rWkNWXI9^a5n4FUDw69;XRm!qq>KVuvXT?3j`0+v&rE zIPnQ2g@%vrToo+4Z$^>ohX6Vs(gjwNRzr)A6mQ;(0%*IYOwMC;^2}*UB9IT%>vH#_ z^cq6eBnoEMbumbw@`WO5^H(wygi+$@vhEV>Wl#E8HH0V7@Q>qcfrLTpCBp=dSAN`i zaGMum^mecymX5P^!r*G?h)(AhKtdrk>ghc-ed3)(=hp3%z|48vXqZVbuL;>SKWac` zfaRZ3*We60JlQK9O~ScFBsLs@^t-7k+-O}}Zg4Nn<4Qbu0@614ntdc?iZ=_A zmCxS~E%Q<@BGVrmXDbe)q6|sH5>m$-kB`JdQ7NcRJN0FPJ73hdDHcnJUCiK7G%*Ud z7^_>7!;w~g-`2Hd8v?93Bc;#^w5P}o-5xe;X zFvJygBk5u1b_T^Tlq7atFK>+xydqKGv)9HE2u&X4HImtEDK|!NbK8#2NFDPdbP`#tE7_| z$;5%@BN5GJYu)-6--Sh*tn6dTxrOi#<&N=qR3KEy}2Z12V7lvvW`UOk*kShaq%3WJ-xa#!C5*U2Do^Us5=6{?Ce(LtPEl1;DDywM5_~Dk`dwLBmeDaX`({$mc0ksILxwkI9?1qe?;^9&A?g88p{ zslI$aM2q>iIB$nO^x!ANE&P1C+@ggYi8;!OI{Ga9SbrNRae@q9B7JOxetAiRpqwMw zd-D7P`A6xmD+EV|HEBh1vVx++ubq}qgE9!Ag}-8nhkxX~B)_@oy?C>hNc_hw4ezQO zxhg<1ts-M*gYzWJFfMo7^H|A0IAJs3c>FxW`kAC%Z%8V{w2eX|ff@NGft6aMT}R*- z{Q!RH){Y?6Uz*pA4{Dju?sj!^m+mI?K^2F2!MzgAf>dNbCW0l3=*ev{MaFPoJzKL& z&AzciqopxI`h@=DXXlz;fZU&^Pp#el*Wki7i&}sm`CFV;t!tf1i!TId=>j~T0(~hJ zU|`R2Qdd!wvP~Q-Qc?8d9yfO$5zqX95l$qSp0*dh9w8~V+eE=EBjOXb5{rE?Z4lv_ z)**je5!#bx*0r+hr5mvuRaZXz$c0OW@~H7j8(1z+ZbgFqjmt3&k~EY)gitD(Z1xKB zDBY)5Kc&KGO4_m#8EXwPJY@_FPT&NAbURzQr%yuH8kMvF^q&|Go|a0)3iZ`fMsgvFt8uw9ZX8 zN~6DqV|?`C;~t{G?Rwfww&_q?mmAXM)BR%M6ANPht3aGgdw~u<=P3cU^FLNcHL-)i zJI$pNSq9-5{J4`vDJiLbOL;6L5cOhDygHq?EA)-upp-o;0>j} zVE=WJ$!vEkc%jTBvME52#!!H;WRv?AlT=BEb{&PWY`DhFKd+O$;r^&rGwK}-ch&PNIr$FF-qNn_%0`2Y~5SxtJK98f?Ii7f4?bt zUU__X`1QYkeBdRkIPGZW&xc)?q0OknKQ(-$W+;DyS48jkf2GepRdN1oI$MU?Y#GhdgAYloO$}tdqa_x>8 zE>#lXjRjcPmtr|FJ0BePs|$E2ETHnsu`OA@ZnSCFCPG&SW81e5PY zMbCQzhlST?IvJ#1G!l{yL&?|AA~dK&8`u8vt#xTPjpXAnAxIX8Q;DKC7bH+FCGOgM zff+gF*tV8YP*GLteiGFe)TE^|t;$pJPAz*lzoK-|_OHkG-z=6di~LlPn&a6@9=>}C z)o3OpEfddTmX*`LT4j{oZ2B;0G-R8z|CcyA@FUj+a4CDIR8 z6glZ`X3Iz}OG*Y)!kQFc?;JH?A9Be*++s*HhOH?>eNE$?T$I;{;kC@mzncy}B`f#? zf70WLgI|R3P&Cc_dV%YbP5AA}FsJ0F(-C2{eKnJ?0ojCa9JVSud?=mia^!omkY8yoMF@dLET-P&JM7;{(Y^W`I|k_#dqN9h`@EhBn5q5e*wZ+c+Kyf$Kgo z2P9p01w{yH!e#g7twJiIsY@{-3klHuFn*ShWh@Q+svl1ygRybCMi4Vo_Ll7!$JyUtyNYLJ4-PnFNsim*r-QHv|%Cr2iK;@Hy?{L1@Y zE>{I)iX2RAJ^D1@-v&c3_=NXxhH+?b($1Ifb73k}l{7a1Blq7sE8mi1Q!=O7?(mDk z!)2X^2lC>Kx%M~FDr*SQ=csi*uSA-K?cDI@mw8b0D;YGK)|Y5pl?NTen>-i3EsIsq zRPHm9$>iRT;q&O=QYb6ulpc`uyknbxXPc16kF5;Ybv+oB1cmV*bU*(11Ho%MPCrWB z+U(d`(y0{wiR3zxisTsIL-xz}4Lz%SY7pghiKo$-!vkW=SwnmwOC8tZ%jHUbAApTw zR}ovk230bMmHzBbIhXq0BF21OA8{I#|6bDkHNOAtVNx3RSn+Cd2!8I6kJe`YLC$X$y|-rr zc*8{zeeZzSd%C3)#P#39A^7lrg8X*spu~LhZaj>e3M+gIhVEm2?l2OmCsmV0 z#G7wuXeQ{UKL}&SL*^YVl>+w3Jmz!ZDaplT!3ey@1B*r3xZW3VJ`0iU>cz0^+0F;l@;Y^V`-w)C5GKa z(|}P({^T|HX`V{JZ-U}0k>%WYJdUnPWSc%�#&=SGK`_?86M>L6;q4S?J+jSJ~7X z8{}qKKSZXIiEUg;VxCH`?>C3@FPZ)Bv8YW%I;}&WkuFBLo_hDd^KZlv=4>x=R?b7C zf}SS!MKgU8w+}Ygj(Xncg%Ld8$G!lZn+GC@BVV0*0odahP?kS6zh(j_`cP$x2RA~I z0f+d=AwKIPKfaJRtb6iDq1UvmWw7#bE}?8($smKpgUMC;d2Q#)^4B(_;g>r29Ce3= z1wLF9Gt9ks6^eP>aMmciFq_9hV=s)%-f2O= zK5;L4Ccb=j3dlao=w4CWK z76L~-XmKKMW3>?9Kxs?Nb+QSISILie6r>aJL}}XEw!JVX7i{)w8Izl%5MnX&JZZ$nr~zl%~1jH1q^*ur3n>j z7#6<>Gcyc+%b-U+3-KPp8zcJM2^CLh!93xYrr}K4o9Zyk`BL&oGYpmd^Pw!vpT9Ek zVM`V=bcr_%Db?#N{ca8O0d)^v9qtq_4(g_A02ttx{rSb8G6c!GHs1~l@)$932veKk zj?#D67<9SRU#$pc;8M`NGPC|aT)kyjlwtSwODGtmsDKQOgwoB>IWz()-7Vb%3@tDq z3?MMn(5--^ba$t8I&?_P(6#6J$NTQRkL$zD*EzWFwXU_+xz3-%%%Z5p=SHW^9=pQm zDHax@^xIRdEH?3Pc&`gue0j_1q=()E!sDb<&rY|9o>ZXPWGGRg#_rfG16>oi5w{@7$fgUD zln~tfgx???Lg8_&@a-=+ZMKg8?qA#8#cqbP9@T{ebQGCIyA3rX=^+=yGbb>0v0eXa zwk#A1oG~H09t!HhrElz-WtI7U^`f^uoSYr^)g@HRw|qvIF#-G2wslLyM#W_#o+v?; zi&y)QDZGQyr0g>4Vo;}*w@kP4Zz;PCh`?k)cX0%Z*tESnSs){>(CUkOmq@47w8;Sl z*x!If^yKl0yc?ofJ?9VJg1n+&&e~jX3~@Y&swB^mVA|!g&st5$K)med4ein)CJkk4dRtv?g_t@DvwQb9 zR1whICY+85W=CPNxT(>bM6@DHZp~{u>lodTsS@!}Fm!EQe4mxJmt<$le`%h1PvULS zOIqImO-(L`Cj?TlWOxSamj5wHbAQHV0XynnmwBlo4CjZt%Qud1+jHs=f=&FP&q`m5GrPNkm>SZ`N|h}yh?-Cb z?zJcUg;X}gJ%tVNW;C|^i1G!if~bRNw%26^-Su~{T(H<~r3R2*x=w{Dio~P0aQlqJ z0e5K&|3P)?dLHef%CZ5W#qe&d)`{{wf5Ctv`VpJ1G$LcHW;@n&+SKXw>9uef4QgRg z(Q{)Ff}W4p?L(hJY*9-Wz6Ir!s(c?n;)i(2#!_R7Vp2;)jkl_X z?^SiVs(%#JtZWa$;k~zSz#0+ZR52NrHm;GJ>|dU14pj%1PNjJr%_aT2>uB`oTfL`q z6v-wlv&I;3&GAj~WqHZ_nj+6rF2}TOw|d;V4S%~R=ojbJxc0i}PbL66eRCFkce-_b zO{>qlCnlDc{EX#F6Ji*ftUlo33orSi-y+YP19Yy(kM4g9o`~PQ$aeQ99%VXGg;6ZT zFotoN5qzWoyZDlX5(4lgKPjg1N|Wq2>0l~gv+40$;R;5)d12sZJ3V@nW0#;~=V&N3 zf=@W*NoZj#)?E&2?(te2$(y^{Wcl(tA2@T02e0DU^?$I(6!6$qhCe*@)5IbIn zt`Du!$p5W)N<+UUS#<1%=Q2mu_mY%X?ymXn&^fktYewh)hKX66W-h3{S=B#93I+g1 zpXS&5w#{aW5rHKv1EwX_>)KV6Gp{0kdPLVtEi69Q7PgZTK=HwW(WL11w`(p`N-2(zP)=@r^SrnlG+QLo-lVsOsAU~lid_pUeR|5UP? z&fIyzrERv|O1^tlQS;0cEUpZbN5%W|6cRV)8h)@MrS?>`5HvT1^wcw>Hg~Dd*1=|@ zIrE>!g;2z~x|jW_W`A#4m_>7kOp4u&*wwz*sOb}hTZD5w%6*)R{HnD)oA8F#5z}|D zZvpTS@7LApow{~o72A~WB`V;orHpSVZ1WQ4Irwg?A$i?p5uCdC0JnCL+UmX;zBZN* zYZGSTGb+lWIrxf3Uesd4CQ2N%4ZRaYvzo+oxD|%S8%Dnaz}UxdLayYqggV#@8_FM< z`YtR*pX~(|?N|x0=IRC2d$-!gLxl*5@E>fW-2)AK=QjMw*kz0BHD~tI@mFd#RD627 zLII*~mnVsbo>XD5^h2PBZup{QOFx#4zmt&FP$+rx=3G4PFV}Imh67-ZR-5q)ot@w* zcC|On4q!{$lGemN8Xgi$7X0)xq8_H3L16(U81`X1joNnP9L}b|L{X2gP@l^8cY=Aq zLS(vo7>)T4Ko&EOyjgcw#GCFQEngWE(eS_1`D;&b!(PQvS`t>CV!wM4Hg#$*^oPur z4QnKnOgu-`u=(Yf0N{J|U&(;W2bG6S;y|vEjB+&%PyD&8Fn=?zf7Fwl`+P58M6EKz znu)^z5#852n=QITsSUm)Tv{7L#_}To5eO^C#EX2!(>cVn#9IUJgDEXKwbEC{)ecG~ z3!b*@)WRP8Ws@{~zgq4oOLW4Sw5-=VADTe4qfpIORUmvgE7KZAtq}@b-%Wu_D?u&Cl$ye0 z^P6aW#exUb$>n=?tiBTADV|WpnI)TCm7>=rZ|~5#+jfq1M_mnqml~{?ppe2+8!={b zchMFlJ(4D1-$|(%{u$}9woeucqcXnzTl3ijei_x#9@jx)^3#}Ij0ztf%8lnia6m!8 z@%hqu7i!i((k$%IoXSECBmG}5fb6!<69NlESjt?RPn5R4eWr|@D!cLOCh_lVPmyLN zqQq^4`kIjp(4DKfWsZ+ciJ0%u9`*%?x<~!WuzIjX+DP8a>%w{p1B7$1M9poR+Pc@j z@>C2*TF6tXzVK~z+f>&1Q=^~#U&l0xqg^!g;^mk(;!*ReI(`D_QwyW$k-72LAaTrv zzpU8?`g$`ICq5T}CpV}?wKAJAO3};MoJ`}h5kE(@sS10v-;*OF$4+Yrm`CzpHQu8& z9{5)-c91o6D>3Z5W~ZZmNrE}aiqljkZWi`R^_ygB%IOs-QS?bpn}tZ+?%+$BmDzL; z6XQH@5!z2;cv7P*l2-$B^(l8Ia1MjdRliS{-k(P{?BsqkM;bYRnX^s2caY;3R`_kG zF|i{b7O0w^g#e$sO9XDpT|n`)gszpHH=Z=VjbHk zRyhi9Yl8Jndw1ANI<9pN&@(WAd{{;0%`4pOBKdKw@nGD3kbROqaaB&i!4Qme@R+-= zTMw7Rba@&VZm`vXJx)h#d^+>%;E~v-7LAo{S(d~&5mI%Z_jIWF?D_H+TCsnjC;8gX z_)j6h8ILK7n&|}rY{||kL*+uT&d*Bh)}$r)mr74ZaA3Xwwxvg$b@KCTuIb7Fr~NFR zEma+{kcTI6R#!9fEsNFx05&X$6D_~fx5Ze_JvQ$d?eMHtEUOluwW3TY#Sv+>IZyf- z4M0CPA;GtIgWJ^I2n$H3FnU(yF+>GAW z>bDDv6{_!?HjxbEMe4uGPVFup`1wtSgaIj^xZTL}%%n{3vsaasTt&>J#+uIXzzsqU9;ga_)hprkB5Z?o%|)$0t* zkJ%QVg6=kq_>`%b&W1E&&JgM(kd*+pI{@`y1D54i#ADH%8d#= znl_f19B-m<7ne13Q0&P30Teq{3{Mddd=+rG9fDi-$o5GBvw1j_48dH$mzVFk0;6bs z_jk>OqIzE`(uICH6`L}hVloT!iC+qhVI^X3`K{b#dhA*y!*k8;UW8h=8uQvRJ_6W$ zr{>9rgfS*IJ<2to!#Lcuvc6DqcLez>8KC~){P#()#|C-*g_tJj=PEYecBlDhs6xL^ zJo;{P@qVUM2^A2&sR-AIa?i9Y0$vXB&NaD*Vi=KmLJGMC~%A!!N>ivZ@Rs z+%XZ08?5FNXvoiYMJMervkS3lNq5n1JlC`6WtVOQ*FS;XM z_GT>*F5v;*CFR9T33P+sHp~6V9B9B6=hY)pMY9sItdwouWO=i~C=deCdU1<{6lC0^ zrjh^&xCgLInFgWB?wLzF7c6e4ESgv|s_~n#P@vF;b)Y*3m$$LRVWNiD@k>rhAQ%?U zhC}K8y4QveElrj^O6xdJj0aNtNj?44oH7ByySycN5INAd9Yj(nZa!D4^WcbKjGj#A zLZJhlHt5mz5}_a3YITRhFbZ|GMvYm)0Xl|o%{pio&hRGIRt;;8DvjE(NQWyWXhoB& zoa~)TW>F`;WK}jc`}1Z@b|@ z5x%>7I6GXBv^JI-LA*R9kpFX>o7rY+rn=|n$xh=X;rj8W$@Yqjh1q}C;3EHqW(6TA z*(yp+bCiT@#&5)1&n*ZDFu#zPchv9iXs7}g!X{>ZS#O(#slQ8$yp6+{BG)=ZVdLRG zZS2j@YVCP$w}3_$);(xlV=Q!N^S>n{9teGhngWjTTy;#aMT8*JHfEFTY(Hy_o;Y_0{VAmH9yO zw2jeCDY{pvg{QT6fwar?MU!y%B81?x$g5CAs+l@(CnAT&w9o(3AXIIAEG!+d1L`$9 z;0fmoe-b@u#+@3^{f{2Qn(F^cLYJ1HouDhTuShaAVJyLVTplpiv`S5N(+JxX6TbF2 zsu=$5F`3fKMoV{O;vLwCgo);^%EkZv%DUQz@cPOa9<%3aTcPuu>LQsxI@D#W!ti;E zusFcK^X66Gq@(Y4*+k}hxv|Wr71%1!hR>zCq&MB3K)Jb#BQiC)VbRr-QIGkmp~k50 z*N`WF#qXB8p~AsRp!O-ix0jzN^YthqpN!S>%XbM6h9dX-sn;PD1S)v7 zpy=M&bk}aEO*}xdd~=`!R`?(6)Z4R>urXgHY^}Zcp~v<9{bJPAVz*LD);sm3 zSE2NfrNoSBW z?-je<#md$+)1xSbZ<=VaJf-=e=ul?evj~5sxzgmu;yvz2ces4qKT_lUbl+?p5zsY*Xw{3Ne*dvj+b6Sb`!l6oeVdUnw z?IH`e?B>hs{Ym_lv%;9)xKmGNkXhnU6#YNmc_}vo}5wD*1 z)Hn?x%`6a_eX&{N5(216nM1v5mBzU^at%pXN`p9PD%YoaGB|-RX;hWZV`^6Ncbk=< zx;)M}>G|jDPAZe6d*so>zQ^WZWIP#1Au2^AgE4&dZTj)WQG;+R2aa zN;!(CO`7h`=PW;4OkXMnTNIN)pR9}bwsJ!Hk2Bu~WK9tZrdgR(PhqR4LqaYAoYs)*ZMW{@fX$W%l{T~rro%3`<08Xw#wAqzhp3-y7 zIVm~~ zcDL2cAE}-2A(pI*gT)H=Bu?u*KYS~MkH)y&ZkHe!-^mTgHmNOj|a6v8+RHMy#JKjiimw`?cU9`*mzT!xJH62VP`s&R@PZ%jr zP|T5FP;8dBti{6Uv``;}LGm$>&_Taw=OlJa60dHEKcnPKhM40lBl$ycD4ws=k42m^ z)btIgqjaVbAyoE5U$AmT{mqoVpp~sEapsUpLS{ko(iiFyuU$+^2G|Pj$1sm`sH=VX z52~t5E=${cXRscg-ra?ltNMlmM9(En0|d|d_)rc4!N!MU*C=)K6{CVKVn-^H!_N%?*> zYC5*^8f2bVPMmn`wm0*8FW4@49$Ny7M_l{VX*49gl}sAV?b=|Unt57IKLPbMokQY& z_NVc*9EfzjVHxHZF{?l+trNRO|3+}%yqrMyWnK9;I-|%sx?C58p<9ZphKELc2BZQ9 zeAOC7OoaAhiSkpRsmRO~k4rfXeTjNH@hbN=LBQx3Xh9ucmys&;wa5x*)89RG&gw%8 zIw~2_==Wf`aP44~HA;#rX;K9hGh@_m^-7{|hmX-=+=}mP<-%O}`9m4;$`6p8TFeZR zjUvk9Dslu|KA2DN5`v`i&Ub$IZVLkr{ib#a#1GuDsy1%5CbdJgrmuLznHZjT1Nl)&cwt$HDyB^WH4l30z%IYf=9CL1VcYo7krp7J*&Kp~6CrTTy z`>bb$Kf^IM)?29WLv^$L;rp4_RKwOj;@z6Io(-z~k*9h?(`AWP?$hL+Kf;L$@?8_I*E=%5~GlH{@zt8CY#48)DS3U(SR- zVeR>A63;c@midf;=F#K6<$E=y5kzzXtvu>O!4_|JvU64(8J&$$(#YSeRA-43&evMZ z{8$hy{z4XkxVivK>~fHCiR8PYy;v%q)N2P}kHp^UJS;?vlyZ8p#TJON2!{=i$*Kev zNHVT3;fd9}WC=%J_Oel}rJGW3<-8Cn2Nl^I?1YYzyXD}nNt-;~63E!+$l|@u!R^O= zn{o4mMr2%9(#i4kpDbIS+iu-%>91(0ncd`RC_YAxBW@0!f5flF$e=)+cH1LHYjTLE zO7~yrD{ITw6T;@;{_V_;`F}wuinuojLAh=Ze0#^{MP}XwtMsCdEG-Tol6jG|E5pa7 z>o;2T;qPj`Gi1}bQ>pWifoVd+4v$}0#-$gnK1TFPY_l1waGp*aLG~M~0OeD)XpSam%sIq4C${|~! z8xfQAPOVl7bK1kKuzMA(ED7S{*p;lr`sFf+@g0;UDb*?1JDU1$QcfyEy)oVv6!7Q% zS~u;-!H?3C-s^a6+2eO;xsKyKcs4kVpJlZQD0T|8yV}ghvk9@m8jGEFiioly2MZU0d5tLe_MpI!pRMQm!v>o&XW7_EOO~Hm}f<=7F zns}h)I#h20vp`-6c5#{S$99|%)e<(BdvrOS|L3Pp1jdLYeq!1nFiH7K02X~KcW4zD z;`21S3iQ?Y-`7*sKmBX;f6!@Ua3H4s3cLl__cIZ@DA`#qy1DsZ3GLSbW>p&*3pG7f zWeuhzZ;~H4m;L)3*I7GMRXeNGE~S_1HH8FTJY{En(ASvZsV&S z6^ra+)Z@!-%+v`lRW6_+8pDqjXb^UPU{hlTcyQsXVucuo z>q^_(Zex+C;*31++r?Ulef)Xa`(SUOBHs0AneD-(_bkzV$_rDQEUTnb1SkVS)2}~+ zSs9o6?>CTv3Ijd_D=!wjy7^hRH~`;+nFADPqon{`4pu=jS}m+}F~` zWKOPm_q)+t0wn{|S;r-xaXjr8)FnRK@)Y0H!t)v8u+kTVYrCPWom5)Lh%*XYgJvepZz9Vj0=}TEs#YjeCJ_ur2 zght?1Xc~DvqcNV+hb``6m_v|Z)%gDuq}$VuVWVz|F=AGi(JZm*wgZes8+?vziz|{Y zSm>akegz_rnFzohn|rEPFn|YOGGg8G6AvHH19FB@i^QN2092cf=5x$2XeAR|a=bRz zWK*ZV#4j@Qdj8{8uzb=Ai*yJh9j!@*=s*Z!NfFFz`ES_ew*MsmtycM$qGH?yhX%;t zYN65EH-{$SlL^sJFbd;}i={S^yT#R;Q1qcQL_)@}t0U(ryQks2?H9Wgna`b9IS($~ zF1P%eyezdvBT6moAdp7Bk8cSlr7pthitB-yqX`@dr(dVAEBz)WrzD}C!kDIbl#J_m z0|!kB9bG#$T67U*`11dF`$2z?X~9L1)vE1{aW8>Bbo8k=?0~{=afc(M#iiHO0FRVl z(B-e;Z_Lf}XWRMyuDG*bjJp5n7;ls}-}%{J*jE8f|#ex`FpbCf8ajj+QYlp;E``m5)`0a@21GoB31 zk~A@GpJmkm4X`O=W7^JA6vK0@>dgwKwZFR3>baJ`GA0`~*_n&M4XZZwW{d>@m2tx`Ul%2O#3cZ{&9< zknrZIwtn~pX=9`mrY7`D(oUerI;KG~;t>%`U}2PmF;pI3zGqO$rM-CE33?)-K;e8P zSG06ryNJZaIqKU-2W*J1K4lkOXHrJxC3`ce_(RQma{d<7H#^T)WC~7rAw=2DI_;3L zwCIT9#Gk)feM8=@R62mi@Lxzgsg(PI*?;K}4gT;Lo{9YE+WqVTdR~!55WnA?71^0X z*c|FJi=vN+mE-cA_@?h~Hr$~7yQ@|1tkb(p-N(&DrR7R))Q2O(iuy{)v%6oKG%li6 zWcAFMXNRjQZtHLN$-^U3hBf|zFn`Q<2Tj5IKsiM{m?O!p=J>*Kr8HR?Ah>zUva?JC z0DkGwa-11r%M)R+W)#t3KP|h5s=AV6I$AZj%j)QBgoc7Dwh^*zv zN`OH>f`njVXeS{ss@~)+t*|ZDP>$+~e@Ld7+p@YATxcYTvA2lXC`a5JPDp4Ui=kD; z{Cw&wWixX!x0J+%)+x8<)1bB}6<4@5{X6lZb&XC)xkaxaAZ2 z3Xoc##x}gNf1$SiDLBI=;FuwU50qdeVg}xIYn&*?!;vc+&fpU@a+~;$E_&Flo7x=W zRB6#S4@v*#*K^8r9`zKI0^o^wNmzYz!ZI0pAs*LyTy|7|F-}*qcvd8bf79gB%zrZp z5Dnl55V7l|<|NY&r5A%t`n3)0__)4sp64`}pG{3k-h$dvSC03nICm5&R=4>?%(K_` zDMIP-ROhhqpHR*62s3C|7rOk?Z4!i?vA0!q^d+-*Hn=);L}-UYUjyC=%Um+_j-1o* zIFV5i@>2ZWr@>W6aP)7fkb8a|;>|{9k3x!64x!SLVg$-pT2O~p-qW!7VA^;N`PT zn=_30MMp{;#h2hn1RbmY4SjTEkt?p7+g+kAS92_Z{8*ISa$r?fpb}l;^l9Vi(Ucpm zNnPswlGnbY-7@aJd2~;SYSF%Sph=)yD||w7XAAjMB?K(w7u|kCv`u2cD2U(Nf%K+V zDUc}Yr#?4i`Vv+!@|G^4p9aBmTn+eELshC<$#88yKW>WO%Ms0EOB~M+`)CDlJrtNN zO#bELGo*05Cd}|6oLIj3#!h?pYfvwV-=9+dO}mSt^pBV>t4vX7menmSufP(lL0Nle zAA^dZP1ko%qKNgL9p$$eJ<#L%M?_D^0k%BF-&TRa&7#L9^RZ(lMOuBU|BVT&#D@qn zhwG;$YN(|(`EQRJz4`I4owSRF$KWj?NOku~aM%??91F3}7VhZib7aQ^!(}St_fur< zN&+1-&D+*QLN0V+!SG{3$OiT){HZwD1uh>Iuu;Fl%f1TU(9Nvsun|d&Cyd$6*>r0f zx445pmXu^hH?4T~=VZR*rlG_vXPN)V=BEKJ>uK$Ay3BoAWm5UyG&2eOntzYvIhXM_kgHz zS9%Pb{*XIk|N0v=<<&QGd%H;}oVlk&=~h9$oCN@?A|;)Yl^cGSk(Phj+LG3-8AB#d z_mMd^q{|PJapj7Q%;c@#q zJiY>0gF?+{$#c!YW}I#4?`Rtg+V}kzSruu^#Y>qGY?qXNJ9jOro2u=hxoDV8$U*gb#L3bh;_yUbBqr!KkQT-Tl_ai+D!gS3uSa z%$(lpy;u%3Ip*ayr|U^(gIV=9$WZWCL1os9_h0X<@Jh+jhJp~lC1;P*$8o{TCabrP zOMAT22uz-c+(mXUlD;!ItNoUcvGcrL>NP&0KbwZM3`=NL)4#^|t>m`<31m(~@{e`l zs7&u4?-sftNnY*tbi^5pPgi{Qr82kwtPML$Xw^0F{rX|ca<=15Yg>&?GxTU%ti&_% zIwzHvmCBbhi6MC?qg(19yKg`4bb2_I#Tx<~nw?TEyIUj=bj3w$L>BmMY2F&*0(1IK`vJJRrSrxCa;3&RJ z%~=-Yb_N~zF!7K?v)Cvx6T9WLG2^QLozWcJfB`@-gke9r2x>91-py%&%opsAN!&3eXHiM0>SM&u+bDQZ}r^&Ezs)# zYP<%TWY2)f_P+%q1T2?m@Pw*u##Da!pwxD=?zcF@K1R1W0e88t)VLk;oFmMz=uGYAe!$wZcSG;CZw zvY*p%J)=yEWeH_I{tW>p#+z8Oxc!)1lc>pX)&8*k^{q z7!NQ@2zvyqRg6|Ul2!R+dEu_q3WpPws6~rF(d+(!K;O2&rh#{^(Qnl+U=c8h$$+V( zW=Z>2hnoh#LoykzLWNsxepnPVRXhRtGi>5E!bdgwXS(_^wyz;7-8zcwqFD!N0*>!9 z>_XA%u304niw%xq_B|9g15BghSFEnXOw*@7!saRDlhcz8 zYf1#6`g}B)1*LN4jwJ^0$f=cL(vk4z^PM?^_anr4;73pUHjE)3ag^hGXx=uItT83vr#n#w z`hZa%aEKQ*bA`}WK{EZL=DA(cL9f(tk2Q)5>HCSZKgUs(s?K=JaKTWI`!*k4Z!KRG zNZtoNF!|r4n|$6F%&{dGG*cq&)1CTq9MnSJy8O&Qzd1bp3UDu#ci2Uzkq^TpCXPJe89Jcp< z03qVe_>2W1a7$D#H#X7&`BS@Fc+n!%vhV0T&D=rOR)OF$_}ucp>Y4vM9}*0tERy_Q z-3@4&0uj3IKq@Aq#@Dd_L;AboT7t56$&fE9g+a-D$l(iT=?rUG+)q>5Uk6AsJ zlHbT!P&iUb2uv@NakJz1hC**jp?XhhZV%~{<9%KhL*7Z;i@>)QERI|K*O&;*-z7;Of~dL1`KCLUuX^XGEPo#*Q^kcikg4@ za-vNvWuZTm<3K%~t}wq=6wSFWnAyPG7$+;vW~#TbzMe}XzENf}kF~cZO>;I=@E_L( zQ38jmaeF;~eBqGfrA2SCX`f;pW~>UEXEK6@UxkL^Cfhyzeh#Iav~F?JI(`(aA9)U& zU<%Y{@55^G{w28YD8Mo$7ynvje45_kBe}`5T=E~=IWIX$`i~iY(gujNS)>%rI>JmODBo6tng1pwhA`MeskZsLNIMyl$zhB!q;1q5F z9E4*NVc`>lw^}wzs@1Iw{9XK_E&e(9&wSc@jISHWskUw+v}X9T`@<4=!vLQepVgvR z9XEZnw;fzqJHh6DWla|$R&u4}Ds~(y^LYR%hK3W53Snf9m5@EG!ExOFuUQf}8x2de zTIeb3eXIxqEzX@B>DHnA#PwjfFLLm_p4zLEZU_SJJ7q%4h7xc(@^D|4vnOSm1c zeb2#_6=#>0#ueESPuVU7l{d2U|RqSyFn#mxWE2!p~(+IzlUYXE74t%F-RK5_r0yE2qDbE z=(hD0z{7|kI*XsSJ1ecWcpEj^pvdf2=c1vX879NEW9v04C8Gg6eH+c|i9s&iiVuhe z|J~GCajq7Os$b=o-yfC9_S|#*gVBI#xBu5mg?X*6DzG$L5HGro-#Z7O(k*1KP!ljM z7OJ~yF6x^Rmv;;*i1&z=#|yBO$gV3l+ttB3-k94_H=cW&g$ccp61ZFg_@3;Myf)*h zeDpA+zdDPdD9J1Rft%L6F_fl|&vG7}0#HfleZ|%jjGy^1u5qU@2u+D``|J8;(!!j< zGSdf*7UJP!)?KJa4=C&VZOH{IcDFsoWfA7 z-mp)BYl3t}9Fduj{zz0MfylPnSiZY-u!uQ~k@-vZ7tF*yRaUM4K}eI+Cq$!*H$@f* zR-WKJyiND#%T3BNv$d5|bRQ?&WZeC(<9Lkcqn#C5^3>SklWlg4$SNt1Q@r*$tU-1t zN#aJRt^i|fyUAZ;)71IO6;9H@`({F3u4~P5T`uqO^Xr;YTi@%9wu@kNCT1WPW7m+N zp~}z*y{DdOrMvMuR7#(5R`&Kkir8&3@G4|%ac9tv^tZywb%FjCc}JsOo|Xs2=w@FR z{QTuF?K_mdnzC}7Mpa8tVsdz_F~Cu7_y2o|>Vhs5=?9aon794(Uc5E~^tN(9mdwZC z&vVqaAJjAapPyQ{jMR&NKc~32p?vT&jxRVd6S0#;1{~gWzI>Lg;GXnhawj@}z}_iD zn`2d@w>J&C@eul!X~&x){YLAUC}lGNRD{N(P(Yka^o=o)w_QXLTg(b5Gx(UxY99-qj!KH=cE=-KtWSW0SJ@Zi zvb`i&H-D`-qLJYlgl`C1WFG^jNTz3R8=ZzPijnH>G+;f)ey9qBpto5QB zxFC$nH!aSEjxDC(W6~C1V_`<<*>-fDOAn00L{e0Y$utD^vx&SNzAfoTT>7* zU5Rr7cT{`wYP&YZQeiG@|Fetuf1gS0QoZ9?Zb5!(|WW>x?bh_BT9satg-NH{p+zIPy_8o?Sn;`$>Ag6=#!6C zv%|H?ZBr{|#psN2W+#Z<1lF>neD0O~=bg~n5n^KxNrXN-5j1c1dAPurtlCEb!p?eI z)%RNPxk93)WB0On*!+&5LTc_>jGXa=txx^Fh!4})r z#ax%B{`)AfAr-Fl>;q^q-pt4=JSDtlxXF0uHO&S4b%|`DwiRQngUeQ}Ix_C)Je?eK z1H#B=LD8^ZPU>n=$e;8hM6Vx_eI9u68qT~9p638X|Ar;CXDa3lt5X#dHZ(ypO#L0a z_BX6m!R-_2;W0LUG({-GBi!XwHLY@#`DQ%TW4N9)SyJsOy4}locGsVKM^rZaah6U3MUrjYpzj zQ^nEhyIs&ejk-= z#=jRcoA(};{D0%ge+}zD>SkkrKge@yrqy9Q+h87>FKV)6N~vRF@bMyX1Bf}Rc7j+! z<&sNRcQ-rp$F!OXkZP<%l-5*uq#@4(#v;$R~Fy5x8@OZbCZj5uHZ?`hsHm^R{edw$xMI0PxK$eJGjCT zj?F!!)OqcqBDm1M?d}NbIj;daNE(odT%BE0CMDNqu2cxX16SU25~wG6^pKi8VsR>1 z$Z;a$-JK{7IX$jKcf-W(ZY*L8eg&ZLcY{4Iie&L=W~~P`3K>DLf?BRd!Mmxp8z=Go zGY#3Bp$fUk0%Jz}@Tq^xH&e1v6<3R%R8z0TN6Fa{S=ac<1w%TL;>(vI_LF>>zZp2R zn1;UxhgIT2O6sI*mm#I?rWNrQK%1IYxCcE&E&D5+s@!Oc0NaS?{8%W< zsSjg4OYv6>QZ3t)I zfOFiyQ3&EZRgu`KZ#QVW2*+3y>|voq!<@~?NT(cTMC%W-&!HmO;^q*2;w3R4k?q)P zn2o_JQVd-$Uu_&r5pHgaCShbKEGR!a*0k9S7Ab52Rk1J&v0Zk@=h@mCkD}OtZZhd- zZV*p}y8PFZ?$m))8@qc8W1qE!9lwF!iI^{x&1fqQ!Rj^eiK*47Xy!A1OSZlrIiObI zYPPmYn{a1PI}%|-xm-``0wEjVHxgj>L)v)ltvTJa#WvwGV^_^au!|YMKy6y(;M(|I z@zwv$761De$~KtN?E|-S3f8vit;yhX*Xx92=8>pff@%cd>X&(DJv1zOi&vGKKRsRC zuMohK8KucVuePXYk(uW+UJqxacaAGiO4C?}n*EHp4{&73euIe;e6HO!g8R#uf-`ml z>Z1!w0Wmd*sC#uH$T2xYS?kUERYlc$Vvedk0_Yp=ds)9jLhchZjj|LKW0l3F*cJot zO%QWk*JoD)j#aTRPWT42x10%$9ODL@Y*H;&-|NIIeOd{!cH0*@)k}~v#N=zdY#&ao zhF{)$GLF_N6IkRWcyBAQ;R;6W8`(4yhVcyC;B`E&mq@M>vy_gF){^9hcZ~3Hd5lv< z7ae$MYS8!`4Msv)Oqhhmz7*@;gju{eBCjJU>@RL+=v_3IFJTdcvg zWfK6;(8h?rF(Qp$7(CyxPLG)=jQGCN?8xMH;`i%zft)4jl*28o#10b}!-2LW%6Z_+ z=>3jF6y2s_haO`D_D$=tLlmCW_A$kJRkfTz?%S~vrG=l&8&W1XRUIN6`#4mcZjQH( zPYis(6SP`Y+0Qqp^CSIB3jX(>_J5xb4IEPWihKy?0y2)=g)H;itZiDo@0%BA9IDl| zOZ_O?W2sCL?){04p}oYcGAPBl{ej?v*$>hV&Rm;+A@8kSOzDUu{~xyAIxNbz`x>T4 zB?hEn7$hX5q-*FBNkyf*rC~^kp}Pbrsi9Fox&#D47lwT6?c;nN0VJq!7H3gXj1j#|87b!VP}Yac-8=SE+uwImf|z;w&#y zEr1*P-^ zPQ%dtuEb>Sd50)`O(!Y$hkR0nO|a8}>&TxX*wM{^p~j|k@M1b5F|g)cn-|I(RNc!Y zs%7W~X~YVad6dviif0JP z_}cL-|9iE|o4&2Z&&JgEOOKPb`3dV9Qmh5v6N>wmt##W#8&p!I0r%C>9qcLDtB z*Q)axuy&Z^vI`3!u!lxonOPDmUS(nm(W$?CQ%n|kha?!!e(Qn_z#>=| zzXQxi=i#%Z&!%NSfyp*54q?b;ZjAK7!Kl49S|2)LYhcWqSI9doLFDnG6f#}bNP~L} zYwD3;qk^0xXO%vaIzK^;w5UuHQt+{RSkmHy$L_fzfX5;w1sm9P^Xzq#Y`$92;CQ7T zIYof)3kpFZDF|4i>A8ZKmNLocF!4JHS^qzk>h6;{uOP(V0tYHC1kvxNpOlKSt`5-E zzWP5_KL6te_|NBD5V58~4tD?2u(6n@GW96{=T!YN>S|+SV%1e&tUOd1F~y6BKiAf@ z^8~tb>6;zav&cmwM$G1>GD#H1_BL;4VSWg ziwb;nb(s7RFbk%o9`8woDfP`}U69N{kAfQXdI=b3J9M%&K0vP22X8h(h7cPjV>8@m z@qY&K7)K6V2$o$4o+qrmSHDLl)$P)l+HJ|jfA*y9?p{wX;n>xXHqNh#x6Er%!zkQB z9&ckY35PbchOzqSu2?FbYYVXEE-RVp+BQ4jOd}7Q7~YKKIY-v<+8PVdI5=7L@XnUIzI&R61PWC#8QI4#Br# zl0KC+HR9omv?>>lAMSB)yNnM&Y+ltjF)<2f205}y1Nx_q$yw)z200OIcAXgytEZYw2_&pw zKaQN^gvdbr5h+EZ+H|(~YJb~AI>vgHejb`UUri{5z*|rEj9ThbqX&-AMZdPW=auvP z2l1!V);#ki1+QE|uxWY|A~mR4%V$kT5Us@2BgQ2kI=AeSb-opwBcZp?e}g*in&>+N`sRWadTCM7s#Fxc zlO_EW#h^RVLCg*(F@~K1-i?7eK+_KY6Fpv~B5^F+Zvho1cfOlv+aN&h57o;i{U~Hx z=;_o@vG*Iolk|xUTCwqrhB42np6}-?JG{jRx*Xk%kHoB&o0BDvwXXH}bpLhS6%2v< z?RDaj*SwL^Imgr^C10QA5FM_27zu4Dz~y9M9di}#A9rW}qcWEk_RXX-pLGsqvmz5F zy?-^pLsZoB`1MVLjqaO1F56_fX4j?Z67;9P8-N9soU~Q*?n0e)CPYwH)bXPY+!Yhw zfLB`_>d#JExCP_Z-{2DL^hh!Zr8WBDyULBPt2KEEL*3m(tb$lhyPh@Ahd_J6zpDjVKc@p`t8 ztjNBQqNr(9vzWw4K&w8u@^xY2VB46dg8t4|+eWU8tlNHd3rDViaK(w|FPxDp<&AtncvJ;{Q8>g;4jYodOMq@6rh%?*KU^)Qg z=W;g5&f_nnBcy$6-hJyZRoti|jo|l%_F6c&_X7rAq{npOQood+GtR+k^j=QSreMH7 zF96?|aq&67;fR6uieaa$OJL(j2|%q6Wf6_ z-yeOR$Zgz>GXe8MdPQ(E!OvpER*eCPv2Z9^bE7m~!Z+ znncvgIYwOya+H-vl;+s%;tjw(0v10tXtNrG1XN4cKBWh7Gs?>Vg46**&qk2qbpSaW zi(IoJ+lam2*#9m7Xn>O)LVMz7*ao{}Km}{J{d)F>BZj76zWVM|Bb``b=0;ci zzL4&az<$m63%#>URZR}GC1aAdQNdw}SpIw{F0ug^xv%xWZ4D$oL`Evj&-+6>6h(e( z@y=zDeJWH*?4q^%Ga1YukWlNZS5#3=UVSb_KesuOgD>2eY|VRcOKQLoH}d*_c~{ud z0*=zk6B~Pj3de%7N?{kj?US?KCB+!RTK#5GK-=ub*N5QbjPYqqRC^#j|V4;1_TD?$kF1@`^DU6PivpGNSssUPsr8__H=%Pmn@G z%ipTle*8eKF@s^|)#}qU%@LXCZ+h{sYfqQYoy7nVlQl?p>$}NVPB)q}_~HZU2>n4u zXMWPX)Gr(Z``@eRP{IkZhXo$L--t{MUa?LDI?BI4emy+e=%FVo8Y^Q}q4xC%m@7yg zdoS+x`6On4vIGRwOPb$vbFk;ahce?29jPwm9=j1FbGc9BOFZM!Gglog%ov96Ts{K#H=42^9Ej4KFe)@!Uu5A$rc8tZnhzZ{tc8~v@AkMsvNR_@T#V3>+%i1kJ@?6G2^(kTSIUEs_~nmkUy*-6))^S!X`SNezGQBz3nmxvfTYBAT@qH4yOsultGGr1sDH-M!H=~-}* z&Yw|N9^u%2@BgJ{fIWURAo~llpLUF7wQ=d$Xhc*S)OHz3*gZ@CXBxgIzb3>@>xadu z880>A_m+=08UHl;L)|UAkv1Fc9~`f}$r4GE>-a9u;?G-X=ek;kEthmC)D)e{$|%L} zjuF=GecP_8hR{MboqG=$YmwEI5dUA!hv7W71|abg z=kOK8<_PikNhg1l0#W9?y{z<8uFJ5fj-C#TTAm|dfd|K_w9U?7F52u#EjL{UaWw$` z2x&Fn?K*itL`3}W*no}Cs%nBS8G*Y*dsFMW;Qw^<3M`PIsf3dG{8~@vr{Hv--R)_k%Xi z{%T19C6Xra2OJh`bP7K=5BarzbzWyEkVGf8*=eqk27SkV64Nu$ZIWcDll_6t79xmz z#Z4*cfV0fa2!i?}R=&nNn@<~(d841H{k$;cD9vxLH~ZEtOxtAg7uO~Y*poVhCB;~0 z_rC|kgJGr2%e&0mRzIEEmRdEF+D}x-+AWFYeXbep%0IN; zf*)DGneL*}-s(2prnRK0aZlHN;p*<2K3=nqt)-rD4KfJbkVYDVVgw1`4si4N;L$dK z&OsD{S;FEOU)nzIi`z#IJ0#g#|1a-QvE7x>-tb3777UU-919a{K$You9|!Dbe^uzr zQXx%>HF&?|swaZS=6Ew*s_t?)ZSwz95&vgI&nonvCWMnK(iVDD0n)=>`o=!W(lOtB z37D$9Pg#n&QfhcyE&F<7+(S^%N&S499U@vZSg}w~lv;dUN%aMow`mfI)v^++QyXa& z+k8o&o${fpMZcVb&j=v7*3QrV9((q|c-2PO-gZy2uZDLyNS#j(7FjKAJw`(JN1ovx zJe2cu?=qqJ@G#o{!~QDgH)T{&jcq?(xw8g89F2onIk9)XaWX6`W*#x_$wa`$3pAj= znq7~k>4#3jz2+CRPeJY6An{cbo_>p+LN`3ADsZk_GpS=PsjKz;*>tatj0F?MT5?It z9@2qh`@^H5IzHfFX~;+34Qe}o`|6z<7`R#C(y0owo+bh>(5*=;${2Mfe|Pj}rgaXT zd+C+O^t-{!eW7C)69eBjVhqRZI^$F~=)Xe+bt!v<%5I~g8(%y@`sR z0WY%AGOjl_f?mLIK7@zyvBwSNAyb!BbTr40ZIymo5SX&_J@@a}#G zmTBogWe;rWVI3t)xCbclo&Au)Jj{BwuWqKiw(WbYfjQ@H91FaMutq}LvXF( z?#jVxz1m1zXlRc{v|3aK8JP6j|Le0iI8hXnB_Zkv+g@x?YkD0peEzob_(d$uAL}~n zsKk(DCVM3}@6_n5M+4=t@`6FLl2b9b58qNsSvqoQYu!tFtb4?ejr?AwST6sqLryci zAccz1VImnLzt;XYrswhh)j|1x9vMF`F;*{4B;wSjdvxmYKT>>jmR-(LTc08@;WD}Z zee}F$G!XDe>QlpJVF^5&A%Zevc^Nb25|9va-Tc%fl*iVwjNfV(mt8rh_T@z?@QjZBfp`qy(>`pXyPj`S&B012(w0V(>jk56P zwR`9B`-0_<`XT@^QRlb6bdVaZqyhJQK0d?c@wnDL6qtAOEc&irO$K(&&7o>CRJS=s z435!?hJs$gnBGiQ9LRP7dRyv|joXu9_k9GlPHqmnT0)+PA?c!`owku5ElS*Jq9@<_CEm((ZFV>*Pu2cHfWKY zH97m$gv>%a_Wo*}i34jX6n30=QgbDto5h)Nwc2Fz5|locQD)tv_7H}$;D7pBUQS}p zT`G87FBO-mvd4c96^7BBoP;_o(mGW5z8`{l6CGw1G`G8z22SYz$3{37@T$;Deq z#_!yb;69=o2o!t3-H~D4p<9h2KLGez#@WUajQNn7fOpBllTGo&;hJ#FHaj?<%AKil zdLSuU8T96z z%l=)SKaNF8)P>PWNuQvDkz-#_qR4~&g$N>8>|Yb6#3fvV1DpE0As^Z7!X#h+XVtqD zR@+UWM#3khwj45UY;;HzyR&IbMpr4Y|Q>YjUX`A`>a-3KLC#?eh}l~ zlLIc6<5Fj=jD8f2?DN$$%^{p2lhuZ)uZLbh_Z!Z|V5Z-}QmVpF@1cH^yk^{t(BL_% z-qvmOgI=j88fFK3ld5oCpW8yd;}3Ke{!|N`t3y6_43qrT7iqCxEY?qPOVbE5wEm7w zDGZs2WgYfgI~*X~5R^ZtH#{dUx~d1f(PdHC(}K6@RfSKUCj^0J5X zz*|-5c!H&b2MIe-*h~y7=rIXfa#HAEIIbMKPgv+G%bgSwAs;-4uqVy7dKu2MO3$gj z)o{#eiM)=HLY)0ea^{397H=p#bE~;K$hK0bN`X>`J z`K@Q0U(~v6PPI$0i5#VbCh;|MGvTw>e8T*G zp7|oi@^nJ$R}O)((3|@V4mH|EC5oXOFOI{F(1#Cf%TH3XA*m&@{L6LR zd=R{w`SHQ(1jE1=IrmGd%4>_-a1!0W^1JU^5>^~i6@D!fM7zGH(uBOP_p|CqKQ?)4 zS{YqE$uEWJC4(i?=5Br*7dKAJpMLk+K0|_S)z!(G1lyIq7a%_Xew87J}}8(O`G4@-_QUPfaPN zC=2JRDJuSTB#0>7SvbI@=QO`AZM*2#=2OBiPdfNHnK9Be=@A4fuT5V~Q7eR4_}mmj zo~nt9Y-Aa*{KU%fug(xW_d4`?niw_7`a^$Mo4?N{mcn#OrkGmrQQuhtow<3?%MVpC zmde;T*U09e17o?pL^k|%LdY57(Dks;@JDYm$q7!&nBhjTo@_>V6jQfPA^pgJoP127 zWy9UqOVD^!Pk9r`L8+GC!%-iY*%`uRGQb(ibAdSwobcybQh-DX-@BuU3GG*-hn&Q2w*`PxUOHyV8huRu<4E1H~d92cj20IyvFxYmnqh$y;Sdbh)*^C zqNif`z!2TpS+Ppgz6XkN z%$E{g^{kpTCu+$`7~vQu{|K7eDnD|XFC}#!o+A?5Hy;C;V$TSR3DHdn-YE^t^IVtf zvqVxSZpKtVq>C3&2+Q4`4Vf}wK0l|js(r9mtxhXomOxP_dRMvp^Ln{aqR{m0B>sUtM=MZ^^E*pGbiF#k70x+Zr^P_bvKs&WQ{rMwIt-nrN=cdeQa$HQ-$w z^^90>@y^St|Gd3gmAiSYt`g;vhdWPiuD=*R-xzD;>l0x=$hcmG(cR~@U(+_~SM~0F zd%{pBSSfyM`R$7W;~myp!z_Ikj`Y` zXU(HaW7wU$OWvN{mPK_D-=`|s#kpwH3e^74d=bYcRqz+CdpxN#QX}b}tDzAV@_aLf zN=!ql9$~u>9py4Ssn##MH+Z%+AXt}R0A5#YfHljJb8*g$<68V^cFe9|o?^;H z#y_d%g+7pI#8*gt8G^U?tQgwHiH9R8ja)5;e(2lZ9ZMTbQ{hy?V05^htKA;DqzZkU zw}P&JSh>NMd+(tjfOb7y`q)Ba1-)bOaQe=_Pv8-kXBJg zRUWId1Itbmb5mC>qfEV5nU8U3@8(ubta;S+3So;8mrLjrK7S0)`BDNDdVx(p1EHg% zNsTU0t!@l(glu48y7!LLn^LGmU^3|~KL-o=lk<1dTNLiua!*pvGQ!o=uk`jgm^q2k z6HGXSdpgAuy07fGAuP#pH)~D({mz3)ywW_)4WhKV%h2c`>_k)k_UA%8CZ^=buH!;s zemIQmXsGVP{2Zu7#vMDPcvr+(!B>G$HW;RwOxb=t8DM7i+lqk?0c|y&SB7@y2che= z92Fz8h#&O@0$&cL*jBeD>&Id&o!+`i4Qc4s(@$7&FP6spJ56dW<|wBUE`7h>v=pOz z<*?4s*nU~xRJY*^s&R(c05GiDgeV6Aq%qQvW$~BX4JE?Y2$3_@#81EnV2U?PXvSl!(4O&&! zWz>eo&gvfxGd}#hYIU!-s~3O2&E%9+KXJL~#gqg(O-8)xs}<(HCpi9EW#prfHcONu zfqZ+PQrA6%v{P6VM3O~<(p@l;ru}?tf;x0rB5Ae?yopt1itRAT)m(i2gqKZi`NS=+5M>}Te$c3hb$JXcbpl{9kTZ%2!d z`zYUIfa3%V_C~J}FardbZ0Pf!5}r`b8yPWpYUnR+{k~kO(rR^{xg4q%pec4Upx5Ie zBaao40fm-;%fCb^@_)IF|2p4*DGFH+J-RGI;%{^Wu08SX3x^T$!;qC$b2-@ z-}rqoXZlQy)x`FD%GQaCo=aiC_sUWsCbJ^PJzhi`&1;r2QWcfg1phusS_D=qBNTzR zyV__;MUNnFotwH(UerW|sXqw7+o4=@*lP8^uM=!aF zHt+|%m6&oQMJ<7HJmyic<{9w1-fxT*XE-ozqvXMA7wJ!8ivdT&b;o~DxCzO*nI47V zrr`sQIcqNSM;f=7H(b@A?{4-pEBows$wT+BJ-BBXq4xB&)G4@{17#jIS3UEzVkRR9 zq6f(#AbN&Y+}k5QrQ64hC~L}D&yk~T;&%PI8Bn#H%^8jm2ATZDb88Q`-|V61W79tEie%JCzX&6Z0VMjLF3$6oq_YPL_wF(iXziX$rVxcM9xttD8Z(sE#Bzp!maSer_tk0HfLgnOl zdA>M4hq!1lOnFaZ+3!EUuL%8f1!97G4?M^69Z9mOzRPO#d+4V1cLc5&UE)$9S=BO= z(|7zGg1P)KBg;l4Z0mswDO~D#GRWj#DE-UU0Nc2S{H#K@5V*G5ydvwFQJ0+cVLiig zGyG5ki%iR$D+p2;AmS6FW5X$k?i$#U^+a4Y;?ytYgKuyhU}N#f*~|fA=9~c%SNi#q zTXg6kgqr*@#|k(#V;~LWtGlR(zfK7QB|K1Q2zKlKZAt5Yd;bhyaiH1x*NOA5i~FR^ z=n0RB-kT~na}@qMKB_o6mzZ@AJy5n1q58`j9uG|p$#(9&NeS2a1-mFy>XifHIFwC? zC8{^T+Uaf03+d1G9f3yT>_C@-R9>y`4{u|E|5mSA> z;cX2KvD&7lwu#o4Y>_4`tBrJ>9R}LH-`zT9`hHqC-H$$wx`pYklSmNYArBukdfEx5 z7}Vh7@+Xq)g(YT}!VhUcVEums=YM{d(55gjFpzk=dn=izD=Tk?QxV%6Fzc%P;lcAU znuM&$y=kU*ypdVG2L(^u7?Wmj+D4ug4IV$p@G`FwGjHNOsSQtXp=*(? z$L3-v7?$OshR)sPgekoo2+|9bVuPHKAI{Mv2!_Q?4(-~WCzIU=cdKEVx5h8fF1^)H zaG}wcYCnatiV>6iX$R4(gPA=zErHyi#r8e_JFsM8Y69}wV8>zjygXPkQ2r1^x&t0$ zzQYH{@!zz>ZzqN(;3IYg{WP2Jet~@2wj_oWs^mA9SW}w%HS>sE36uGuvfLJ`z3FyK z?g{FAAn&bKUjshI9EjhJ#TZUnc0P*RBT_I*97~!wb`C$UH9L0ug|Y11KC0K0Ugip1 z(!T%I_qeZGJwY4m!$%zS0riKC>815(deP{?y-4%B-SRs)RLWbi%rtSdmEVZf)1Z&r zn)^RjEB*^c{{ySLJ>t6i`jmxp{}=}`cip~8TKVN%-lS-oD{Pf>H6YaXO^%y>%1-sW7peK*zM$9Y-f}#&%Lc_HZXxs!7;i(Y|lN zuXrKn=!5c;1RTwSl!kV$KVkUc%Yx<(sEO#EBG3Wa-9=gvKiV$8g?iR?P-*0yMR`HXN;Jj4f^9+(X%ILLFmL5L)7WXwW_c6wVv{7wXpeusk4 zZpmcn_%T6vcjT=PG#Lta3(>xh@8l1FzNDWkqm+87D(%giLyffO+5vC7E06_h&Bg-Tf-Zd;(8>=}R#n3FNd~Ma zn{bQ1(F@My5SZU4hpK#kD3zTB%4@5NF*F?Hu~I||z7)%6Z&ccUJHta2#egd+Js%uG zSbXze!-#=YvhDt*=0!C!hA zfLb>k`S4cF>EN(%nFe>=v{CupqPhcsz}4oAAv9cTia7#b4EeeR;KChxdVB4Bu)Q z@C3HaQh~5S|<6p`_1v1pJ1N+fpC^kdnVAKzZ8`=`(B zK}SMrdxo+k7BZ9SbKB0Rj17b95GVtjDFdiN=~F zI}cQ&n^E$i1ZFlbU-Ky`g0zR_O`lLOz)uG~QtM<}FEfx}3ozF<5-c&GQg+u!n&tw% zkDDZOgbv-=pPHks&j_`XL0W>KLMLk43AwhBM9CP>GoAsW&ZFp%d@ups%rjid<31UM zmYXGrg$*f`QbF-&y=%2nY7vReIg0`K^AZe7T|wpV3rlY& z0thu~kxbh6y#dRZlC7e(i`NAd%f@N{JR^`1$>%2un=oofA$SM!wu>0L1WSN2EQJyK z{GK@I7O<_eXEO5CFtWitOke{a&6R?|^Ed&(|86SPwhF!dX=^^paUB<3cbAC~hL|@q zJ~6)-W&m$+;>+CQ!r!(?=aZFjoLVd|UDpkkhnCweQE0B;q&RFySD;#xq3{+(;{~__ zQ5@X~ZuO5OIfs6W+h$VIJ%h#5R)@r1;Uq8=!Ak5C8y@uDtzfTvUysJIki|GD`bJYP z=66CCxK7m3+t${SyXI3rwQW`vz@;5ltIy>q|6VD(Cm8<6Yk{BdZJR?lu~I%ikCg-) zhlZf&cf>GlZeEO1wVl#@Rz~JwTvnKE@so{>q-vh2Z})yf8&hLBmYc|@D2x6(!M09g zb#QvJ`abY|v4nu%8dA(?BHa&DKT4lBD^#YKa4DHqXY0x2gNu!D)>S9A?;{~0QK7M^ z%$2lcQNqeyPEPV^dd=nZsg|iwTb;Zd>|vI_5$>ZG%+vdA&HG%sD*X$sR{{+4LjD=`E~=QGRJEf-FeTRaPkXF!iMKtvnzzUz_f4W@r)Lps0wc949Pc~L4}B-9*%A$*bL&K>#iI5E z!Rq|qwLiJ~L{y7=XbwmtkVS46q0Jwy_xT@!aEY79y&gC;>HVu@1#mboE1Iv*LE=X7 zHi>OBc)rCibMpG8Kr4ol=fum+EwE25&K}50|vN z=Zf>ybVMOml)S#+oX|z<{&u~q)|_52P!~Cp&p(}!U@M!N&CAU>s8$ycZQ(F|=fRXe z+kTuaV8A(Gjlf3m`^kr|QS1^Zf(fm8k zuh_dJ!G17Dq{}bs2NG2G1MnS<8&O|DwUMyuaFTJKg*mwk)Len_I%3-(nTGyyfHr8# z(Xh=*W_Uu4rci|}|9XZaXt@!w!d+qkqQCt*$l=n${YjesfN9?B*JEc|tA7|Fj}@J{?6AWAKh{v>e8wmW+$DbL~nkQP6V<@xLOnTL~^ZEOI*UxW(7)w<7_V0@J zH9?XFf$EFG2W}ELqd(3;U%qQR?ejgn{?bV6bHwJR#o%-R{&b};&dL8A_ZfdUzOCN! zvXPANI-FQ+j8U)&tBOAqa?->U+hLzytv*!F)#pB~R4z;@gq2e&rm~vr4FFP+B8h!p z2WvbapLkn8pprsu427u;3g=}!o50h=lYzRQMiM2$vLmXe)rj25NXeL`M8XgK>q+nRArnzRvcrYw zek_QSdl#Q9$K%xTjRz>HFig639dDKKGwQxU1Q0 z&Mzl06OLhjL`c7lJQU&9?qPI>)>wS&X2Qzi^yX*+Sm406TJ@nVgzr;Kc1WPNzj_OR z=YDoFNisXgJsykseeqW#lmA0)eZfuzd0P0OQ|a9VGug`k!QU{-mnKMqV!a-KUK31V zQXU(&Rvs46@L(qfR0*k%99s{}@tToseEtfg*4d15j6F1Jw6~TI89%geFeO-RfBz5S z4ibH*_Ib&<)URgHz{8z4XEz0h$P9E;8XQ&dUrrKOlV zi+H2yuX0a9X@!N;hZ!Od%?(r6o^L-uqd?X15J^@(5k$s-PaUXL9)B@;Wqm$l8vyPL z--XTujy1Xr_{ISs&S^v1{9D#qp(d9Z22TMz)WCjQt8C$2wyFLOh~;7&9kTiS!fU^x z4DRzX7UCT+E&T#1g#owET*vb(<7 z(R_yue<$p&M0;=qQIgB1;-R00ltjP`PPt07Rq}QK43Hf@lJ~~Zjm1c|6bW0wb$8?; zn2%wE0z`2%QsSzr-Ugq5pi&*#o)`a?!np0b)qcm)Ka;5a&ywV)7=U)2pv5i5BeKj+ zAdm!@*63q9#x{qr5>W@-DbH~^>k$@DiC>0v1=iziRIV2K|%)3!E1vg^{hm%bZ+!k#p+5_#ei6!`}VDa z)vipkDwCr2pnREHP`v1$A`qY=a%MD8cTnNDaV$74!nF>g<=#C65c&&(WNe}=A8bmq zMdtM3eNT)+*Af0N1Q~)?2wT#u6whyAjLsd%al3WZ2thkjO0VOf_PWa>UFS29DnAfa z+w^L*wS4Yy2q!j)3Wf-l?%@Y3Jk}nLcp5NE%fkV_-R@RUO_rB5IO2BR(-;7eq~CO> zHsudQLg1%-Yk<++$`IZ?31%7}?qJ0GU2~D-G@5l6aGFvXgt&F!54Ftt@Ax|WPSBMU z*$mz(reyaS%WB}yoW`o&fJ`DE9{>)(NXKFZjnnw+SyibQ0G@7C=%<=c#xFfExz)yE z6xpUId6r*~W4e*e6rhMbszV640O=cG|9Koge3Qz6d69GyqcYwQXuUAj?>p)%^Ktr5 z)=q(d%vtN;^wd|dMoC5M#e4leo3Mt24LcQ0tX$8Kaok+GQX|TjH5;h8p4dqgAvsxI z6AYTQI}UF|p0D$nJ!4UoCbE-i_`7yx4@}vOj`$2w3&v})tbT~t*qnGqGZ93*NQ7d*BOQA`<5Ohz&A4z8A3>%r}ra<6#6{ zrSrw%Tj|U4Aj$D)*;Yr?fx$SRY-%0frRu3o18Z5EsN>Dn(2!|0V2@5O2tmF#C$ZpZ z7me+$;OeVQPf{GgO*!u1)v;S9eaN4$Y|k^b+75s~wql%VRl%~8MUKjzO|_VyUoR0pFBLf^@U**uUS?t=$thwSxCh$D)_VGRVn@!Ou7s1w;em)-zub*ao53U>+NGUZD`CoaLaEZ;A- ztyY3FAL_=KQP*Wmwe(K@OM=GWn_qsP8ctnm2N0a2eKL*?nlTuWQuH^t^vV{<-*z4uy{Jnip2P##3qPw=}$} zG`~DL_+`|-2R_(Ze!Kj*z zncJ5X9-ZGpv(?|HG1P)&PhI}Yji*BpFdj2#{`*?x=Q(14=i>9#4Rh?>*QR>g)#`+m zf(v}RHfA@2aajsG#j@6~~FExa}w zeCg%-+I$b^40D>rhtC`WL#*K@mXIljZRUj|PsoX_ z;g#MPbfwS>8UeKk`0>}aM!FedaV`~!%p9j$!JF5YDdn>s2D>R$CQG$uqX(Gk_jS*sV&|WAgg>~`4zET$V~O%I zKj7g#JkM^?TP0sBFm&=#GERGy@l{n{>e6u}6U(2U*cjyd#+caV0`aQvEYD8+zdW4R z1hVUQAV6n9ZO>VJaIaTOOVfuhw`tV|9EU`WtScqW9EoeLX(M~lc5BLGZVUYw_J>cf zB8ZJyAIz5B(?|dGQ2;j|5J9IWKHjF@oK^-15D^EOPV|YFCzxalOa@DBOnN8z^%xU$!3BrIl_){T_PR5K+9n99#bAk zWI=q3MtF`aoe&lbh#c(`j#@wR=F@Sy9U)xsanQIei(lyPl|pxG+~(tVbm4|eJhk{r z21%=vTW-{xh9h0jkOZMSOZ-pvG;p;o9DeUx3^U{LD5dn$;3N-tqUo&F#lh_^VfaVf z!4Jj-p8Lz!wBtg>h4!wA@u$2Z*96=A{>aMi*%v6zpU-me`P7*w4f-H)tpgy;V=?C` zfCQK$=j~%_Xq*NQI?jL93GW@V?DSU|(W4dk_PjmN!0ph;le(1@X=ZTHpTY6u^F>_~ zQrL=sB&xt*&EjJUu@O`xknH5UM1(&o5s~96(~d;$6&gG?e)Tz{c2n*}PMklW4ffTG z{TEorg;y0L8Mk{It(9t=(66dq+AcqqlDw6;^-%c0JPn8x9}+Cdvc*kpe=e7Jhqt)-qRY@upWwz88dK7Wla)vxKy8oVokEL_(W0P`Eqv zQeoU*@MCE1?Hf&u?Fj0tJ@5L|0Eg~HwEm<^@sT4eJ^4>GK!(rH*zVnsZycrvh5bg{ zA(fTF>A?xu&WbWK3`8dLE`h)GG`J;4(->{cpYR$7(_sz;aDotB+l6kQq56_!ez2L+ zCO+hL>v?Gt=~QaC-DPPFu_6jD_QPaKK>iSa6a`*Ds}cj;*8s6 zFE6FYtamGadgY0jLMI#+H{L3hu!u7tF*k@G@-@BF)PhNB|0TGR^a#ixnE8R-TP#f~ z&AJ*EmIJr919}wB-iwltkrhRT93)V_T^Y#)bS2#v^`V)2Y|g=!3hE0$yqY-b_jUJ$ zn3&7VbGHD+0ZH_6*CS&y3ME1OA7k-(YEz2EGdKmH7BnucWg&hkBmmZ|;CeU9j>&<) zth*t|^C>*FmmluFCEt>Z#<>7+!;Iq3>g)LF$&?0Ybx*K^3%;zx@>h-%82|i!>-zjB zG|n(O6qL0ZTn6pYfiMyJ;m!EyI&6>QhVNQT;@Lhx&SrSm=?&dCiMx-6JeDQc>=AHL zR7(nrbeV(l!OzxlnyufL@&<1+8~UNxHV3+#r({i^c>HoPd=lEfq%YJ^hjQ^9>e@2if9Js zVTRJj^#+t{YnucuUywF)m;yD1A+?oRrj{FZHz~LcdS1qCqUZczO_-Fv`+#4yH4?0y z6hjh#zOtZX;1jv@VP*(i&-nJmWg{>_YYKX)=!o6%Jy}*u~B$L!< zoSLNeidmStA6=naLdNeJIfA8wK;Y(IQNJ98$b|TGwI}@s*`DCQ+>>V&9zN!W8Gy~s zaVr^d`CSZXOfQ=tFo*nTk3&8;xtXQ?vnn-Q0)`;DBR(FH;Mk>Eki?Q~t2ffWqY+Kd z^Cjj8*I^00?vA}G~#bvjNrk-pIcOR}&IG}4zsKyD;gVe#NB2=n_*{Cz1j;q%E0lrb;9_9r|y;I|?MuseuDiEI*p3 z^~?Zip2Px3*9`>&r2d4OjkWg&c7nZ*S(+(ThRrNa*T5G)C|hU@pu{h(?AQd+zGFvX zr&j8#g(bu}e)g~pI>sbO{k~y$qKFI0DNpr8$D(xT0dYDT?9D;=OEsd?`G?SF7`8Uh zK@wzJJ!LQ9c{j|oG<759*X9p$JNFOWJ6f`K`O1Wxnu8Lcvi&RUM7|;rE&a-1{gZd_ zkZSEEkAI?HZjE%*UdHBO1mD9667WugKEb+xN!Qos(kOv4Yr_E!3%tY)Jge)QkM4v& zPEcQ`S=P=wX$?M(%Xm{hR#Q{Mz0lE?3dB)9QWyYE-~G|V8z3CaL!jILP6|9#qwmQG zKaqP(pR+eBa>e}qBCOBfclEd^Mu#^(_cgJjrAau2qdEpK2=w#(OhY?zq_1sya!~Wi zk~eEpQL?I;Ixptmh(PI&f%yhGmWPU%4@e4*?CF?4LcOPeZQgzS=Pa$1I(H{WndSv) zdN^y%7&0uf75E}&R+O&n`yQX6_L4mMgaaj7U2Q$AP4{120LnB^-7^I&E&*9YcjeQU zYdJaKIN_xmd7*(set-Ze2+nKdhf_&6Q}E(2k`J?c?PUT;ED&uW@VqcvVNW&zfhg5v z_1mc1BV1h;5t8hj;QkJ`Z?ziufG&+dheo#lSrewEYvFdRSabDR0y+YEFuNDaxzHu= z(kTBTCBJGU@CsB-=Tu|l4pq^(8{ED$bMgt1E_UF zO^&?4nGOOA>;XmUCSdyRJ$8i0;BSZA`{&GrIEy!)qeJm?iedsMK;Gzs5&`eVJNGgD zfzeQrj{NC3%$__|$i^0u1fUIL(rGNzm7l;1kdDjNBBk9CMdpWnsTLx?CMJ)zw z%l2N@u5~N#JnbO)jl2&-$;)#Kvh0GrFGhTdiy*lxr%W}qPPlyLCcPjA(~QKoqjt>S zGHc%b;wj&>e;EZ{hm5}OU}V|C2d;?qXPA!4k((tC z+=3Jrv(LFyJN%=JpVB_;(gYWdwa;WdvtP)1WnMPwV&%Hjg- z;z6=ffcP8sBhxzHsz72^J1rWs<20>sWyOqcp5W2FOa40}x`j2FF^GuB>E#+2tJSWt zj0ty)Ctg}`GI7myS)MZKZy1lGKDjTn;kO(drlyzx66c;mWJS66^1!IM|Fh~+6xZYFU2+AbcxET{r_iuq z;bsv8b%d#-#UWTl#vbYBTE>T|%s3Co6KqcEIPn?!BUIVnCaTSZ6XZv3a5eGQs>0TO!r^)UvB1~)La|&JVc$R5RUY7r zI{_V1TbbCW*lvP_T89)}G zg9iwKky}bC)Q!H;pd*?z=45@oR4JDq!hlPlzYJkSa>t|wcqE?iR9_UD6VryEr9-g3 z!`}zK@2P(oOYj|zu`IYJXNh-Ru5aPHCnrD;>Rv;S6CiuPs5oUg$bz;kcy_RiG$lHd zJTUL5RK;x-wR@)-dExe*JLF|et+n{CfpTtzN5a70-^uIg7gOGrYesz2w_3E6N^QM? zfu0m{`iz*P^Y}d1Q5dlvK#GFY!now+!qfP7^P}yD<5L8daGKWdMtoFtewchQ zaZ$%x3uN{C-X+P#d06XQ^QHTajd?Y`u#2fy1_H~Zd_4A#Nh~Oc2JqhcbmwL#lZTz5 z9sdx(*XSR5-h)2>l6=9}D>I)d5)#t>l-Ke%qz}ML!0~efNKon?3{7rB^B}H} z9C+W1r0!%=s3|hS1~pU9$@Oidyz$7j2s2meTM!NTEjfqJRPnMfaKZ?6oa8r{bNjYJ zps(zW*6(yvX5M#+;5wKP9z8ep-6z!FUa{)IFhLU&;UB`Fv)}1EZ9GnDYL_;i@6lxg zCEx)Om<>sV_bUczQ-bqn6o6^yj|efnu_Lt@s~|kK-l*JtVqn!Gd74hk7kjp=@JPX#Tf-lFtnf$JeIx7~W z|H&MI3g11NQysrI{h(Jlyo0o{K-|=Kj0P_UH--90JwACNp+ta_KRsW^-tw>iHH!ZL zkQA?O1L)o!UTL>s9=Z{r9#GwSHf$qm<0Y=uZcpg2aSHacSKKkj%=wWtLHXbQZOouL;18J`fqP7#-s_Sbn}uZddS=xA+C^Aeh#*u3}Ox!7x-FhZ)qbdO5z zQW1e5z0|Jq7?GO^-HTFY%m>eqV~9S!mw!6a^xN)lnx;Z@DX#CFBv1j9iq< zp9^|Dc65ty5gi&-;jCbNQdV|8u{|pn5W3x8msPVZ{co75ZfSUQs${xk*C-{2Bc%c3 z{73f?!+k2S0kXEs@Icnlea2qeC80ZP@zQRcrSVu*rB|=l`Lx6K(tfN#T=HT@S-$Xb z`^=1l7EROgc*sRtVs;bw(bZZx;C8~X@nr@ddbo^WFlc~TPuOK~WTkO;6F z^ofWO`tko0X9BN;6qriYKj$ZIh%O^c!4*h6MW_V2uqf`4^2vhH?O*(HRL$5A(w|tN zMq)br$h_1mA}p>r?(KB9Vea^L?Kao$$!ucMo_x6M#})6?@p&);dtzui3Mkf{c5s$M zDeMm>!<%|C8~HChh}}l@QM|m)HFImTv{`D!ZyI)@8*nQGniDtaL}?#ot(tQ+ysG=x zbZ0k+B-A+Sr1|n85M?6<+pPcwIH5{L@Y7Gz*Te49(yhe~>e}Yv%!0rIW<6y}n-0Ny z=A=#)1#I_B3V`&c5O)T_;me(+1jg;jsS;rzcmSCEfZH6aT}CJ;rSx%7&Qw`yi%U^` zaO%`CjqAx!%M3cL!8tk-hU+AGwhGL<0Z{a|p%+>)E_2viH@pu&u56f*cCsdL9s3 z7Xlshaq2&aslmul{ICtXCt1?ZT!sy?X+dN(-7x8QhG@5RwYO!TVVr9x$Ep_8gC~(W z7dx0!_4w=fLm8UGmOyfZObiM8!IQrg7iakqubCy+83+k(|Gv9hOwyc6fixE~TQ@k{tWGP*=jy_-6-0 z9=!`*7w3cx08@q(%}VpuD46A`D|dh0>BePlsmJ{;#}3cKxxL*Q^2~1Suv)OQD@`NL zWg&gDdcyOsMgiRitair1rd2Ms`iFIA-i!>p=f&4%ZtCGL!-_-AAWVUA%_4@vdXXFJ&u)tzDSSMx5S zF2`wi1Whis0qlbL*KpesKbM;%)@pV2YA3j=omN&oMLF-E}zi0-SN*t zB<9JfPG??@@gsVC>$Y@lw=FQm-l433D1HQRj0*wDfC>cYaCp;*sJtBKJ%Es5)J?yr zqq<>6zQ6G!Lf{k1nOXM}@Sn}8XVt9*gvG5fHMN};L;|l`Vmjo%j|7_P*Zs}?l180z zdhy5Ld1n=anO80{G;8o9*QZT` z1tiZRgA?;mbC8lz;jYgLO>Ao3aOc(etq)( z6~}vp$>8G=hrEkW$u35k}Zh}ig%S$ zpKJfkOsXXxf*~)H--UuuI0p#RA^u?>h84o_zOPrh$y|d~n1KO zJwp3CETNf2=E7?mI-yba-ejG!4dOGSNN2J)D}~a@h92G2Zr}nc}$banDZ! z$xJ_b3dN-JaJKpAEWL86$?&KZ&MmmlXc>I@WZVlOOe?yNc8q>~Dg6tGu1C9XjpdpF z{6cZVJG#k>KVfYo7GFvPMAiHFz-cU>N`$8<6&{PUGgt2pt-fTQH5y5*_9L1T}U-# zFzQd2l5^)>Ko%`Tg?LS@&q@hW2#Y&#ajNDN<92<4POnZ=Lj`oinT zP*VO%%;%FE2XKo{pwLv2J5?*;XB@pkyTPA+vTuPmtB|O8$Ad81Of>;$p6c>h$8v7x z9+T!5wBPq2cIq$E|7t5DA?U#5Fmn1IWZJn-#vM~R4JLcs7sBGB@x}eZo0@+%)$Mqt)p5^MiRgx!u~`QNaF{2p7!Cdp&N>SblR>?db)JL6r)QNT zix>WwGllyku?=Gdfo@CUF!ZP=GvvayFdItu{kfeO48awcB;5-tFv2!*!4x`K3n1=< zKgkXF9rP)JlRs{Ft-)+NkNQ#qa$5|g3*lUGeF-Wbh=7OELN#seiCZS}JohWlfpN|B z@M5R@`NVVgBiq53-!wJ9;L$)RdeBCmQ$WLQYlyg&;1r$X~E)Ic2>Z(VLjGG^I`@aM$0&2#4s}RN*`WX82 z;$q$K&-a1Gb)?E17IS-*N$)alY^D-wf)JL}le*sa+G~(#m(MzK-{zaun?iSW%F}*& z_(YfWG@xx7ig1T#G+m6I{~V6pLB<9rFI`{emkslD7W{chz4IweGGTW^qAKQgY}0Gb z*hnu}L_L>c8i%49K*G8E<{||7CBFROWjcwAkMGwly_K8X`8j48BT^fTeu5RNLGaQ+ zQ@aZ0Ck71UFajTgKr}z%7gx<>=cuazgjKF zxA->{9g-##0QRt!QEh!539pUK7E^-v_xxP~%vfrl(9KoJK!99+MI~R_4S2c9@-to> z_9nob>g>}@wJif9y4lYw58px7X@esTje(0l&A`AOc_Fn-VgV3aGP&d0YA!)|hZ4k8 z1SY==w#}&kKPE%LNb2(C(@1=e{WrFi;8B>$LQ1#-T}<#Kklo}G+(%ovgmRxJ=MxVf zUa!hE(6pj)Sw7b+doqkpV3v{P@DSYuD z7uWl6iPp$y+Vdhg>i^+&c#&;x`aB%WPVj2w3_?MjckG=>hs7XKm60M9Adl%H`3#$A zj*IbQ$YDf`&~W8kmPdw+62r9LutmJn7eRij$u*X{nY%GiK;XsYn3LcAu7%%aW^iVj zslU*H*4+YNVI6&QfZi42QsNb;ix)sI^=pE zMrbqe<#nI5u~Biu&fLl@KM4^Vjt*M*O2V{Rl3yftPtGXa zLe3D!`mM*mCwC_EAJmXZU01@|TkBX&xj6so9R)&VS{VP)Oy{v=nKmmqMMoO{8}z&8 zaJi98|4+~_XJ)Y9`vef;FhXml(uUn0zKu}weeEw9-~dv2Hf6+p^mf!A2=;(l58&X^ z93va&uIpwpK@r!A=$^tHp_hBumB=OoFmbjxgdz4qz@ED*Z4-AvHIup6RqHF64iZ$2;97;;-W zIp9`uRBKBDCMt1?;c=HW`&_Abi z&_G_(_l203W@DIQrw`%iAQhwQt(V}=`>=GFN~?ag1gz@lBW~cjoeAP40S%Q1OfxPn zPU7d+jEag1C~$X{@7#0Uv~(LiJzWsY3)UnbJ{?K07hkOmOfGws%0HbKJ150Pd5V1= zMVIY;Ek$%TuE%5AGz$q+HGe2cdFqo88E^25pQ_rok}c<1}{a7F{LT zOB@bME?#sPHMK@{6w8Tanv^$hFJq6s6lTJ=Z6c}-*6qy^;Uh!&d?yqrvKTpxezP>GVEg&)@a1F0SiqcHFG!bW+bcHwUzu^N%=u zwNb#mVgVD%xGXo{4r$WKvUcKTwq!$!alaE{I{6>_I^g=*fyCrEHvr5XF(LQO4~Dv zUHu0^?0F|^bzCS)K|r>~x=~<6?oWW>N5XCUgyLOrDc7W9-@_fcDB`$23_qA27Kv{g zl(yg)DDeGd!7?vNvdq%(Khk(n zvp!S*Dd*ttw-b7Q za}$X{|7zIK^{jeWZ(?J*w)A!mqpA3_=t0wlI&*vxo+|6jexyjZUcTP;UKrI|^X=$z zsicRqd{pMS_e0pxpHnpyRix6td8&>(84)H#ZvraGkwIN3|JPQd)`lE!^-bsu-X>|j zH@Fk7uv`oFaF7TVPADuy>zzs68*+K=pop0_ZQc=91P4q#y78EdI(Evj!2SPVB`y9o z2|Km-{L`NTDAFpHH1-lCBtu3&_KaQLxkwzZ{>s`U^Tm0Fy^gS}Eetp^V3=K(;a7%y_2&pj&ci3XS)esBQ|MRQMEBKX{m!fG0^6L^c=GXNx zcqUJ?^YYjQ8NL9l=AE*s<%*AB6q!xG%VwMlSWQL!Ik7u0KcE0}aQMorvCioJvc6Fh zA>oORy0}y)yf=4Nx3Hhq;ZhEGi0#UD3cQ7S5)8Yw7P}i9eo&n%h~Y{he%{1xC0%Xb zh8RmD82zJLvig$LpwZhyKRn~*=LxpNy5#4z#;eE=q#w>PAUb@X&dkd+auAE_tvYsY z4Aq`ePglJt5N*w{q)y+B&*u}B(~YFcHodHfnG!-`j?~ALsE}iDG>&V4vE0|+XTC1H zyp=@}I#CQ&?qWk%`FA7I>e3HP(ivstgRXD>wf<=(P_e)$O7z;Z^X|j)U#^Mo2M6TK zs2h#>;lph)JKdJ;J!cX>*@BFhRRKwi%w)$}_p2#?)_~-HeOrZVq5zGFSw|hcJ!buj zXcG|aVpe~Cc_H8U>?}yPU!szfZ<@J4fQj*nIemcLmp+EuB9T075~K0>2a)LYB--es zG;PR2AmCukNQnq~WY*k_!FR&46S&Y&RU_sj1j0f+=pH%ne;zw1ZiR7ZUl$#4tZcIu+#%wwG)6q`!fxeCG!t)lZP7tc zG6Ns1dGr$2&`wNi-=tn_w;{Ra9BCz>76;k`vn%usXq13$f$>lwRtJ$}(nBpSf9q$< z^$%vc>zz?kz`pib;`S_Qd8)bHks*>Uvw`e&oU6-Gu_43RVedh>bb4yClhCgH#~3pd9$6YKq~5j6m)>+*g#!zk6cz_Zdu zH)qL3ANv>80Kr)HcR0kf*Y%iOp6~~Mt$D}F#mlI%AN!c>Y5V2=6Gn!n>h^Q6#tMtk z#27})wY3)dVmV6|&%~pV{#RK!;>F;Dwmyx#+s?7&mVDE<=$i()Go3Y+z0m>#{DWi+ z(_K;|{@+cZm2if^ugqynwlc30f(vJg1i$tY3BOR!k;n{MhfAkCoY(|QjOJ&_7X2Gd z@HR$9s;c>BiB3Iico!J*^52Bsb)=188BI>+>Ko*N;vj)wg6Hw$wp7Mqt;eq%km^}F z>(Vpttkh@@RTWR&&&n;CZ~q6DdR?>J07S_B0D8uX&E5WK3(IVRQK8m)x99-2Pm)dr zGf&w#<`}sjHjW1FJGeZK3*8>mxaEAAC0L9LsPHlA7UkwgbED%CN-UNK=#cGHei)D2 z9)$At6F6j|E)lW)V^@E| zM1InoBJ~`i$(Wu|nA!)nn}a`z%#-|_293^r{`%n*V?TXYc~BA^r>HwkyY;2LISavL zTt4r#i7XhyK}8*3!5@||_L8_S-+OfPe`%45e{xrSiXyb@i5W|pRd-(ONMCAiNnJ8D zd}A)pVR*S(Nk|O3KHMuSO%f~=u-qIAU>!BS-iyHvuer8ix!=I$DU_g%TJ*F>%iF@!l@^;AReiCZamN^}Qvv~?~&;qb4ie2+Yr zDE$wL%oXhyE2od(kEvdK zctJfk*w~(<*H6Mpt&?4`+47=;Py)-br1-~mA8S8hSeMUc=J{XLy>!`5b+(wk-h4#k zpX~>vU+dYFi3vEjwwfA2`a3|DnAlQ`*MUD5A;d&F^ult{uq0**=Ja~*cW9?~y6`#W zf~K(3qN?+DOBbv%%uDOfgu;C+VSYrJ_vR1PorayR>=R4o1 zu{0*BH#mSqRfu5u$bQ*^*7q}=kJRh&EzHT43K7~PPBmON_%mL8jh!%;;?GxFQY+o& z%L(c0=-||cl>Gb1ozy|IfAeDOPyk+xKbEb|#!rp9*pAiTu#ifNhQq5bp*ZMpPSM$l}__r-UqRmq; zu{-6S3nHCX(bKMG3R2){Qi-8Xv;pSRL8_3A@6RTX&G?3B!7F9+LK1iLAdkINOPLzy zcc4Il845REhx8{RE)Vax0F)2JiL1eD9Cr+|6x~bjLPJzpw#}e>zwCW@B7_DNL4dZ< zBdv`F3)jLr;j7?ODa{Hf4OsBb2p*X95gNDkWYn^W#*Z%6cjH>p)Mxv(5{3kei_cV{ zCSOG4flAe<)lgL9C8v}M-)8RsuBLnVX|;H>JlPQcfSH^^_6OHzsAreAb513)aYY!> zH0Ht$G0O&jic&y3^|#WWhmH@Wf0poF|s4=Rx)TSpsIW z-)fnEj!iJ0z7Y>TzHlx{H|ruYN_v|LWgHp1gz5fa%~LPXKPZwl9;#!sezjJ_+E^(| zFpxv!m@=1g&sRM|`T8V6M?B1Mv|;q}YhnHQZ2ry7`K%`D-owppzx%ni_`gaKM?x5j zvT=f0M-@j^^Y<|46Yg;5ek+ASI-Nw8Qbavo{U2%MW7xz{RQD-)pjkwCjMvk3RW3qO zW;1_$z2L72fA|uaYeN(7M}Q1a@=Q99y?yd26TzOk`a_?@Kee1cD%h5@`lkTHt(ApC zOhRBG*-|@z4*?o_QYcVmEp&iG{{D_0j)v~ywj;5!pg0{kAF-K3O(i0up$u4-Co|IR z+Hgw%b*PZ5iKgA_-5dDjKDPT=d28Vr3c%pHoD+Jw0kG!R zWmx9p6#6JEbZG)0z`n%HgA6p zawIo7tGc?_f(4bz_k8i)wDJ z(u;UUQdw-0;+Kv#RKUDhRci0dSw8K|S;5+ndRRT2cRk;V4m7H1nkwbr{nBKM7|EVF zEa3@`mmTpW)xOJ*$C0GD1cSN{Je@6lZPAB&?0;V^$+=GNTl}OWAOe>pzQ0-zP`2(()7ha`l3)V8r)mNha zT9S*escm?*qs$-q{U@p|mi$i0%xp9!V}A4>WY$-n0ML3^jUCX+>0c%ck^6Nz+{Shw z5*s)@6gDsjTDNJZfa+Imh!`5zb9Vy*afz}g_}vi)sg8XF%QNfd4l^$6iO;`u_?6O# zSfV4i&g{<$Ea6<2XtzH)?k3j?^nMyaTJHt)T;{{3g}aZn(88=OWNys)T#+HtglD4y zi=j-c1ZdxT0!A=4a2puY_5GP0#}Ay17K$NTm0v^A5t~BB3-P z!N>^hDSjaFuxl|4c9WQqox0qXy9!8(R5%%gg-5hIu5LlT5DHXYCIO^&5IM(lfYc5< zYkyLfSr@|tklKY5y5aCYj_mw^#AVTsmKa+U_xR52)lc4M4=W1*u45+KI8M*i2nZF;; zhtlB?*aaTmPPmj*(qI{jC)!~N>|q;%UY*ra&NyiHT>@OfLbr;s(v{}d_`ViW?OgKR8L|>fBJ|2_GqFp3FDPkW8G9t&HKqwvC80q+Hv{QVn0wm)+CdmYGA*E2@!Rn{uo>VQMo$dxEqz=EBK zHt<-gPvQ$rTMkXF!IozMbZ$MS21qnmy^YxlnnyuuL)AggFvB)7G9q{zwsV32dL1A% z{&^{$z>-7E~7+VAs}YgQCOa zvc&2>Shg$znFv zPYrVHRJa%wi3*hO|BQ23WMxk(O=YcD{TdRZ3$1d=Qv(9~^F#8)SXIEKg=zi|(Y_1q zv;cYz1qvNuy7>Wnnw=S5c_?Ymxs&^uDS?9fe7O{{6_`L?nMS-_ELdEgl&RWdwxis; zh+v!+@im1Z7t-hXyDD{7OX9G0L6xI*6S=e-pm{ zTs%J=_22nfjep{Cn@m6`?!9S@JcmA%$QFJ~kovmC)0OZs*JDsPM9y+5N8Gnm2}7I=6`m_7~Ki4+km$GfpbH6@r8?)uQ@%O6%16)-_Ykv&RECWSJ*Ulnr`aDSj9K1^{HM5Am0!&De&vlRr9uU8`0rj zCeq?2Zi)3O(DK>0_IsvzJyy_+X5Y*P8|J2Rng^(d`2FdzY8_r9|Im<_KH`VeV;Ts? zYh-+0s-Rq>BoL?Hoi6k@E(5UsKMRf+$2&bXXy520cKh-r`UCX6eB8&A-OmH(Q`23E zbhIYw#aZh$HJM9=8}H_oXUb%@FMNUcYOJGu(b4#PA+jnj%j;ma$Z}ICWpn_C`$1pDUZzn z`2j-Xf_+V#7s#0awOR z4fPT`NfHZ|rjFh7okz4H5@o%8UUR>3%J3Z}jXJu>^7krsD03+Va;BPLlfs>W%<6&H z%j&?88>}1rVnsS~?GXuSt#M0ojY*r=yLS!^$m2-q9J;{sUzq3LjYCevGaBfqWRpj=}IdMe)`d=4_PdYEY1KM!LJ=oQ1{EI z`<>g)quYtu1{-Jzs~k-*>MB_J{#+B)sM}Z#Pfs2XJapgD3%<~U_AhI}8|G^NM{-?+ zj!2~L#gFCXlvENQRz$MF14I(o&QqSv1|;_^yPQ}*}c z&+#dR3PBUi{^!gVjrb-6N2;FsL9n=}inQQwG;5rTN_T^CknUn`~(o3DZvT5z4w?QJH`@#R@-Q}KQ?PSpGKmw+9c3$ER0ZX;C zG5MPU20e^GXnOZa!B!eLMam7auV`Bda%!6@E{zK9yvM~iYJ6}(G;puUfqkLNmX{eT z=u^T3kgSV>wy3{kRLG&#lqvT!3JItE0>xMYH^8S5vONF_2PX~l_W|_9=Z%D)Ryal4 zgjSR&+PA#)jUUGCh5e4!{kmnNo+f7T&lS+W#9OE_r9^vpCP`KlK1eK;y&SCdZ5<^QhRD;7VHY{}TZU2=P zEsf}&}$mr8HG(aiJF^k_=x07~W(TVLpv^ID#VfQ?vj=_AazAqz#!n4tb2hv zP-v=)J=;7Prh&i%h!3e5kHY>_1j5}Y0Zda@ph-ytp`+g;LrH3v09Y(^Fhl5G4UpDp=Y|I|eZJv8g0gL1gR_0+< z&OSLR396t8tKnFjC+yrVbjpa|TistdDNDRyco|oJtbsPvq{B~W#S|DKKH`n9_xmhFy|NfJdnR&g^~xwkp)v5o>jA0{yqE#D-ym8# zNlu!N=wf(p*~uIo9ZG|5BH7=T?3~}AF4KWu>PEHuB!sK_?~M(rPg=F>VXupBe)Xr; z33%=3ZtUn4LupA^19Cmq?9KwYVfL_b{x_Cq@JM8Uz~rXJXS?9NQ$aFbcX}k`VHKj$ zbwb@mG(d5Ej}>sgbaZcuyxWq_Pj4BtDMUqG_~P#*ZkPlTR0Z*?Rc>F#c3sD61^h%^ zXP-UHb+H2hpxdj-t>6v43G&Y4@C@EZUr{&S!NT{WT^G$uW@uk8QSc@IZhJ4Ci{-sb z)AIC@1va*nr6e>WY>ZE2Y^QMYepY0m!Rwa}kWoloH%CD)wdt!nITF&uq7aITr%$ve z{P_hkmyQ;e=5KEg&+hX4H#3#_e=IQYxahj&El!#GA9?19UhOY8OwEO378L7FSJ^2IN zm>l_DL;){57@NP_oHrz0a+gh9QzbKYH2n~)EdvB828sa)7GR5^5IgQO?_Uv=y)s#Un?dsJ@Py|vocQS!Zlqt(3Ntg zE4MK6k-e^yb%Q7Io0U9&1Ueyf9KR3>f39it zV6DA%GO8+`?wtBfIbrY2eWW(?gaIly>#J=B6sadEMr?K88CwTTXG4EqtQ#=BlIAp$ z!1jy-gI`JdYQIkgwuspmc0VHGsmG_d1qgmJvhbCbt3^;gUlW)1OdZ>qvEsaNv0^;L z#ptMeFNq0d|7mV*OEMV{ml2mAboSOlTRyFlGyBa&=4c^Dg2tlyj;vAt0%|4U`^8{a ze1mR6|4-(NU&iIO+?*cTijt}aG)EFI1c)q&<*59%LC;6!FC654kHBmvC1}?K`X~vR zVl&uUSlE86sXTYl%F0L{2o*wBnYkKwHzJr%lobXCEi_U34&wZD^H&$}!@xiW%rc+R zVNj2dPwDr9`$=CoQ&;cuG-fBzIKV=x(YOX+=^ zTwGDPUL!X`v|vJII9H@A6Nf_R{HoECxe~Ca7}X-qPxT-1KKw5Ha9acV>x$delC6H`)ZA|<~jZ9d-SEjv+FngmYmRsde z3n|asqOs_I)bXwCFFe&D7dVRrlk)h_4nK8CW!F4iQ+yOfNkoVla{12-&2Au;MDPfR zIe8cZ{_yjP&?5iBP+83XS|l#)f{EyS?N-*}A3605E{DEK_gtZpMVwia(ekqdc>+zj zZ)uLK_>D4KJOVtwU20HMm5Fqreqh-&D9|xMD!(`_8fvOj7v=TqM@%*ILR< zYZeboiOKd8eY;2P+M$9>A>HZFebBsI8c_$9NJX4ousvv=og@)Ao!t zDSZ#+I?gogwiNiJJX6nJLFOb0_!*`*tdJ3t8j|fp>mMb^PivT(IL~^wd=m|8e06lN z(}#?7>5dEYf*K9LL#KBpisJYB5KpJ_Jlxof{p%08SP!LpX%6Ei8|HStb5^1OK>)wYd^HEgF)RsTq~aPxb{f`y3VxEwC|`!jCuRjKR56I%7^yONqulei?xWMr*!`WI;LXy2|Z zVGZsd#5%V5TRM&#oP14xFm6?xzdVd}UJh#R&iS$4I>8uHV6*d0zuCe{5I5YJaD|bE z#h||tqko7B8#j|mXNvVT54YkSUzHC1DspoQtN*cYw85g1QP{EKqx5o0gT9d`Q9aBD zd0g{c%re+CjifBzH-x==npXCuiyH5No2~r(7TJoR=7n0R^FlDQX*b2SDRLrx zaQSX@S)xdl;9EV6Vc_c^dT`75d2IEgQMjfeOU5s$IhRRI zzWmFQ6Z*_s+pRw8Cbzju(m?zdh<+1-I)SWFGRIN`L+yrBw!*m+-xPNTwDXn*gQ<>^ z9+L}k6W?t^#io>1Xv;=Fzuh#?{aZOb_n}|)>m%K7_M0LW?c>X`I7naRXZh z27dm=GYEWe?<{R7R{@6PQtxmgi&K+Q}$f|94B31LMz|ptrra48v!oc#u~(P`HHy_w=tZ z{XAlx&xdj!g05VpuL{+u?|n`Lr7sfS3@XyS%JYM6_{{-T`a>1ZSj;N01{-9R3~Ynw zbiaIlIjizoC=?&KM-P*#(I|STNNOcb?7zAIz*cCWYum`vwZzCsp+Wv%>EGaj;Da<} zGpA>5*w<&yTY1f2!-Sp2Q}`Y8!nR)h-0-s^hVWB@e-1Y{;rcP>=M(b-7uBEM+_a3k zA72l#Xi84wx~K!yJjEL7y{X)|Q`zXOnFg_j!*bh6MZYGjmDuXg(}-Tf=w zZkDhvX=y0la=nqt+Jt;4^~0hYPNN!Dw=(LzIeC-*)MCuqsc^gV7B<**zX&QSw|_P! zUM`;YILht|dK6J2Up4DKhVj?0yH-z_>a5OPM%3a8o_WhyBjb>~jxuwcE9 z`-x%ww)=+?+oRM>?Sf27!mCdKMD%LSD!7bf<3x{67o`i0tz-_yUhuB3e; zv;VAXFQ-2cVTeZHc*kJTheO!s{a&}nujL4Qv_LByw3RmF<-==wbJq2A`r+;c72K>T zeBv&8*gWj^7c@xlVFmm^k3=G$inw)HbS!WTQ&ce*C}LO)Dk!d9Vbuj3he6Z=hD*A- zfCh1>jpUwzvSNicq(9I1z~0OVmSxajt$sHteg8&cgH4lfSh?KtTL@$4sG`(q(z8kf zSAVJFP;iMWN9f}!_s4m$kMOa0KedsZ{Ul!LmIF(sZU*jEHxJ(be@y*lSexG$EDR^O zOYxTCPLSZxV8x0T4^GkIF2SWmio3fN_u|&#ZiV9R?hbE$=XuX{{@-)mUv}1>wPt3` zzFo~$;{2l%Dgu3hJnt(j=crM{z<8*F)tUtq_sa|)br6(D;U-k}(6XuyA#H-~{@rGT z&|aSafE*e?!RjqJxxz)qW#(zYwasdWu+J&{njqO_7PuhN(!*EQ$l20FPMlSgUEV`H zLjv6Xt@7oCzMCl(_{8CN&pPGF^jf9W!8JA|boqej(0cr9F;1x(v{8WQACLWxujf07 zL5f&L9rA`oAoJe0JMpF(AbBo_F%EuNNLODE{YD4pZe!av+vM^nEgvnYE>yhddMyZ- zL2Du_E6a#nEMK0Z{pzRTUP_MyI1p;etGGM*!hd2SXh9{guC#u1HT``)?v# zeyB+F;))%SRX-+OwmZ#xN$t;V!2wz0hhIu$+Un~_3B~Pmd1uQ(J6wXjzVMor(EWAb zBUl%jo4L|}9=e|~nM>MgI_X`F)N?mO$0rRhe@E)^VV-!J7sN;2#(34}uQx?o>-4zI zk!~K;w}m))BisAUM~Y<}oK?54i6*f2f{0DQEi(`AOAiBMLyrq2VjV6gZ8Qw(Q&vOs06m7=+#@NELoRz6#V@mG)*5mm-ue`q=jcAtj`CcjKJN%OERcS5kCGc1Wsy@Of$H zJhnUWREBKGZBRQ)`5;z8SdvVzKyP3ySy-gx@voKI#YbC(=@Qu{hV!*g-JbH?7dYhoLL9}at%nn6yagmICT!h;GW>-_54>nRJ(hpjLB*I-K;t$V$9GI8HMCQsO`856qAAX%F?{7&1gEFw3)m5ka3Z7ntEcd_7XdvALxJXUCkjKQ z9Aa3+00i-ZKR_UINW(tl=N%_1YJa}Zq^0BEI)gNXhZWCpM90@C;e)dLNaQP*0mYpN zjWUzOCyhhoyn$)i9Qg(@vSvnfe@hLoc)j?y0KKbzq%t(VzfDf-Me51rW=Nd-S`Rue zUkf)Mxhm?4$bew-_ICHvm%ATI)-7JU9nkidw!8e-XRpaR^Ah_%xWc_e`>s`9`rfBr ztMci){~=_=s@f9Xk_H7qDE{5~{kWfqUFY)+k3HXb6Z3We!rOmmo#)v0q2t~+bz#wp zSO0M@aPF-X>W>QuG`vqV3{!>^C$c)$*4DM2_nmMiMeY@C2Ng&NAg}d$Gs{$_S%J~@ zjvxs#@Y@!>D_A6PhRMC&LiADaJjCxV#Bts%IWZmHJFg>S@K}PGEljr4A-$u{|7psXsTe*{FrCut?)WJ6YS@dO7lo0m^WmgnK zSEp9{frh0I^b3(Xd5@Nh z4~8{M1^35_cvv|z8P1E`9W-iQ2TuKJ(GhwI^rL<_J1Oe?PHzPn|0<+3t_eNAgTA=9 z(a#ku)5Gt?c(mD8wan*_fW5AXBSh-ceAyDjyPV~PypeDFs4BSI!&lCJs;4CDuI;s9 zF{s*6_p&9I9$WJks^fPBu%YDjZDR_(2zxF{E~?}@)!Fe&S3i$f8DZCZ*iUE{uD9M< zm%Wp)*#gyEbH?ASKxGsmqAg^qMLFtg4^7hJEgzLJ)~O%05Y??F3In^iZrnL%_$9F@ zyB@NZubj0+LUA$R4{__@xIP1TQq8TQx}HtXIU9A<$I}G4-Pz3N*}y8d)(e;0lC}vc z&;*mhK?L4cyq&v)cjc+@$3MJ$l&WH-u*623o-x|O6z8a)ofJ({-;~Dw_2{;vrD8jg zMo)1poVuz;U^BOT;xIyHB|{j;8K4P9O{0t`Sp*ZozNA9>#%5x+_3}=b=$7^31ld^q zzvnzsED>bCOc+XD-gO8#FXsu^PfzXX&|S|WeB1{|XheVvtt?#h8jM>M6mjGk-|D)T z>#UN(I1AO{%+1abcz9VI%p}t{U%F!njocN$CJxFQZ#PxTNi$Unpb(59mU}e>hhUf5 zDS!WT@pBxOA_e)~Qjb0&t^Ady=Z=sK3hf>R=Z(1Xk4e88`imNbF@_eI)D2D;5wy|> zDN(43Wbro_b<^PY8TJstV5R^V!Tx8UZnS0w$i&(wha#$&Egg8t2Uj^anzvk{~ z&&8MPQDBCC0X@_V^3`%AJAO3G#NZ~;FUW{r z9M9{Eh1s+pI4RboR;;!s`_@)~zwxf-WMG#YLG)Ng*zB5ab;cDO9^II69au;ZVmw67 zYdP(7JS|iM0O;ym{e4;HORlxk9wF;{>q<}U!kn?q+S%(0! z0lHAeoUm@}*{EIuA8k~z5$CMSjCzy~#Cx?usG;XzJjB${d6akG7Y7TAu515463h5g z{~w7FbgFO7PO8MK$e{$a)dHSDUHtvPQY2#suirE~m8~Z~j%zo-+X1A2j@7%!)zDM# zUGvE9605)ag^@YGJ5UGA+C>?=j)hNQ%4yMNM3(<=UcPgj2At-|*rPeI&KOYJimMVm z#t`_uDz}CCbQrb{ORO?6IVNNxIe9Aj&>Dy0t?6z3?L z`$UsD-nf0a!ziT^LzJOK4m)U8VVZU-k;zh9Sj)vq9q0G=++_^o16 z6p9Xl47&>3CZ#5CLZ0+?+|wvg4MK%3B5*$=Rz0ToJ6W1UC5&zwwGVSqF__{zGogzU z)NQb!E;U%qC(z33p@&ZP{RkmVZ!$&BzmeNG@B3q^H%n;~7)6gXb}PS8BG~fq&u%8c zLshlA6R%R%ChcVt^A-Q~I<+(0Ola?MB&*l4Tf1!g5d9Mu%hShncjN9oe3cLMXOf*U zYW!;S{1le0I&1Q56lt|Csj=lQwF&T`y-lXmb^J`Hg6RZ8MssyW=E#VFkLIQ{!HL;Z z8@pBq#@;%%2*M6#zauRbHY4_R|1nVQ{3sStz7;c%`Ec9Uj(e*4dG$+gQEKS*f~kFs z6xQ9338LOml`aFKwCW%D15?zEk-zxh!~lPRCvt(5?b07Xy?msdnV%iG6>JAv2!Uo@ zWDuOkI**1tE_DqkM}J6M{-Jxp^Hn?nLt_Da z)d8==olnE2uH8Gt?)d~jV+!jrn}ye>@mI*p2FD8x(7>k4?|IHoxYv%l^D|P)4ae&R zhovwIRZP3v@q#JLd5}JtjwA=(hnm{PqLQ=hc6IWLedF+6$F!Q_;1g2BoMTb)-YB47 zGMT_-m)^su22KR}cP>4`=i)p5;6m&*G#CKeC7L(3J5MBl*FMe+z1x{ODzQ%$iJt*Y zi=wLnB%Eiqd!l-a3Pt zJ#%$CLgoy-Y!QM0zXgKHt=@FqbBkV1nNokdo=RfVMUbab8vM9w`_OpXaof(}tKx%g zUKrIY^FNggo&vCcDBgG$t)j6NoocNOx*lr;wi~&Q5wo81A=igf7sO~aJeLTFF@tl$fvlk?zw%G9GY$!Y_Tv74oXlAe*@pyWTS z*bqGiU+30ujgO%Y6b7(F((bxSKoMag87|wG~g!&ck+`Axyb@bkNVWxau}< z;(*#V(nf9YeXYHbuhJEF^%weSyVN9!_qC7}+C<^3dp&7BW#F*0F!Lo%;V6GL;YS?X zj-T9}hijv|!tSab)TSmCaoNfJMh08!;v@r3R=x|P%DQH$B9+{fCSH|Vha~g#EF6hs zFY^$A>d-GjE+fGsNogW=HdbHypvri+^yddbYwZAb$j>(zdU5eBC3brKthfWb%p8KQ z#6gq^mnP%tFXi}c4o9J6Y0wFM|mByzaxc*pQdZpg~7Nz=!NlEc8A%V0% z_AEQOwlEJ*=^dE_n6qHBR0gSMV95Mei^19tkg{~2v4XfSBXVd2`o!etny>Q zlnF8|-S+H3;eHX z@Cfq4cGQKC==D`!G(DcQ#y=%@K5e5P0mU{_CEDJ05r%?+I_%ANaU-hot^lJZQJ?d0 zLj{Pi4x%IMf?d4{Zh-=(h&6%VpU%)-VSJMGHw%rgfdgy{l4h>*&(2O!?GY+WhcLf) zO-#VwHAS01a0LQCoRnTo>+pgi*Wlc(?QXGdtlMyC54Ua6bA;WpcwDu(9!`1e;aR`! zD%Q1YrvLk8JE#|@`xS%b{|Gw&rjOLZeCGYfgpoV7{HME;I zZ1gis;JDhfz<`2sP11gU=4|nHu9UmB$;$Gs8oG-H2Fb{_)1&i(|zsz9xf~^NhbANSmxnlLP;?e?&imJ=9O@>6JD^YN*+ZYcg43T*p}?u;fv=s~OT>7-{t z70Smx4Cc7V)Z%MUD_SwazR)YSu`;ovST(|REkdzvF`(*ki)Bf&nJJNl`dwj!4if8l zF759R?11u*@DmfiQHT4f0xe3|%7Xi@Bn$mm3N%Hg&i|TG1#8YcIU(NtU#$fZXIBKJ3NYkuj$-P|l z#116iM4+-VO&b(4CkiT(*1w5OAP(_G)eia0=K~x7c;)tH%GTgp0NAl76<-o zGSLq#!=(yYHe=~Ge!@PS>$gVI1aJxX%F$;JdsE(xo$CWYcRT!@sY~IZ+<)LAYWuM* zdPY|ZG6lkfQy}3i4R3AvL*^>X>*<{G)p7n9H3qfpoj)g1qZ=};=fmPfEdM=T=n`b0f~ zG^%PP&z(g{ae*BO?V(DOtCjMcvd!f_1?6y?C}>NaG$z4U}6 z-3v<_1luE+-0j4MBy%xefTp=(WLFFeAWdIo$>HnU{XLmk?ZH7S^wre_RCqJ!-IY1V_ zm9y8P2pDDaoz&2eo zw|ILLesWW8SasLDYg=2OJ+neQdQn9`aMt~jD^Q@8F}CVr?sQJ7@{}FUpGhFE)Jd21 z9GD$-GInoNGmkCAo89CJ5OKi3?lb@-;lX)Mms&BbHJ~OlR08sJ_D7cCTw~>a%$#ZuJ4`VdY>UOk706!H3aga7c&AWa?3>3ICaI){kcFI z0`x!Q0Bu)+aT^^m2w1SF?8l|up@4+2MFhM$*yT=bC;_r@bt#ZAkdmeYyGy^Y1I-`n zu4n(#XJut&?;Y-JSv$2vF)WTaBteEs+|I0R^t10?#*K6ffEa)qOPIii%VLp+zJ8G# za5Lw#0==#Z`~M&-@!L(_e;nlJ!uk*pSS4Qx>CY3E`%wP8K6ckXqysqjEy^Ub4 zWOmz85ytklU%o%-N?CN{tE@LxoY3KE#{;`TDJl5jG`B)`MygWw+gie>zLGhwj~2Ts zVj~g=#wXJscGzVHb$dvm;zBS37BmO3A*AIK60sqMi;+-aj<&O=Oz$+?5(E`Yf;q95P}0Zt4AvHmuSxn|lVT5O9pt2iV+X2t;zFcFFGkMEL`3z!_N#tb*EYBC;Ec z%we{*3lm1I8uv+w2fp1oeYtl-J=AcHvz%v^j^HyKp0kH`q9e_*V{y_5#8PmQ-R0Rq zeojrRu(J+5-W}8i_o!-kwoGOROd)FeOqIym9PQF43(7^D!~~D}C2UXdvyR+W7@2za z324K?4|huWdD*Zp>(MUm`p1SL&)|mSyNa9CmK4&AgzE_hax(HT-)6?aSf+*V9vpGH z<8J~eGyGjXok+Lmt2vtLoro{QXpSomn2Glrz`5&P8faydS0%g+6kp)A_d)zzQ=R1U zd#WBot%W0KVT~fTx4+sy4UBxK->?(mv9gmLwt^V4>2NBx)VjG&I#G0bH9dg%-FBaG*?qUeS6IUPRoRF-cjrooRcXa5)}c`m4}! z{_l8n;c)k@5?jq+FY>hdy2 zdh0k8JDaVZvv^q9TIpRocJQ|>ejCA26YD1BRlUfcw1qM5Asyw8L_sWY-h>Qvaup4Rb9R$b%F>wZX zGJJz{yiNQZy@bdh?_vL+Hi#$4-7S0?z=GgCHmblGY3 zy81PtHD(we=P^GXSu)o(ZW`06E|e4t>+VcGTW)@2cpUKdd(aWNKBN9)6kS^qmEeZv zdjU@xF^fj{gf;s)T4BJ;Y3M|G#iRwNIjgKT3_^^2Yr#g5?e?H1lU4KYHtpj0s+jV4 zi+Y%`Vq_ZUHIM-Dne(S+(A{viN5tXx_&hY$9*ncmGZJY~ShOcvYLfW;GYB=6f`IC` zA==%=4;hr&82NUNdi0?OVDw!?ef`b`le@&%$%K-Ug#}1v$Mm4PT_wq z!l^MahyY%6BM;?xe)clH8{nhf20Dh~Ci)q7>=fO_s-#pl58LT#7hE~@y67QB+TeF^3fIYx2 z-IO{1vKqN>ph5N(UpZK;9g$YeNmq5k0La9uX&Y)`c%OII?QS1CXc8ZlVHe8wc+*of ztsE^CSLbtTr`-rrbcEqps|_+M<|C-|^`mS)VZYlDvo}1_Qb?mmU|{Hz*(lV~%j>Ed z-eg^UQL1nJ)%&LR^dGBxJ~cA5(%M>MB=Y1d{#W($Ay9^=)}A+rsr8};;iP@Np2))m z>39MOqW=7e`v zY+?`qM!H8{>Y75K`NuUYl$i6@pT}D}X7gwz{|{?r(}p7u3|-+wk@1u$-(7MZS3D0_ z?alYbOYZYu&#xv@{J(~)&tKPMR1sx>;Bv9kYs~YPaS>|m{oVSh$;ryj>sn)T?p#Nz zxGDR7%O!2?Ypr5RXQJq6wfHOFsEncK@wS+YF}kDyj7;~(3IO1qSqs=xG5s+bXB4;pi)m@-LhP!aLCs-dU9YI$1_<-=iy60DMgm^Zc9? zc+F*6D?S+%ZFoZPFXqB{1V3HZ_pe3Zz|VrAhjKmb53AN4X1?A4nuB`)mLS)rtBaECRvtuU3pqDz zlqmH65)RpT3Hsw`cv`U0svs>NnWgNsn?~$GtITi?P#=`~)It+ur==_J@{9j4^n-28 zwzir+cSU@Bk?Rt#Sj5IagvNeBVHjyb;b?8*p>dsm%IT6z9YU3x)NNkx`9z1l<3o$9 zlf;`)r!%o1>$$o0Kv5d&6ltG%^Q~YWLW@daMPlw-scipD&1Txa7?QAS=So7(8pw%{ zk$i16bZYVquFdK@?uC)l7-WS`zGsrm4wdM;b7-d(ECY6;?Ku6q^hVV69J$7N)c~0; z3QDU`<)>OKUC{~2dJW8$lex-@c%dviwQXEZS_*Pd_N0;2!$mmTkc(&J+eZrO6-LD* z1ib;+2^f=U;rj=u$wrJf{nCNQc=y*u0Gi-{_58O<{M|D%kQvX>EL0o;FX+SQyVbis zq~D)WJT~@ruYWL0RO6G52s2Gv7EM1%6uhz-b{qrn;k@_De$`ilci;qaU zt!8C;rs1IX@cHU%1Cc=5Om2R=#Od#*{W5f*VBWya*xw_^gX@(Di#H94kJ((bqcJO+ zB>Tb{F=wsqM|NoIcCE zBYCC>%jSFV)J{U}G>g4mncn=#61y!_7=4>MqixV9T=jbh98WC&G*akfFim~IYu-0{h%LZO^#xk;16yi z(NERs%O8DDu~1=jDP%_O*F2y$o^n!bQ#xEsLE<|e?R!7`bk;R~mxN9UL+ko>4TomJ zq1{;Ewpt%=^tRw=G$QUZ>8f+?GNfLY|A;EKTk7RIf^o|=>m8R~{2hJk?dPgev+aOZ zEN=gdQj+&TU5~wLYM>r?dvOnONI}0u%Smwv?wZcfZq&Q^`NQNO+G-SoC_7PKX_jVZ zr^=7l?qLdBXUM~4(9=jUeZuzry!YN2Q2P&B=)9|d+jV5`m**yfD#eqj*@dQ~2qMS7 zg~gb9sbLie*1px(4&Gje_`R;Fk#-GQ=xsC<5fOR??|MV1HFPr*mVdU+O)ijzx1^h4 zPvEiHHmInD%x{$kUI%aVsQ1SL10QgDYKer;ZJHUDA4FG4(CXA7yfwO)Lb_mqG@fK( z1R2hjef61};FgE4F;1oCbdtnut_Z{@TK=mB0YbE!`89dgH9OvweB;B$A8)TZJD!gP zPOq+OWW=TtK*ps=Z~j_N<9t?+-o{P(5H7SC&hIO1P<=1g%yL}_=+ejN@%+>s%-E{g z>um4@d43qzI-Qv;0T|zj5UhTqEv?z;`uHtA46S-7c07?CRBY^;!R~V0Fqgz8Ch#7O zKQWP2i-Max2Rn(WM_=}py;ppMK#6SQF}k6@b>({OY6Dmua7b)~b;t#j295!KKvcp> zP1jj^!(^L?fjIy){5ceVl;$e0<-<5B1%r^Dz~+O}vbbJMt^w|TBB$@%U;YM(cw0?{ z0l*o0NDhDYC14*Lkq(!eoh?dNs17+1z|PT^-`?N4oUX_m}y5)8O(}o#b;60Bh zub3_D4fn7vUV3k>2SA8j8KU=}8#NM7EhuiC<%C%ZkA#W`ir)vKHfL4AAjHS_=NbwZ zKSS2|?L``%dg@~+u`W#U0YJNUJ2rumJqNt)@;MR&Im}@Xw8;s+ zSL-yVn9Y0rn`%Ya%~wI$kcWVa=K%s*l<*XKj9IUn3<`2`Lq)_)ZWipSVx@~Pmj=~9 zcr?qXKiS*8RG$`6UQpBwF?fg~1Y(80%okFoe{&>v-Om#~?#hVR6Tymh!ryUs|Icl> zbC~zjiNL6k<am^`XnIz}CPv`25<&Ceo1P}16T82NdPWf- z6PJxl<8y`nfrRoe45i4POrK8HX=}WDg=}>Ui9a+#${+JkJNc5h5ysh@*FKKc$gwL( zFylFtEtQzNL|gF~<>z?zqRd*#IoCAW)8XLY^uN6Paa>QkcAV_{TLU-mUt_yEPP=zf zTG;L3n{(%PbxK&O{bM01V(9H$$A#8`{2!1fj)WaPoqQ_p#cwv^{kpka>faF}&0zeq zg`U0j;J(Jm(v95VewNK4c=T#@ATCdC0yXTixmcfVWr=@tqOydYhoL*KOkRJ>$_7X($uT9R98WYt+`62QSC zf_O9T;cSJxH3Qqv|EX#LD=I|er`ZmN)7QNr)e8RXv;;nZ<~|;)hi#azciN$&;?!fq z3lnACYmLGJ7aSITAHQX__5H^n9dRoP0B7pIZ(=x}dfWy!!654cVw$x&Svr63qH*p z-e=q*ws>Y}&E?@dtK&}tXQVs%*aoMs`{6e17fHyXhkV()Ri!hOzM-DCw7itZ1J&%1 zj=7wo?~KY;>-3_vk{nn#gaB=PO)R;9r7?(4E?#4L2%m?~Y2%K_$4KOSXAQdERLSVmCbOkVTl96wg6B z%$3674ebGGwkULB*&9nYF@Sl?d9U^c{Y`9*0C+pa8D`?%^GDRBa=2h&_qYk0FZ5)P z0#aFYMoCb`{He^4%98uBQ2KG?Ba5r zyCN~kJeRKl?cEEda}j3C{^^U%vYbl_*1e&aXwliMy*@PFJSeRFZ7Cb@?eCOQ7GuVFJC3HFJv~Q;!6S4LI#g89P#QFyCL{3gDy?uN@K2wJCTs~Dg*Z8+q*NjTuy@0$?PZMR<_cu6&6~Ni^ zRa|*u5ZW_A=^vz4R&BhFj0qd)D@Dajgp*O-nhfQV)sXeCUqc@QTJgjkf%a${!(pA!Kg_0VZ>3jiRiJ2GnKy_Qb{TDu&1s~@0i=F(V^R)n`*0If^;O`IBXW!%8X`CPo z;a3P1gb82Frh>VeYqr*NkKX0l(AZI2_s3h`b53P^1Mpz(t%8BxS?GC4+r(H;Eljr<|Fq|%XtD6}zKzN}uUK^N z?VzQdKkq^?y!)e8HXYt&2Kb`$ZaX+fp|~r8Pdl@om-kT1Bk&z{^jleyI8*@!QGaJS00e3Tj^od`2k$fpthK6s zNRJju7YWAy@IrjQcc|sRa^CdG(Rjz)tb&^nTUeqM|2nlim0wcsE^6b~AT`qYLe}XFLD}c)35%>*G z$nWHaQ2a=4KQeP%^|?)yDV^0FN?*C!*<#Q@|9Wmu7@qu}V!N+Z;8d)Nk}2}v`a-|r zV(Gqz7?v2JOiJg=b(M0ZN}`j1EJhjOEUHJuHkKGF@rP(hUQgiRzBb96zPmn#z!6Db zKPJ2jz+~;9^;ZG7Moaovi9Sz{E38oi48;G3QtH=01Q3Q1-#x!F`B-*#S(Y9%LpgAe z$O@m)z0jE=v#n}tMQY%-5&MO|KRXR5r*QiV!a6gGvMWqV0 z23}mB$P2?R!IbPn5$iCTIrxmZ$=X`IHOO8*Ba^(-yG5e--qbASBNIHnO(DCDYhUL5 z)7g0ye--CK3F=R=+>S3ZvF={`hCbTAcEyF;DEdvB6^4+(9K-JKnXe;G?_t;jHxD+E zznf;nuSTmve3K5FKQt%|JBlvETDr3=#I8H8T|R*piy7GJtf#sq;8r{&{OF`_$c)&9 z(W>os-+nmP&XV?zGGL1nytjnkbq}ABoIJ=pRQ-Q<#ej_QTm!dI4O82Bkhb-HEoF>n zVBt+ORbp4%kU=^hAz51@n}*LEKFc4^!tAf33^1y(*(%PEtpNN z{3Tb!xS48g77Sx+gFs&^V>Cb&S^1tk3q^Zs$klekKaUz|W^Cdngf zf3HVxMEIvnb_e|HaBeJ@xRG+L1DP!>sI{epo!2xy#f6(T)AF-X%c>!8_DLgiVMj~n z8|z#h%oIon(H}&}SH)cS#dpSfbNQ135Tl%S>gj#)*9&sAoK<69zif9FM8~1hb!CQ7 z)%57sxGHqWXNtA+I@Pu8q*-qy`|c+Pj(Tki_|pJ*02JiISYK5*9F8IH`IU_H{3GMB zXAcFxJO?1-T>e7FBxZiCLYV1*u4!#A?S*XPh~Y7+FFW=h*RBk1DCK@I?xTtZG`cYg zQQ(;f_6z~PB4TYqPjhp-uTHPCU-q*%r8qoQVBUKDXr@@4AIo!}@Ye=t{4dqAA7%)z zNU6}|-%rDBmV20_f5J4OuWOYF+63mRKv<|2BJ?V4u8m=gD(8Ijsl&rpO6Py9{)9Yh zlmb!wbMdfO<%=tvj2o81k0Irw?_8YLpH2ewd(Ojb<>GxwWkoq?>5c_zkL5K-x{^n9 zf<5)(i7m%_&j0FOzi@}Js={7_tX18tRO>*-H;cUcS#R*Ti+}(c($H`=f=B3pYrzp) ziN(g2Ec3MV&0xA zb?SWbsGr1zFW_b+AF}R#5iE%54~T{^e>-}Do~0+dF?F7ln*&AKW03K#nnFdJqqLJahe@?k+SuhU!{$D07oBqmy-G=- zkoZvbIlX5#UHeApB-~c%{MrWcunZZuHuCn%-P`25IFWxZDVNy~_}R^i?uV`yPe?1> z?YW&+&|XhLQ7tF_)!&JQiKv>3KN&k)FMgrZS+-OP6i`aEp@qCwako$wdO+<>Xi z+I*4RhQAaFnbVu+jO0@K5iHu)OLVV>jK@D}( zRz$Rgp1=5ZTz*W}=j|yCMwYbH@Ewpe3`W#QgSE}`+;7+a!Cu*$zee=`Q&5ax#TiM^ z%Xq8vHeaH~{NSy_Vhna{SGh}ETvw9izJ)qiQyOVOLBV0mwI@YH8mSA*Sh2ubeXhWz z!{vU#<6y_yg}lK-qtR=Q;=R3a-n7qH1ThfI)fBrJ5ArZwpQ5@gejCYKdSm?rTtWmE`VR?BpMY?yx$!g>o;Z~@8eSx}n+PfB z8tM)|txOqhr_X*gE@Ohbbd4lISg$XquUQCtZw|N1xyOGf`yRvt#|fxA{yN%u)8qHvp3GgBkB7VKAEUxkSfMJr%_ZM?@Rv0$LJN<%TlU* zqPD~uh_wnL0a4N_K`8W+0Uj)2=i0dEL7yCBtzzk?rh9Sy;~71|RQ{x7H~~29toDfb z3ozN6sG8&NJ6bp%kVx|>)$>J~BCoHm3NG?};Oc6XS(6A@^u(-HY;2n~sTj;}yWpaL zw<;5_RZsN)kBopj3@J6R>B3Xg&R#^Ta8L1FNTq8-siCKnkI{kw3{RP;>ZyvhSCw)( ziaTiqc{?equhrW|9L7|^6ipHYw82L0Jrg}N42x|e2Qp)xQFU3CmWusaCip?tQ|+FN z|Ckxl2j5~D8Ol=7xMn?5m{xyJ5aQXBpLcq1dyi>G6|P8bGSOd~sMxlXYiLH{8`^Qi zO$K)hK}2fzF`J{>wqw&6SMA6O&L&VOFKLy9C5P^g%w(w>o0YRfMMwp zMXoXBvi1Togn?f`IK~0@QaeN+h1KWnC{$Tjyw99yKc~zk?KZ|?%XN)QrM{CtsI8R^ z9xfQzaC+~9Wz0!&0pwn)JW_d@k+>4ak$mrSQ45-eB(P1xR39ehyoVU5LKB2`kSH%{ zzU%F}9e}3A6n^06W2Y)9rX^axDP~A4GWZw(oAAF;RmAj7%wc4PR&8`lq+uuesIpkc zw}pm9V2Y8F!UF=%N#BroZ%=alQeB-X?1@*7Nw;TBPD~XE+bqK+hv4~LSooC_gfbYX zBJ5_>)H1UlSw`4tw~g@B%b{X~4Zn}Q9vJCyP?t^Tt*A{%ElF}6u(>+j50}ur#e5dh~*Ge(|c|L3s!~!Sh8M9 zr-mr_{;;ak;6%(``CRNjmjk0b&OLJW%)|UsU06205jfwkxQ%D+*JV?bKvIOIb~aUb zNB;+$#{!0CKqjn+Q)V_KJd=x&KCwX)fw>r)@qBFO-+EHOCJQ&dTG$JiGqCeEvO4RufO*j`RI z<7!hgQZF*9@m2i8)pkVyOrj?g{|$j|BYwG7h&_`C?IQu75ih*26r3vvLF!q`Ml}AX zB37_6TYV}eP>EV_blUV&rW__~$gX=DuUv8!KJRh6GHMa%d82vmNeV*v@lWe z^7<}|#CyfU3#T5Yx4`UG!S1E7@N;-r1AP8x^O^m4;AeuOzOVNsv}m{>X88W5+zcq1 zdK51eVOuD4?alO9lm}oxX!?w0mSDLJ-CsiT+y5H!)!A>@-EY|0%6I7Ou80fnN0OOe zL+0}7-sHe)wF>>^?RT(5>ANetZiaP0MoBg!G2^IBu_>{`h}$_Q*SZbEdPx7;h&30V zq^zhKky1BLPA;^hOTptsS|}590AD1dOQzI$8<|rVzc6Akt(u2J_EDjpRJg6adp%cD zIR4Kz74o45^9c4C;bjz zyJ?MvSAZdzrB6L(LRMRbXV}~Pc#0hv-A)ZFgQ1yRW7ya{_T?+{Mk^o_=))*>sY?jb zoT>l6SpZDMn(S})qoY9<)y64rLV3z~dC>LVCWyFUDooAMjI}@23OsIvXXV`ZxwNih zNOi6LXS+eC>!uIQ&ka|+i9Qi#GdK8u?HC3&s14-}p7RLi%j72cv^T=(>->qB@H~l_ zoNBefQe;B$FA%?(o|=_fjX@g#+`sr*aI7dRcfd>*PJ&O%V7!=Av5#6eHdcvrbS5$; zq~TV*5(LkC@J~6m>f;T=#!N2mW%uV=mYqKZ6EZ`hFvTeh&_v=Nr*TyH>Wuzj*g?ie6{Y`YiWf&%i3Kz9;iV z+lvg>VHF!IN~Su-#!?2oB#>m_J(kb0PELEHvO8>ufJiZLaR<|ODOhpcDOR9F)6T+#Z=EE=Acl=)%(2@w><^CJ zhu}y zQHBos1W}LBN^f&<<&$!Pe#)|oR@DAjPuY9hjHNi-VBu}U6C5mKiq1_QB0wZN*HZv8 zb{X#beit#wYpGD8)J2R(n>l2hBTo!|$Kh*-Ak_zi;$Zi6uh7=mY}cA9Y3Bn>^qqoq zW(vC6f8cXd-R6okf5sk2v{GLi#BY{7I{rYzY0EXH+YHeh%q!GlJjeP?qa zn$TQSQR6w*7h?QW5&`|47BNi2MV^kyS$n9lK48dR&#X$pB&K zBDaj=E>rc1Y2&r(8VmhIaT^cL7e|9@niWmH`4vaOK-ArJ_V;7)K0ZjHOUy9I5ek>C;_xVyVs zaCdiU+}+)s+uuI-oW1Y4|JE4YqeuU!wN|}Vb3Svz45#*SxKer+Nj#&oTM}R|Nr!8M zqV~y@mJAhpQqEJ4q&AmMUk{0zBZM)|bZ0;SdLqSr(uYS6t-SRbg6)y$1dTtq!(O3fobOiesSUWwsLzx zOG}He&(J5h<5mA#*sAZb_M5|^_FW}sjRvObGee}i z8=KLb#D8}Ly!Gk&wf54Ss!VQU%ynjH)FCmR@o+;kn_UWj?-B3 z(1WJd*6`^;#+GxElD}&{fMoK>N(OfR%rG7&=rvKx%Gl$(0IS22zkFn&R?nx-*lXru z3pt){x~b(nT`{91{wa446rvh?gAFu!)4&Ud@v_s@q$4h<$>v5m_>fV~9pNTY$PiAu zG2$=Bj~h=8{tK0615JxnsY~{?L&^bvx>31G2HIo!t9F58Ayv6n6Dc^io$a*5Hrj%c zcsZ`jz|uq#T&Tg#L~Bq`z=wjAmLj(vSHdYSFxtfLTOrx|y0Me-4=}L`B1V3IP;U!d z=td&1Wf@EU&0YI1n@$sM5`s~LSNcT9QsVWljHG`2?#eTNYRvGS+!p@uZ~(6yjDo?S zVzq~&I5Fncty|(A=h615_fB8jS_h8!dtp^Ir=u$5E|x3U?1gaV0-cTmZM7kKieITd z*bwD^=^0t`!a!A`soDwni`AFk>{oeTs83H0tHGb+&=k#l$k#JlM=nT+gebP{U6HRY zgl4Kd9)?;nmHP*n5eS34E|NDK@SF%IZsVdi*}#c_o#s5Rcnjh7W64Fl8a)>(caN*R z>xVdcBEBPD)cbrH!rx|HL)}<97lJxKxarn9IS?qQmvwxMq>FY7mGsWP4 z1w`1=0dI0qnMsx)$2x1mBLKe=LxZc_;P26qMpw-XoClxC>SqOtb9cc{jK)zyqXX5v zwn|6leiN^};;Q*g&5VE@k|#~}R{)=*`0z!}BHpw;dBcNo=nBn-WV97W(%Hjw_ zPfRR+fh-$7R!8VRmN$riN257~p+<1h!|lbyJ(2NoL$uEqv06|Gf(85jaC!DjyNt7p z&)QFa`aq*jY}9;%iriNw$5MiWquv_YgdI;>KO}ot(c&zPpbTSll-trGi-|$N9WH7k zav-UdHme`Vq*)p^SRz6w{IvCPLxB#fEV#hQw(&<<@x1u{G+WifO`)0ohqs)A$iC=y z=)Sz@fRMNC?2epLwh~Hlw!3lcm=!;6CP_23<2VXmwh#g^P3Ej=$Wgmcm41OqGI(hz zt}|W{nsu!DC3$vghNapWCr%U@Iz>IRo;#sJ1DEY6mCk{6AINjxI~dn*Wf?Qy($3`{w(~E4%ZMGrZlM1wX1#nq-!uz!8)YfF`e z+mo2FT)j7$K>n z>o={4I~)*gagC>k*j=6kT#5Uf^a7WoV-t^CpSve;0qPIXMs~7V&4%0kkZsRji28>( zB!keIUTW1PWs0$|ZJ5@T4?DG(Omg}68l7>>s5~?IN~KWC z2-EcQ+mArVPV*$ueTt~nwR> zt4W@hx6k`9c3J-XK;;_3+Z=Me> ztOqK&xCCapsbv}(!(p9xU)*n^{<v-u=w`$Sxr`{1(kE@KI?P{<}^AgEteC3$Y)~9{KK-#zp7I!G5}yhDJn)DS%Tig%NPnj!N$+m`j7fsU`9A$^Ri|M z?(HTEiSCZ6&(%I}TpKYD3bsADqCw$db+26wof^w?BRicrZhy>jZ+UY9WBd8%KRbTm zJezBc$GBAFF4#)Q#DcVr?x{(4@k+4-$hM6==% zBU0|zC7Vzt?XX#;Lh|t8$PdP-ggnBoB@gkVLI%PNz_iB@O&9{L3^jy80-Q9Hqw z;v_DkR7n+$vWMi*yJB^%7t{f|jhDAJ{VoQX#O@b*RU)e)GI)F>}MKsE-lr2)rm;APl zZK{5!)?CA>nDD8LEmyMX$LZYE4EMEYR*276U#fi@oo}+As79HZ?s;1|?mmZ!#>#nG zR@#PD6f|qJ7x6B!u{)H_MlXeb>gS;yNuY*iOtWKSB<)=RE|F(e8;d_iQjk`cuXF1cHG{y!N5YU=V=c zVZS;dD8465Vt&1*b{)L6$whS+f@Osm?xV%ow}lCNJc>eE_u+`D(`ix%oxTFtjqRBD zn9H0iArjHzx^{9f&-t`%^U6qhDw!y^#lsz~}Z6-K^5 zJCjWfOu2$fnSj!ci|0=9$USsc*4hrAtDZ?q=6?6X;3WXSc(jp^T1|2UpiraQA?YvL zx#X+`!!uT|OgLnRSMj3GD;LnOBj99Eg3{FQs6uh?$vq7rjn3lJ=VK1)CmZ}DUS#hS zwtmI}I&Gm)@E%c=51A8OuQ{g5r2vc(bf=+d+=2;=K~1a@*o=aJzvXwG@&WuU*(Vn#&>V9qCQVfjt=Ggo#)OkCOz=BEC*H&2wQEH?|4V4>1D za{&B#%Rh(0mslgukvhoMUE85{i2mbooaGyiL=#{V`e(JVQ~c358>1FMT`6-YcB!q7 zy>`9LGEO=$9kGmSdLGLv!D%4bO1(dN4FY>5y(1tDv3NDKurLo%gBBzRQ3k8%6A<8H zm8QW%Gre>{DU7stfvCY~b2qkg7V@9N$3Wh=s`x2la9OA#y>Oddg4r>wq`y z*UHU!nx6V92H`G~cQjYCl|5~x(h1bC<8VY@TRp< zD@cX@?(_ZR_6o2Fv*)@h#>*Tfy=H2v>~zl}NSD z2+UWC{pG!;LkA>$I2i4{=Abncro+q#2$ys z#<$;-5DR-lwT0|iAl*~v{!B!8ZSn-@iW>N6KctM%6b{&Su#7=zPqb314pI!m?rYpI z3=+uDSA9zIrYo*~xtQ94`yxX{A@!%%1T6D9c+=8` z3c{;4Zd)bBuNJ2IB4L}iSa<<0xABz zvHfUqeV6n?ey0os*Pyoq1peC_CL*V>^LE1Z(;M$-IoTsMx};q^4jax?gQ_+dBWBZt zPHd*j3lcs=0`O>@ym$jOjmxLG(m$-w4>t`gjcMN@9E33az^B5QvOUv~O> zWA5l!*N0=3*qd)w5hSKrhabZOrq{k7m_J|1HqI%`DK93+{Ke51Lmp23N6JZ88o78q z+b@_dt!T!Dp*YUVqk+3ESE~Kx%fV8ktOzEt zie-ahO17ya*eT>)yZ!_^kLp6F?0>W2+9Uy zV}uC9YZ{U@L}Ap&9?{clq5@$Mt-PtASL-WkYLdwbDa4y4z!Zu_A3~E{2GKo7LiY=E zSN5~9eVSXIWdbivTh8Z|=VLRq^v3bG<3^Flic%|!0-hzWbl^X3Kq!-tm+HyumFLx| zCC!KkU*eFbuKbZ}lo`OJD$t*UpXh=3$RZGcFfm}P$xuBQ3)+1yNm?@h#lPd~G4f~P zYDhVgD6_p*J7PdZH5qdHzOEidMv69!q70?^)(OzrZ?(12GaOx%qCDr*3yqg0y4HFe z3@{&=@7f=EH8=Cv5svd@0T3+#Djv;YUwq83H4<#!0Fk>cau<_lbyTUt5Wd~paQg*r z*ku}Wf71LFFXae{)894I>YzmtyS1J`RLgHiG~NS`3x_!JsDRZH7PE*_)qi-qIUi*;{2QNahyi&~9Qq1XT zb`{k|_3svYUzjEnKf)#SBwGb1kKRoVZA{;1H@g3CmcJ*kDZQohXJ+nuw4T3T z^X@wgk&0cS#nPSg47(>zzX`kJpL+*UDu;_A%YJ(%T5A|liHW8&`tET&H%eNN`?U;< zkIs9zkm6LH$q35mEM9cfhHaaslWGkCR!o5+V6Y{f*`u~pYzcVs6RHWM>v2D%Lz%|VV(S+Fs}!5x z2SrYnszj}lBZj(qnA*>MId3*jtB%LDjhsDLm;9X_h804;+~N4rkd-X2^5CPM5k#!{ z9wuR{rzKJ}5jsiZfCN*LD`Hw8euO__Usrw!U8h3E?BH0F_63RyGH9l7$P=#={Zbps zsANYiPoY_{)Tcvr1v&laR~RD-b^QcbK`FN{LG|wMh6J>2+7)8u+-SvuMP8mE6FnOE zp5aZV8~OM!cc5>7Ju`imG?Myu|+S*6GzPwBId(J zC&;kV71{B7!z-PFaQRv>Pct_VLeTqVInChI%@)i{;0_RhuKwYAB-4nlII$K^R%mgb z5yg)2dJQW2h2vT)ocA~aoQa-C$)d}w!cKMTHv=dQN9_yp@iWf5%Uq{I#-G=%JJILP zd)*H+HCT5KweA3=AXa^OT~i#wYcPsy*|3MDPEq8rAePjb@z4-$K)}-;j!ZTR`F=28 zh45wj}$SfOn_+U8^6Hy{>AQK!|Qs%ccG#F#_*IR*Z(T^ITBhK{a%eTxJ)kEiA z&Rse2aMcpkRfrdx?mmHs@XH`Gja3vGlZSycvP~Ns{MoY}tNKK5i7IVQe!lQAFha8F zAuIxQAdAlMso&D*{Oxj~$?C@pO9>AvWi4asz*O`lHZFcl=(JrJa-^7_oCGO@bm~@h zoNgSaoE9c?Bkk-#DF+7&`GyFSvE^|Nru4U0#iAn(T#Ql%$>u%O58U#3FB_8@EB5bx z)R;2rcm^^xR~X#M#avoni^?=NM)L%!Hs8n;$<+(Lfkd^+j4Q0*npux`3dD5FQ!vy3 z9#el!a1}T7f5Q=}ge3(!pM>6#kK~r7R?1myC^74u6-5N{jfDh0qQ>TVL(%CaB|A?B~pX`hB zR5sxuq-vT>$aSGvXqrT{_QJg85vTX7M;h;S##e`<)dy(6mw2NMpYK{uq_=(T&e|b; zP!`H9kQ#bf&ND-+{R@tf^ow5>5!o!>T7S+2E5oWdBDQ|5CD3F^(HH-qtLo*prvdo_ z@PYrwkbhs`m^}aXg(#lh4eSg((Q7TWgV%^CypvR?3%DCWK?ruut+*u|Wk0uy zFS|sJsQ)ML4OncvQU$W$Xf&J1D8)V;l9($EaWlq4pP9+sV3akbpF%R1L_^;RLQGrw zUPeO&t7=Xq5`c;=GcublD5E5FP<7)q6S|ogBpzERnqr&&)KYF;UAh*5~IAm_dZG#ugs- z?DWp`7VAZ2_0xG&$*u(CyabZ&l;3cK7mUr+10&*Wz_T>sh}v;l+akFr>6SD8x^>@* zMGa|zps*;9#19=~uc_1B^?2K7k10i5MuUAdaS<7S*bKM3Mb_N?n(RXP0;R zgVWIM=ZH)|#r%Z_ZVasX{)GUpiU_iP(95=YY%ct{XJosG+D;mmlN&3+yrg`%?3g{W zbLJHf$8kHJs6MLfE6;TM{YnW{X2erPwXRlHt$>B^G)z966jB@}6}^HMF`a_7Y{~cy zQmIPeRlHQ)=hert_qMD-jcv}uZZzdbriJt}WtD+S^lVned3JZ8vE_^h&t!Z+$UOfV z@fX-XipQCoB)dV1k`dTS9CnsUMGC)arlD`JB9eLrECOg^QrD_BURITh>>B6!}N9KhYxh4&x*!O zHe1`V#}5bb0HQo1pXO~r7bl4h(}j(KDw~nJ9_VxK+8e)I)(q}#0g6O|A0_ZvM7U3* z@`1aJ5y%W+$gdNUk$Wz{E!vdg`oO{qpd?y!YEqIr>fF$-G1SpC9ckB^fh2Y}2G`ou zqic5jNsWjZA}nY<`Y&;>w8eKr9 z&!UmxAYG3f-XsS*3T^Y|V5A(JsHltDkpnZx>^6Xbg%+EYCo@ zl&7+9Gk?zC)gr1LyzhmiIQelfx*WA~t{)%8W2~+)n;M zeJxO}d&>5Sywr?z!WQTExY@R=B9t;e+-CM+LFIhfxb`a;TWExm@{T(2Tjx}Tr6c0L z&hcZv(eZf%urJ+EUt3N(9|g=;mMR0&eq887R_c6t2MHBziDzwEC_19OX_F}_qD~|V zqMItvg1T70i>u;;TN(Rk>7p(v*J3wusD$1_=q0#a#ixidFpNoZ#dHTtgC?fxxIeML za2!jse0_iy?R`k!%gAg?p{%9@<8jJ}71>RvyqiPjTl19?#C@NjE!&Ih3YR zFM;w-1-1(Zzze-;5%qdfg_M}n#fqX(hX=f=$v> z+bK0xHlr!| zVR4#F|6wP>vr^!(S1FG`;=0gKXFyGJ(xd>53R}2I?aYi^xqw~^zPU~+Yb73EXkxj| z5n%WB!QlC%-f>z3me}DrY{-77rNKd=#x#eU=smbx)CS*ez{2qZceE;pU z5Xaq$wncogUY&bgWQ0@)WC>ow;52=16*wYdMz*t2o88h0`I)mt8J?gMH#XV6?7|RK z9|)t?>eAEGdk&v7eW#SsH#V*rSJpmDtO;l%8aI<)T745iNIAD){EIQtHToa5qj(I_|jJQo57CF2K^aiq~KfZs1~v$T^^zlO2<7F z;M@KDrOKb}6;99l_T3GVm5MsvK;!}Nyd7se);RDhHrrEaF1fUB_HeLT;$hBOVJMHT zb+J*3{sC%DQ~JFQ`CEq%2Qu9GAR&|}3(b71Q$S{MuGcDq5D zWApPx9IiIgYfJ)%22#qwY5WMB^!S-+8p<$ILq{i?)+%j9x>e!Cyf@l4HK$Gk{$*1= z4`t;VG$0F`Cwn?h{I#^C$ApYr-o7IZ=7hQ8a?Btb7`&E^8XYk(H=DoHDYEs2nk5@( zf&{9!o}SBZSaXp*imfSVC{(AUt}7%9skax90R(Mr7Di;JAEuvo$WC#*1zknyQB!5O z&Jy#NE*&A%gIM@!y(RVkclFw>VG@(>35~wb<3bf;M<+5N%pr?H#!+owb^9uZqRSe5 zgOY|%xC?^gZzn=7@G}%ILPZ?z1<8+RZHq15mHUb%cY?Bs5XUxy4)u?Yj<`K)>)C>p zV>6UFkjUmLqpBmejXVdkg8pQmdD*phDw?$+q(7>Dp1pyc#KuMk-X{mLyG;U}oDM!;*g?0;?`WfX=vn1vHa{QMc-hrXO*~8qE;kp!#vKe@ zCK$dJTsCfK|GI#h)4h=XxI@t-i1z{1zcs>f%KpbG9i5Lb;t>eQ-rAh3C&_N8ir#K^ z)m_pgiHWlEOb|wF6zPD*NeIPXx^c(9vEK#m;1%_laX)mCz^3ggH|SMb(+{)`LIY5) zI}w19X+K`Cj%=n!Y+{GQS65eG-OvWPz)K|<_PCkuXLcNUiPo#l#-b6v5_8%((FpxP z-IQd(t(itWF<(Y#IWQe4!phI&NZmR!oV%O%5f))@-a zm6$Y&=8hWLr8kyLxrj_vlhNN-opkv_O^>X_VuVlao2M2dv*$%gdH_TG zCY2kR?`rjW3NVJEi&Qk`9!5egnTQzTf*exH-lWgh)pTx)*v5N z7Ev-I{Ahz6aT#LDNd~v4mg{Xqp)^C2h~gL6(!mGcC?-YHz)QPt4vngLjOGSJE;wXQ zn>_oR%r<9%9uY{>l3wC2L3f>mjBwGYN>5M+6J}|Qk&WmLR1yrEt_J)ab39C~D$OBFFcYYeVRj3?I3@slWAo78stwr6h|j;-N+MRWLz zizZC@wEb}8yO83Tw-v-y6oegf%SZc@)JP$i1$F~gV)cG)p0p^`LI!g zEY(n~-BAL)AtOx$$)>vrTM7>IoAXcDU6oBJUu03R$Qzsjsy{@a2& z8&<}aFcLL+^{VFPSlS}A;*^({cbUUxiL(emtV=)kxy`Ne?r3-A?FKAwwMr*{wqekk zC2tvRvl##%yhZ>0;BPnnKidWpnB$%3}C=V2d6pZxeA84tnUujk;G#mAYt=~Nr+#i+IW z0@=fA`qSbLRefubrUUzGIP;%BDd@+C6xrr83cfNqy4kRXA4}UwMbnt=VzhOI|5y)-E(sM zFJ^+~bH*M2#Ta(Iy9CxoGkweBMVjXedE?KMo}=l!DPoyTwCOHeXRIu4tiZNS4)EMD zpPNkvTW?&^e;y4tb~T|Wq2)rwiCn)E@Y|Eh%F7?K4p-P29DE68WoEw08UI5)2K>j% zi!g=&NiZ9P?Ut}p16+@?92WAwTD)`)ww4JmS1j^@ZfDgCPnR2xTQU}nJ|_|JKJLUy zUT@)o!g0srIodD7FNM`SIovv4Pi+f{Xc{&GA<2Zb?)PWEMXHna`JW&W!jRNL^_eS` z(PDOqx%{O&Pe@#7CRnhykyBzDlCdN?osf`ZY($37tFG&$ikkqN^`-}4ID5VvAc}Oy z1*b(`TJUBm^EVVgu$K(CmMxD>P;C=OlL*$odv+i==G1z-hJI!se2Wlss@=Jab~gE~BtN75+gHz8v*{1Y6cX#C#gcbQ8S zk!kdr3uhv&{Qda!?9k)x;Cet#C8F}KSn~U^>FXa{AMSDFx!M`UvEP5{NPrhQ@OEc~ z{)Cz{P0&XPaOI}I{pKJ|{n6pnh)Wb)xs!XVkSM=nf+SIGhQGFWL?9-iolaA5_JqaM z`EAFour1*TsJKG)soW3!FMT(o5m^}tQ&$h!7CBEoA; z!aw)0N^DPu*M4<6*Fwg6;G_&bZ@X*`0&>uSL&tNJuNPF>txuuNkIF|7S4AoouHEfb z=Wg?8pdY*s(SUp<{txZl+qEf<$p)+ayVD*ZkYM>nX)PutY6nCd$_XuKO=fi`GE~BhXRlhjW zM_x8Z-?DdY!*HXzq=&xjjF;Vd@0$yZL;aUf@1zWVM+NPm=4mz_jy(N%vb|fL7Vw>( zXvslsZopoBZINW(?;L;J#GBA@Bk`0u%q(yX#^KJ43^yNN;&>50n5|+vo}%Deeok+5 z%~jOsFfLX(lcxhN z%u@io=@Ln;`}9N-WDPH5>F{+=Sas@mHd4TU&v!QJY$18G&-dr31AWOXW{w5|zjQ*r zD%{+NhyXV(8ZZ0t$exVpL-Dyl-#yP9GNna&{vlm_=H6@If0~M%{wFUaDVG#$ANG0z zQP&UDzv6aWzNE*O18|o~M)EmNU4QxMcF~2PY-YC4m5#^BS33O@Co)6jxFGSge6 z*G;ayKa&G6jpx_8=P%9xyN`!i$Ya4~r4B}C*9ECIZh|7HAp1Wa$J*;sA$cG9(kNqx zUk6^TR~nhxAYp|v%MCyn%DEG#r}9Yg=S(5Jr9=ATP7+>&0p3{!k`Z&(3f=9<7O7> z3k+`|YAuhqWajpkN=)rSLG%2Af!AVXRdtd#v)iSa5OwO4HI{a4$gO;hSL?~~x%RZ# zly)pWnuEr0a8TFOMjcJ8TX@bAe55j*0Nbk$lt+J858NbbrnH@p1=S%7FG%N}bETk` z@ED!upsNNY0HOIuxRgmM`v8(|z90M#-Kmn>7TI9Jw<^%=wJU)&@1QZDN#{rh9z0o5 zNw)u6fX@dhX9Hho%4(Gz8E6wXf~qh};`4!Ldj`3__(3oDRRG|oO~ ztK=deMJdB;3YPK@_H1^C(zJGdkKsYyf%XvgGvmLV;4>Y%@ z{T!!RQ8zxoJCaD$;ZCb>JxiFW6YTI{yV{)O{~Z3y?L>n668t>9IglxxOUc&g*7a|pQcd{R-1c96uX-h%#tR04ud<(c{DRt*1M)p&zb&o*c9qye zZ8t*SAfob7?$aK_1fduED&+RFkl{L8yI#8&*+IC@#7~NR`3E}-fm?YeuD#tg1d{o^ z`5~Yd@SHW0^&=4OLnGPcC=hx*Y}!q3q&2-l!pL%@PC5;iC+6Gl>KrAs)4d)c3EpW_ zq}D)g^{=0%c>k5V9g+Qy^(-4Ja4@m`CO^o(>2WU=%r>usaZOu~OTg#Bx#~2pyQ$HY zEfgn3xcYmH|NU_SfuNOR#ZLGF#K`~Bg$nlLclmLKstdq^mCJ{udUJR}T-Nd}&Zkng z?YmOz96E|ND{u*zY`TeE)K)gpyxyj!c7 z#9&V=%TtSwhLFyG^To(J+80+ARif6kO^mEuV-&|9a?6bFrPeLG^`TKKM zs7(4^5!cqs9O{CT898BWhc6M9z>_^XopHkf!pkvtaJ%55XN8X>PxSM8@YVTQbwJe* z&ntlV`KCaX?Z}JCXaDNqkfSpYd4wtbHZ=nMt?q(rY^3D*ryl0@#L!M4aC-qN?#$Su ziOE5@5rx-)%UQ?6shfl^99OB}hRq z(H^37cd@>)&&J9^*?C&|g8SVSy-Ezt1>gN+n{+>`m4zp96dEPRbL|_y72?; zxw>1of1p-XqV!VwKH|e$Ek09UxY`PV8_!((*AVruAx-o23L zR?Eiwb(de-;9N+{?p%OE@D3<#{XXKh$bOU<_;aybR4z)>^=JQn0(fX>(b3vbYuR_l zU$J{jk}H3FcoUsW<$w&0vdUW>CH9-Hn-6ze5&i8jBDmDQDgFC#e2>Ub!tF|mlEXQ< z#m*k;(R^mTjbZ9YE}7r{j8<0ybq z@6vRN>@lPn2lqrdXKl}}al^x~x(h41BTp-i?9V~U_kE?q zKx-&e0NLJq6xp5?h?A{AS_~dM*M_HbZYOVfxEh7K>>l@+;r$ziD=T4-0^Hqu$m$BB z~P#?PxTF!?)^V+_e3~WZ<+O}gw)Kz=&rf6NRJ&d zi=IE98Qr5edCyv}$8RQuQS%$xZ_5!Wg)?eC1VT+Q|MI#XuLVBW+l4J?8stY9xQZ;N zcx`idk)1Bp(RwMo46C=tc)e^BAxz+{UHnl61#cC+R}BzKKi{1q?S~TpthcixfdV2m ztqb)8k=gAg$7ti^XZ!TFuF|8KIO_zU-jlYQ>E65I7rq4=kr~ALg_d8oPi$O)c4E*A zJ_l(Xuge{u#b+Q8&WfO!D!KmWf8t5&^``TR~WTQZzGcK%JvlPo`7eHdWzzmneX^4udhofA8OtpBoR>W0m8W1 zw?)WhTFQ-o#srDtMi4aiS1fBf)DS_;+t$y7KI0Kzr7q(15H|-6=@0w9yv~Gg@2wPC z4%S$Yi2n19&&(jtnI`Pm+thJm<~G-nd|rPu5Lt zAo`#Ml8kTenf+r|HWp4?za|H{kIubj;yKCuvHRfT1_zMAkK3RyI@hE#dF_6?YHGgl zyWa9mb%*6Oc`D;_v+40){2x36<7pNd;4LDmH2lw>fcW4RO*AI5kf15)_qcYStvhx4 z5;hefIx0s>=h3JgCplM%5R|sYnI@qfU!$iJ6GW!0-j=K%qg9-2)STUemtUiBv_d;d zFtaGm8%y+CrrSai;0*?39WlQip9Yc4T=2gy>KDGhP`)#;F^m?-p3+)a?Mp4q$#&Nz zu+A6tTBL`NPF13hA$u5#p;0Zt@)w!XK~6O3oZQh7e7x~{<6(uT^KE3Oo=9j+)}}Ps|G9M~ z&hab4NW&WS8(jX~<5RSlh(ve7|GYTSuSNFk%}4!}hxY!%#LIB0ssd6}m)6qqB^ z{?NxL=06TeHmPa`(v|j>Eq1bVstoR4(RN(XqHX%+`T>)dATT1%u&3=69YN&iTGA~A#Nd^4B29|1^&h&U?;>d8(7jMnl065NNJK*-km zvWdfz{=kgsdfW`Qi0@Z(cJd-vRrE(fTt*={?w1YRVrvbIK)QUj_eU zsJ#j-uXhZiZ3iWpk&{OT8J26}NX%MnVMKSfWTM+0w&RQI)3MPw;ttU))-u7jGSJHx zMUCOc2IS7?-Uy>=n5~KPCi;5W1x%@;X=Dx<xkt7T>h|yT>Wy6(s%(VOb1#z= z1l^e-)EZ^Roq4PE0~`A3200m7YqcOVa7=w?ln$1_#=?RNUA;I1!B9+)-+!|Jf<>Lv zQogqJ$%?5mCUrlOqUfnyI?w#pb0X5$B}kXRrLpCx%_766-hzzccY>;73lx+UR6dR= zIGTEwg0S5K$V+FaW&^z(%Noew$pa(s<=^+bU)RBJf#;H^OX%R-*wrVzJtOytkh^9E z>MJA3-JBe)gq@&d)$y2Q3tJu~6l~G_(Zd-2ye)sl4is_s_ZV15y?9Yd{y#rqvpNobxBb?OCMoaPP1t{y|w6>{L{FP{XA@h z%g>T>_B@`;4R_3CL!;YX%A;G~MDJwX&Ia^+JwI%Jq*VEjUG&2<5Sr9bf^Q^&a1X{> zvKf+kKfNcL${K9Qd{+Yt3c~L~vpZ#*FMu?>o+LYf#DMy^Yg^)PvDGpiM z=bi!~&hiI*AJVQbLvFY0%AnqhN4y}&s@)}YFWy@A=-}vP?mMU#P`2+VQU4+T@Nh%>s%xqkNH*e zWa&fO-XBzM69+|(@s~;5&TOm;jl=tgG1Q1=V78^e8Y;g>{kIPZ@|yaE>&?ZLcv%NV z0$$tLe(W3vsrP>Q;exI|d@g6Yp1Y>*+B67({0jKryol!v^=_t7AwniT!uzho?QA#* zWB+LG+}_XZTi}~c`(svNru`%;Z~pSZy+(K-e5+|vAiCC5)-CU4!r|nI*9Y-1y$Uk7 zCR+j`ymd})_PM`hK|Wtpr@E!nc68lq*@8`QAf#NYm^BHvJ{2+2?qQ_BmG75rBSdXJ z3E#52iY4K)L!hn^X`98SvOf_s;UJFAeK;HUFS%9U8hnehm6q-d=J|vFx5L*g4%^v=v{?v5%7yo1TV0^k6X>w?)RZvN1h~ z(?ZUJ#Ey=29OYDenx1}$I%kD8*xkp$jXMB%L!HCZSv({N1loghtX8(E;A`}7&! zT4KsFk0S(+wM;ikJ*4Z-eRr}siBlgNo{|?DgniZ7iy(&a37=`xu4{^P_Nrs>dZH?V zo@voQ=E5Hg5A&v8eEuyyhVE?+`jxxx@T%4!Fh}nDbI$KGhoeEP>FFUJ6J>Hny+av( zFA%fmUT9?gam9K%-&0isZHYw3O0bPya2%v@I6qP^9hi2vS&p}9{z>fAFgpD5l!o#m zb+l;Ta)u@yuki2P<=Y!X8iM|FzC!m@-pK@iVe@=PT}WXrC00(Lp*iWG^|=pq~# zCNE!xoC(upcgje({e#dzO&bE6dHHC!)Dz-u3+5PYe%ta-@L z>q7wmbE5Q&I*ebl4!rpmUfu>AKYM)U|1DW?k)GW5_hO*@Fb&eGo-H!ByDtlEBi|7+P&NmJY~ zVTYhQyUG{Mk#$(IF1IwJIEeDFR1g93-YkTG8rB-l=e9!rB8Mx1hRRTOOc0uv?Z^sj;vx!g=L<;n~iWto4C zxsQqP=j-Q^dcG@p`_maNGe^W&L-_$^|&>g+!o0~3EJ@VC>ubN+exyUz+0 zEsC_>>Oa?y*wKkcz5O7>1CV3)|IWgbg=#w?DkN0s8Z$x z0qWo3(kD_jDTI(d=BF)$`eu?Kku~eZzDTM+-Z5)tcliV0LXfypb5%q?yk%7ZRMEMV z-d{tBRnAa2If#947xHg@GaCcg%A=n$Q-JE?Vwd?SE*RqV$=%KDAv4FBoYlWf3+KP& z$0&E**xjLeQ9k?rgfd^W$($o`zue$4(_U{r-|)NSe00f09#dO|ftg!^@_0EOpUzT= zOai#ItH7@+C#_X2(>ON^a5y{;n*6py%ddk%aL58%t<$);NDH!fllNyl>ho&Aqc#pR zRKgZNq9Li>c~wA4yX{*v2Ci~d<5b!)d{!L_N`pAZ9cgkMvvHISo z%>T@O)l2WtFI;`*`+v-L8&HRsE_4_Qj^jc?j%9y+K8-njfJ;`BViZ{Yr1<_|F_Gab zyl=nlLPNv8l86YjClr6xapGBxx&Nw!G`=D3`Nc0^J&1j6V^Gwoo_Wnvp*bG0$*$h9{|h(mUEf`TsUm?@YPcu(568zjiVV74^S zn_^mwx%FDq6PkyE{jtVF3)n&7}htPVE1o6jVnjpf}S z1?sq2nqF$J9f|EoN3kK~4aoqUg~@K%RLeSmfa++7f9FQB^K{x{&l+o}h!1d4c7O4^ zDo4QIM`n!5U(zurGn3?lSSkdf5ujr))5p9M^yyd#Rj7junVBOu-^4lVH@;oHVuHpw zo8)F{9?Ha4^w?wm1J+w&kI0E;%tMH|kQy~u>@ocLK6Yjs zDCRmD_QT^cdu?vDA#Q+pUnF5MuN))FNX z1{1@Tz0!X$L<7a!dyIRPh5|w8>Ei5x6qe>>KmFXfB_!nZHQ1mQoxD$?1f`vmS z>_%44VBcaRbmc^;u)=j1pmWRmdxGER%)#yRI+d~fNtKhi>LF2KU1ta@{q`f|Tpw-Y`OQKg|CT|q1# zg_4D1ea)ZbU?YN^cjI538sR%Fs`c%37v-PU+JrM%TeJ$npT;znzJ;)7iXeunNQl>4BcE<1lB=Mex1f_ zcL^uJ$47K}dpcjw+|aFxuavqx zHI-Sy$L+8ZlcXeU&zAiun1g0YvJWcLbfcxgWw_C zCZ*G%MZCyKCos<FQD;&ojCKC%@OrSv2G7rrY?g1<)^%jC7EF?P(cT}vE{XY@XCwin z=Hg(s!KN1?y2W#LmQ}@#?qyMd@sAAm>S870x%EmcRt}MkxQvw=In8}wmCdMk`cq&U zAC?3dqy`z@ZzYXJx*v|IJ@KhfEJP>(%Uc`T4f9H}4r`=sW}B#l(#1ShIFDzK6$jOb z)@?GvlKfP^lt05O&}Zhqe3{Ltrc@V#WyV}AC@3awmwkac+MQiJx2qPg#>BP>eb%w( zKzLC8rQvfx-g98@In^!1Ku6!$Fyra4xjFfr-t+L+aQR(del`X1FE19RF`!(}trP7x zX;oZRt}Q)lx1>r>d%W$tJ|;0l^%($d0$0d0N4|+Zrr8ZQSHf8d^i!_it!9<2sCtVV z6q0yIdFl<4Nv&)c4;Q8rwp#WuP^|#JszA^0T3Uduo`MBoh}<&g*aNZyh|}Hepg0u{ zP9`JQ9*Kp+8O%JrDrlUZU5_kH+keYmq@lS^LpA0|k%Ste+Ro~hd&LvUA}p4xWS zgvJpRu#<0&cA14=k4;Bfu1AC{%16JB#97W%11}8-eZyqa*5jcLlh0|hM4W`Phs5@d zgQHo-{eXliLQHld*V4M$#t&IP`v57D$U4(XiI4z<`oHFhH2E_6_yHZ~uMH~|JXjWn zz!iA?6BW|LxCuG;#jBY+ew#ZH8WJq2Zu24rf54Nm8OhPMnItcZVxuJvnTvs#5Am8I zXWnznJ|?wbEyl~{ShvEw*%SHMYwe^_QU@Ge780Qi%FwTq7hU?|5A_@=c)5I(j!<`T z$L&huR!QH=9ykl7gGXzui!7dAjHNPvu*}E7Js>x|U)>RpqXOr>ufl{DW zqEj5*$4NvtJA_eCrGSqeX^^}Bri9Theljwfc#vgRFalMyiRw!v303bro64~s6jL^W zH&3XeHTP`}R>+ts81-{Ew>WP#1*K&RJl_dZ@*!V6icY?k^*Fx;KK~_;lIOrU3A+Ql zh;j%GKs*ftn`QMjN+A1FBSnCi7rVa!F6p40jV4GJH#*W()SSj#SVVg822Yssm;?clR`kEco^ zI^Qx7Ggo(fQSZM<6g^2jZq{BJus0D?Bz^Pn%j06`X2wseX@KM2b0}?oC9TzCOIz1Q zsTJB`Y4@Cmx>QbM-1>{9{Wt|}HmWgdoOSx5Z^t8j&UNe3y{^p14tRxan!>qqQ|FXaAKU!HEnU;im8mqbdHZgIR+@V!X0|0%8;n(*L4sR?$ z1BRY%iLn(wN^Hg`OvfA9P7)mruL8BgUv>)xi#==t!rhCq(Z0CDgj5?jhrLT0i;kyU z7rA!7N=~4D?z8r@pAlnfPgcLXaQn;uh`_qd!1-78bIuG?T+V-wB=8%WTyl41CUxf9h$)bl5O1J z_mK0wqF7&1YHybz8DhEXN1Bk1Hf>(p_JIZ}Z%2H^?Qu+M&sm?b`sqzq+C|Ht0l1E_ z>6zK0?$MpXsB=2`%TJm4IwG&gQ7J@PcsNk#B*Qn6$j9V%O&jhv^Hg)N9S70e4$zqo zZ&GdDB@>~;gHFN&8a>Y8uOEkyK$OB!p}>0Z?}go0#0ODY{0DX+;jzHBDU>^*uI+)v zh{5A8yO0*unA9xk5b2e{0mOo>N?~~fcWw6@$>vr{TsvL=LLokof0&EWgkuv^jx`Uz zTZ_45xG_#Y)RKsVkjg;FMZ%#}#t=e8H|DVU{zqvDiRjKgaulkKH=*B+l-0cbXA>X9 za_)eRWf9?1z`A6aPDf>w$F1!bkz~D;%aYe-9QE zBk)5;QW0{N`BguZ5~f_;*v2FK!t@c3@4dgk)#&tWg=LK}4MzBzH`Bs?ob)A)JjmJJ}G2TJ~g94WgmO3&S4RBhnv;UD||jjJe1^XdG`r) z#cr|EC|R|R?(ktXwIb)$&+k56#t32;S8!2J?R)WLQDr4tx)|WTtFxahMw1<=_dHfz zY}*e|&1gC`WPdgs8$#4%{iLZJ15~9$QjMd*D4tYWG|-ly>4_W ztP(t&40mDk4IB1=OThqqCWXz)5&S!Yr^`ukY9B|)_3aQy>>_xG44g~n^H=csIwKul zKrVPIYya@8Pg~F}5LRHy5ipzyU(9S0jb{!#$hf(Ho z{dY?WQY*yxp6_M;3L$~SA1d+nlYF8TvNCo?&i5n%ZBxB~oz{&4$FpX3YQGxqQej0A zvD-g3cS(WgLntIor-Sf=Ix2DIQNCfoD_H^0m{PTj`fsuUVb}8ebds;S>$YG z{Pht_>JztKGY@$Td9`4eo$(%Q&e4dR(&i-q5IBgy$aiam55Aik?F2)0`Mdl$B{jow za$_jgL#}4`@?$Z9ZwG_W|AasJMNJuq6%Bp@j`CAJdaVVHRzHm_&?7v}?dBnkj4HMc znwja^ca>0V5Ezfvf(!y#Du9p>H7=(U{4#RMfA#g-`)|od*lv}TmAT)lyXB3x(gnt{Tw)n9)Rb!L0k?Ya&Dny(LD2UAnQ10bx4wG53ylQq-Iv|Cy#h2oj# zur0`;`ds7#H?0P2EJ5{67e;|87TK;!iVgjEIkb{$But4@<=*L@Qq<#9eyoxRv#{^0 z(0GnJRGA+XvIB3G7j$V&vs{h6ujn)4#^h*iEhxTCY4|I=OHW@(I{VPsYRjfoz(|5! zwOZzA=H6-rjiXhWcnl>~G}#n?Fz|x+T^{xUo~rpi?{&|Wa;fyFW_%wl);IN)fo){c zDjwV_Fcd9@+j#%vXf)*!-qfx_6-{9<#>Bj|^YNl-fElLieA~No!4gKYa+4@=86-au7CFp2M!4ZuF!kPwTl>jOvKYa zRiY$!$&(D4v z1f%cp<1ho$tCh5q=It2ygHZvte8^GI-Rs7u6aRIUFI=k`zZdEkyeczeeO{N4cY}7Y zR(@V^=)myx`*=14*ZtgkY7+P3%~jRb$W=@8CsIG3u2HT`xr=gr=-h}Qp|#-bdg%00 zGokybQ|ji|AhsW$qanl2^Z`PTUJ}F(qW-fyz*VAB!;c|lUV8;lih(4YZ^%lSycGk` zLw7G_WU$=yp8449jR*C)SZIfbeV5W(=&1{e``Hzr_peB*acHQDem4iC$ zoZ4k`EStR9z>qvE^T4QvTV)hee@b5@6QY+-3{=2alqIT?^7+WQ8~E+4c|__r$J8x!X)T7Z zd$_RM=G3wfN})MSRueN5Rqrp7v%R$0O~hPejf~S!8Xj%~o}SVv=JYzZf0CR4>r^p0v%bJgNgN(!~lRH@1Z zv+iXD3Yd?3J;G8aDTKlxT7_!7;42nI>s+-v6_1ymbtc!F5RDz>jOF7aQzLuj3w&mf zvR1lo{m6B^1E0oiZg!T~o8`#9I=Zh3m`qq+5n{q05$pAC@WtWKbiO?C(KP2L<1@U_ z0;*J)Y+w7BphsaxwBc-wBMJ{^O&K z9pZQ?zjs!}&HW_+wL|^Fde@%~E(RQ|=CyDE#iI3zcuD& z#_SSb(S$Aa4la8MC*H((m{iZkn|z8Jdw=pBANg^mD8+~`BqZeAKYBJWgx*Cej%gSB zo0U(ADoZVXuq|05@@D4S83wi1NYzHDcgFk`Fr75LA(OlRPvBCV1Tg3O_P%@0y^-Gy zFBL85@9!?LSUba+brulT^!rbQwU!64ve`r4oJVE$KjIH7osYo}+-G74C0x8|*sHgy zMy#rHEZX}4Rg*%_Y8DTfuzEy_WRF~Wf#{dprQeL94=c`{?a9(iPM{W70*;XFS0x0K z-+jbxi~zr#IYc~&|KKLd_EqjbbhZXgi4xR_JE~~PD8JWO^ETx(wW3VS2su{D#52&} z>az)Ji*Tq4_=(;2utDl>(=d!nr=|>aiL*k49F|p!hjlYmmL*gQuB6wSK0kreg)Q`c zz3>uIx54c_qg?7)j>jZB6OK)nRKuVG1|EugTJaDd=9Nyf=ql~Xqa}Q?){>*Xvytp) zQ~JeMUpPM9UHRJ0qI2UcQ=xmhv>5SMSju+Z$7^tr8~s@4yAoOG{Lm>=$>qXJj5+04 z&yv)zx@)JWn&zzeib``NXpA@(*a(v%ZtkNs$x;(??IC!~G@+Do= z{jKQd)8~YVOkV?q&?|rpjjWJ~{8tJlZP(c+i2T_>pA`I(i&9n4bT-GStyT?ReMwf> z1CHiZT-Ee2I@faUnP00j`Guar{NGT7+t6AhOh?rjb8@Wsx5TteV=Y)cesK>R_uoye zBk=}fqM~Giwa#SR-r$Dte*M~$8S|3cv_)$rnrbf9Rm{k>pRl5@4v7)>H8{=AWyHbkf_;#hhtRw$Uv1~Udn)sD6m?NKQ3=XXkpop2g8Ov4

_X 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

clx1QR-tEJXV4n^nsw2479aH6hsk}_QL2@q zwS_L@laHI@ltcC*a`%pKx1s1+8W5-oeE z8+)GYq6+pl(E-G&0MP@?RSXP@zjzb)kl*=m=*Q7GQ{t<9L%8j6qXp~Tnm0*i)6xEv zt;}kq-70rXAn-AG+$N0Y#PEFcU!(H>cXxU%Tc>0k)6t|e&d(rc4Yn@zLeGCv>j&g7 zQ+(c2;ZPbE^;k-(r}1Q4KXFL-@>}g6s>w*i(!~V)?RSKT(|&`VWP3@JJ5$DEku9~o z1Y8jv`bOx7+Nj?PQ%*n<+)S$7Ogau5SZH_yT8~P0d=Qo8(pQFeN@tS~I5HPXE|lHV zXSkBA`KBl%zUH4yIZVHeoYYo@Yspcf2D}y2H_$HLo0;6>_Nh!)D!KBVM)hc)Qbs-G zjJ^(P@_{znu1$5PA0WD~ck?)`fBa4_+BFz}RJ z0jf`Uoy)naK*CArnfKkPSip8(9{M9_NC3B&US75kD*~~uovOA}7Pj97IXVsD?Hh98 zF3VNaPS|)X+!h;-7~SvHbFk;RTGXK#M$I<+)6`K%O3K<=721jyuDJ!v{!75n2mUn^ zdPy`%X(c*M(rl#pBTk2QE4GZ}dN-m5|BH)cRTrRP^rst1f{UiQ=|+Nm|3}thl_b*A zWDpWT2*vXg_TWpd#MM%sQLv=qfS8g^SP@B_=RYM6YO%YAAwMfXy+Kk&7gLpoiDH}8 z>-E{Z97*7u^;Y91#UPSc<3b@x$-&u`^Vc79fXTj7L?`KZN0H|6RLF`gL2QwkdpRTH?bS!Mi(G~v&0o&#sOm4vc{0QW`!N8O)~eFZ%kKn{Rl$W5_H zm$%z_7+-6Z9P1j90{=i7&vww0;E3@oMgDtK+sut5-0Qe%Lb~zHTOlG)>q*w(q3#Fg zMLy7sl&F`~p!q0H z9W(3kaSqfIxlwO3^fTyf_tBSKkzoN&#>6_Z!`E5SK3qO0x`HhGe$0GEJdhiG{Z$54 zQ1T&9BJ>?HYITZvTSz98cvW>w_Am~zV8r%0qdVpmh4x;i1nE#JK6H_u9E`+O4=wnMS=`EJ@m_NgsdM~MnUuhE@wcOf7fPC7PY zfBW-U!Hy2(G;6Xsd#*6#rV}HUA?kOMtjm=vfpKh14;DKyxxc^-=?hH*f#!DuvqjiL zCvOkXh+Pl2Mxp7GzQ>ABMdp-&7?C}1*y_m%X?VNe*2z1}MM;5=#<4MNXc!x_rL=*AmU_@UVM?cs)OC`euWu=cWl|!&lb2W}E`H{ol4W?;qzJF|Ta!b= ztjPN~1W9GM_E=fiMwT_DOPo;3_%~cNN+p(KQnn7Rz4uzV@8VK_XeuTSato4OJJ*)H zBM`rcMTqp?{Z$gw#xoe8sD3;fJJ+`7qt)T0g<*-)EFqlR1A zGGS$PlILb;JXQ(ert-X}qaBEkH+_gt-~D6}s&C8rx#m2r!FpF*i)GT!)rDg5Px}`I zC!!-Fr==!ak>Y`TX&OEwyN;7U51-kc>8Uwf^kio6ch4L1(a-rB?>Nfv(kh!T)m3^S zEP@y-a}fi($@F}5)ns?DvF>3-e)d<|2U~>tsDSyGQzaC0ROAWV=m_eLcF)h-+cv^| zJ?@>*OsAh(htgJXS~7(UgZk}&7QK7(Gv$xSVDiRE-LgpxK8x1Y);MS6Vr0d4cSBvG zR~wK25HE>G{#|P0v1>bR?CT}K&HLhjfP?7-9p@RuPd3P{u$HxBTGF0_gyu%VsI2Gw~00$s@7JPY*(58}ovX!o{MOJ~ebY zt#>|4HxRL5PCw1op>rfbED9mI3ot3hhh)IP%@_diY-?KKpF?3=m!Y6~> zCyU(k4(F-uT;WliFBUt*+;h!!p>Vc|5rlfrL3sV2KZgq+?H`j_f(*$^#^Fc`&f*Nl zNjt5sqz5y1f^xg3qz%^a{MM9uj?|w)4fKld?V=mVY`gwG@B#8cYjwTKQd#7!VhgW~dBEUISZ$q-afnP>N? z`*V=rXq}&f=TefP-)*|&?g53(F0{(CRWdqg=53EK(Jb#WH#d!k!9@zV6~w+dmTyHY zkNmTh0&J>G*$Y=^0c}3=mWZJ%OA%?Zhc@tv}i#!`D*$3MwSJMf6wMnx5H~(+jnEm&7Fx+7#*RV_18X)gtAV4 z*|D;KSatP}npEn2%N*pG&pwSl8rwS4x0Zov9Kr~A?~BB?We!sxidD1!d}XplhVS~{ zn=JpsK5KOJs}aq{>sV&bbXqj(r6A+wF1semD$r9JoYJAg)30wUV`XnU^RxP^+qnR) zZ>>f{BjZ=Dn(9pa*KmN7(;LY>N1{mo`%7OA%E6&ffFKzQ)F=?lq~GE6+oLsKJ)(vV z|Mx6Jlj6^JW|`uJYQ55md_6ki@pxnL6{f|cf=6~bSLUziGg9aNyjYgGN_JU;+3Pq= z1nvVgCkuUfg%SB$E4kWxeZ=$JWozM@KVsJ^Ls24MqA1o`q_B$l$D>+UWKqfw$taDF z)w75|WXYY6u5iONf$NWPb%ii_wZ(hHfos^95-aW6RF~~$U1VlQg+x+5NC?P@pY)jiE!VfqvK>Iqf@9-B>@ zsE3IJkwa%tJpdPhGMAdi0h|cz3{u^{>y*-pGhWCltHO+>P`i= zS~1m=C=kA=3F$=6qsiG?vY-q~8;z1*Dr@JnO7=5^wl_~Pq689ZZbKGh`OA&22e+NX zAud+m7HTC_G&t$VJ$)iNdzJeCkwDK=jAiWYrMe6!t(s0M48B{haPJEYlA3i39q{5) zRaESAT`ge2Y3*GsA z?d~s(r9E1v&M!r<147;oMP|)My@L0K{Ia(#DCU9#O9U5n1dU{?*yJ6Z-Kso78wBuw z5QDrvBVbQU7NIZ>ni((05Y1A&ht5tc#2R1p=4SIh&M}-$u~#X}G!Fh)8=5?6V!jjf z8_hu(J88X)?0NL0d%uGiW2rA|QDHF8br#pgJxz&CK3ec=5}0J#ax7b)@OMSHYH#nl z$G>J>*Pw_ksh@wXuu#j>NYX_fI_1dcsb!+`g(?RTt8&h*w5eg(5g8L9UJX}0&z?uX z*y-T1Z`08>n=ke@jc(v?^x}B(htN7d#yz)Gpl?{xpvh|lWoP*ko~)?6V)(GVoXC4H z9e~4TCy>lbN^CPhW+i_2a^q&#_;Sv-Ny_)yhEGg#yCl!>_~UkSt+mX^=}b{c^7m79 zU$0TH$79&IAI%CIto0MwVaiZ zmnVzWY~uH{rDfKc{7VKq;6{|sh=2f`ViLWr^gqPQ{|3N{dyvF?FXG~LO#wHtw14rT z=ayjNYlZOzCgy}4IYHCqZ-uK9cgJ7t&E%dFfbS+co=a3`eD?3m5u9~BO?kx_x}GgF z7E&mcQQ@eKE)*wc3s2-T-~SHwztporLdt7CNUu$NI4)0WzYfI(bfb`vk37C%Bdn$0 zY63b8<@{QBe5Gyix_B^`<3pWt3fZbu$5F`Rk8&IQWJl}$Qm&kG0tbB}dr!>a7Gl`` z6m^ZM9qswyAJGH9?TG?JOH84g>Z_reu+ZsLdgKCzW3_Ai9 z<1UwUP^|YZ=}lH6Ma+q4BIrZXiI6NpdtmEP%x`1l96KTZ!^6>89dg(l%fju^j4x|c z@vlJ|e#dH}sS^&BnMRBzLGm3-)pIqEhtVOt{950o8BB}TbRjRI@wVguEM`%%Pq0r~nXA;XX6cEgUhrFDHqV*HEvrmupa0lIaIoac%&qZSi z;>~3n)hY3Na8I1n@(}$0H-w3}hSN3s7xmvg7DaEqCvr+CF zgA}_DFxzsZF_{lDN-T1{=TRE&US2sUek#fEQ&Z26xA^G9Cr4M|0LLl*G&~!ZXFQNd z)ZEyqa&Jj%bT?#3R<%YJlCW_Q3ea89a}T?cbSXM$G(PXSTP%Ljc|6v!Q;Zde7V6Zx zp@`m^j<0c9G8)bzgA!DLuQl{2oD-#}9|A{gva<5Cm?jzKRl_*VM&O$Qgsf5h%Wmrb zO9cL(D^s^p$Q$083%xFQW%J2I+e}6auxhelMjrSyY!mmVh|jH&h~CgSbCTb zAJjD00}g?HcZaB`%Gy}gQVX$YAYPbv6dGHyt7vwW#&Iq-$;I1c&m3F6N*%DND#^ja z=qPX1_2YPkMn9h^_gi|>kXDd1>;V}etFh`4b>!{91uyX$$CT>tK`jkE2^CwM^ zhrdNh`egf*;~q%4z5?&*-|w3uE;%s0+Ty~>yqK;8WFHabo2uqfRL6(#UqNk0QSJFI zRHWY0_->XP5bNwD!t;(2lHGH0!z;_n($=P&%XuWeZ~F2Hrsw~WP;VtG>#W%oBp7dY z;>?)Y7IM`@W~NC|X{7g|J@+lL#Ky{*$`u$ziwl*Mafu1Tm+r*!9OVR}_$KYz;H zj+>km#!4P^-Il%n``2TOS`sT^H{9@@=w>9JmxKM^rCNr8kJEMj3pWWcw?IWo{@hpV zP$wIkrFIsH3gHa_b^tW-rBF{w(%FWKKNLy3rk2U=?>dFI+i3)WMA7T*cebn$JzoON zMFz6MeC`*Y!A||@Poi-!eR7}>?ghB7FYGd9PQ4Ik-Xh!DHHtj@FDC~#uKM!wFDf%l z70xP;>#xTeC{ZcreurUqbydECe)k6kxxXr)+c9}A;A@zbkJxfigJv-=OQdPC0R;A?`YOj!To>Ti!8FgW>@f2yeM_@PxXb_P=IYb_YQ_s)JDuyc+-m z$h&(fSU{JgD8;66R7_xG}kfCw^+@8%)uU=VkQ=Xh@r43)&IyEP_}0?&6pXaL@Wyw8cfCx1nZ zPPmC3XBm|b6C^SxUp_1YAlD*9NBE6S&dy+e!XAve7Dhjl^h|71I~LBQA-l%BW?D?^ zQ-ORi3!?W-a3*p!{X|LdS3FTTo#1>9M#C*9Q(e0lHW&NrQUcXZdYX!gYPY2mYvF|*OeI!CRH50v%Ko5E-V#^WijTLur#?7hrzJv-Ny<5jMp^|B06LC_6tv7 zMhf{3MTsj%%=}YXYL%y*mmAP4 z^e%XrmaLZxV6V%Q!pcMAvxa}o+8ZStr$gVXRZoOxM zel-en#?i>cti zQfOVKpYU3N6t%vdy8Fo3ET;NGwiayk?4g86KZp>-mZrFWJbxB89z?=^FLVgSMiC;% z_2K>ahb7(U!yOE5rtcbt<5Y?Wzj5Y_GJfK1ZqC}bsL!Lu~9b9f& z9Gnk>ao{mw7`r4&XaOM$x9=-X#SEVHOOaQD24g-HHlAYwt~AEddCsjo!wId?738G6 zANp5kSbM;s{!gzREEMz4Ka09D4$>$)osm zWXNj@@E2qD;riOu{$v(p+<+Z>tIS^Gvsmh@8HzZUn&fL^iU&=%^2!S_*&p67#yWW| zlHkurB7Uv*>LunlpNe1E*KM6IWD)_)%6fw$*8ax;TZ%FjHMyu=h?+)!BiX~pr!Q%g zdL)Se_oFLQS&Z+QaZjvAHW7ha(;i09n?>hpfqjNDQ!Q^fT`!g7JnOXjObZd&_uK}> z6b;9BM}~Z^JVH$E06|cRwl$(9Lz1j(cxHlwLOQ`&3Xa6st_`;|G zf$rY-)!9h8g>ZJb)O^(i=x!b5_eQ)`>aeVqM;j$#Ke-jZ4*ids!O_-g9)lfS)KiTkxW16RgQ(&AaZVfh7YL_Yrrec%)Z{9^xEBX zHh%cRymb>ifwike`e=u!lfV5;_EzRt4CXCg$tBwU%Fvyh$(`I?Bp*=1MPLZQ(>|h9 zo1S7y`fj9UGBnqCeng${M4+@x!_!E5F)f3|M+R~DDDLGaUZ=^ls#E!gqR{;-xE^z% zT}rWbp_PF_6}bJntJm_Qj}+}bgI@zCEb$Yx*Q5`v0yJ6R-x9a)chA-d$S6R;$mGSx z7OWB6A3vM@!b*5?bve)R*>Ym!+S z!D#91Y7t6TN9!#kS^rvGW0Ya~Zp=4NZN(HPu1NCtlW(NPhQp36^s5FCxmffG@NTl9cWICtE zv`Z+?{z$y1|46{4Ymrk=U~%fA^7V4&Ej9~+;0Y&m7JJGbXuGrZX0^yp-(w7wTpK=y z4Cej;fR&?<%b`tSzp|DBh0f4(#+q{XekS93&5}r^kHXazY-bNlQx;wwq)gQs$0Nqj zvB)2PlfT>PW=FvOg(_m15yhbP&r+!0AumpMkGb{+DR!)%KX12~dC2cF)6}`xFlHF( z<7W;w4~v-Cp;kB>S8P+nF=j=ewpb-bIzL_k?&axK10Hlrk<-)UKnS^lOD(7 zqaKlENvFZgaAH)i=FM3ZKF54uSH!F4t={PV>dkz^S2+jz$YB+Bvf80{odt1qVy5A7 zvBkv2m@tMT{8y%y!Fb(LmWdRWg#?6t6-m-ofn+`@b0>`ZN#?3n#H@F8cdED&*7O%c z`V@D*-rknp*~e;`BVJQ{l<@DrAys#e2cT?429o*d86~?lykeOrw0x!N$KxLbg5 zf3;ID&}}2L#(gy2vAs$O%|%JV{^inTjw?EXs>N~aM??}W%?ds!H)=dwSF2uH>hCbx zOvO-Qu^T|yWK0uqb{0ju=cLtSq@r7E<*7?eCztrqbp)+WSuxei)EdO+#walWSn>YU z+VmG3KSDTLW-B*Z*-ClbFm5S-um9Hl6e6SH%V8g-$R-*L5Pi7$8*cCa62d>yYEVo) z-**-?n1E~sz8a7p5S7?>VagtZH|W*)jJIm~jx!m#ovsp52=piv&!%~pEv9*w)3&6_ zr`do^wUs&e{%{j8>*L8SpTuW|gZ{&~`|sN+nr+RSVb7^AuZZ*e*jfaS)2ZvULv>FtIDE-HS280$y0p5eXiSRh7sGhl;ih!u9g+mqzbXc3mtCe zZY00zhK?b{R!GYMNA$Vlqe!SJN&LJpRg!2$55(hrxlr`WLFBd%tx$fBgg}lZ_C(i6 zGwtY1R76&L8+i9aujC5hmy-Nm>|fk5#ksbrm8xk2G)_5ntQKPj*rfHF%|6(#faE3% zo6=6}z1~lr=<}Y|RaA1_tU(GP3xrqJ`(R8l2N}&>LsV3h#?WZHGFEC*W8?jaR3e*+ za*N^@3fUucIRiCuSWWL$J#QTwmt(Qc0g(k+Zn+P`Qtad=)8`g5@hHoGxh6@Z66?~+ zGsdIpwJqa%VYK*#t!-B{it&~c$v)--nTkO8tK63S-2devUptnr?UpS3EZW^|CkR>MIguN>Zb~ z!%F>~Nfr)BO_(*Kmq=TES)4thE;Q~yc669r*DNYY`O43CRD1o$xbv#l<+v~3R8McZ zK$o3bgx1R9?=FKa*>O~7hu1?+g_;6%C10e)TroPje>k?M#4?lcnxCL8w^Zv^2&ZYI z(jvwGK6afbBQg!{Wh*fPV9fZdR@KhEn1Rw`4KetLu2B(n94xsPlgc7BBVK>>v4C&h zm4m~PF%zQpr=4TzJBzJUe02&h~)&dXB+ankJBmY`^*`(^AABvEE@c4BcVFM5-l{F}1^G}BnHOfvqg)ok(9 z^Xbh|6>V+2D4w3GWXVkV&{f*<^5N0x+Umx_Le+y%d1#81c!L<>i861yRZZP5T%a&T z^3fIWzV$&tDJ;K#KM>;U)}A7zht`e!$}oerM7woj>G`$S=ZcWy`7RG}DWlqxpE#z+ zjkZI~1?!nk21@^6KvYXd@7i@oox?sH7crm=YO=O5g>SJ>bYLdnIuAFO`@*k%XX3gn&*BT$zy69_w z9Qw^z96Wrs$rSz^=h9e49fIL1g93825=Fm{FSU~jO;jmTIl|H!G=Hi~Pa$JqKJHkmHAQCzqZjK5rjf>h1;w40>364d^O8R-VP?U3q5^+Z(jtSsu&2yx=i->!*=hgKlZh)RvS8BHx7Z)}0bV}}SE znA04VY80;;?OiRje^jF zwMylP6FWLeXqU(WxhNNFqP~7D`2g8pq&ukP(}=lpcrJS+=v^c>AmFp*Lr*FsxIXsO zhCP!aoZ^@1o#8`oe{TcwfbSH1>rWcY8}R!0laSebih?E)q8_I9u*sf=5K$?pTGYs#ap8*?g_6eM%|3hO7^{zQITZF5*UJK3+o$3stI7S?G&$ZF8pUf0-Y zwk7Q8{ms(CL$H3++(OmBK+6FBPeSoM%1Wy2E~R{oZ>rh;SSyUM7%b@{J3;E1LDRTv zXUO$|*y)tBGl2zL|T1`Mj2>nF&1?Rg59bpBUMyz29Shg-X_G_8#1gf+T}V1_CI zaLMd)Cnw2DmIr+!$R`>cMIOP?ffMkY(nx=aKe0Zq<@D+<(fmmwLG90ag)|X3&u*GQ z)|Ox5$d1p5x6Dgd<;yKFM>U03QL+wPu3wu&1#x8wqY01ED(UNB`afiyRaBf|vu1IE zYj9{>g1fs0w*+?x?(UY*1b250F2RFCaEIW5#@!ofbUOc>b7p4EJ*yWNuYFZd?X6Rn zHegvx?Pcc~vyrnqGR))dfnZXTL;aKYb+;_(#$I!&BH4noyjINV*Hibyue!Hlx0x6j z3-_P3Wf=^AfxnsqKYsVi_Hf`^8+l9-ASze2m|sshC~IzJqEBtQKb+08!JSUkF~L*P zsZ;tM08Ftc(@*47@l#S4ZZ^uG_+-smYfWK6OdGeSTl z6d{xC_QgikB&(`i@FxkR;+ONQ!_CDmM`&boh_Ac*<6yphwj$2cYEa#t(y=s+D6!dG zej%=K@L|;-CH4JlJwkV1O?=A%Yu042eb5C&j9rEFy^$CnpO??(Mi=m#c%|bB8!E0Nn{WzBw6i}g`*0(x^`TlWs zSRczbX7YJNHqQ#W$PV~KW+<0-cw!-iupmi7p>g>_tbZo3{TIY<63$qYzX8!5yT^%N&_5kWZd$UM;UhI4`8 z`e6`9&UA>J4#;0iseOW%A~j_J!JH$G%+JZ?dp=UIAis=+ED1amdS{EB6vv@I7C^TQ zct)@1D$SbsvUcgNB-V|VWzKbR^6bo!Fy3x_5(Fyf2uUJNLTWftVivRlfAbzeD5&9%Dv^wFE=(eL0l|1w1qgn56m zqDR}sUwt9gyKDVi2n0ON0Jp>6uB4%JHbH_qkGEDV6l_G=g~n+`oX%@t7mr}BDRJ3T$nL4F$lNaF zsWi=^RV^>ZE;dl+bPbdFVB$*So8@Qb&`Wc{nB!vor{>SztkD?k?HXTZ(wOOP9POOG zCnvj`|EctxT}+Z4GcEnUQt1D+xQ#^!h-Md`)dG*Tu13{f3A;vwukbR1(`yE_pY$f) zZo_m9BJ^deAa4#tV5x-WP|C@9NlwD)8u5Lb*RgSB_<6|SmiP)n&q9r{U`7@%R^6;& zM_u{Bk#Vk0O{5#{trPC-Je^eAnRY?Rq!du7R|x+TD5e}^qY3o)Gw)R+!OiH$nOQ7y z&t9P$Pa7DU>P>Kp;Y|I;&uWo8SJ;^X0I@OY{*mZwK>mdW3rYekCS*nfZiG{e3Jet6 zVI6*Ciscri1CMwDJjd0W4O@*}2+@gl(GW!lNaGqCr*!+wMAC`Ufs!buF2U*rTLWPh zeWsaS%9P^(gva#@pp9M=tfIIjG;1S^QujoR=lO89tlqpHPlG5S-URc!AWDBDt<=?+ z&)3u~e$P#C)20dq9x)f0Tt6>N*4Y(>Z#-Yl_9(0+|69m>-=00I4VxdSG0arsa}bj8 z1Vnce6ylO`n^BS8Ss-Pi$p*m+eu|9x=!DJ`S}Bw6tEw49-0dMc<|=5`gvdRc*)m6^ zMbD;X_573e=d&z}_O{aIVP??1l|#(uD5Y=XzoQA6KkTa&x&KM!^amG+?CBwSb?%Hx z=Q$;HP;|KUfyqSiv7Qh8Io&KxRw+E1yg9xJZ6De=+G?Js`hIuPgt&b<`7KhFK&96iB&&VW^(xV`c8 z5i@t8+Ro$3L)}i6eXr`+Dz;xTiDH;-W7USwtk9vw|B1HzE0aC6I>WY<2SasrkyrsB zc-P&L#M1~K!0X3}9_E^4mFb^7dBy&78%3U~+uITs*kh@Q_Ov1e2H!DZp~h>H^$#RbqUcl&T7Ze6pKH5_;>8EbGRA4g0iq^e zki9Gax1+buw2H~NcVm|Q(x0dBiiJM9csp-GN2MIUzpU{M4_-=;rPEkwV`8+>Zpri= z_3=@XBj@3Q?=a#9lYXP^To%GNIDOI~6LDjCNpSG3*|`0pBzE(cPTVlpP0uE$~s3Ns@&J?kLs9+!EI5ls&X_7K(8G+-V_w(trdbJ3x!Xxy4qOuWVDkJ*aHGjKD+SaIWAtU5ms%B)nZfeE&gz@VXnW;gSR z=D)}Q7;=~mi=ue{`k+Uc`NrA_`HKt!KT8fVo2?tXdZYF7+68F5Ytf>}QEXS^fQ$9< z20E+jYlP~#)f?X9LX%M|_~vqS1%C_Q8hZ4Tlj+55Z2oEE+A1$j2x~>CaAz!-@(|uy z>=@+Z14+7?m7@T8(TP5Es)|wi3NBiaD7vIscdA<%feu^ozKOxKLpVRp^@VF8iribQ zKsc%KUe5V3${CE;0#$oa*(x3bmNyz|uT0xY_r7r}9;d6s^;=V6*jZ81rQR73Y12hL^Ixh~L z_knMciOiFk@BZp^w9biYihDh%uRl)K4cFEf6e$|iuj0Q*(N2_X5bNoIUQi!G%X;b*0j_MZ5bPHqM564o|qW(7vfQ?*5R80-$ z08MD0u@3#a8$_e`cIP#v7wTksq0 zUm?E>ux_>SLM1{k8vd3h0O;4Wr)ZHwgN$aI2HcepVgjyQZQ;2}Q3?6Sfo0j(Qg^@h zZOyGN6aY#(GV0E>mrPtW9R3D!Pz2iPkS$r90fcMjGgo(t-yq3XaV7zurlMq<{||8G zzcMqwO+!Wf?*@aPLC8D#-H=J1>7efY%@v2&)0;PX$Da)4g||OnLAP`_yFVx2-tXm8 z8**L5(GMwu5%F0f6(<*Rw?VhKUa!wBKjuUp4ik&j?1XXGlKiyAK3ubQz~~Y)p2))t zM}`WS|5ZcjvaL=_;$?a<4B2Zh0Z32?Kx?{&S(rIX?F%aL&(O!|PWTka)hA{oEbW$F z;6#fz^k^17cNj(VR;0@cC3jbY#M*egcw$_NLI9ekzs;W7saZhzi-?E>mV!e^S$0XK zi{MeAu70ra6E_vd-ejQT0Y41@-C<$!>!dC8(+`0WUdCl7QVb%UhL9^Mcua|iVY$E0 z5TPdDJdwJNB$h{&9U-gIaAac>aPhE3v6E4%rzf5MjmzeU(^ADpeja}Q)}xH=sXtYp zYcw?%+XJJPiIzS}#Jr1WoOStnsDzE6!4@D{lqAvDfLB~GkwK}Ro~gverN&bjR$0;0 zTBkECapTM#PS&omcYPX|D%$Q6x>2YS02Aw zJTScT{Z|lCHbo#UCi!t1-mW%_gYzdgB675vkwk*4KS{be?b>oy+%1HkmOh;vp3Lqp z5Rp;LF0!u3fA^?Lz4W@-C~mm0F=272jz-$Esz`*V*VB0RBN(;(`pwM_cPcYgiJ<&l zCc$0~m91V4wTE}7_Hu`hZ#zIE2v5Ttg04+f$`}`sxVgGAI9p*4bG}_kBo)yinJwKO=OZJkM04{im zVm+SS`_IV(!d~agrCRFojKDq4$-WB>?|8PsdWAyEn%{^%e?NYG7bwxa3605Q4P&CL zLV|qO%cdq_gRsF6H}OD_!@C_;d80kfaQGQ}zj64B4kdIXpY?^Ka6(b=8ebXj23Pg4 z2wNe4Y~?(R2n=ibFd8NdG6vVRh1N|!9K3%atVKT+D3#AMW;h(qX03N-AAs&5fclVt za|W9WXsY}eaX~C}*bXz^5ah!e9|WGKpOrQ48D{W+izgQfZab7WX}>fnwCu9iX2Wk{ zb{`;!zr|^Tr0XSI(LuP{vO~pIX>MfXJN|oVd?lr-&imCy?jER%6A7u<_(@xB z)ZkAYLic2>P@uwhU+?pEJa`7x->S03O}q<34!M2{m15N9Goyb$F)Px`4v(B4NgiRX zl^&-wp|3D|u6xQ`1Bcv1UbioL08ft*J6X5mnkkbJr8TZEsV7<~m<&8B3UX?jrl$ff z%2U}|u7>h<@wVCX{Vi$B9rkKur-{jtogC2eoP%@RR2<}Lx8;QdjViA{I)6Ut%XA*z z+j$@~7FPcD(zUYuh0iUNmF2Ro5hhN)7JO0r9C%ZQ`-$WIKZcI;3|uE@Yuif3kE$=M zDul2GF~h*ponq2iaaycv*FQoS>TWD|y7n)0ytVDt9)-iWblA;Y5^)m8V^>9WH2L^= zOReQjTQ)}r+VIe$Z){8tn10TT0HUpB#0xI}41K;};5OQio%R5vMXT<~eiwh;5swpp zE*6h5lU3(lok%J(j}ZDczEsZmr7|-~BXz$yf!OE^6P0$;vCF$6gCq<|hV3Jkg07IT zut--j=2VF3p^|eDU2zFjVO#Q$TrO&*!ewY-;h8)Zv!UpAz1yvm4y3IXuR~Y9p*}RV zne0PXS+k$wW9MS=pvPse5~*OyWrqs6F}&yacHz!$D3;J>?bA0!p#p9|>F`H!XgxNb zY`!qxv*<$l&){%IVIfc5QMJ6$_Xym2!<+ph5wFJtiW|OmNS{7pig)h zbRn3JCfL2Po!EUl{cSLgJ3d52OCV&a%-}Y@CfmsiWa+i*o6eDM^qUua0$>_pth7ns z5Y`fa@&rn~)EDysOJ7_`SY)O&O*-orj(NG77$X66hfp!=(Z}W3(r*vQxyyJl9CxaN zeFFnu{*2*pndl9yrPt^NeGfwX;&~5F3043H<|WNXwIY0d_aP}9fI(Y@Am_Q@4w?Eh z#68*I3g!}Ug1bJgt3N&=rF@jzUT*kK$HV%-lU!?wzJTu{XhQ)M@bHHrQUt zy%S1$h~w|vI!F=hg0@^o1^i6a9DKo{9s#%KtOod9+yyjMK#zC^&#;-!w&(3XZVTuo zv~BJup32QR+!$^xF{4|qpi542QX^9L6o*!wxa_@XLYW%39fy@}`B|=;?NC;Ki>Y0o ziMnh&a@JUlI!nuEb-dqUuX2Lc%Pn8SBfN6mW+zgUf9UPxY;L5figw(#`0tQ+xe+fM++&@foQ($BB8I>-B;w=*n9 zcS9lUJnf=|WS;`=Q2)cJ`Rxo#pth@fqV5LqJX!qhxnxARWazHKq8{|q`d320mBG<( zSKtJ1(-}?RQZho?Z}I7FqfyOt7QLkFRTXzT?R7o~T2BQl_e|$qa~(zwrB%YIY*6ojrJD!Qi72f%0S>JKbe=;Pw#~-*6 ze^X8NpwB7I4^U;_#-~xAkjZ?rx64^wSx-stS$U)ZDzDv_2b-k)xDCiO`S~jGar@IK zNtp^mUSryFtMhbOGQ+UHRkQ_zYL2PFoT`x*Ov(mF`qJ0T9}XX-$%WFl|`pyexhU?v68DmGH92R6RayK|i!{*Ol*<-ZNvaKniiOko+WAk#EWXVL8~JLJY8!P$$K4Vnk-ht5Wntxzl~67a)XcqvFfF% z_nV}SkLU|qTU=slO5`IqdflGta~DtUJrI&l?a(JAB=`CUyJ3TathI{KWYJFea5H1N zw16HmdrNn>_V5*4W#x*%i#SME`K=YHG_@R)EZfIv% z2E}jK<8k&#fJz=p-8g2`=}zB^7Bbh=keFQM)24BLc6Hnnq(6{vrcc|AI{Krr_~*KX z9gh|3viCLoNdD?v<(G%sY=v&Y*~eVB!KNvi4-q5DE00&X$@GM*lPXLa>>oYsn-HTc zp6xsmOHPlM;PVS2p3oFFi5e3*WFp1%5LHJ}It&+_>0y4x9u{rnnM^zXxf zFdFe;gBCRz?Oy1agS#&G65IL^X{kfCKXbnf0jn`$t>RK zhis7_hTjCB>C&|{W78Vl2I`I5TJPNC3+Nw41Ku8nud1#W$$7HGy14JG`;a4-# zShn2)`d;WD5p&Y#=A~|0?uK8Pjd9~?J%y*|RMO7b!mxU)N-j81?`CFxdR3{vRV_c-(7 zA>PKeRk+~KC*UcbI1fS=W0(ATOog8dJS`5qg*}hwKk{nk#q5_?^Cx>m(*MK-v+HVq zX+kOdrrfoEb(2z}Q{G0g-sL}SwsM!TNKJ<0S;r=Ii<8`=yZ)fbTT{^q3XS6>a6E>Y zLO+fPJ0$1@vu%YUS;xzxP5FEpx8R`IIBifC^eAu__k65@Z}*~?lon=(e~I~HKhf!Q zQpl5+#1}%gyZ2P#u7~V4i#2sukG=}yI1YOdu`ca3#o54{zV$xu4d4=miN?6;JFzr8pZdwS=D5bo5|1O%}_a=?3 zBqE~IB`F6#?U+xyzEeMWJO;oBhS%#^1RbI!1KE%7Jbr=*e2L;xVI7wSab4K_|Jr z3_E9gm3E7}GvOb_wb|xtea3XVpSCys=pO%kS2|;L+a2)@=Vs`_z*fnoHX#`iFXm@- z(5dWir#YCE6m)m`bwB%XmF#b>KFjRBm(zZA-Ryc{kzMR`SK%{XRTp2i$R1z0+U_cW z5?68 zp5!-9dkiLd#rB#gaj>yr{9I?8yD^u0)}49D3A@Wm=Ir9@|EZVT0CczJ9FO&ZiZWS& ze)hk@S}YK=f9b;g&?|MdU$&?0Q=jix$@3tA{QTC?|brt*j?*! zRHOz`=hcu*IQ;G?L%y;q_I|#h03+0% z7{s(#Yb0DuHon)2d;sm56}df-n{)^GKCjljtm;AP(b#b!4SmNAHj;{rd|bn6_JHEg zW=YaAg!u+y;{x$6GuX{;XU$9W!|$eW;V~1R06vsZ7_6$SG=G`@!0e!iWpq))7G32& zhWJ~=q2aP^i?-87r=XyE0JzWxxBRjEb$!bcs_^a1Ts0u2+^rDKKlI&R2{+a z4;x~WSCuPR3gP(Kx4z($HRUEPqos9j8_PA?{()<<3BrGZaynP!_;E!^hia^t@sBTF zPUT}U|G;9t+dv88x6f4X2uxOsQa<6Stzaelso5KEq#4Wnb2U`#3r0sld)wH*{`cjEA}>PSj}rG1U>l`5COS3? z<^`6$;4Kx}1W_tcJW)apcMo(B``cMk@OF$f?c$ z2@wdWTZ9^Zf8T`s`}yg^NVByW=+P3(qvp3}uu0(OODvQ0e75=OxT-mLkV+^p;S0O3 z^=lXW(6NudezOL}0_;{_btT^H|FgCFU4`R)5dT6g-!7gbvV2yS?exJpyq{`Nz{R}l z+_NrvoV}-$Of*8ZB?w1U#shu&AGyg^c^T(m%E3b2n*+vS9uXV+0o%fJwyn*{ zv)5#7v*E`9##lOgT6fMWWMRapA}w73b`D;j!avzB7q-ETZwrsoe>>#K#3tPyl=Je) zQeM35gEng-i;M#?FVYjFJ9N3X3?&%}qjTn@7;3O$t!v)pB^9nDO4?E=_R=-^`t2m5 zfV9oJvL7*uczXto<7!O z+`k%dD1fYrT!A*U&boMcv$}KWbb5bX77xq5oHm0ZE8$oyf<>m6y~Sd)E-E+;8C!Vjew*CSi=R?IKIC=#z2apx6{ z9N9^O>r|3=#Zp%!y`PhUa`(> ze3&-P6w09z_d@vEm|6Zn9BTH6X^TPB;SM^e>+=Rx-p& z7?oujn1xUn2F9te%F$<8OsmOO;s%~}5 z@O?7#$d)>7ayOrC5eP+?5C*(Nm1?RLKp&!YFFuQ6yAaWrh^ zaWv+oIQetB>a74<0^#AW%l|fHJ9V@=ktZrK@iBe1Ml)xo}FhpGCe!-Ms!3fBN|j>cZMy1&5utxaQU+R;T`aG-w^@K=`l& zrXk`raZ?JAvR`4j@#C|rmo;VdLsnp_qtSQg#kF*d;iNAso2z=m5i?&$|U(XZ{R8}#(SN4}6&?`x=n+8W8Ds3l;k&j_2C-BFL5hFKxd=uds z3YeQiazpZg@iG!v>+kU_>}zH7uxUR@b+y@TkUbW0dpPJt^62Giu{U62ev!7^T1%hC z5pp|(0hPu;_Z${SK7RI{T9lC`>>9PR-qVL^rmx6nSPXoT>c-d~Qc+8*$w0NHn!O(2 zHi6x~n&EGh&Vmj}2j(OUyuH%E?6KFxz53ua!iw&OYGe!}81g4%vdkd)j|=(5Q42g3eS<4YsCWeE*&#_QmXX4D9$?EXw)xNnx! zu-uU<`vh{lHTJ zny@bB(I`b&%x-?fkR_)u#-%ZTM@gnraNPUKFi-Bip4)wy z>RbkW$f`uA*US`kN6+8Y=#&8OCkNwH2ZSJ=%;}{n%+0ki=R_pjG5co1$A3`qC+(Qe zrh{LAM-LyJtOz*A?dN?|@GBF4=IeHIz3lfq)_}LLx|J|!HjT~2q$Pas&ezI8>sL(% z7yvkZn$8+uPsh1xC1`T%c=o58ffuvu1Yyex0$)3m9ht4<|ekJIX}f9P1~yA z?VM}~VO(@QR#rVtNe6epapHKW3sS2Oh`x#-lFa?1a?V39$@dsH2e!OT<$o6?4B!cW zz?K<2?>oPKd3@P?dqGoZu2#~6r$D*E%4+Nf3J^qFc_<3@?+jmgPmA7{^gyzEz8@(B ztWzHLJtcTIXOUj1R*RcnQeRvJ(NbO=Ky|OS1CJO-j?Tdb2o43DMV2RvH8{Nmec7@fKy`x$mJA=^?~$ukyX(}ef}zFl&KoiYFum{s%`2{T8+Fy-5J z?NnKbXbJq#V(*@(zu%$hAi45@Ei@DLU*~ZT0z z#p75j=fmy6lZ#JGlh8xCR5ym>U6zX%dLnn!csWuF7CMegd#6%P^25JYQsR%QZ`Rso zv?nwj-K^OvwT|xUyt{$;mm>6;TOUa04Iy=8YBoBV<|)WOxaRw?+5% zvuU@IGAifb<#5#vHPa``_`jNjd00LYg2xf>2c71me6w#83~De>z}I_PI=OQLuL>+6 zy3|NUB}L<%hM{l`pP=-pBIO`s?kq{kJ*aV=neY?S8>clw%QbqlY8RORhjjd=zk90dfY}gPyp?nQQ+RtpH(THw>7o`>?iA9Ml%xQ7u1DMlE?ifD z7|onN&oNopWbWXq|I-<$xziMb| z(a|mdBY!?ibU@?PN3g2Cy!2*d=V>16!k02PQ#|Xl%^}BHB49>p%%FC)mU1GsL0CQp z>DbjRT?kv+B6^4#_8mzF%i?g3bGPZ$?X<)|lpHP(N$+0_=G`_dn@iXUnsUh}L-_8I zz+D=^cRAkJ34&D;8~cKq&~p+HF$6jI68R_`@NCLoH7Sn4J0pr45l)q9Oq%gN7OnuhK(H|bua)cT5>#GF!Q3^dVu zeUOSXg*PR?Mj*ZcK>O_3)?ri)@Xj`;gTySV|yFayuCyr5z>( z(XawB&(=PT0GtF=TskX_Bz!rtMsUrup#VF6r_>-FJav7yClc^P$$GReiOh(F{35ff zJj`$Et2wW56;A5~)5kiUQAK1gv_w0C(5oz5Amb8qWB1ktx??2a(BIXqoSP zw`jyi{$8-wbXb4Op?&-Z+K2FFw>ZXkKb21U$o{NyluxlJrn8f(>L{y~&@kK<5m6|; zZIjojkuEBiYoT6aGn!`G?USn6#S(c5lBB7%uvi9WKz4@BDJ}x<&y+VG?(XMXgC0zU zJo3_K+MDd`Y=vBpbKt(n?^vSfyL2tGYDw?K5UkHvSxMOs

||s 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 P!sQ51UFYO)o|#D{Ysmf@4`~<{6~tY0YQwLO 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

    p^{| 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

    >l%3ul}$uj>BHY>gZkB#Laj27H56neKL^m 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�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 N=IOnqVAJ8>{s#!Cz77BY literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/chat_basics.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/chat_basics.png new file mode 100644 index 0000000000000000000000000000000000000000..82e27cfa49ceac64fa7d27c37f280058397d9693 GIT binary patch literal 63987 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 Nsj-z&{jGaR{|{{gfH(jE literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png new file mode 100644 index 0000000000000000000000000000000000000000..9e92437dbfa8c3cd3d485debff0d56584f03f69c GIT binary patch literal 159029 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

    C|uq8~6N~dxnOF0O)He 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 z z4Zi$m0{=qr-^2Ak6WG8O{xg9MjPt)Jut7NZFADtH`G0ra{|`~%v1iyn(KG~I*3-Ve zt`m6v@UE%hs6!i={z@bwC_rMl!=_M)3%vTkygxX1BEHNhWpjTl6Aqy%H=(t+PGaxB zed_;omtW<0d^@&{U&rCcYg z29tha1oW~mte}?X>QdCr7N#ABsE7S%~U_6wU6|NUmQ*im51Us^BXgJ_hdd-vj7S0=^N6)L567pC( zNLy=$>lm$Ey2LB`h8QG-vHk$nN&r|L$7|`bp;IPyASLd27~5zaQyt02>v6W>mtM_I z_w@3-mfs)*0_y6M1ZP#c{WC8+sce+XQANeQqZJY>;Erw(Fx;%7J|VgEn4WT=cK=zR z-19%Y1!8uhTm`MMhlggQ6eS9W8j%~nz^|M{C|1@lh-^@sp1w2SC(Ax-r-%J~;2<6u zHrpx&E6AQRaMdFuye_o9;iB~JIEJ~p_58F07gr2FW;o+RmN-3(fVpgCry*(tFD;Bp(ZWhIwU` z75F+ffv0tb)3GDHv|lb0n8Ch?*Ee+_u=zNLitQ?V@p6LKw9~LFVzRf+9iu=67N#2- zPk9-K`Y!T_Raw?Se0q(j$)&-i@q3F(Wlf?c%R5cIeNPjHhgz$0hh4c6l2IJUNtieP zvGn<=y4eq&nOk)SX#Zk`Q~`P3wT!5;ph-@?z&sbORJEMGiw8NV92n4s5=8QD-Bwi6 zf;p2iWac={XWGYBAQQ7K7#`^z(O_Lju7tB9laQ|qUpQ~6`?9!;7ioj~(=2^WZ$71H zM#>jnDL!}?QHpnTa@MAd|dg{bhJ0w9uBVQ0(mZ!T8Qv`kwb+ zY}!%Og>)Ngdgca!74SJWOsPlI>b=4g>X_L*SW-_aUC$TsOj>A_RnrI7YB#B2MIffI z=7OBZXJtq_Z~ERi%PBE4Wh4%ObW@*i*g7p}z=GDWR$wwvMh$&EVD5Qpo_ZMT7GQS+ z>f;{`#iU&9Pm`K*?9`k(RkYty=Z$ac>gL1-%gG#wL9Kx8fzC0t%+ukO+T6r;-5W*X zz{*UV!xbzGuIIcy^t^;7E%3}X(y{yUViCQU1{h=9HXcOi(*)9VMn^3hb3a5H}gd~%} zg?q>D7G*u&qxRC2R0k}%LnXIn(u+MfZ~Cdk5pxGM(qC_Orp@Vqx5@@1YX#~DI|+NH zUJecp&$o3DJ@ZdajKTn3dQ7mRo{9@$8tZm+ zOgo!E&4@LlK%2PcCr~DOith*T=jn5t*ElOb(xZ^G)cotWbN^zT(h!0{hTxMQI4ink ztwN6GU&jL5FgV-x+qKHug9e8QeX5q&M0S{Sh QXn>D~s*Xz5!Q=k_2aidZAOHXW literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/dashboard_firebase_enable.jpeg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/dashboard_firebase_enable.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e4696ec8825abe2a04d88bc55e13568c7b75ae0b GIT binary patch literal 10753 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 S5ma6$s22lkF%P1sGyer3DUv1t literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/end_to_end_encryption.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/end_to_end_encryption.png new file mode 100644 index 0000000000000000000000000000000000000000..b41e11ced6514a6f16f39483a96f9de9e760f20e GIT binary patch literal 130649 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≷^gqYzF-P6`Lh3uNT1z4@&XF4@IKDlEh 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�+u57;ei+fbus-5E!Ls_6F1{q6k~XxUd9VdrNh#8X?ywu;uN#XF1~$ z&1r!*T1Kqh5AHNzVQ?oVjhGl^i2Z|Kj58a>4So8kc`BPacBB78ozf5QSfS zaE+1Ug43x-E=XG zl%qHk?6LPJt$C4|2yl`t7im~Ne>yY!7yvi)llnBU{w)}wlVuN*{wYhO7_}32n_CC} za{fOb3^2uXx~=&nk&|)f`*~h^KCaE6AS47q^Bc1EQRD;z)y?7b44=?#c|%AizCg`S zZrAmChtlR!o6Cq2RNc)1&}ZBBkPgqf!@8fFcKgDL$X{<; zLns+Y(^I_f7tnCn*+~UX%m8?Cd;|2e{4dw$Ch)@n8-)>&B&Q?-j?w1D;lLYSOS@qW z_C#o-@1|H| zKOL?U@o*uY9@9k?A>sq+8FswH1-%c~r?%YBDViG4-@08a-Pc4|azIrf;Shz!4SOGz zU9S|KvfO!1{E|_?fB`sFdG60v>xRwrTaTO08uq+qnOUq1`is;+CsDxZ&nM)1K7RdS zg#Fy9E=x`@3El`D%cH5M0lUcdqBW>{FZez$4VhUbU=$1Ez$42Qk-n z1g}JzFAfGzTe9BN^Jr13Cbm8kBsMYFIDxO(PjNe_8M;1Pm-QOR*$JRm0wX|QuqU)1 zEuhJXDiCSj4z5NzI#mU-MgR(JUBN6Iz!u+I=g-Q*PZDBeox`Halj@#zHRj}H<8(UiO;0BT zto1#wJ8kBx54+V&D&MJTQl-!G7kB%3@n8o^;r6OKs>dc0EKbIfaYaF&y(>Bl1xW#~ zD?M#aC1jB&eRK!}pq3yG5lGnNKZi<+xRRllu3Vl|wR;_pCpB2Os2vS_JX)vZGkeo5 zM8(2)z2>8H@c0t9M?s-eUrnhNhXFG$6I@BZe_hZ=<1NyVf8O)x;QYs9Wz)t=J?;@b z$=X@All`W1CX~Vu3p~0s)!=g(@is($1rC&62Jmospxll;JEZe;5Vl-?9YAGQ;U(n) zP_-5lhgdWz*GF}9a0PYAMj1!rIZOM27@o_6viGh--9XuM3R3YzJeKefw0vb}?jD7- zJL!VMoSc#o22BgzTPE9;FbZRt?+G+TrT!LR6-LUybF!EHn;Upb_ea?59%+|@SV8=T z?X>NF07L#4yFf$z9x_PObG&Xzkz>zubWc3z4*RWOrI4ca^(y}COIMTx4~FekM|^N) zj`ax3!L_^hZRpH^(21B(_D`}|taVm)rc0>bkYBJmBsR1+5PLkXra5uxLR7K-V3eT^ z=F-_Mn+J8HI#i=(5Yl5G(;yadvvKxr=lF+set6PT0mxD(Ker0S2oforT(E*{Y{N* zCt~rtFOf37!Rje03K9&&6D|qW{MuGRl>J2w56(NIXmpHfF$P$Scuw=#6#@E>KZB{n z!V8k>B4yKEz;#v|+Z{m%FicSEN5Ibrc(;mipyI4@vLmw6BW!kJnhr{a+Wy<-mSYPy zgwVGPo5r;C#rUTf zYe-Ssw(-0mM?lEhi9WF|F^#{3dbqGw+934=;?YM$Vg{O`Gy&scL{Ly+(Ctg}9`I-Z zIG4@rfvD8OVAo))%hwzXLNSBUHB)gj897{ELV$C#3-Wlm>wQZ~ezTM2w(`ws+61IG z_802@1%)$-F!WfzNrYy@`&i0-!lpQ!o~BHSRr{hvIh@?EGomBmW4M9aT6$QJQ!lum zcNfeazWE>>nXX_bp(e_!Cq$;~+)6_xtWgj-{0aaXM7IFI?K|O{rvo;j1jB#bS2UNgcdnVQXz}@fpVX04JKN zE*h_>nRfm$|EQ=&Z-Q)CuzmWDRj>V-Qd-_giXl@!#s2U9=MGuRVbo_GpHGouf+4i1 zGol(q&z$Uj;XivlUS2cZ*pO(BcGo%_X}l41*LGM`@PQboH!wnA(>TUYgPZOe?y56Z zk!A#KcyI{oIPIbNBAzu(#~z21eaDAP~R&UGQ1mL{u=f;gM0 zOzeo5lPnK6OB=OKJYvzIu7*oq9_P)lGA$*g=|et8Jb9j9{a|0ppjaTSFCCt4 zPUOze(d{JHot z__v9Tx1E7|AaqtUSu>fi1a_%`##u#qMFyTUc$E|j{WW-gwx)Nnv&)=6^6Y%vO|RfS zYV?9dV}ya1FpvuNE{P%H#^ICM2{>T`7OJe3%}uEq5l-9TzTQb@4$eq&q>+{$U=8{f zKGP-17)*f$O^BG0&rO z0jHnDi>qS7H>LlGb2ED^(=vs$&1o+mM%nwhQ^fK~;JLo{SxDBI#;yOwvkr%V(L5z`ibsbTK4p z8hF8=Y)0IcLOBSEUxJH!N+XMgEi;JZZ z(;C3Zc@I;uX8C(~nhZC%Bg#-C*_7yy_~ta_GhbcWJB)a(qC8_ZHxeUH=z%ZicS>V! z`EJ5AsI{b@?1Igv&Ad=p!ITqUB6^xK@xhEZAm^Q!j`_#+JXbrdcxsheBP;bf@jCe~ zB~&rF zS8vT^BA?Q0WuAa>HmMj(XLM|5iWWGZ)!wGr4vCZ=I9Hk^Nv2>L(M`NBNIA719{I>i zoK!Voj<=><7}503jgF0uwb^*YToZBljJ8YmLL~$<+l49d-H-&)`W!blS+t2slJ!=Yv{UD5&iobpJDvfA{#201MI}`L zu^6F`Ztwhed3J@NrCfpnZxse7@>TI9;OEQcA5Ei(&z=NFxOxlssf7^HAjsiI#%`){ z(Nj?WaEuvuskhQxn+l@FN-EAyR#{b5m^H^@P*R@7;3F54F7EoMm^h)JGglEW-k??| zE|G23$!SCw^?D|LM!lSsXTYGZ8_YVB_~Z=@4-SqM116vSx{};FI@T|i+_)F;h30vV zHjkwluEydqtWMX=)_BVrf0r=FEE30#0n-3JCaMTgD=iJ>F1NC``(4k<_{&aXs@{I= z;;GKC#|Wh&j0%UU#p0@R5*$^Nedv=7Tx>ZA#K*kj$L&!iY|6>Qa(LY?B5z(=R*0woVT4GyB=-MF9j*vfQU1~X zPDYyyQ@m>0nyXyK-t{H9EyWXm8gFBaf6ppSp7d9f5mCIX89BT5NB4kpYaGh1ota@7nJB zRWHs4-JnOck(ES`C=MRapo5!4ztoz60Tl!ix2zGPFX7Ppj&nQCwt(Ah>@7Z0 zF&Y@aZ2|jr3l3!s2VWT!?zw`n&?4%?sr9HpDLW`;Eu+@c}E^_dLVm7W@Rz>?XV*C;?&< z0h>W0zp{iQMpiw@kN-!#(K^zCXRvydWUh^V!F+jRNeBgI1V!{w{M!KA`g&d)HMh0( zS?XrDCc-J#iBT>=VqxXrPl*ypMx&ioL{Meig5qEvgN*oK=%l;1{`Sf`IfjL$&3uhz zg9Ggcc;9n`CyVUob9VJj0Cb{CEeD(f*-9TW)D+`XsaoADM-MGz0>r;eq{_OgKBKA8 z{S&xW4CK|S@LWx0iiGK7Shjx5fz`XZnc17jGA!0udPpfzP+P$Ho@ZM$Q2bk#B2gd^ zaTRM2H^zwmMJsTp-$@paB)uZ#3I0h&@q~6 z5J75r5J%N z!O^fJe*>_i(#SAA8jbA|0d3TPeqbm`#T8Z#b{97@H3;vlCJ+wz_A?!*SV)C0K=et& zk)_+P$JQn#bQyl;SCf;6@HD;8DAa;NuEx&#QAsW~bBYNA8kRs^KG3(nGy7F;TnPl@ zpRbMYwHu^C>t{80ckNNf#(+pOdH{kbcRkq?1@{{%Hn>=I5g>qyrBvp)oDdO$#CP!DygIA`*j;|ZUi!~-niNEvCMo(1*JzKz_oW`|3S*MPGR38)S% zEj@%99)_jhpww|d>;)iwl&b)*`DaRp&hSGzF9&NRGcG}u!F&}SeY7+zWI zK$L2s&s@9}XE<;;iame;I*>0i5Zp9`7m{XL-!Kcmg!QT&SQP})Ik;}`y3tN$AepDs zP;J}BxB-$!DXdQZtNTa1b+FopMX`d1vz1bmwbrzbGajeK6V39<*kQi*1^_VU0OuI<3OXvq{(B^3MruiUeWRL|A_$l zQ~FnsQGh!KH3|Z9a+nrU>#SyZ+FmjN;td^OqVeC~?A+E^V+_im0D*EFI>3ImZi)fO zlkQEsl4d<$y7!&D6;oCxkbWngCkijkZ63eL(9#wNR5bjf2t*75OOPkDu)C6cRewFx zIe9Q&Z7la#J*{EMq+tDUU4)qT0NO=IMM9G&>H?xNgdSlD5K5kpfA*V5xh+6et^gJN zX%m;NOMyzg+2V$4K#PJ2cXH$0S|vioF&IqRJzgBu#jN>EE^uQO6JfYsvn?&ZZ5tRU z(}|9^)l%Q6MiaLrxs#2ozWB6ce``(ZH(A`vwFJ8mEz!|~O>iw%tn38X-VP?U8>DC% zuV^lfYAzyaoL)Hw6EXe089*=lFFc~&gjODkW=-XxPp26ywha4t?E3xU|1es<3{&{%Yt)> zCa#(nYL#;mPEkVL?SA71>tWU1clNiEi;a9G4YN$P!%QRB@tZ9-q6_P#69*6VWvz=Q|%>`ZwW8+3$sm7n-OUwl` z$mz*M!~R#*w774-WEd1r&0krgM^^JjVL z=QL{f!)5iS&LhVA$&3)kF;cUVxu)3U^gzbPdKI~CPL^~V_lG|Ay5qnyEn^eRD8-~= zs+`Z`plR{HC$Me`UPZZ&FGY&Z$<2KEtbOmq8Z^<`*?GJ3=GNgg)n=9O4%`usL^~=5 zMoB+udihvoXV@xSvCAN1yB{ghbe01_NR&IsiWVRiiw<6)BaKb|%+u4#$Mb@krPO3$ z6*2O?Q(o7Xrrf>4Cy-A+v~$&d=F$_C zW@eRI9c6;s-pA0|p+fMxk0-D8>aj_By~4s89Ml0f4o_{b=zV>@W!jv5u@_5gFnYNY zg9wOBfQ!zTQJ$l3f=zKMu|hE1-p2)-M5N$sLQ=4DKF=Z_9jQb-pA4zY#_o#$%==#lu-Tv1m!V?;2Dw0OA0&Kh4S|9DgBRWhT78r3V4ZRIwZaMCZTe8-(^%)-fAKpsDR{_mTXU_aG6_`fdw597QB;Eumtfk>#o zYZ94oZ~3>W^9lbYUjqxzz5hM4|4cIfwaS3#zg`DY6B_LQd-Zwt$_80+avd7scO-LWc+$B+v)uk#i4+y$#6=N z$L8SOF#AZBJS{eIfN+L9?XYa@T84ZIaSE%_+rJn7Ugzdhhz=6AbN*4x|6l!pe^#h6 zDAE4A4{(bzBGbKRrP2RKAK;da_9^AoHp<@1dMec#{~7Tqzyl+>=KO)aid67?`9d6CoEPVo3-QmoVgRL^Cj~F!FMI^}^tA%5ZJZy< zR6y3O^`abA8lz&;;9j8|9VJ@qkYln;m31_F=wwZ#>k#!avC2 z8a(%a-b(Yv8Tktov{Fy9GMi0B=1U>kqP+%{==k-mDI28;lgyW9-B;<=L&R=i-xWdG z#LEx9vAfg4Am3rN0R85h-C}uKogwrnq3_75?fI7cfEfUJ^O^!+QV^2YSr7F2z|GIbcux3V+;HIv zpzHv*9yWO*CfeawFOG&c+$yu|#O3LGvDi+q(;5aI6w7KIp>P7>jnX-)t_|4mvy zhq^I}JC^%andce0UNJ0K=iproIku;rgVI2zD;1m*uDuJ4l)t(S2cTFZ@|AdXr~7q& zl4nLXF1kCx=e^faDy$;vjs}}0VJVfq{BlO86h5AS))>X#vXfhM_MLvMae6k*+X8`o zXsj~jBjw0g5rgF-aJG%pX7(JN)AhaJ{5K|Q;4u7RxAQn_7w*fTxE(*wK7RSL zjvFB!p=meNWis{(WbbjK6j|&c`m{CJ#{bS)WA_F;B%Af3@7VxuCj+&N{Ly{h^ZJ&b z`*n*3%ajSfpj*i5rU4IbGqZo7H0$xpA7V~lN_jvWbJP?R?vnx-Kzh4ddUC9JmNx^c zAlcN`PD35W>zuBlFBHT9^TXqxr^jUvA8^xqaRlMT;lHxpugzY#zSVPEdPuI5QvEam z_uiEJ@)7k==)d;o{qUVMv-d;ccDk$WXUMGVv0k!6Efy12HX;Z@ZJoEW6B?7yLIM(p zMj@qv==@ku?q@F>C-O_4`_50|Dfzg+5y|Mg>}pg-&)Fpy+ud36VE|oq6s)v$%)fh| z(pHYzhc~>YuTibhYPrF&)JFZh&8)hW~jKBe(AhNWR^;&g3i{0amrr=>=E7#xOi6 zuhR6ajpp~ezjUO-qciz42iUv3=WrmsekV{XhOl8+B>UMnh`vmN^NsZD84pf==abVP zdQ?Jt({>BL2ps(NxUU)L5YMtfz6w)O*o{rRr(w2;{0qFF^u!en0~hBipm1+HJ$N-; zay|-wcebzriqHDu8_YU&OSE}6vPu*s`DH)>I{lfH*vhqTxnKiG71k@ z>XpY00ljZN8cQml2Z0R1$J->+7_8qgdr$i=^{wPKk^;g}AV{A=~G)~(M zeNk3$KFL~wKoXAYRoz8-9E)>qw55bAl+`ltuL6!kLBbkK{JD z_#k1R|0+Ebhg#-M6(!RYkQ3dHe=%J zPhCnt2A|c7jEJ@dZ#2c|*x_YalQ(&%@faUokc5x798Ui6?Ok`!bpFumnY6*gojZPH z7ajg29oT65L^8PfT;m3R%Hm;dNP0OhCpYNge-0rZwkCggNSR32_^E}-+PRLy;ZjZ7 zTJc+?59b*MSwuk>RycP5m;s`mFVxtDjC;}J89^Ard*v|>BSVfihdV31DlhVIpZ%Qw zfavS%t6aFJ@adHzSh#@tMVmDS8D>;qanZNO*qrqoc?X`=b~F+G;5R0>xywSk3s`N0G>WWHH-C>wP|bn=u6UMKXTwCCJyz^LqVO z7=*vHu^y5tX^ag>Fn9@!?@I>b6W`DcH9lIMD>jwR?(Yfs^&o-AtCnv`0`z{%>3KSe;wkvBkC z=~Vw{iUhHW8_jOWNDFg*Y2w0n8!uK$8 zFa}QckCU7XEjYxVwa-B>wxqTt2*$BMhzg6BnDrR*ZxGNS)#zA~FW&5DbG4wuzW`~v zzMu_u41B)2KKJFzQO~Dn5O-#mRI()z9i*V)H$96hdTW&8H-CFwA_oOPvG@*Rb(^_H zXWY0&in43U#dH#=Ho2D9#QUNn%c=5`^5yat4vWYM;`O3`%HTV)U%%jdS?#sIqrb)R zOM3pkFFYW9c%x>Ynr>mStzyTI%>T@jJ1`4b=(+vE`|yv$zGjWt;VHy+VUmziyshs1 zuG&^tDIGc}Nz7;{+GZUAz7Z|UK<^lNM z>>!(8`RG2D#2gPVS4M6|X@|sYGCDc@OFHecGrK`Uarx#|qWd#|N?udYrt_zJVmNZK zhbv-2PVS=Run=>1X?`UFg!lN|bk8*ZNi9332l6oXK4|WuSM>mW<-@m!k7!=+_z<#xD!F`1S4J*Et`2k7q9rL zyK4KcQL?_;x^0ld+h>mxh=4S&Z~~n=!Zt#8Oy2oZP_N!Q9|uIWA$iQYWCvpC3t!Hq8S}NlW8V{M>9(Ysl7H2<6T14{ z#(p1VZc-}qaztI(G(b#i)9>KoaDUF*d#K7s(?Npl*wcCUCdh-Y+2ufVN+vz&w8^{S zs`Nb4$ZJH8ao6qeJI7;XsOk$kVmiS}r~7)pMSmN{qWos>kEf$XDli-akom|$g2cj- zli7k^`mkEJ!xFdQq&35EP=)rzR6_HCEgs|JZR&{7_*m4h@Jw`SQ`DOiB+t9@ z3zu`=sAL&CE(EkrC%^Z?_#7%x>!Du|IxYpVzb|3Zk_CrOp)TC_Pz2N5A5%!qnLp%> zs5>MlmF576OLwb%P~d+=ub!B_v)eW}az)ad-VYrnV~!xA##8Ux&!*>^Wn8%vl5@j0^PESg9_>;aTwd2%YbfBI zhhaH3IRT;j)x(0uV~eOEiJtwd+r!!>gnY|2*C?D&Lcvow%;J*se=d77mcB-GbCWcVyjnQzk+$KYmPe0 zj~V?gtvzY4zg$9Al$_cJ)^{@JT={v+NCh7_tFyv@-4n1fC<37DeM`xJER&nZbj= zSC)BP3pab|fqR*4iHNkwq#*qN#nW5IMHRID!v|Pl5s)RN8|m&wLPA=lyE~-2k?scR zl9m>b?v@VeF6plK-1q%^-t!ME%g%hxo|$W|Z(K7J@bfAo(S5$>&BJ3ds!=8yiGCjs zO}#wU&tLfKZma}&aDvDCdut>mkg+!w1KeuHUL$lM?J}ofgzuUB-uXMUcvv*vdbJ?p z{Pt@+ZR!3l6@6e7N47?j;bZW%nM!41QV1UhCQ9_QdT#ll(^f5)Y6+rPZQj}3oZN%= zjX{EgM3c!*W}iJa@MfFcb1FYzOUta`Z^OowJ*QRa!3vkvbK{Nm!}W?yTO!)}K%Elr zJR4P*Wrb1&PH7`WzyM8Yt(a?h^Xd70$j>AHkn^m#VA93Qtz2!75!_8TNW}^CY&2=N zy~5%RAe}dEqqA!ER;~|uEh0kg={R89X#Xt@Jxhhv?ZjVd($&Y2z~9H>3O|Lie}C1a z1X}Cq?z^7^T#BXel_y!jz?g;+4T!pu&m|8B-C9I1mx1twaUgYI$7oKchhM? z@ye#1jrCRG>6?U>fs2B}J{Ik%(*<0yMO*KicCAcbm4U{zRTjp0H4u_yp=*32tQEz(a$lFUq^h@6= zn8hTAzT$~*+H-z-c_JKT4^F6Rx~DMmAO>#J%BNQ3+d{KioOb3!(4??*d5bqnBR-J0 zwca3!ylu$;0vaCA#r>trq`{NT)x@*VAtS6szK=pUbK305LY%IukF7~FJbFuKS0}hP zby=+U))p_tyW_W84*_lO#z~tWVhlM0n-N2=PFf0gW_hB>_tK%A_Zvx&M|#XDpX3nuIr zoKl82I+r2El}-DKDa)tx+dM1NyaK#Fu2P3sPs_^kEVnCNZoTN^ze|SdB;1iCVn1Md z+mCJB)HBuu2syy&! zzE>0r4tlK$BJMbta_mS#4Ikzde(mrtZ8|N(uyGd6{WuAT#)|o70_tTn*{n>v&h2$p z#k*Z$4AH^m5Sqdt`|T&Ths;|6lPmKRM=~{q?NrKqELo^;R;K>&uVFJ)5)TyV&;ev8 zo*LuB4xew@c3R;(`TiRQP)#852)paet%nxvdYvSvIX=5| zp6AH&tsXMr2Iz3hbU!{HL?ly}U9`PqjLlkC=K*exMiDe7D>rkhbK_yu@b%jwny$k} zjjVLo;k85*V%?!xT9a>%8Wb8^SQ_1t+(}?(=2XodX?4UsSaRBhha`6h7@-ra1j0AD z6Pam+ZVYXBj;9*VQ(R{#su9-AoMx(7cO ze)sd3Nt@C`G@)TxN<3`KeWfFohm*pFMqQIqeBXoBA{e<~6CSv0Q%&1C!%HfYZ>yr- zm=eBZHb(V>$HD=~^it(HCO9Q30nx39Hs2Q<*sB|rHm(@St~9g8`HJKB7C*U$(=1|l z4`*=JdoKb47tof%k(S&TH|kvPDCvOM2Fi0u4O&Dl8ghnJdkv>66$^otHG6#&1i)|4 z>1x~c$oY+HO)T|!Fo=l@H_|@_@P}Hj5R#zDvKGy7dtYH`vil@XEy%o23^qI#uq$=z zE(AoyoV<>sN1EjsjR*5|+?P$b8r$e-KjDV2Oi0@oYqGDL_Qt4>q7ATK&3iQ3vC=ZS z-@PI$a9WqGYOcC)R`yYR>T_?;g-#C+G5q|V?`4hgM3kAH~{>8Tlyt&4`Fp5~$ zC+u~-Id-dQ_cSpXHN&lx-a`ahfBoEU5Yj?v8y~tRK<$V#{J>j7tBVW}7`5}(y>PGy zTA{QL)m5gga0+4Ho%z3o6YUNAzX;&%}d znz(3WDfhgrAq;3~GCH}=Zupmm``VL=rPQkFheHF^MyTFu{l3(Lo>QUQZn^tQ&4w58 z!l6}>j`Hg1Ql&UX<Woj$5UUNj<;X<;4$~_Da_jB7 zwA)a5(uh(oWd=&iM;%u_Le@0XM`Yequ%IftU>{`X`Yof*QJuf*0v&H)=Z0G zlUcNDyhz37J8ck!SFpZ|Xy9t0t8p^0C#$vPfcxbg*z5fbOpg#moq9Lcham342cO1t zhEc4+QgR7yJ@@XU^;eGYz9kD$OGqd8LQ_|zgjMWjV|ceS-f34E{y)K&8-JiMupQ!; zUC-dRH&$V{k&3@X90oPPnz9G9AN{iln?z@$V76IpPF0ul3W&Wp+95vHyGtIxQK!Pz z`aP09CFr%;^FiLPrlXeSO$QW!XkW-b?~)ghf7ro>;35>IcTXE56=hM6GpEab zI=q_P`jrStqb>nlHgDRr0%C+#U#g}z59=kg`J+{JG`xoi;Q-jD7@?($-`RIRXl+`Mz4Z#*HN&ne<-q()XRWz^D15lQ9t9nix7t+vj%{=N&Q7RjnrydVncK_*Q z+~AGzx76;m*k(voca4iRt>N3D1nlss7~zlhSCYQ<>t`#5J|Adn@@fzP&b}UBH2nd8gqHbl`AvVgY6v>mnt<5o^w;lvR2j!ekDcO3FWUx82VJeo=#J29^#wtzyLwSR=R&zWAuwHbYSgq>>7cGr(Qa5 zN7_r?WVuc5ATJ#s=zx))91CX-o1;=I%T3v>){btpvSDTrM{)Etc$v=sJQOnkN?7G2 zB!bS40|6qo2`g2#Swy67#GX=?ZW<;@AxHY$Q|a<7vY+8QBd zvO+3Ng0eAKKXavc?W)I7aar?^hqxlJfq3RB;fy{H%;(+}pt7V@Q5*Vm$7!?&3+lP~ z9GqRPQ(wpo44n6xc3*a_1pb{^FAybzAEVr5^b(zaQ#jn3cE0+@d1~)IE~&)+!Kk%|gmk3Q^5?!{ z(qt#ORP#AxuKnd7%-HBVV0(yKPzEx92F@?>9WBMOIn_l|U(673^0`}^^#1*1M zJfKUB>mUMtsXnIpO9G(;zD(`BDzsw+WAm0D{)>W8yJ1V`3+OgpU*~^1_hB~Qfy#iL zjpdn4Woh}-L}qXH-x^z6Mh%nH_xD2k7}1P*76EJe+{e-wO^vA};ZXO_t?@cP3=%F% zirxmVrpt>j4CKwCBIl6}Ap((H*~pw&^zq=jLm%6vdry8% z@l3_1tddpcK4+mGcQKwDvrqn%ir;_AcBd;fiZ3{U^kN_8NRH9w5xl4pn=wly>OX}T zX4%g`$3f|$**6cClJ6e?=xNKphVqjy1j!(Cc>Ckk@XB0``3K%`C{Y}oC2DXYfl=r4 zcbQ@@%mL$8VeB`R>ISLp{4ewxD@|h>gTxkV<;LMM`HD4@)c{#_kA|``2NSl;ujsy1 zh$U1C4!}TOJ4r527L|ZWv%bIkQe?tfN$F{tW2R{8WY8KwuB*gRvC2FWLjy;)>mGCI z+=cI@-?o!O$LIpU#??Q?ysF|2bXIz-qM+u8+M>3C1Nh$l@|uZK`=afMjJ!(AS4y@e z=<$y)*t>$J-G!RG-YpU7A0KSF4K8lDRvHgB=@4?g#Yxh*fO^-&1G?GMy+ zL=JiBoT*uA;uL&-;M6U#fanFmzU4mEB(ErGDD$%%xtP3T%R>!eW3QesGa#YH++fNh znVd9YrV>+$^~-B*Ai=90M6{N+zgDc%;X()S$nyGRWR0yEr%~jHoH3xW25ZjLd(lPh zFI#b|OlDM6UsYx8y`)3q4{^z3FD4#wLHYwXqJs}eY$m}7E%M%4mJ*C%M|FZRVTj9% zj~$B>FQ92{?pDG3?UhpB9k=9fKa2`qwK@@vMk+-1f}-hjrV^-&f_P)TOC)m`m0vQ@ zL2pRs$NJot8E#2Kpt`8EauM~8s$Y&O!0#QzwAfAB8CcKQ=YGhD~sHrSMK%0o{3@o{2)xe_Z%Okun? z;yvJZZ6Ll~oa6%RLD`|hiVhIu`P=AjOjdf>?~=VS&B|wAP-B*u^W~$CBG3j=jMlqq zh4eAKRt%0sLYhALpV3o$jIp9U{~(t6rsTLS@c1p z&f9bzPcH(_C<{`bV(%u(hsTDW_B09IeS@@{DoF=?!r6&b$YDbnR_|U+a{8XEnJ-5A zZV$&_1)OfU|GZGutjz#Kal?O&f+uU?zg{Y9J}bq~_FAQqglu%(4ke0^QPjj^a_UN? zeqJyLiT0Ac2p1I-lNgg3nE1N`c0Tuzua}rv3U#2$?Sp&g0*9jE=a(6l_ua!uN9LT@ z^@m8hDLD!d{-Ei&0$e09+rl3K$MMtX& zm=pxaHXgfCxO3)$7v`I|ayZFMwH*n6CoJr1p^tlZq<`WsSK9Y_ThPuRZ^P&!1<~%^ z$-ep1Lhf(A)hNsR_R6-VA4Kqo{ZE8z&~<1hphNeKSb$exgWvb;C>!y+p&W--yyUv0 zF+m~=UnCdIA92oGSe^^Dtj{=3onc34pj z(BBG+i;AKxR2x|hcom3Txp+CP#A`AL@}#F?$wOp^eiK&+gO2VzL-w|x%YOxXM)P&@ zd(cYJ{wxwW82l!k>BOP27v`laZ%vM4k-Q=U5Z7dH&rNHYhT-EcK9Xf z^EF|3B)M6ai_)BNF70{nn*Kr9?!C_?3T_mc_*WrJcwRGtn-7!bX$e8RlF~wL!cWtP z`E9f2B|Mg;<$R-qWz1V~tU%A0PWp0_jbU>BAFEP8w7GHwr)~(sV7C<4OQBHoCL2#? zgwv7b2$YSZ_MHWZN_|h5IuU3ay%il^3`pL{EOA+uS*||qkV(00HstEPbSmz~)>@Fd zyH?|v3;O$$z{l>&%z=y*Rn6T`$TyLjaRn*#m=B=lpe-sYk3grKF=kF2@CrBAP(QSM-;*LiAnwT70K{P3672SoX?{w1=% z6Rd|jMafOJ|M}&3)Dg~)95>jPH)S?DOP0MSa#xq*_kQQcD&LP&nFe!h?PbRTEVjSA zPp*~c{=~wGN>4?%@D+@Jx#bGjZf*vMy;{v&EN0D79LO@*hfc_8+`qeeQN8~>*BFgz zgZB>!c#lm>7r&P^HcMv77`4P5fAh3-WAkEkvu=j;peq*>#ARd6M<}O$(e>?|p~VDe zhNBAuh?iKB`WC>M6yh%FE#7(KS`@N$v9R#x_CXW(UZQ1+axwA3F7RiT*z@obkJo1J z+t+O@VO{Ch`@zF};vx2|DgT&u5FX+f4hb? z54kQ*>s-fPiNSrfBghzvB{|27C}B@UGIHu|(LmEHa2~li`1Bduj7g%0k)y$s4-~PV zr7icekiPle44gjs612U}G3;1Z5t7Lq)F<6ca#ZPE3 zBDF>W&b=$>HEvcK@$0|rTrM`>EKgpdXTN62M1ZWUReP5RmB@mUgQIES+?1Z+JoD?` zd3Oe^x0Q4x)^GQZB;W$r(pW%}-QsRVM74dJf8QhRO6%U&!EROY-{laT!~|!Nk4HkH zs-yU_=Sm*+My{lzrR{I>SUeeMV+(pe+8Xdln6odNVoQCH zQRgjQJWLSx4+F!%4V?a|uMf}pTEZQ13yP;!ngNjxXFy`j9%7^2s0BCSfj?A!%GL%< zipZp?S%lD`N3$-CWol)iYRmRGF&|z(yy;9-M4RSpEN37TKTVYFWOCUA6Zi_2cN;uOqRQCYpK&nn2KbAu=~dB_b1#7T_BvMJLR zk!baI;Sw`^201j2ZhX%y1_t!tjia?lG|Vd0&0Rmp1a|b(`6GjOJQTKbA88+yvt@n} z*EUwZo0j>saoR>mXzD1@H-F5)!kan#St~clwn>E`@~J4lUMS^H9LD=o1sTjQcsuPC zzY5A?tI&h<)BiyYzCOG8-uQjuT)@x+H(6ZsoKwiYySS(X{6N%ne7B9@LcaSj8mAtG z|2p0V?||jY6YqEOP{vActL?jQjtlonyhZz!*od1;AHH3is+g`JZBe^Yk^3?9lC~^W zmfLM@-`2EDQi6O3BS~vc|B4|A;1!P{|8TzX<%Wh{er)wGZ_6U;FBLp>52d?Sq!W!2%c0N zk}UEHvbHTpo6Ofs5qb91`+C{Wtum|slW`xdE8-bVbyhSx^wW8iIs8|}tZ^*sAnCn% zSbD(!nh#(KxKkgGmQ7`5%m9a$_ATH23Mza0RmqLk{_5Po&Nb1+`taH=TSDc1l zp%%stFh~{zh=m9ns8dFDS1Lazjqae2HI^}*D>5@zQ$elj3`8F~ZN*{sL5kU%j1`G2 zGoO35uqQ*IPTVtuhP_sBea3AtjW$}454R_K+6swof8dS?37lcXU=!D~pF zXfhhSVW|Ag>9RuaYYyQYEvYg{)_9sdI7E=1qQ+~bM$c@fj71nkf zzS?>S`#9T2s`cIH-rd#S_|`RM`e|Eh-~#h)c{H=$))hKjo~~YZcP^N=t$O$Sg0duy zDFGEVidH_l&=;_A_xaa?VaD032ToVSy9b~c7kR2u1Yew#au5Fj*CpvD4^sb zFD=1uRGWY1{&VZEI{WFeAAovRd5!SmZEhzw$5bh_u=;eRlL047LaS*Q)=?PTInROc zyYYBI^Bm?+onQtbqlmC_Gz=>#Lhu`O?{jRgb=9hNb7OtctBJlgI*O14|zxKXcU$TeipQ)^zi8Z#Z>>YHZO!A*F3&m61Xk$ zN?Brx^k^TiIsyu_X1a5J=**+-UEtyqiIrcSbLXx8@XO_XgtY3{R!bRkYm>`|l^fog zpIxYZh(}#d-@jo1aHxHzlAANC(y%+K_Ga%*f9oNABA_U^YnQ5Qrw{Xent%#rcXao= z9~|%#>PD6WoPDT$zKhMpOxegDTcGs*IfFdMzXSk~zX7w^puy zgiS1BLMN1&(~**h+Na}iU>rULFB8tFHzKC0?-0A(B%iHXrlz*fmE<8`sI1n_$kAv* z1Nar32Jq$n8ud%nXqUtdd}8cCT~43DNNXZMBi$!V1312 z_6v>=sRyKU#>-c~22k_V=qpAourk@}W0<3XW2kWi=UuwAoG`Ev=i7$~W7A^tN z$Mu5vT{g>8=Oa^aI@#%)gPyp6tvHhig0@p0kk^#n*r;dMLlrCrD1h9`yZrr;PvZ!{ z*Ef+CXQ{fMWU{^${dq}v89bRMybMT=)N)L(*g-T+1J;QCog+#`x6o8*f7v49lZrxL zeaPWqCBps>pKE?b%TCmGlY7ZQs5}SfCq=0`ENA6{h5ilbI3~TkNBUR@Azl_q^?6)a zqXY^_don;fPDSbL0hSb{uc`r3 z&A7uzfrw|+QQx;hyQ96qh2+~VGqRVi;Oy!b%t(MYhq8CKp+Y2a{O`nsASE`r-*JAo zh)Cbg811kgnj?mMT0*V8SQl){d?&|-8q*k{q4u+t4zt4 zI;&cyd71{ni%b3S(I_S`AQTwvc(-$9_<$M+7>bY__nS;1Z59|4xQ4#m&dSG55VyQ` zD>F-8_Rc;n2Yyk2Ja;njB>QAm9s8Ey>5BZRfw+il0#Asi!;Yz@;JuH=GAo`r5qu+` z#NJ2yZ44$w@lZ?bS+eSL@W;$xLZOM2{lr!W42BG)%4O)JN!??^lwA>pc5La}Q-~=B zFvQ5>o3kMzp~3kFNd60=k1Fhm?^hKiL#Cx_!UUqf{*i@Xc5LO4llws~socKCAJ8cv zK(|ns@M9`Kk7bF)N{5oeDmfX&DvS5JQhe;bb4ICcYkFvG?P>ho!l=M8!Z(4J{Rb|) z_D<`}u}$T;Q6z6UUAjdcWH^XuyoRaA^1G9S7xlX$2Fl^L`(JR#3a1t_e0J{QR)r3V zYZ;B<&AQv&J1h>%o31BMyZAIsFhg7Yb04FC2WA`UD8pZ8>gZ&HuDrtRQst9h7>-wGh=ep{z zs>8BL7|JXj$AKHjaJ_1&U}!No-0M~Zh>4D>agsm5Cps|-!x<=Df zwQYaMKYNuDrML3sq5JR7_rZ_j92rFy<`UR8jkPo_4i8`pzl5F`iCzy$g>*R_cN2pf zp0FHQF&**wH9u=+2!i?QC-_glHo_(Wu;3O0nH*JT$-CNUDNA*jQ^E9l5N`)%3}=@m zdrnYX)^O-mniw4H5tn4C`bkvlM&>yY=y@L%> zr0MFNZ=+UWa7W`R<*N7^XZ?&bY1;Fr}aT=)~i*;JyW?k=f3|q77u^D zTJPt4nioX=zpA zqN5dl_9O-H*Mxs%T&dgTRf()vgbwHn@>-$9o&81TatJ<^R?SH6<)Rq4w_S8D4({^z zoQvGW^%gm;KY_}CeoG7cF<>(55Q;HBHs5tqSk5kvyNmiKh5gXoVm!>exlc)9(ppr) zp&ROe256Ii5JG~(5QYDeL5?^8BchWc&LEe~%RKplXDR`*(NxNvH&WVKW{f>t?}Gpm z8H!Y_kB`@RR)GUeqzjkR@tpDHf0}rm6LDcD5pb8xFue- zUzU-l3Q_TyuFqEi)Zt%!^MgJ`{b*FXH>_e;O?!d3>_S05cMeM?pU(71kpY)2yba~Tk zUWE#hpivaa_Q%~B?G#G9mzdNyV9`3iKe-DMYeH9YpMC8L_615 zz9W?pJI*mHG`AAYk8zRWyJR=-h8~tOZn!ytAOZ4Z>|vN(v{$yI80-G&H>gUuSll;p zMoi}Ib3u*jz`#w(<1-DVIkVO08IXzw2FjP5_NMfB4y-^A0#zDIsF#26$hjx5^;23u znbvA0-eq2-++lxG z{cmm1kC!36-bh{-K6q(XHby3TJb0;OPE_|xulMlOPU5gA-Zx1qhGIMcyo^ek1Iq0> z(DFZMee!)$L;}*~Y%YSoL2MNl-P*M#{3p~3=?5N#6e=^n1+!niX&r%)f&9l`3bDFI z*48Yj@b^>?;f2i>1MhkQB!L(SSGKoxfi6zf>JX>kJ^C%c4^H8fiayM#4|NTH{NpcX zz`m!X61~O6{_5wj419tk1;G{3*N z!Z85&YaA2^APOzv_yC}?S)^tqc1IH@_G1`>o;^9 zmz&=32Rj4* zveFV3&C5QC;TIC?ydJHy^V?=IG>|_qjqUDwVdYBRC&$(t6->cboh=1I+;dC-QHekc zgS&hF7nYq{hwp;O5ZI*t9Bs>CY@1_H%)B}bHe>N2C|PxYhtmTkp1s=OCok&!ZCPNS zBSLHYfHfR4Lb}m88rq6;lyK)q6w!QMjnK#SKa-+E?@*8;pb{$+1IiYm>bw$JCou*7 zB~D=R&uB;7dW&{qqCcPCz|N2vengOepUo(RVH~TpI~5u`=OyLgfe~_Ds#{{ut#)YS znK@(&8>6z%>Ml|vnGsu(8wnWTL-`i19arKM$cn4(N))VmZ8kMPkdg`%t)z*G1^{qQ z#+xa+H0suyagg}XP)>0Fc_K$i2^jvgCRjLhs@`~=FZ4lg>sen)kr23+Lw= z(uvliIDSV)umwKP7d}0ZP!=Wds!&^wR@-#%_>H!;{v`(@y4$cH9zT>Z4WlYliiRki zI?RWR20jkzKL5TrT5#CMy2Lp{A*^5$|2sK=0R^IS$TNgi?do^`#xT3cFy-jtE0LnG zd1{}~`HLd~yc8dzl6L?=76KXbdqD{ zt(3*|vp42qriQ`o8r^pVwf6tcpR|zJOikt+td$TAihM8QL>7BK(0{g1*Cd6=x=B@A?kHyn0ojg%u;o>20<;hKF)IuA=#AI?fvqp;M!!W zjNP3H&&c>K)yxHm`VpFWIATuY#Yuwup8a;LbbU~0C=i=fS21JVSZgq_wU=(WeQ-H$ z{$S^2j0YLGQ?eMkLtaqpsT7Pjh`m_zeY2k;cjJsG>2LRaTWF?iAIjt)Qs7TxFb5^A z{<)aduIcO5%ug{^$W!N z@*C1>S3R37EYJE?gY`5(Z%MDQ2{`&aI=sJf&5ASYsGthNq zTr7D~06Scb)T!t*`v0DQnQ4%coJ{q1;|aPp*KVWtp~XHuRuM~_8`F>B>;V7yT$YdF-6kT)qps<>q`KB0@T)9#lOq{vTId8q z+k#{h+G_r4=ul2F`xv#{S&KCCI&CjRNQQP`kR1PMs~co| z4e=Wjw2BUEMe=@yJ2`->Wb;RUbS09NEr^_ugQTIyJ5o4v?#fH*AHx5V7*@4V7>P` zAyuJBW{uX8@|0g0Fb7t##d2Ife*Ry*Fv)V20&D_fBdpE#JtmB?NF%dsjNjxx^>w~; z-l=e)<&79e{Vd!M0J0dFjx_kvg)q#aQ5e6xgM^lg(HG?~Z$A&MV{Hj;Nmur?x*97a zT(E8%lKDadUSny$SG+oJgC}%m>&c}V=S86F#8A3qRd&IO1R8=a=zF-(o?`=}l-)no z-uwm3p!jb+P)ayp5ZrG?p?|r%vi8^zBSHapQr=|i^;%}c=#OT-+XynHCm+T zjzLZDQ4$PoDnbtvIS2Kp)Bk)Ro`yklgd$cKE%@O#_=oWhHpMz(8PJ@W_P<(bHw`kwF4|reDtMEPGxk3)1~e>S zPohl?yEyx+;AlBIKn913$WJL_{*^b?0PLxawdb4!kx&;;G+2g+JTyuSfcBh9SH1F4 z1a)C2#CFRW-!{FI0k&*eEz>Td4a8sm=yCbM5X4x{jyN)8Yf>yk2MFYp3Nf0S@eNDS zJh8xNMK|LKC7d*TbS!5m2Q2S%4w>7x*Y;X$y^=u0?&>m$3$_k8is8 z0y?Q4Sc&j>-S|#BF`~Wf*C>glcHZ!^BN5r_NB)GP8RHv#AD>j7$+OE^i^cz0=!8^A zK(it*>L=0t!onfVqf`oveot68 z1jfm7J0i1BYPze15kryZ<3FZ<72ZY&=d-5xF4dzKDgCbNgy!N;x7UYEGKm^`$w=0- zt20X}35iTbivHx#&`_hVUrj?pu{N9Fgeet>qWdn4^?~jQL|H%o<8BpLY<_|%N|6aO1tPt{C-XHV0!0FWY>uBY5X>0^J`O`$+k6r0LKRrKx zUMhzOJEwa-ew@SGh5shT?I_7)m<8bC`M5fTdn`GoH$lXO5%IB#O={* z*Dpq~HPt)}mEN=~Iyq-s(k2`U-h2*MM{A3c&(%_t%=Iy0RW=Pb#**53LM-RPMLm2L zxdplSb{Qu+Lj5dvRL}rc^}HrSE&XZA?zle6|K8$;h5ck!cHGeadnGBmXE&*rXJ_4j z_4<|ku~D731Uw9~I&t?YFr?`ZBDK84L}cpPER|KCx@gR0sd7vr?NU6JKAz00kD^xQ zeWMRaWk2isj2W3NF#YV5HtmfvYlU$l)CKIf=6OOe)aKdfE46l8%c!-ki4j-n8$tRjDM5m296j%OMYl z@oOCM;Rxa%EicRK7I<&Ansawp8>rxsMyNoP0{G`QMFhxCe=X+dN(P56Ey)P;8_X!t|#Lm1Dk={0b2i z&mte)vb;rnD>tL3u2I^sz$zGc_hpC4(Hl`a>X`C8rKLio{s$laru1bB?O~jqST{`W zA=wN3T%9#TOHzLxA$;gAnnB#dN+w z3}$?p%{8i^xMUO?X&J$l2;;d|V0_;Xt{w2$C!IxpiWjpKXU}hz^63Q|&zMmj*m#f- zO_iO^;lF8gst^Qh_@TQ3G|qgwv25Xry1H3xF72p@^h*&IM-FZz)KOaVuUtR@Q>&xD z@AgOzw#0ojID5fs7e6jZ3cT|`^E6@%j5E1TKe9{>J41GR$Vd=^1tA(6sDcaU>!Jh{ zV<7gPqOAz8>ZzLj+fRI=HbBE*k83;GSzhlDW5BRiB%|<3u^)t;zrf$_1@69H{*(-mlF6jF^ zS#&Skh0$84ptq7Yh3i?Ad3F6Av!1#HU&v)uq%}_)$76R?OFG zo~yv% zT7tle8Gwq7z}a_OaUm!J75IVQMm`77IQ+!@-)uc|3j0g~o}+-SJ0Hyi2|cU8LD-Sz zlkJ5>oQKKCZJ#MTek^f1;!EXr-pIihR(*+9{RAYve?oax{`Y%(pHAp4L)^uny@oez zrFKX$5_tb@PoPU|E~n(jc^ovK#G&vxXs8zmJ_|U7VW7s|pz~J;d4!Ye*yhGx7fzbG zsqRlOsCwW$ug*vvU?M>HRti~9Ey+717@}kjME>YY$+D3ygD@kEQ!4< z@Iai)g}C)?A?RUJCsFV5IblIhqXvBo{Q0UuWNwEPmBlK;f=lkJTyxC7ul^pd3k+ zYPwYBJxj+Jr$Z8mCrl*uX>}d;sPJ#Bn>ld~}8R6$aG+pO47V0@chIJr$4g)d(xkws9jxg}KYD21f`-!?vVM$BJg%Y0xfz$LYI?eI= zJyAvtIAnE=gS2jDjql5fzv~zYG{nZdx%RT$G+NKKAAA?~LGT9aqiS2FvjRDE5yj}l z>u6=7yn|z>xQsa~qcR%#u7Ausd#SZ((dAhzFc|he5&dyEL$kfwdZz8?Q9n<)?Rboa zm>`1uORsdE@@k8@>_tj)yD{S_6XuD}`B?$M2FJ`7bcUYwj%{Mf2W~5$^>O*m6_(lT`roLw!^xv@u-CpeM z@E@Ou=@T|&RA4_(`c3ONeQ$NvX|JA-LXO0(jOl-%^p-j*W}lDoq{Ul>7mnFI4p^P| z5WvU7-rJV%FWZe}dcH&QZ)wkeidg+&{^dUlqXMqtb|)w$fbo)22KCjy;o^E--ak&mI4ykUZFviRoFO(A1RAbE6;C5K_}*)l?Nj?*4`p^{K;m)OdNH)^Q(8iE}6_ z7MT{a%b!WqZy)Vu$~(!S$D4&IDNbW6GLB3KQGaQuKugH{``do6s4oG9ea1khuZD~8 z{g!2INvWw%Gl8g#m1IGbJHK6HS}@FPMo}a72V6C$9!-CRw8FErq=ZB(D_J#nSnq{l zZ4v32+s;uEnw^*YL%X-xrN5M<343aF+Yew5bL3J^Khg3Ow91w}ZM* zqSeLn2Hc9?m5)}PsN|COk%jC1^O3mMfs_h6*6K5#sTI;led>z1?Q_VXBdSx0^CQXC z+C}l!s2D;fUxLZ518)QP3_j5(2(KW6-xUk}tuelbpiWCYIG)W?iktqq`G|^k6wSJf z*;ym5;U5z)g^gLH^2_ML%kl#q9qMapJ0B?`U-{g+DkF^_2@+W10$X0IYrm38b0-_~ z-T-(z`E(3j@3Yjg0AAF%95_}Z#?!2WAs5VGGUyAm3iH3urwiyz)CPzk)^dDb`)@~j z{c+ifw<%A)7V*^XiclX{48B#j0^SLpnJ19fGGhZooxgUr#DE+W$v2#Ua1pjO>VprS zVPIfRUZ$xC(6N{r@7WYL9M%P3wCLUrVt?$f1Y=I zdN^)n4xdv}9`w8Q$5nqzqetHWvfWY_5C8`0PJPk1+kP(e&r8u{mg6zhNnC%*g6Ur{ z&y+_vXsy#=BqG`~Dt9*n+nZIL(PeBf(I!;1xBHNZpctH?Z2-?ytZaMAKb&aYZvdIW z6TYX3c&LDzW(IZsv(^~8tKF}b#%0!X|C8D@7-@r-DmCYtLt$B_)-M6x=13&;b!fM+ z^5h`pr?yXPn>Vyzy7LMN15lyI8@%>>+;3L7YOnz=K(emXEs z$3riD+{4>FmGXxf?7gOVU99}snm3x&c|CS^sP|hkkyj&HYet`jf?#zX@Mg#LTg#EAf0#GV`Qvg(1B}cW^24T0QgfWn~L2|p5|4~dT5JE zN%NZqexnQx=by;+34pz2pLT%4FtjTWO#NQPF&Xm~0H}_C_Ns&JKQp9UF1RfQmHkaE z-`W7@iQ69oS=)bMG`}l#*LgiS51nsD?}un)WPt=By#hb(BTs8Q2xh!B${M9-8w}c$ zWhY1q$;D3OZ@QqtWFrLRM~;b1`ObzyXe1zX12uj|)C>l5Mn*tv;Xuv&g*qWjnl9Z< zGAM)z^$mIwY3R{iuEy&xm0TDUM2P{?gEBTGhzaq}9o0)KuV9cciAVig6$&th)^h8= z>FyB=Elv)XggwALz(H9Vi97|{QQyNn;p%p(9SWrfWwGOjMBhUVND~v&7OsXUjp$U) zUo}gIhr0Q9(tJF`_z!H%BF)Ui->8a&vnH>yPJ1PaDKtMf1B>`}MyER?Xtk{5D_3gN zKc;^gf3TSP8J_bfsX08Dl{k!y;OckK=P9iHrbN_84_h;~6R5?v>Ppd@jn^BHMOZOj-@+T3MY zaRL!rBXWJX@S=J@QZv>Tu~eY&?>Sj?sKdhf_h=(urEeZcb9mh`k$LUxhkgEy#eq7$ z_jIT2CYUJA(MY9YF^rkhdM$u*=O?eCK~r)Cy&|5%`VqO!s_u8aTT5M$1f#C-&d&h< zR0C0#Ib2aO=y5EwreS@TJN?%!iHu?*R_%ZRr<-tS&4XrTuLn(?!xg))>r$xyQ2IX! z69&clJjD*QAJL>W%crV%HER(N?J+{4L8SOTI{f*sr6qR5XkV(>pA%xT!hxS}{&=v8 zu89(kM{qU78&OU?PlS?;hDi{OPz96VA3qIVu_ujGt%}J8;EUN0ni!S$@nggwf5aD= zFuK#%$CIES5vYNKj}!V$_xBn}oYH4CXL*`7-oYFTH3qRee;ubg{inv1j4TubH3mYt zpoC>0|0CrG6|_j{5-EhC<;k9-^S!>H$gH|zv~wu-b{T1|IIE^=;pT-YJ4fA_$Nj?1 z@I6#Sf3B9`(D?sj>n+3TTAH-sjRZEXA-F?=y9Br3EP6e??z-!)>MCkDs>q{vFaDG|ob$i7NJGBK%_x^FnwbbEUADT( z{0c-ZZ@{5ZM{;D&B&S%o^53vvOiL_*#wM=SEDB43^5I=OIv}!+4YXXUm=YpTVPr)& z7|iktOZ_X9qT?Ga!vCUaw2!cmTKRHirfOO$cuCJDzh{%>($PwJ=rb2DXDsE;nfhYU z*Uju-S{Te_3LuszTi$L^URruWadw4Jwb&bW-p171Ya45NLQQu)^%uBXmpYq{eyu8! z6w=P^r^FCx*FUq3)fpGF;Edp2w0~=f#ancGb9<|t*#3!S=MFe?q!VIbAkxEgHRrhw ztc_{7NIHJgr>zXwXL#Ra7<_hU_2&7M1yRK+afD{|x@W-b-MSuTwghp$k}1c0AIY*i z!&MW9%#MiSWx0fLcjHt@Th^uQAv02bmhGzNa{B&m#aL7;A`gkSqSOyeWW`iN%s z{bM82d$Bm1C2tMOzF;gmZ_}ykX63#tcWdjxn+fxfM_kTuAyxy}Gl0 z3+-!Zs~DC)YG4NuSCuvKFrY>pebw=BI(h$L@WbfW8JsOxFFEhinj5IDu9c(H4@|~> z?*KEKL+!z$`Qh3*wMwSm8pG-0+FLq*)aqMG2sa}mMbnuohkq*V7e%2Ms-*8MX-AcA zu4esIUp*tme>!%qJKk<{SmAYE^-P{Z#mDcW+vXTjGaX62S#Zd`V|?C&U2Yt2o$H)7 z`>`dEeA|HXe47;8Mo7N2OB|Cry?o})w0w1^^HyB>_FPgbX`55rab}rnFAFR0VmH|7 z{i>+W>s#BDGhC3q`m*~tr;}UC3?#nEe0ubL3H}2+HxxFjkM0+7G}FGhxr@>X1;VR) zBH~kD?i8cMC{j~&oN-ju&icIP;J%2tG2bKJSnW8sF5|pS_>Ez6P)cCL2UY8`yacJP z^BJz#5!Yw)miLM8!7xD!88TIxwf$m7Wv|LEtvJMm7JIDai96`+%y)yIUqG>Xk4^h( zF)djK+NWXl<~F*SV5QgA?^tasU3>OA+8T+W_Do-Al(#ht{i4{&1%PC>=pp5Q8AELY z@jMUI_FC5>G72A(rfYc}=S0IU+W{WX)uc+Llo_}ne?X~)TjD^P0%wlh}mCATlMqPXAyym71 zNzDfnPD+9iQ4KZn;q}OP^rfd+lC*#c%Q~W;!6d_}C&ASFZN4LG_Pb)YcMv)J37d!h zDwn&UWFi|{R7}}n@$=bdh7MrW%^}^WV&YW(c~61R?YADuuuI8H1J+$%OUg{dx2_v- zs!ZcE)+^dAg|+_u_-ddO0+-z@i@V#6Er==-*sY`S?d>XAYcWk)rIf87!+VNruTW;{ z&2&YW!||B6u|mwmh?yqwVHM{?z+=>tJNH`MuGgFiqfv3G*K3>Vty!BW$9s2J%?r|%Is;?H|-NiYHR=08P%)Sfq@`< zPN4r+Bp@g%&M2qG(a_THdCyLpuPNI;4)L{PL8BLhYxm)4&s?82DUYK!?$pcLYZMp$ z*6><`c6XS5dk{;q}rtMLr0W`4VZlf*#^!hUyo%JA~pt|jNbJ$34B zr=$F4C=(?tMVJ^FayHDsL|JGQL?B(zJAnUv1y$1az?GCqFpT2L*kgn2>Fr@;VdiK^ zQEUR^s>fd49GNw6oK`UB(A>!5v=2~ps2x=tDeZ5EM;B0rRb$)WVGFov&zB$Y@;|dZ^$hWrl`(Lm z2*o6*d?-JBSwOPE*DJeTpy^YB*L04oSfSkvMzRAY)jl>p{|uBD@s~XP2nFe(U-Wa+ zm_r&#Y8LSZ$+a-}$^FvTIz?YGbB*()S;80xV^mpasuw5*OZ1N!??H0j>4XOSyCcd ze;Q+mG@3o~5Tc0W*Td>+NcV@OgywBtsfNU0P5F7G#HXXB;%p9=GEWPylN>lrmHIXn74*Mzk`#Xsx;hcA{lPv6zTO)kJA_v z_Op6#b=8xYUZuXB7bZe~t#A*C0b7tXOCqA?(0tEh?<(Bt`PFaD!+qSDFPp~@0)*^v zcjukDR;%>$JC}}hR;}(~+bZU)aYeX0azGZ^v74;FQhTOr)5|#?vjNN)4OVfTP)EcpvqIz*}u%F8jSN}2zX81_RfCG z)%a+?no3GI75LqwC*yuOb>qG0>zS|J>R(h7l8^DPa_U?0^iE;+ZoD+RwYKOFBSPL< z)0tsT9jB9ywXunZ?MA|`>4nJbo&Keop!7$2M{OT#fENr-zl+H!KqCOmCS)S?Kt*4wB(>@h5v}~6i)In%*TmQ0Na+0Yx z1Uq8XZKmQbLF9ydMY;BJy4q4-s|!?9Rv8)96b+sn40j?4X^cYdum%DQ1TJ5T9Cpd_ zdn>5W`RuUW*iWgL!#w@8Rly8KuPh=W*ne4Xg?(Dyq)^i6tl3P903HwX)XXYQU(!@R+joOezKv5sUhL z|15+GW`G7(vmiFH&vrnvQ|`hSRF`j_$FK#M5(=KbK9d`o$o+Y^Au=S=AXEBPbk|N{ ze~N>@UwSnj@jFw&#jd!t*&Uoa2v4B%usZ)p_tn#KWUx|(HVt-ny9D8T#T5L~9X@)8 zpE{@0euj|ZBb2b`o4tNX1qNbUNsn1MgVmahBB7KjQVgosoBW_^mkt08j3%d6-)^r{ zM>r>H7Ak<tecvB}fp#sVz?k8lA(3|3 z;3b(eZ-!PYSir(a>aw1K%$YAmt5LitUKd%^enBjY*pYlH5m@MZq;i&g?lAxI;j-h1 z7pnd^NvL}qvIsiqk?&qlm-iFYmN|A~eOGDHj2{PRt4gx7E46tiF!+mx^C2P9WCm)5 zyWl89H2LmM2-2~2&p8^c!6&rPf6A4OzA|Hsx7il*weQzQ7$UV6hFKYE@O-97+9!z4 zg!4(YM9=Jh_R%zxDDcpK^%~D>8cjRHn^G9!XP)qMS6%Y;pw~@`Z`VNHT3sCverzlH ziH>sT{8nUnXDr8yAuwDEkQe}5mTUj>vFJq?w6=D$T@>4cyY$fCNl=x^_w;_s2xKBt z6gNzW;3r&4)FC5SZ^Bav?{jv%+|J9bXt~7EaMsdb@BM2(fajHL>#}IJSveQ?XrPf7 zPYecVENFqnNV}CfV%`jni6-&&c#>sH@+LX#^TJV=m@Z8%qr@ihDL1;5>WFkIjWW6cr8DcWKs8i$R)rvtE|0P-Haqq6OvTX}@cSaP5=QuL%PG0({Ln z)BE3d{zFFu*!L>{)cp;%masUD=uOJR&fXMEaK8=(;Biukh~819FP@co$0^h?tbt}} zr_trAb_`Xsw)+PVvfq8X`jz*qW4XFCqc2tJ~%Lqc5X? z3JGidYX3NDxWO=y3Mg_u#n)rTFbYmLi+|j|jyO( zQZ>=fJs=$31LB&S+{Q10(nhW(r>*&cisJ`EqU`*>0nUmsrPsBi5&fs3$7OvyL#|%~ z0(izob;AiOA5~;#5}LZSi{jmAb#Um7-Qr6n)8n`w*YzWVmuq5;9Yg^?k=!SfV;Vso@NoqUya5Lp4 zW920oV+em2xFaIkYf(q=Ppz`rzus83A#V@HNlN4;7^)(B+H73*$ytZ=!zIYi3VW{L z1;HlGO+%SnCjm)vh(Qt}g35sIYh2UwYS6g!k1O1>M7Rp!9Gs3%hMSF#Y zzpghEea|oGlkp@Ew5AX$Vjl-62du{kEysUSwE@?&l?;Qd?P*5<1H}|dWKp+txyeE! zY5Pt!Ig&5y36+GevKR^RTE|g9Cjj-GKiL!igJDy?7$>`gy5q&d*qOI`NX4{bQ@i0sc3DkPN;8HsDn6(IZ#;nLD_MmbUOQVl)pu3fB?8Eb}*cqrmE#|zfjtkMjHENKW%?uDr6t0C!h|QvMT=4>f z=b3QxAYCI(aNmZx_v9!ALB_p4HRAw>C=18OxHrzX>27RDR(otBa!fk>^Ny{)PGgJu zwv@G40yOAwkt)q*-~gRp#4{ds_dHrYKU-@!BfOTJjm;|*VI=k`5R%Zpic#YxzS{{f zk5RPQ-tK^d%5+_1qjn1i0(a|0-x~CH;y-xgaXcQ7zySsE@7-(j$^?SD9F2l7#iRLs|Omm>Is(h9W_vYT|ZyF^KRT5 z?4q(*IJiRrRwgne==kB6Vfdl8V+mDKRE||f2=<$8kXxs%YAj;}7z~?;IVvKuc}_?; zpirRuTOS{nFdT#~_S%DS(c{1_l3R=qF?!spYyS)@^eN=5j>reV7F$b|lvF7Yr1Y+d zW?pYOORIp5u9<*W+c|sb&&kbg@~w0AnJ}2qm`DR-05$Y?D$~wcC8ZR^C#$8zwdyaF z7!wKx#el5d`Y(&gc-2)lq~8yNYjaH_DDYH|Y-!FwenSK0B#_C-N}@nX#`Sl1KtVy9X+5MJ15UO(WWc9<60D=UEonep2P`)(OVK>_ly!(2muzKdg12&5aAO zdDaQg=X!g;qi%at#qm)-&&{;{@TVThs@J9I&A{3x^y7oVuvG*o`8_S*uN4x7*boFBWgDQ_BhcZ;d@Idf6(LSJw3O ztRELR23IC{46&=hmacAtP@(0~8DiEcTi#BEn()ZfOns-35BFysxBe?;-m;A6a?w9` zjYdmFJzb^b4U^xwT7Acc>(>n0Nk5Y+pd)lT$d_7iroV=VAaLKqyO`EBnq%un$LY&r zn4(fiq#}YCiYt=8bbIPk!>egw`NC5qRy%N$kyO&#xPUUGsO?O|l3Ywq3c6URASFbo z)gQRpx-y0WbKG)qI0YD2GwG_`u)TD>3jap&Dm*N$Sj2VL(4T5sLr-Uc@?ptWr;Ms2 ziDt+k+mvNYW9g4$@x+z*T>m+iE@D|FTOnWa~{ zasUM#fl@M-p-YcI_1Y#!rY4}&|Dk1=F&-08{mf+mUI0MMeNAg(ip=TvK#WkR%wu;_ zCy(g3ETT7+CC{c}f!NkrTER@g z5kV=X7~=q-_w8AWa;`U8_6!YINtZvdPlPl5ancmgOTmA&IPo38&iK6ku1YJ0=~_onm^iJ@+*OBVH2Dc47LU$(ew0G>{mSlWLwh4^X;Y z9c2}C+3B3L8>M0_{L^b!t+Op@G7Trs>!S!=T}QtHYFC+z|3nx(a&xo4?RHmME^Hw6 zK`~gSS*7r|o45*<1V6TV>>9G&cypNdR4(rqv-5GSCsFREA+ga*hR9{wJ+iUvt}Qma z-JQ5Q8;C6;JmgkWvY_pZ__82Vn^5+2yCTWF0VTTq{AoYJIjFEYFZZ1bzjop+kt9FFfV?g?M`>)|LqINP_vlaO_zz?Ea8K&Di)ArTb*=m)Cd0*UB zd#iq~X}qJx^LLZ81$3;SjfCB~k%pwm3yU%2EZ#U^Ennl=mgK|P(zbQ;6DF0|shXd`?$Ix*a+Acnt2O_XV zr1WzTRg3YEW1`!7xk}}P;208oWU&bCLHD%ku(wW@q;7=99&)=D&u%Z4;$5cU@0uK& zFVF7NKmkPskbS1y7_uXd3o*t*vyU4|o~M&3NC@GcNzVL`%^%)CN%gYol{sdQx=py0 zqG3z@Bxo^vofO?}e*YUq4XGj0x&w&X7+mCwtQQet9eFcv9fcAEbzDZY-W1_(z_ zkNpFMRzl@`H|0*K$l?N0OZs7d*ogOi0Qi@CixXwE;< z&TOY-jL1XmcB5gu`~b=O$qZyb<*hqUgpHmAZ}%X%av1*m*6mTM?G9=y9FdwsC`o0x zbLot#Eb>t24*vFev-0IYg~p7Y-}^X}&aeb(RW zUif%hsOzk^0-z1imgfz{6`neWkFM0l50PaY_de9gP7)YPW+Qs_ysmrd)V@ zhBiwzRFCe;TXbZ>>C_>jo@X6bvM*1c!y(!$9Z!!m_S{5+9~}Dl&PJnnCguzgdc-uL zAakpR*T%H(XBQCqLiu&`#h**`b)1>9YszK%{Fmy;0D9R|A289p)m$!z?tS-bC20?X zFyGZ!dU&3!>%9zP8nV7UW7d@lSylWqvlu(cv1@HS+E!ij5Q*~U>g-gYsN;{sSyEn+ zFU-GEcan`oKQ%fQI?eG>>!qUZ1M|7u5uv2ImD%aezi?Bj*oKtp4Ql+0ld%l^-9%N^kEU@ZDGIxMexV{=7~4VDXl1YP4Y z*TX)1*A1w&aIv9-Xu6`(8%=E$=|F}&cJrX$)!;yoVmEq9;%=*&x{NMJ0{i9@QH;@a zKPRQ@XmO1XqEe>51=BCTx6~d+{7@+U%^t!+aOJ?To2QZg_!Idc!+;O@^Y>&&=i)SU z%w0<;dkE0YjtIFiH-z|3H=E|dzYSXPr*si z+6V$gN=j87Fk7NbDtp-_rBm+w=Q!f7&Fr0*oQzp0q?sdkF90QR#Mj+v%^_#$vO?3^ zbtg63`liZ3(RKYBq%1QtZC(ZUL?nu0Ys7lwk$a@cj}-ikaa@?5$|-)Vh>&jH)~fon3WlHA8kH=$9i2vF zFDp-Pt6!;R8j9!GH2kbA*6L_Ds3iid7$i&~bcxvr%UKCa2}5}FSKDrV8-zXMwTxKP z8LT}wqbi|pWRE*n$L}gVb*CBHFc9)2ciP;!Ud`u>9DmG3=*fyZs#*`eovs~3GI&^$ z=x_buYBCO9>)3sTXfh#SXx>fwlgn5t9zuFy<9+9SI**wwi3(T*7_8JeHrr+ckjwE7 z0X}fPP~O7`nTAtHGEcBcxr8{hfk|V@g~2s?V{7t2=apO11lmtk;iDX2ttdW zPtNCWRBu2|W-Ya_im-3!dvi;3{+h2XZ&>+l+Z2k_B*=QWBh4YPdV)h2M(ziD&7SY) zdm>7B&XPqJS8O~5Iqcw2NLilDkuW?ba+dChX1|<#8bLByR7h;SBvi$)fKOuOKSq^B zxODbkPv0Vz>i~V2cIOVI0btorUy;)iuB0Zqk(!WSPrstkSf_kphVUt1rD(zzA+t~{ z*&OcxB#3QoC@hNv4kEI%_uYrrb(@yj1k&Ar7p6ePJr3^-PlHTxiYUDx0ilH3#&-)f z{uD`8}}U?VjK9<(u-CPWF+v)C1mvhD7jlG5gVv3mD}uxW6~Wj=DJ&j?o*n!h8|xYTe2al}+}vHSWca(9 zxNc+ML1g}42Kb|-Xn-K90XV3kS`e$&)#CK962x%D%JfA8QQAcgAvts;2dCRxzOZ-u zm2M{<$^2cgRSUwW;P2zBZ`kIZ&()N`EcumxtUouu5FC$3t}aZy+UPVHOG^{xwde|*LY6Za=G z@OjI>qsig)H>_Yv_6;~Lnk>Z1Z0%`Z;5YXky=g?heW$ax&Ro^q*(j_pMSzj4=Isja zNmb|BEXPywq39ghQ(Lr$cQ2d_cw6^HKDYATm4d_sqk z;Z4RBI3L{LDJFW;=AcqbE16UgzcFwkD-$D&rA8djp#l?Uvx3~GdA~v*y=L4mGVA{C zNPRH@1^r2%ihbY^!_pw_8HHe>lDey9>NY@-&c5z7Y9(A6ER~2yI~kbxWVSns6jd+vk?1a$bk+mk@M-J9=4;b zW6ku-e=I)$mm=ULRH6nsca=;%%FPJAVvcKI-~1Rh(ggV!8Spaiybydxrz*3+jlcN? zTvC$$J_?IAxRVP(MwUg0sF+vnm@NKN=2wM>bx6+D7jNAk^S-D`VZierP%g!X&3K7aoYHSRkL0NR>uhecqewylqw0 zDLpio$xT?RHr#J?cVrj4)tiMDX_Y_hdX*!)R%btc+Y=TO>5cOZYI2= zj;B5`C%QkWQ29_HS)p}!hqB9I#gc_WqIOi%kS@YZ5+CZjwszX!IMaEksG_3}-(Pd1 z8D!n2x_4=y$tXJS^!E1J0|b=g+H)xD48rL-2UG1h-X-2Pq{o>{R*vrppFqL=xw~33 zRIMuO+&-Qk#X^gI@F!~-oHZuW(hut=LquRvFKyPZQqdXlbwY9Q!68QWTg_gPAAg9G zCQqir*L)+VG6s0gzvx}ZPS)a7S|yYH%N*}S>bDN|w{2wT#~ifa*;aWl8zs4j*Hj~5 z9r}naLH^f$IzV(FY_JRpG&(w}VZNlO>D**F-}rHNUd&^T1CHdAjtv8^`@?hU*g$p2 zF*g~h&v}#0T|S=k$r(>iHabM-Y;w7Vwo)e30GK2sDtlKalnnIKbkc?ROdZA>7 zLZ#=ukeJoBk;sU_)&|0CzGUPBV>a(%iyMsV3A-Tt#A9s=5=6w7H4uCt=JvZ&LX9Oz z#l*ij+#m4>DkJ()%rtOhxVvHpUH$c>I^Jb#M9tL9li* z*sSqn(TfZw{jx1iC4n!q6@&7u`%JHVIo&Gy!BK#?FGGG92gUOc_XJPBxm^k~cm?;1 z^48Bvv(%RZB>5QhEuZO=c^y58zKBBuL2i4Ivt)uZ+kzqEh1 z{^ir{K&AJ`0$%#NDM6M=thLojz9v2_4T0z5=S`x;>9MB@qAXP{WlKnZNxOG_&2>r* zk)ble-&cI3skJ!iQc{_p>^5HsRlwD?tF)D~AJ`8J9b19)cEszU5G^!P>cD2cDjOT- zl7ZIo2Lm_Uh91Y*7bX2#%@CY3`|aaEh!l)RoV)Ove=h!N==cA8dZ zUyZ;yyz|9j3S2u@&{;bc7it(=<1N1SKbb8ed5FIXQ`)ouje+`-fKFKwqBDgyZsXV(O;Rgc@sZ_*O{UjGHWtkTi|`+Xsi^Ox2Tu1Ps@2oxWFvhlz6Y zBPGDv=1;w@X$2LG?)om&tUzdr!Vz$t>*c9+=CqtRhkc+bv|+{sUef1`z4SbO+-}taZVgRSV*hM3dO`3XmP=!u{{F`0XV#%V!>Kw-HJff42J<4yc~^|DZm z4oAEMI*;@|VVbZDwIoJzgz^dc%e8;nYi9&Z3?|e z-~x)o?Q<=CDDh@ZZO@k<9CsebknB6iF_^uLeOlC<8RzT|5MXkV6clU`eCQ%I_~1;7 zvhr$Tc%@bw3gHw~z2FgeWsr|Fg}%LUy~njiSuV1`o%c)oSu#i2A)>iw0P-^hxaUFW zk|sL@$Zr5imIyzmG02USa{kgp+tQW47kjf5)zM0p7k4yfYT0^xJeBvN@H0H%yzF(N zl`h@+RPJYne))bc5s+!a{=<0I>4R^=C4)!Um#_a^gv!cg+p>p*G^A}~wk9BqjDz@+ zH|x|Jy|J1C5guTf$blSThZ$XZ(cxAI?E@i|SD;+*!!7~kn`gi+aU)MNM#=Q&MOu6_ zR(ulSK%sX=jQ2L4gCdlRy@Lg#YECYRecS^+bOB^2lEb6#nP~F$5YX(uC-%-m>tGUA zeSHuYp&Ci!+zt9nQV}LBxkDfD7A}EP?9a>`{E960f?G6bZDM$hZ6l)o;w${bVhZ{g zD({+EMeKW(d!h#2>BR`mO|7hgC6@!1Z zfv4!Fge6-xMZ`CgnYEoKDzwo<_^?vpLL&BvQn31{OqRUvjEFnKuyR0!=W^m_$) z990o9c`;0HGOnw19ES-#Q9V}{ zlry#A!H?axR;KCf`f@nSU3HiM8lt+E+0Zi6N5u_Un0T*iPiP5&o;yiF)r}ws&j@0Y z;AU~Tg87)n!c1={YdxKc8i&l&+}C-aGAJaz;4mw$vNI{neZs4b3I5G7^2SHChFZ+s z#L3YP$%5i1?8f2u<%S zkI2nP8XNLOZ)EcQmro59%FWH5I6_p6tKKxEpIGzWF{@xTWGT!G4J>c6DARfniwO86 z1tz@@gb8cooQOScvb}hNBhciOt-pe@kb;K%LQ43~A`}!d(MU{4!-Mx;G^V7smq`AC z7JdiC0juycXNbU}NU&aihRM{)%v6a{!j89*POO1;e3-|{5x~|IjfCT+ zwL;Au>pS||V!mXUN>Fi#PWJ;k`n1N$_~PS7m;B+;vdqgT^W|BdR&+!?Ek*5o_?)T1 zZ#YjsHx8RQA4rrruRX$VB#VKtgSbhoKVl_XJ?l>JM0`H8x!DC?uwwhc?X>n%;h%V0 z+6eh~27OE`cV%lO(ev;ZiBY=m`E!_?>C_gT!U~ajMaPbB}Nys}v`S?SOI<$(v{bco2aVUFLjx{j97AQ;@frR8?P1K6oGgm}&o^OlAt9OnZv`er9 z79cKC0fXA?Q&k8m_}yN1=ng8I_zHJkU?38FHRe3b>}+02Qz%TtL`9~Oy)H}b@4h|- zY&;Sb!Kly&`jV0Y(Ki0$3xEsVyI1sXFA8g}eSa5oyi#E;{RkGu`!(%lUAB!+uQCls zntrYlTIPHm`Dn)p#}GYJ#S#m7ikszrpU~VTBPnVk%BMM?IDNY_B`g!1ukQdffo28KswG5k*|+av8W9qydubIN zp9P^qs+$Gj3Qj@E(?>wf&Q>*BSiJQkUPTLsa1apG1dq=SI`Cjj10kM5!AuUycKdLp z(}}YtO>gt06%w!yZZaP~uRuU~?;k_fuCHrdeX7S;h_dTu_-n(lBSfP~3cx(8U z5LUBdtba!KPwPu6uqyLeJ~L;W?2M7bujSd+zM{=$44RiQp zKO(C(FqvIde`fevuU1Je*EbD+WsT5omWw5lTs8s6_eGUbL)+YB9MFHyO1DyZW67jwl+*gv~<11loDq ziIbA7T3(ECJykHj``AJ%+FJG*9JEZeMS`14)BEIVIy&uxgsHNd;jat3dZ{uEOkB3j zmu!*&-QC8;FbvK^NSQ()hlhRfA*%c5dR@stiQrG+Q1pD<6do<#td7w|H+QWZD7G;@ ztTY%4h3*2tpvrVwqh?#?&>#d7${y5abbJVC zU2q&$xdp~tMMT3kliSScqFMH5Av#m}vZd{Bn#Xp*o!oOeJX%lf=>31fK!J=|T`xx* zAb0`d!a)0+aw0?!NFKcPlurMIODz8*f+!)$UoQelkX4Pygmb%RexjQoFL#_lmd8u% zA$gUEHI^9$L`#yvAweu+Tdm$eLrU8ZrN53tp-U=USZXAx^U`YS@bqU zX#QZ;L?!?oBB8cI+4W#Si?R8L99v&9HF#EOSFD^e@-g@THSKaAe&`dAS4yQFRha;B z#&QmlAf*V@y1ANK@!5jp=XXKp1CCZE-Dt`mg8xX^|7o^402hK$^&SYh;YGbokHA^p&O}|t zIE?)XRS0T^-qX>@W(=XGTR>V!w&y{A`g6XrXs!sck3~p$PaEhJt$HW@X&k?^qQBW8NH9NPxv{^RNfguul z%#y({Wx_+N+?b^%n{cFd9!D|oG_VMmwjYoiz{vW?V0M$S6)!0>mH}+{58$8sU4rIk z!N|1Q^ezadI%*PfJ`GHd6U{b?EfR~@g*bwVQVMP%jwijS<(A3(-Yc%9zv948N?@6|5)kcKdb#7cL`6KglA~;C0uKbBmoFu>+=oAqoJ<)o(U3F zkn1NCRjY{wC#l4Z?PKqCcT!*t`VqH?t~|!{&rzyK>S9LIDJjd#MA@2LsaEvw=vZ^+ zRPd>YsKl&{OooTwF$=*EJ_m_h^b&WeLW8XgNERM3GuF%P8 z>CosPM7fC@`wsoGhAP-9si9St5MpTfo{Oj^a*Y`{pDlujnx9`>t;3hD3xtA&M(%VRkiBi${4jJSCH zm0+msPna|7d z@6mfuzqTe+?*qa=ssDk=aA0m-vRSY5Z3^QuSsD!F&;9#NKZIXpr(;3m(%@sq66**{ zPp+j^tf-^W30`(1A1xT+BK zvV)H*VV|Ow$?*kgo5iCGk`nMst9~x{!AMVLI)&lBbJn;77ak&jQ~i#0=cn8(H_7`= zg0!5`qQP5@JIkgm^aKdV>UYOu8*&_+rEwb7=%* z)ILm+#TAX_(G!Jszh}%{R^}u}g@j_ORM)D~HnEKd64Y(+ccP}N=HG4qw5OXC;&e`U zJf6-OF3j%QU2go91im`D9;N<9RGiV!HO()n~E$LBCf{4z7*_ z9Ke5C&+Zf+@MUT8yMB|yI|+ybR3zW3i!iF5i#~@&Y`$}(ELJU)aHZtvB#=&D1};nM zs0%!VAo0APmFLPzDw-`^ln+o9*7QLG!DVPi?Wi9&`x1iL&8S%goR#a!N@jmbKuQ2j zG0c_OXes-}wszUF?-Iw-mHACQbtV!Tgh%Ay%psHEblPBm%z->DE@6~(ng`RkAK14i ziDwa#%VRX4BNh=l#&Z)lQ0Mbx54QfXr{08>3r|g8O|ISqF5JL8nl!1w``7G?4Vm!v zEi=aksm7d1A#x8ganYp5U9R18&PAoRqPAufn%=E)7v&q zk-wp2FEc!a6ckwgL%ui9z}vh?O^c?( z12%erMX9Z+XksJuZdh42u2KXvuz7GoG_U3AUNRsBQdBJMNJRUHzGG$ZQ}R>@S{^4= z5WbqluVf6G8^0TzIcQC}aIm!kT-QJz4nmylU$ElH^kf^5Wk}30a81M~x(N43grs|a z-B7dsd7tC0x!y5L@lB$0AflIv>dOD2lk5}a#x~53=>)X?@P6>%gQi;mg*eWr`43SL zG(?Q5OaHcwEHJ3BCJyOO#LRh+qq6mWhIBP^&^lLJ7Rzx{&(U; zK?|s88!2W=@r-3lJ6Rc=ErQYFX<4Wh-zz6#fa461M(>2!Mbp&J?*iLyfF4&^R)H{nqH+{;o>0vvo^8_kFZ@99 z=qNS82?fUYH4?%wV#6s43?XQN0O^pzSSnz=*zRYxL;k>Dyi524I@aTn5QM=XW7bmU z^ji1|KB7i6;^~P>G%z%l5c)R=bcpX=tQdutA?v0?AA(hN-)Pgps1!GdLIInMQ6^>n z(dNWHvP1|{8P^Q>nc`pdWP9Gn_X+q@o?k;CqkvFJfN%wY4mpa~10tw7+@Hu{Baz!M z?S4@W1$3m}lPJoE^e5y|Lz0v+5+Hlh9fQM)@|g;1qx&MnpL@tl>U|VF3pjA++ZrONTA{9} zw{>IqDzOw(hHc1qSPyt)r)O&?@qZ>E`rk_3h<%t*I|JqWV;NWl99T1eASFx#FbKgs zz#6H^hu>6SZU^}q2mak{#{?T+%y9me17%E3n42-M`oeuV6$WE}e*+JNG5-0t|5^U; z%LA*t{_IAX|A>@~-su0l!On`bSd0VEZU5Bww}F+ue4t%eHj_x`f1Bwb;~Dk`@(cLS zivRoC{KS8>al#$oEd5(OUK-5F6e7?v9`1h-7f_Rh32wa{3;w09g$Z_j^QZq;ng6Y6 z(0|Ldf4WhV8~XqId(h2!cRBt^BVaHTkIj zXA*>=s^)wDPiJB1Hcg*{{2?BQHcNRvwZqHmC2-`AfhAwu|k>I zA@kU>_uf3W@9%k@KfPY}?K<~$ea8Fq{)`KPr>%x~)I}Hfl zoKe83%ccsoPxHVNxm`@M40Nwkj=m;IBk|w-!LNva&()+`3@*;}N`#-UK-0T}gDNLA}%HQ;M zZ_=<%GHSqj1tn|mp{GF29hz!kAzfB11$q;=-y?LyEDxtv;9mS(4tYNuirFNTgUjii z^f4BA*{Qs?ai-qWg1y1g%9$oKK0(YEH{~|nEkl=|`kR5!?7)IX z;y=Fr+5PKdp6@OxN}b8R&xkU<@z3_+Im=`^^8Vo*48F@8ydt>Vdlc}qd-@I$C_Acc z@{_K$)O#%w55^iPKojTwGZXQC-O*>q(`$)r7~VS58$AAnCnz`5n`89i=k4Zz`myWB=Q5H%uj)~ZZ<>fV z(wTM=DU3GLGrHxU7g}H6@rrYB-&v44**a>{I?uWX4~*tUlg8r{nyOLXz}W`zTomzb zR{a%55hXTzyY$oEzWcLMP&| zIGJibMT@z+tkk)3tOBfPNQk9LdkiOV{80_M+JW-G1VAh#nN@=K9TWULm}u`TQsprm zE=L{4di0yhl+L#w7V$C;N<>ngO}Fzn4H6IG*5bz0dOwkXdy-Ide}6MNYnWV?ck4!} zKFH5}BfcGyR}!lZ*HOb^o3-q=7MRCLX2#_UD7ppjBDSIMsAfEPgL6aPnupwr-;c2w z$L|~;Sn7Y$iP#3K5NwDr$2l`bG1=UhGD#`5%Xf`ali#)>(Y6o1yv%;t754HC)`d44Ts zp=pW_#<$11&YgsPAQ7%LB8qL7FXB?=vPvH^)D| zIl2DSeMNy{Kc_8T3wv6u1~)qs1S~u8A+`nJQPabh)Bbvndp_xwt-(X)YDoFN7BnVX z(*`ApYn6!+l{MN2iUmyTzVCj$!s-Z9vjOd>bu{$+)OV58wFjkEHYXIM2JEuK11blTb+ zP*8JcqXC9?4Y!CHw8(b5_~Xm4*1#t}mpSa2|C7$wkn}ZpM)F3On8XMqNQ^dMN2|_q z1?>3#G7U%PIhssff3nIBWcj6yCZF2bwh5@AQyzf^Z!b*K=QEL2u{%Iu_YRd0@w zp=dMweI8}nG`(Utzc9Th=-)a^+4cn3!Us%V+jvJ)HG!)y#~WpjXU+p`BQDp18*h2+ z-(ubhR#!fJku?)xbL+Ftc8R);Z>*IZ{Yu5<6|sRA^-*AIePI+6>#ZO31t(7#&zgGY zdQH-%lM6NJ`K2eDh*ofHn=`4@fm{BC{eu3-GT9RWDj($F$u@X@B8x_4>-QFqVw`Z; zBeCk|%(CtKmxIz@XXKAYM7}pj%+56!-%*CQYt5Y!j9_P)8o0`5h@Q-12_C3!3m-Sh zHE>m3Bibrf46}{Q3krh+Z(SY>&$7XDJ~pNwVmz+1&bKf-*4GtGZy0zjPOrj%C?Z+j zxAX=M9X+_WCJj)NjP+Fw`+?UNUb^ZIO5XNEBTS{pX&HyJ`?BCRh^!<4A)QGNeepmw zF+&5x4Hv64>lQdiV*@GX?xj6b>~@-v2Q?dWGS&Uu>0M-7Fe~b{aWVqexXp)%NjraT zS2y%?#b}N#XtoUtDDLeW_1*Z1`i;em#FU(09RQ0KA#m_7Ro-i-`Un-#WRCgIH8H~N zF+TA7Xrn5pmc4vKYgdaNcRW>x&9RXsagPUm{o(Z`oUYmNw$9kryQd_+GD5n$o*T1Ej?5Do9 z&rx+m%ShB^0(gX++kS>9V!uzy`&XIBi1TFK)uF(9RUULSUeIW@W0tV@#V@`mgoH2% z3TuP&;704I(JO*xiDe*Pbe_U@XIr`#c2CG=YQ?$|MB&cT1EaUc&9(|1N*%UW)}GqR zoOi|sY(=Qo`#ywQn~r=3X5Wb2fhW<>wEDBOkIntO0aB7dD-I3b9nUg^URgib#u#08 zwPTzgW2JK&pMwV`25RdIy!TFoKNK!$&?Cre-{d9k%@VzT#P+ZqF1!C33GfAdWt*$I z?cVY=M^(Mn&&)OS^_5OXnCh#yClfjs%{qkJe&F%fTuyj;^6F{y3S?wVnNLY)m`hJU@VL=MMZ8UcQ&qKo z%uss=`{wU6DJ1^=)R49STZvh(Tc4=`ELHkn3TEf1UVDS-jbnX)Q8WkUkfHh>asvPh zoz3s(s?4WWBlaGmXO^%A)_<|YP8jRpUxQS@N? zfs{R|Vq!NjLvbi z96p;S{;6loh({_veJ4?8K>H~VAFqz^s5@f^76bgdq;D_FVBjx_y6v$M_TWeV_D*GN z?fKO?UzTuyK#A{vEZZT^`UupL`Vp!s>Bw?uc3-80jn7%%()vmq2|H2pe__`~`{T{_EwCM|0 zW8GipsXY4I|HNbI{iygR(mpwvQQI<0wRN;)=7q5VU7@kaS5aW%TMGpAC6Uj9Aey--`cxSnvD3sQqWLHY?)3axv9_3)`B+|Q$b-oULTDCMx>RbX0 z?}mmc_VTpM_8!Ap{xim`&Lw8^s;^ubcpc|FnobtyS@J;u?IPS(S1dY|0TIzspe zOFB^>dlSZa2MPkAe2&D`?H^N2AOFnq*qR;^q6Qk$Lh-)9hj3*2a%z zr36XJ@RLH(b*F~Q5<|>e@I8x)&uE;d*{6tteUJT8$?vM~DoCC!;MgMl)X|96pa8c4#{5-QIMt z)8M2c1QB}o`<^Bl8e;qxvl>TyRyk;i%T+jX{ zXqtG<5vN>UU45{3D9j3QQgXnd0X=y;YEpHSlstmfW@l*8GWY0Ix&_==XR3=dzRPw2 zJY47N!*9pYO_>}gSZW$Lb$mV3D}MFns@M*!Wvo3tGJP8ar*@sHOPlbLA_sx=v@`D+ zm@2|!)*V=*_~Sd+D^#xp^mC>aWk-X9R85ci8gc^}%Sz zv1qlMhx?4*`ld*}#?$+hncGtbvQ4koSH2Z5-rbXq>FImA+lWhk(|F^?w`^g!f`g{a` zRHmT@KW*IJUw+OgEB2QVq*lP~Q<^BV8oIFlVHD$Q(~|jhX|1qu%J*3MAZ4-Q)pG_( zpTDA(r~mE3@@cJE!1$nU|K-m?Xmkq!fsPuYaxje)3Z;+eK$v11cPnrK1gHXQ9o4sk z%|s^aNe&|>1rPi8uhx?-d(-`&Ar$=~gxa7fEXGVCaBW^G|A8?edklc9@s?uVewxp6 z(VeHRDSMj1m1Yw~_T(lWDtpJ89aF*#`u;^((bBWYNkr_bF}b@w@RGD z2%hJ>xjT^6z+^7M2D4`N{}12tcLxPKL(K`aX^v z6eL_-o{x%>7u^aX+FuTsE1G$h#4%cI+GM|ZR-q}m8lP{_fPJgZ#@xTWPiyHlJ=(PA zt=<)#UM+L<517p8JyFR+}8(V*IcQ?2ItF#c_LSdq1vrXH+Ov-L(ahY+Z{|I z{#|QTrLc$(DYCnB6q!{Hn&+;9#n0}~e|mNlHI%HEm~t8b+$qN$wz0N#`mf`vf3(pJ zo#@h0GG%$WbXb49rG9_DXtZHsaKgY)*A+M#*~Zhm{rm5PQXg4OKC$KB>O8fAupM=; zX@HWc`%Ap+Ml-*r6{__gH=S3NW>!1$;N9r|)uD=b$HFdC{gKr5d|{-ZRKK7ZGn8;{ zMVr0pJh~`9ie;0h%i1;2_{yutJ^e_ux~eLcNrX2I?3x|fO(!YwAB{~OkzG;$0qkgM z0B4PDnb21VE-1IQQ5q~qQ#a%xBeicuJb6AD50V2J3sws7seLKM^Rpzf8uRRwQ&cAT z^o9ych$jc?3SuE_>wIi&Y+xgt7cfE*1}PCB3c}mL7YKWUQ9!QxWmmVeGe_H zzKMYVVjAbdq(bs@o`*01a<}4=DjsQ^WP`5IQb45&02r4r_~_m2PNQ;E*|7*d=qJW` zBSP6Die-vB?2ieHeSHg2)rbj=3BptjuBX<7eOrMv2E}zRI$yPIW-gm11E*syzC-Y^ z($<*@GlQ1^;zfo4Wm|08%sNn-&wQC%=U!I%}|IT zr>0cO$wG zaYLeS#^8rnhx0ajNLK_eFRKs<}wc3V1qkixf~T3$PO0_IMS{4yZR+7J2;h4QdA%V zAR5oD>HVKsEKgez$sA1q!^Q0KRu*q%W*)^n2kl5{@*u~tHpbyzlN1V|oy(t)+timb*X;KmmZe4-c?t2C zsH}VcGS1JqSeM*h-B_C*s@$%nHN^P3zY~5BqU}i+aq2;pY(0Az4+0Uw6l0JC+4wLR z;#+ZX4;`ffVZe(@`CtXq;Fo}4ZVr;SLHao8AG(A-Yi%$_!@H0alsJeV4PlFaMu&v3 zW^^j6Pf^=vzpi018dPWv7LM_}L<3I#?f*&wk5}Y_QEKZ)eax`$0!4M@7vE#|KtXF= z5#_1ocZ;~CbMXd0NkO0TR5z75oKp3JTi4dQqLjusFf}EcKb5$Y)ibc&T*CJ zlOs7aPq4n^dM>&YIr&UZjfbaIG0=Y_W@g%RbJ+4RvXhPVjiownuOlm2M9sts$Yga5$!Ko0HCQoH54Izbx?6EbFvJVdSyC7D|`MF z-wU~rtil}Fh27LDgZ2Yrmpd&|-J(`W1T^Sfix$I^esrx3VgB#!0cC%ybPb!|#~IaWW}KPILiYZNGv z1RDIirYtovSBUGQ8UqXp8MyK^z?Xw}lm&ye0qd->fd>cagw-njlXyNidG2(3Kq~!` zS*Az)P5YRs%DY4IfB%6*qk}~Y2bKJ7;vlVf-pJZ5E3^3+a3~~TcIKc0w`T81G>bePWmRH;_oQ@10Ds7W89VH@H-4QXnrOJwK;1pu z0~hMW9VhCflb+qmDSvsFo;`G|)}dc?)c?8!=Op8?M9um=H+Qm}ALKQM79FTebK{hB z?kjfflWHjD_ipD=w=k-$E5R-a#>(u*-|2H_%x{nccvW|rf`>S)rp((pAauEqYeSSp z?Cn`UjDKzmI9CbmW*s@GrUaMq{JKLkK+IT73GDnRIY&?B6mp8cq_->hyt7R+3J5`U9TFwo*l`$z?F48 z8=X*9H_%J0$7+BaMoK&x>&tVSkNrE|?s;zmW^#A~@l`Y9k+4bL?rbSOpqqqjuaVfz zNh(5CSQLv08-1*=JdE6PLox(R2n+p=gz|Qm|7#bJ4A|SpMG5Of2$9-8%bFjF#MAu)I6eX6F6uU8|N68bi!YiMp2)8SLNBUluiNM?6ZV2Zo-;y`d z)^0?0l!$w5n0ZY)5_(zTVlwKFTFtmJI%DWXbVzPPjvDW8cSW|)F%f7Xr3rCY2E5r}M65Zrz^DS;#DT4Q{{o2X04&FO-2g1?+M@e%MnfX$1>ir#oPG0hr53$^@kDAqJ}wqH65BkVx}=~- zl++x|$48UpJRGQe!y2knmlH5XTYB*~v<$)QzxRnJfz!ay&?NaW;KKO~N|alBO{+_1 zzP}xK+fiax@7_Cc815yN(fdGh-;KxS8+H7EGDBXH4#35n{&`}1JNQ_7XD7{ly<4|n z(|N;ecQEZOLdEiGHx}HQ9^jFV98aRLk-gXw|N1=hTjF3Fv>W{lt%LHLu3w)%ulF5H zqT$Kw?T~f(HEAqjSYqtC{Vq`L{>!N;Y0s-I3SBNuHzs0K)JS`|RDYHzVy(LLv{~*y-z51I!12dF#67m+b!tjPJgf0-b6ZjNi8i=*$aALA__hBwD?_t8H##XYOBRk8Pk=LY~= zZ#A5@u-sd_w-?(l^QxV7c@^Ah_CVI5y>bEAv-Lbp1A}BLd5E=a%|?`$6hNAvkq7*3 zPfX&tKG|WHd*t5LYHRqT(r4-nE;T(qERF2?vR2ro6{gd*r&m~8h2j6?HNU#t^|4c_ zOUtLa(lfdg^TsZuhnv~rDKCYZAnkA{v z2W?T8SYBVhT-a}ZRd%PZ^CslAwMXxJ_m>w}JeNELeCX)lL~@@sv;W#Bs#wXRuq21U z)u@Fr5kOi*9F*A9Gi9C<^rVU{4q0CKaHdxw&xc3FeKJ`hYj=%E zQ6NRV z2FwsIqy6kUGIcByrO9rx3wJV^2s7}Ud;~N0+iR8J_-@iN>{74)@#hyDd5j_rMf%bY_1?dz6AkXMz zU;UaK9|(DQ3Bi+tgdSgPztbVy4dp;%t+!8P@Pl6)50-yPq$KXS36N#q+*D^xQ$yX{JoqqZ zi2JbqypX3W6ySJ)*k4c9&nS_b9O^HdDvXRM1&49B5mt`SEEeqTmHT~r2LnQes5&>3 zbnXIMUlm)igaidTMXHWijB1-?orn%<7okk0Kq=n03y~Zxz(tdZPc)oI1y%{ZIf$r%&rU z(<3&JFc53o4dDlc#V`z~Ms@6G2Bx+Y=%vaG4U8u}x8+w?4p+qkLj}5B%sq|FH*X|k zSBYiM-%?E;t`p%|4_~YCdz;RGvStCRAC)?6%e~>1 z{N9}(`YjLl>HrD=6u;~}kP(8a^YJmkN&eQ7$x;ahXIIsp?Pn$9Z(k3wk2^jfr2%C_ z3as}4D{~Uo@2A5cdR+&{iRr}7~OXU7`X?KI%8$~h%Yied6eNx8oxf4z!jx!!g4gC z1SVA!{ZVp6MQaJ@Ul>HY;;zm2l45R_0j(ylf!)KFHJ4K<>U22Tjep7F8WVW&n~24% z%tgb&w_d04YoX6bPr?2xmW8qBm2YUEp;jm1KwR*bBQi5!E3Coy_*7oV&uA0KsJwcf zF;6U?`0D`38D@q%N(|#9~;Z&m?Z0 zN-U0aG8dYG{`~3P`uYZ+y_!SDMeLyD21ugh5ivNUOtHtn?mm|$-8QkjTP4b? z&p2N*^RWewC=kOcfDx(=(ulQ0P0J(g4lJU~$Xy@JORi@f)v!#yEVtTpQ{KpM?^b@8 zS73t9!50zfReq43!IydAW%JI#ne)NBK&cE2!qhWlfvjyiC<*R_k zl8Hc{o?*3^mArX}J@>h52G8YoYg_K6zl>^NfyN^xaUNTnYn`*e1>ubg8+Bd2bF%#= z^`9R$9CJoT==0-TI@)h7gfM-_BUU6Olnjm|+~b@~^xfzDx0G;4T+r`hH^=tk*U9_$ zy%YXW!t@BfroMFSR!SaL(G_jTtm`&e_r4ypjZw~ve|2B|UT@ESm295K`9?$kClS}9 z@%8Ggs=IQENDW2gAv(2^kHnRMVNG@q$71F}L=@LgJZ|>DevGzyaN_kQa;p4vEyFZ# z;UV5hgx}1uAIlwSNH7Y>0{WY8*0Xr4_LU}6xINfr#b=`&K*Y*0Zpsr_mrplm3D<#y zq(#mz)Zbn2lv;ky$Y9T9!c|+;+ZxIQCbQ;3rGcqP{`)bT>3J$WA13xMSLpFTY|5S8 zf(`4-d7A_T1#Tt9l?N>>UZhJY|6ER2KG7leyq&w3`lbxsRn{4Tew0SY;)5XCZ=DA; zSqX1hd0kc+&Uh?{4#NEt*T~L0djU&Li{*|SFWeydiU_UyVd5)#*{vn zaD<@RQ_I3Tf6eWh$yk2d10sf!g~XI30U9+p=9H)#N+t)et-87k!HO!t8&?D$8n6E8 zR+|M*{XOVeZaUECS(Ic6;EqQLn4&4oHH)~_r`?y4GpD~|bD7x`z`&IYm&ai0J5*=i z^sMcDmLe^$&dynUQ;?md{_FJ}ng?w!%f`oRu}hpdEQ&j=Qwbd3yZAw+y-s2xWrZ*1 z8>yaNqPz3jr)z0TuVeO2ja|Px+z@f+p$cx?UM?g}y$B=GX#(Lw@c*o7;)uhJ-!F z+!G{GOVn{K$c8Ae=R)q(FZX;chr>bm+G@2s+EK!2j$O@wvpZR*%YtJ-J%xc-df;*k zg+xq7cgB@H?8N~*?_0(TA2E)wpyv4@3vqzgq-8NAVGaG${tR9I{l(L_Hge#QKl>N+ zv2T`S`Y(7Ofckv;96pkuV-aD=f^f8{xv39+?l*9@rx-f!)_zQYc&21*$HvT;$k^ng zy-daiKajd!$hvUjzsrswxqJ*#M4P0i%bdl}@CmB_(P_E}%c29rKniH)fc;C&fNLK3 zGuw*59WIt8dxztLo{fP_3z|Z%%!^-HSG(KJn_DJ{KA&qHfUM2(R6w_eshB5|gkR;C zFZZ{-)9WRUx5oWnNq-mqSGUy^u-koZ`NaC^Y1dpHRv-1Gq{%5Zaga{eQa7)Xw<_V( z?<)5Cpue=~XwC8xeXN(1F`^EJhG-2Bk4*cHW(YQ3sA;$#mSs*;T=lV3R$~t+$fIL4 zS{KSXI}3=n8j1>Y6?(;=ulJQ}?2pY}&uNdy<bX78PPJQDxoRlo^P!3V9H^cdYdhn@Mspzo4m8 z%L1vMTHdXXoh$ese>VTg7ZE4_{yjo>qZ$98;`M|pS5bRt$_TlO#0oolveS^Uo} zuQp{(2Jv%Qq%Vu9DWO#Zi#9ekXf%-c{sPgaEBlv4!^UgF%cr(ozuw2L;tPRg_0IrG za(F1Z`s_JLnNXonI}kW$9S0t5>^t>nv?5H>!wU*L8#i+rd_9);Gm*x)YWHej_m0Q_ zb;x3*C(9(CzWj{?1ufZpI`OM9{f}%CJ(p_=Sm1aSs6Q-?X<#`qh7ppS<^Uf zm=lmaR+a_lPCppXl()WnK^ltEA>p~-grGx|euTXAbMbNW`-oa|C|b8K4ADaVWWU44 zOOUaN8QmP$w>0!U7Z8{Bx}JKJH9>1A0@tUpsrPh>l_})qwu z>+xl`L8uOds6LIFczZ^-A05id2ZkI028hfuq`fom=ZW6`v6oxI>2tKYui@E;iTYKf$iFJKAU%(%3=-ZB!Zq6e`E23Ou-dAXTm z+vUM=M*|)XEo!bsAc4Lg79{Pj2;{z7zhaZEA7<7Yg#|c7K-f~co6h5bq*qB67yiS4 z#EmkS1W;%TY;vOEbmschIhUi61+dv1`9Ex;ka|TP&)egP5e@{Njq^g6#ho~-iPO7ezNN7kY_IBNag9Irdglp*hcjFN|^CnyP7 zp-J}>t}gKSbz$cKP7Py>iMKiU)nS8FR(H7L?^Q zU`~s*?}iBfJ8vARD=aTBYb4LjIq?TZTZ4GoGN&XVAV`RufD~<(x((ItNpi2b0+>z9 zD)sqts9dnB^~dnmY3cf0QGZz@y*dTBPFLXRMM~!Q@t|g=ci-C$Savm_X*#lAR=3$+ zmDk2#le;2ZSVIja_WjI+9QfH@xz>KP&Mkad0eKDfn=w>NN=X_S)>B#c3eeh^&aL{S zZo|jNyJl~%1*0cPN>jH1Znp7*CqCmmwy3DDLAo_)gUkFKs^h>Qt8XntL*ozI$GU(3 z3P-?23`i^JkCEk&ktOD^Evv|e%=l?&*++MP`rcc((eAtK_&jYpE1^0j;DJdk^`)01 z<1jf0VPjK|OrCP1PT`o3rIBrX?*o5f4K;ciW9sds@){a@jEL>{_nOn0t0CKS;t#xC z-OEclo|6IVfDp`jUp0S-X>X}^?4|_lZJ1WhUI>iW1j>Ck>;y>jyE|R+^j@1ukfwNX zqPWp!C%OytiX$1D`M($UZ68)MgHQoV8&so;@&<5<-AHSK}R{M*Grlk26@OBddxk|Ip)T%CiO z`p3*BuOAfXzn8~98XKzUp?rK@-RkN|bzX>i;8Y6B`JX&`C?fWRNG=+PvKP^9bx(li z6$kSFa9nDli{nd)q)vP}4SgG_t&hUp$Vz5d?#LO2Vlo=2+e_aE#Oo3Gb!8tQYtFS! z;vk5e#4;6f#bPU}>@XDNL;QZFpMS>7ppn5B`V-A5E#K<+ASILKjUEXe!$O-?6vh{|a{jA~>JpWT z>XlYp>}_Oy&ZggMq$X8%FAQMqGm;=7e{znKl;eZr;v>EC1bq56p_ zBcpm@e&Imx)`%ofGx$U@Ws8MT%$m1LP0}>Ix1H{HxN!S}27QO#H^7XIiJxR!-9X*2 za{C30Fz76;uzZjbQ_C)nh{CvP|9k6V?dKz=1ZToT(=2jK?2PpQ2pjwMrim&a%6;oY z2M|yfk9@s_e7p^O!J#HNCsASow@sXbz@<-^BDjf*t*znTbcl5jAO;w+qLFhXJ1d)d*KWb8 z8|NKRbd~6$4afVUGADyYrh6@>kEm?UA^BFGm3ICNuCR9Ri?)?gR99#k&>+ z*vM3OSj!MoIZtH)9Pdo-LZI_?ryHj_JYB-XY;-PI9UzEuO{!e&Z=|sp1O@JYvemVN zJ38C(3-aklNVU8~BJ|rcjN6ZUX*B5D!{K~lZzZdg(|F<_Dabv1cIS8&> zpr7s;B}aE#^m~Eda}`g0gLd9{kwO3taLv9@0e!LqRNvAL7c%KT0XprFMpf@x+aY9T z5@Jt8A4!mdM3WXbrKDLAQAkqm9i#2+?rOu>v&;9X`a6UvD>hGcc3rctFI0^(9M}0JDl6fW~v!a3)Aj z3^}9BaMR@lh}vkthGD$l|1R4EObnH-2wL*UCV)yhQGiqk>kp1T5n{X>gFW|CbsuEK68ugY7X5W z>#IFGUOw>r_bTO{c;OgFt4b*ij1Bj3sG@-CQc+IJz+`ZEq{kaLTl0HGN1d%V-`G;f zbpJ+c1d5#B)Lj1q8Ok=+AMzy8J*eq)Sa*!X!N; zPW=K6!^JiWDzL-?zFT_ z>A@jEq7gjU zVd(&5P6x-GP_frH8hK-9aKBepX)T`Hx)6RxtbbkW+7r?POq;n{C<+BuFv-?mb_n_E zAl!r3wJ2uo=pBmR@_8m8(rJqCX$~Z;N!&w1@!#0d$-jf&CxoECqXyNY;&hqmp8;uM z|4&-tg@K&$%-HZ)adgATp-y-^v7RxTr8Gd`fcP}lxA zewUvGu($(cz8(hp$qvllvdr%efbS@n+GYAgxO$EBa(UtbZ#{Yc z%G$imv<%aCFf%8~_6PWILO5$^oQ_G1VsHWOW5fRO_gwlG{_NS?W@D$}A<-}bU@^}t zW&n55S7l7Ya9PR@iqK{kP^F=#yko znJ1Tdwia@&HS5zZm%}9sbZky^-@DoGS;)gkSifx6P^V689jsr&92?1#h?QMyiA{MD zvuO%pD?bGG>t;SgyrNaGlXMB7rjRKXcnX$sD>md2AoTF8>R=qDn>UOAj)}vemWB>t z7^=@lWSXBjee5Cu^m2@DkC)ZvwNWViA|vqdX3b5c1pUMVhh*0YxSu<7J@*s5+FOQ+ zC_SeX@>$-m&&mL1n4$h?%6sd29J2>>I80g>M5|4dBn_(>-O$x+%C5Q< zWO}q!fGPa#8$A1965za2eR`@jle7ZdJR1Y zja}56kJ2lqj&&BuyUQ8(&^GGbA9YB!23^Pr6~O%zF$V`9)QokUR_$qZxG|@TFM;(P zhsi4d6NVLgqqwZk#s>e}?zdU5nZd|J{8PXjSzqmZ^e%3n9BUGRDV`TfP{`I(3#Rdy zPIVfyi~X^}e2x{_qYP!f9T^&il571C8cm27j|$a(q3}jMWMuSg${D=wIZ;-l)KxC0 zW~j;&I{RZ`68t;)#<~9Ngc25)7C1TB{V`kVphKh(7y_2G&(1vtvJS>;HCs-fIqwWs z>=5WKEaq-ljxpu$)=_(l3&P}nbHAtLvL70!T&UGH`F%gxY$&s5<=4MI{l&j*F&l*O z!pV``Pfo@_5J>0i96wfmeG?Y!beuz@_9I6n$-Be?Vex}J@0r?uAZn+aUf*~@InH#I z(2|(si1KoveEt(V0Qc1GhGjBuz#1lS0K!a6&JyS|(;b6gpP%xa)X_DcJIBjfE$5T} z`z$)G7@)SJAPV=8JZLk+>h0b~+wrE`p2S&YA2O?!Z*j}2G~-+0kto1nuo&49B4D}> z8;ndjPn%7fM$eG~=X8*MtmB<0fQBP)v!ewGm=YU;;2xlErFs&=WN2}^3ag}oq z0O#xB{U(VRvGKV^)b&>sYe$)8OjO{eq$VB&I_0~JF+^@15cElo(cHK9%rMxs3Wez0 z!&G5`OD*aRhoO$O3`@^VxGYhc%%R~39q$(k?2aEj9t{%MvN%w(fheJca&c^{ulZsQ zaSw-a8r`CL6LPyG3{`~e0w0^9I$+kkpyE`wH$#_`Q8`9EPX>o%#e|9EG!ES{8i#8C z!Nin~LMF%m4?6DIMwJQhWgRyi^lsa@T73JfF}n3*H;pL(vSat4evtnnJ*qwDJ{#go zobo+{olT_yhmC|Wbi{dIk%cRk>ucDRI;9;PN(&4Vc7 zwEqbV@;re62}=dKNdCO&fqTDH4XZc0sx}7Fx5@Ss9*Mk;ZlKJ1@;ren?h!AM+yE*+ zh%&eaWPPZFW(;~keJ@%Wk1a=Ou(_RSJVK-HEmxvA@$Nl(!76!mA$)l?NV5Vf5eapE zmqbnZ!VkFX5P59$FOL(O)&4s6Bgg>BPbYxq?{38DkB z_3n6buI@R6_tz$&hmz#*$F|dd?{W(%K3Yd5zDGrAD}Uhpq!s>Lw}EG+W}IT*$K#Q( z@8lNPNC8W*lKe<~5KEXVzYx>+91N|Y-Hr$+s>>Ih>G0ybIX6C<9xCl-j|-QM2GgAm-^qhcqgQmVh*=LbnKZN@ByzX8!C<@^ z%74u?K9owOKs})9t#4XzIl`6J>^jL5M?D*i0n#w8SQo7^7=Gu^gAfoql#mzLapGl_ z^0uK~S?WO8XK_|IZ^jd^N@60;mt{p*H`Wr1Xi)$k!;3sx7jH1_G#%n)iR2@Rqp;Ed zPy1IRZykY-!v@c-$vU2t<0soM9Qv9$o%Htcv@f)a&tV_iA@Qt=obw6mD@KM|)k@V< z_RYmC*6vO*uWltw*JRv#n9#6-=BIiQN3@7X@{TfBEe@ZV_}^s2!dnn1-r#j2jLiCH z41*+8jdp>?Xo@~j)OO*pyj-cZyE5ZGmpnd)-G|DbuzTqQVN8dnJk)NVnO*rWx&Seb zkUUavcsEqR1A2|Le~m1r2#M>y1P~xQz-9snFrA4HYJM71yY+Ktg|_J^<5O)V2O4Qg zG3~k>gE6oD(cw*OI@Fiu4+&0$TStXAio>-~vI^zDRSoNfwM`t>#Jt=8;Z+*M-HTr4 zvhjgyP`rG_cDK*C_NkgCe!(d|kUXNM5qvSXzDnC}cQsa-Nv^%`uXFb=Fx|;Ekvokt zH7Mv=PNL#iZt?TBB3BRk#F6eo1O36-Hiz%UGHHfwF&{~V$Un-3LCAXNKo7Kg@ocRb z89jce;RB?gVN50rU#_OGUR@P0jo2OVTHSWTYU_Yj0P#%*duy5k97X3k1t9(Fqi8PO zRemi>&+^v3Mk@Vl%)*c9rE=6}T*hGz3+$~QKPQqR$ z{_fX$rI6316c^74;iQ&`n;>44Uy+~1g93vQ{|`}L9TipoeLVEh#NAC?X);A)Q0#(A^=;5byQ*uHSn9VGV1|nz?g7=bqSSpM5aoLVm_G zzJ#u*&SYNe}3iY1~G>yP}CkBR1)2iw%6vn_?Xd3oZ#p zw~Jsd2}vL)D#Od-S>pI?8soAiEf=366(J3dkB$^->tS92KN^h`DJEvX7ZP7!zP~{< z{ox>?duLhsFyc6TissNWrECW8qh0=2P}}7H&!km{5KLABT?XbKy*49`9?s-cTh02o zH1Vq^?VBIYW6t@rd)C~4pWDCAAj?C?93p_~MT?Ov7GA#s%V_Ev$Vu_xa0NpJz9^SN zG$*Vcm4Qv=N_@_E)v?+!q)|V7u*I=YnFjX^aGR?pvTel_z3F>Dd`06#H;Qcc$yLOb z;*);$Xi)Z9ROIW(EVD?(Z*`MCftbX0IX9%Lt+mGow+wV3FfDDK{-bgphs5_4-08i{V-|ezX!&gro;eK9d1#T2TCweU>{e%sxKzWRACB6!8PEYr(E+#v> zjV9~>TZzk`HIAA7PRw@Egs)G9M^83MrIN76}_#M8nD)+gE@Vx*ZW z9E1aMEugA6FF^0Wbb(qk-`;&dds_82nG)k0noGGIdcY=uBeoP+yz=^cmCJZiB!dHO z=Fevl7w_i3)fHjHhup-qzhi(bNVQq;(|0;Z^t!VZoY2z2e2qQdX0q?{Bx7T=^;DKb4-!Q@ZJhL(t>yLU zpN=4S*U|Qb|95ld??+o_SYme+0UzVl=AV+ZmZ>fn)lqJ(Vd~y$a4NC>uG9OF)o%Em zU2N@*{%ZHLT2;xb<8livVC49HSlp%ZFg*N6adR`g+{kjM6;Q#_$1ir<2SQ|d^#?Uk z6ZA-OC6Ea+h1;dc{`mXwfh4!XSUg&Q$6&MB(WIb3Wk*8Fk+UNfY-`1az0E?HkX>&j z+T>%zw}NKH=ya0wWM< z2vcJT7d&h>mP>=`u8J1~2EfD~1^z!gg1-&&?2&DcKxnA!%WS{ zvrweHmE|vjb}r4x)2H1WGxZdwTif5tnTwgv(uD6yoy{2ou%T-0>PpHa^AQS`P!~#l zYeNH%T^2fydDD|bgJWNAG-2K$VfUMkDH6**m@FnxGvoXysn4w}dC$^3|Mnl`O!1!` z3T*DUm2(rt)xU;ZJk1nyxVmDMRb4-&27x|m_#T{lyY0_Z^f|IgVuRxKnW7CvSpEI8 z1j_qwwYOfa=qk|N(?#UY0z z_J8Oye)xaCLB}~k1tc9Fnc#6&QU;84kO*M)4pMg=-A8)LN{)FSDui z0hC+@-b5Q-7;9j+6kR?U_&p(%mnSUQm5nYh{U;#RKs+`vNV$B=UH*HzUGVhDhtbcV zY;D(efk!1n_n&2D;9!T#i$kc`CKj5%I)DT1zOQEB`Um4Vt0{XhW!&}n-+dHG#0fe^ zAnjTX(-)qEIiN1fBplagaOmgeCmo0Pj=+ynOT>6hKLX1DpP*V%pJ`@mv~=`Qn}UnB z$P{2*kjA+GWsJRf#d~_My^O_~u?fh}=gB6t0k+6ci;q@?0C4#o=rY*&xN&?A#~^lJ zxJc>zhb}m2 z?DSUkVMub{f8*Wa>Eg*0)=}%$`5Z*3+`2%?+ zKPMY|?sGfGDPl`X-uS?Bxa(dg{GHE2Q(} zRQFB#*F6k69XGC;a)?Yy6}h$b<|dEla1Nk=&NoQ`OF_okzQb@?J}$T6AizL2hyu)i zkGy~Vl;8j5h#tu>PrPhO6(%AxMn<4}Om)EC)r`|=AR#H5YGrAanVvT5I60M2$D7!n z?G25y_!eU$ASfmyE^F*~%KkC{@olEK)`svJ-u@qI{g{R> z4g~uD*6;C63V@X=CmZkX_ zaHSbZ+Y^_iwr^5j1~xL>`8$amn}eKIx8+ra3ZexV`=Bz0Ls|eRrcYkX%9>XZ%cVK$ zC3Zy#qW}}WR|lH1xq!^e_d@ejWRUGUXm`ba>Qkx=MRV-!pCyJduKa(l@mRWmcH5Y4 z_1b^WfIr5_I5I9=VJH1(|8BnmTr-IWo8<-*6Q9u15SSsKct^9{z76Rfx&0b|O{^RU zk|vJTmJXk-pP1<^0O$Rxsw&Dg8s4Jyy_2bdp<0#}=hPFFuKd8~Um~mo^A4GVL7HC! zpKZO&Z8``Qw;eiXk2!bc*BZU$%vG;%3Y!lLDaU`RMxmi*q^+HhsSJPleM>CIe90v0 z4V5t95{!H{u<2i{o-{YsP^>kakikzo0inqLMSOLJqCwPqXu5ttmtHsD05U)&yC2Q+~JZ)$BA4*SVUv1?T|s+U2Fm+xAq z)d7(K!Cl_Gmw)qqXWzif>(kWfEtH;`N<0ObZc7_}wHnA!>1+ub1n`W#y`P@A&On!o z$DxM=^i5~-2W(%#VMnEy!=`66seFwnk=NN-9UJxo5ZEAdFZ`sQV#ZQJnCovMM}ZD{ zzOeyNAzp*&rRlSU-106nmaZ40Py{L}%8jL!X3oIu59YlUmnpp!v~iDeOOi6h3<6Hea)eg7ND`=z2HvPV4Kax9lLLRXXaep_+(r(rZ+%h~lV zZ*j#Ik>)_p7?^dN)H17dCYyHj@r~BIFxRgc zQ~37po{28`?-u3U?i2a{#fn`!_DPH`cczD`8EXLUdkZUnO{1DWdBC<^0Q~58fzM`_ zj`|MXqkmbu8qmMmSE#U(U1MeZD}_-)m&1_l1eD?G()9K1iL8$Ral~?I%`1gB-w*Rv z@4iFtUWfPAIGAjk3Zz!rB3-kF?~yt!cg-|!6GiFs)U6yWgf<&qL+lRsv1JmKnEbBR za_(0AQ63Yu@bcW261b;{gN4mU9_*lpbHSY1N^4o5$;NR6aM$AL6!o$WY)5&)(r0HE zL}XMkcw?G0p}CA^5=VC{vXb|SIR~t)?4x?qlT#QU;)gZ?%4DMC?MbW8%0TPinfx>x zyO1&}m<@Vltd1=^eypvxpTkE7i%YGA0ozUiTzV&)z4h&@Kn8JX>}gk^7U{?w4r2q* z)pM(JhPds7s}=N{(+A>gq0-7U)@@wj#?0`5?MeLij(y*B?}rnx`}-XS+)j@3Rkl7k z9_kSgKLX{ENN_|;;8v?B+C+py@WVdncgM#+iZc0w00VO_e?QYIyv1m18*$*sDRVJ| z4fd^kX$kz({uUzu>}*IEOq^HQtgOH-EPh(ldaDnwwta8!KQMfEVedn`GS~c>A?|K2 zOty#V?c1JMO3@a0<;HS(i{>l#;NNWZMU{q@(jb-<57jb2wDV_4QEAaDApYnirQUBW z-JSBHjDUVFV;+In{UH`jonW%c!HV&{g(g6iR|$07c$r{Y=BRP@5#U-kh!0;6##wu*lu zE1@;e3ii@6AQDp4ey2U zX#Q9PrI)RNK#?gVcA(s`pY{$OAD#5xP$Y2AVJL)sfV?%9fmii=`+3UuQPu9d8p>jS zd2)8#tD6M3D1j%XxbDW#JpT+e)B!lG!2!OU`;s2(Uu}`e$TDm;cWLjF(ti4PZ4~wP7%5xD}+wg_H$YVX>1Vls4Xdg}208M|U@1H7XZ+mA< z^%c{RW;>0x~j3$yELLXU=5X`<>y!1Ou{JJ+arKzKxMD)j*a~})D0)3Ty z-|Bb7016H_m9w^eug$i}wCV^F5*Fi0Rj4n`P-{lVdCV_d znbzRY7c{l=O#gYtkhwrIY02;2`iv<>2}U8`tuA}gL#sY4!-+w5yJ`!ZK~6~|QGVtA z>0n4yHhR{{x2>xklICS|r0I&b`NJeQAc;#@#s8G_{!eQ45gNz*mKD%q4vigJJu!9` z6~r<8buP39fHD*q2NUAY*rlSZVaHKamNS)iG>Y*7=*T%2R){S|Y-WtN zdk~pwel0V&ye&Z2=jE+rfUU*CP_G>ZV!W45MksvW1OxtQ>JR%?M(Z{86v*CC zE9{uglTngqr=>-88L(`m9CE;ulIRo9F+)|J1t#U?H*3i?ee~OkE@#z)`6|ovWGk2h zOdDUxHf9qeJJuSbH;mNH=r7|ak4VFT!#kQpZgJxO6ED_zyN(75m%;=|;ews&t7k=? zonL#b7OyCxTs$8$B@WpBCRd>Zlv|{)C|dXWD_da&7$B}fuFH2xZ}=uB_ZO;t1(G9G z`bj^DOPjn(e6p!nL5REN0FrVHej0u8I6VB(mvFrdE244;ZdCzeNWA(?4G^0Ekry-J ze=ls`m)B)P_ayN|)P2oPqoT@TW@YKybjlDBZ5lCk22`lnfGB*peL_^acjY%Sx=0Sx z4HiyTO1_ z_L1XWn^(`BGfjDBr{;cDlYoj`M2M(9@q-E5X6OfxwMFYH zdb@J2?i6?x2PaEWajAlNg$8eBky1_5FHLsjX?%%>nv{Lj_3SBD6RlK$xM-c!Ty*z^<2m&+g#-|BNO z#O)i8Y*-(bXHy9-pLQ9#7wxHix3Y{x&wT~AZ(Nz%jpR{&iya7l%<$xu+@_*RZ@d5| zA>JQ=k_;zCtBXZ0&aoAMrD^kQk+TLZ{>KGtLOV(|`PE&n2V4_`XbF%IafEFYT3G{K3-JU(K z=s~b>ZShMzTtbK*SnL<*`A-25$UarP7Dq#)v(Uu=-E@pv4q z?XX;Krbu=KArbWQ=ew+Jir?&_*g+|q-TnQza6V!uVoDL=grSXu2q+Jsz0I#U>Z9~x z_xs}>Nmf?YyTv%an`Kd&vZB)LEXA1E7#hh@REfR+1I@#Y{}hmLy#6`>%ubc=`5ovl zQBl!6+!6TyXkbfIF%OX%NGMX;9KH12cK2IDw{O@&C}(8>f{r^jQwe_wBrhUThWUU* zR#in=G&XT)!|(j$azazf%(?z_cdY}0{2@nMBQPa-B=Qd_yW*`<92p1XFsvj>x|iH*@Lr z^?dXQ1R^F@B`GBdB;~B}nVT3RcgoAdR0*5#+5TMl!Dwx3*QL+!sd~{_6v~*4jDjGD z3%g_KruuThd78>|SVltJEV=|lfAe}~aZJ-lJ188W8I7m0VHHv&0;8AvI2ys^aG6~bx9XzmhrWuVMZV6j#5^qkG{-H(&Fv^T!qsYC(gbl*Fe z%z~@8Tl0!*?a^#?$Ej~g)m{V5P1{=kc7Bgn)7M7dz0JAw$TX$2koX89zMhS6x5JsB=tfUE&P2)sq9K6vtllR{&8kjPZPr3t-{@HgPcEU5A4WQ2Y}n7+4^JxdWv|n_oxeibeaL} zyqN0F(igmb-S!_Pu1Ndfswss&?#%&xy0KG@V&|w+bf}BLA2U%B3D%r@#Mxua~p5e{`zLEfNAw)HKTVh?lLso4-CqKAxqb2 zfwrU-cjV++IG_Lork|?^a%ZCF$sj3uLfOs`6d!cfKt zQ*aBql3qP4dnG01xae5Y);9sUD_{C{(tbErTWl~N{R?m8)Ner0OhtHDsBA!qW4H-k z!Is6R$T8=FNhgX-Lnh@w)xGs7)7cK)nH8O()&?<|G&# z6p)uC>xm`x;oBFBTD=@{Udg%4@G1cX>wNz9RVsk&tU#M5z(g43T2l@BWAJKxT(Zgp z^rD6iJUTvnG`#s&Z!flHvm|4#<5(*b3}gWMty6CkJ0On&RDE{K?#F5TT>K)?0xs`w zj&6rrZ@oe9%!w_aLnW>EVZ$vCg8q_vf3G?H?@0X*+yhF?!oLyMam>5socD5yl(kO3 zD(ifb5rcqu3}tEed?LeS&5kq+DbDJN+*%2`j5tNOPA6QF=m?#*wBvSBW!Cfy(|{2d z4gmfkJ({VpKvmKQrF;x{#DNVl6*WO@n9`tY>^VNQm=}Nz_tY3W-%(r2Qtx}s} zw{RnhEv!*lpcIH*V>38xD7Bph1%RMj{s9MUvnIzJ>@0PVrAp(*j-W&QYSf8ndkT1Km?;7STU#5U4(9&Nr^%qBV8^ zMH5e^>p$b3)jr_$VvpH)4UIy43J=F+a0S!Lv5+oSUv&o|yW_zY?-hRym+FQud%JY7 zYrC@F_xYcEGXL=lk0SjIgv6_H-MN5Rm!y-386%kPidr7$HK+#v1iE6%oC*i#zG)Nb zmn3t7K0hz3Uwsac<_)m{rE2eCgl+TZj_#4DGRk@@MN&a8K|o94;y`jjkSjVIU{{wl zn{oPY1E!+)+X`#1n%EO0Rc^!I5E!neXNq(aNxU0uy+?jo6Cc9IKe`L4ot&P^be8l0 zrhS0%7M)G?9RPzpJRrEEq|Y7}O0jVT2d;f|K?kWjC#mc~A8BEi3yB?*H0CR2Z*wo* zTYVi?nH;Th^JD`TD?R59Pd6nB;yJ^+4Zd(-K zRaZYD)cVoTI0taoF~elB!g>G@{U6`q=z6}xtT|FajLH0y|KE8k+`T!hWPXi=G^7MT*K3gK5v*9djC=vpa&OwNz@4^;BxF=`u<&AGY1vguYFQt49B` z>X+Fzb~YX>8=vF+kKJW^UYhvz#_=}$Z1*-w9_M)7U?xNWiWKV)_iJ(f!1g>@YMmP9 zBafB$&qI$#RlAoi=`Ld%OVafSF+iZWrk+{HYM*6guaN-EAIszAGX% z7GA~rz*q6tDWifv0>s9W<9m{vR-dHq)iYIU?QTo(KLaayTGjS`W4Wn}yLt6( z!5aV`%9gvfs9=YjJ!YJ?hs5a-G(fUylAM! zLB7_z*5zQ0WzuP)2XL4t->VjD>S0UwI&ZrRRnBtuX~<{iN6CZfXo99`V7;#UYj>YH zDTUbH0kS5>&K>+}spf|xoxtG6pP$w7Q|jx4uc}KL_sWeu>gv{`jIZDFy_`K8v=K=} zbs0Y#aA~HP!N-AS13E~0Iq#2Tp1(H=Yw0Rf6hwI=L`0738{Jt`N{ z6A(jH`E73<_>lA$|As4rGga5iSNV1Rc^zUD;C1-%fiw+3lFFK|8#w(A8Vk;cjf8&N zI-4tNz4_rWHRjq5iR{V*W*`7p$`;Hl-)VfAPGK{!YRnDr@L2%5mJ!98HdJS4d}kj3 zs8{|1oh}0o0+0?cSr^zteOK~;YHdFJBYWhF2uVKK=;?0Tu3w*Fh3}D zda7NK>HO3r8V$yC+q*LOg+S;jO$$1DPZq&3m24G`fC^-b7TG_ljrfpQrIx|u?mmgS z8|BTPrL`SVXq@w1iX-IZ=g+FKZrF1T>B(^vX)>rY9UW~5RrT4S0R1*u+z;(8jPpOC zsIm1wB%&D{!dY;cmM!z^5%>36P4kvSodn$)j8|;W38&Bn4Gd|wSUeok@ly9hDlEDf z-1QJVV^{t`v9H?7Em)Gw`zZ?H=5x=YXyK5DzqH5(#}7qwm7R>Wtr;F(^qBQq9iA%a z`&BJ3eyUTP@5|hg`n18m?;GzkX>4JJ=<)(fM5a2w{gfsKwk(Ww+O7s(@Z{!d*~M~a z8?Uv(>a*EwxX0*N2;<{x;v?GN_|u^ulktc+ZED1u0~k#mE46BY1_U(!a8S0swIPI) z^UxVqT6fi+?}~q2FRVy1&}|K5!)e?f zP24Yx?U@zm8Nd0(VEkNrhO#>&}9%i&P24sV^r}jgt_+gtpG= zmYdojbqj-Qk1+$j-VDnVV0`8E3sWz02wnN8ATlJAc`*zE8PUM*6FYn|IZt9wO?h$X z)(v3MX*GslQ=P9vqKtLxF+tiTOM35(5{Qm9oa0W@)wi8?L@y{kthbEl>ZbSVcN5H{ zEd=;aXoJB#7F)`VnBQAVlOoOFaxBT}2oPm7H%l@*Jn0!BFM(S@l6t?A-&Qpd{TKB) z#4{l*&^RATpO?%T{8~Pq=lNXkyI09yvkunxT)dd{%gP9BMlN+eBjm8@Ofej~*^owJ z{!>Z)PDK+Du?T#9HwVYX`Sth~u-Y_K$NlQO8sO3jZ%rGwrA2YuCZCNg@`<5uTky>V|e&3q+B5E;1l~h8k@t}*;N+WdcY^jI7@_x zA!<-9=No|)@e#HowL|~Aa#OBuwt>>0%!UmPvE$(7uIXtS2|asALqFds!xj!aX@INd zXtC9H+7G0yZQyaRK}!E~G-EX$xC}D#YVv0xVk&u9uT4RpTZYJ8-U465&>i7rP+_yO zzmv$0Oi`Dpby7Chnc;GIlX`U;rrv+x#LrjL)MEDprZnC;naVMMk7=W?mP!IVWA-s~ z1VaBlZ;zP_w7^9KSY>E zF%B=7k{gbLJb9UP7?sog!+?u(c-Q+m8YdHtrg*`b3?1=7P6Lt?gWRnwSCYmiGtUgA zM$5TGWR&4NzRf&kaK-0ru2;d^kF61j21g(tSb3cF=C$>p(GmR7o}9leD3?D4|L~StK+rF{)iNeT_`c4V)!w0Cr-8MBbSSI z_8a_(mSEsqK&2eNlVrDa0=m7dDj1knP*PyW5s2Rye`j<=<=Z zp{RyB)UjWHI3Jsk?MYJbxQoqe5F)pcNT;mo6DQal#))XB2M#E+(gyWYF{SHS-w@Jm zC;j58vMe;eJSvq#iHRK~#(HAO;}X6-c0L!{-P&5wUuBD!IoJ86%Vq9GZy7uJp#``K zJm8Vcj&tfoAG;%8yz{#&k{u$w|MaFER%(ncEC@Ckj4d2CS=Pm)4|bZJf4rJ?G)m|D zkq9tBU^D>=?bI);pV)INnXQU(zMp3;hLv|}rLt+MvlRU3*_HtzJk8y&uBWG^qI(EEOP6C5dw4Sbu!R&4de4qzQXD!Pef8Fe(GXnx+H$j=?9lE{AYDH9&F8Es zUsE3EUrEKsI|m^gc>d6WD6U1uXrujlJ66P=eMjr+6>>DH(;UVx@7O9=ax^s0Y&2>-ESB(7c4?nlJe0v5eq zj~)o~cTe7|9n(A$P(VJn>zpo*=ZI@eG=&Qf@a%tG)yz&TthYE+svS5V9I!VLD|bHn z<3aB@KAB3qxuus9Gtp<31UN5bHZRQTyuc|n*E&5uVU^1C7Kjfi_#i$L{4`pKIVir$ z1~Dsa*Q^r94;&bn=bpR!nY{C6)z8MGI&MkMFmAW1!aJkDPRsEJcnRTmepc@C+c-qGYNjP&oCJ}Y5_w~;BPYl~SvO-hY- zL?Z+x6eeeT-DVnDv8=!DyuMGIxr=XF;CBga3vsB|2*Z%#ipYl^)PoQ-lmRIf~;8l;-!3^88;7yy<=Vn z0#0x|PO!7x`pIwY3~l=bvZ8cNscDem+N zy%2}{9f!1>BqX3jQ(u;J1XO6+4v6#D*m@qK&u^WCq{QQF7(5677kss$WMqxJ__dRG zRDZhp=JeB}0O|P_R2ze;SS#%4wKBHh^yGW%klduzOxe6qD7|C4P56%_^&MNeX7PcJ z1@kGVbYJ(m@67Oq_La(JaR%l}Yd*UtWUjcQBT$*shyu$j6ge&376hiGpfx@7({h!~ zP*?S{G<9$$4dUD$oh~@qI-1*r?F*l?%pdnfk4g4vgVjq#o_aL{!DsEz{f)W;2>V*xTF|EDGUMT+UJ6riq7WeD1fHMe&zWYuVxD&+N>IjL zoLlt#eIW#57NO|7+PIye7N2ry+6ack)Wme;6kHg@iAeW$ZqB=^=Q0Gxe`!}A&Uyi} z*~zO12Dr=0W~+`I@ab)qoR>#NZ$g~S+4P0J({fH%*uvkMFcJQX%8;#ttSkyZhrG!Z z^_P(p`b@j+sFrPD_SwttL|zs)b_d)0E{zLjjBgrBUEO8V^^xGog1=6w1CSGPQF>fN zV?(<#dx^9INLx+&BSc)g0E~`iEJP`)=YI>IUi?v1VsB~tL{sP5r^Q3eZ!>J0&9Q;7 zYxP7X%o<{@{u2+o~6#w&#;YSJ;ySyM456`O$y_x-XD(cG9@ z_wMdObOhhIvQL#6O{F^~7KGoe0Kb>86N27mI`)cXu<>-ty4G%~(hQY7brB2Yskb|= zxeK!*8O~|;_+yhZZTr4P+O&hpLW5<)tr1w7MdNoCp=B+|M`^zr^l+~lSEARr(m%lA zbt!6h;?=A&(NX_8N!|Bh$^Qn}iDcy3#Yk|!-O@kSo^!W4E%`8cbnCaYM0002S%5pv z7go#oy&aOM;Cq+jf4n(|UubFQ+r{{B*G53=+p*hpTxU>LruP5{k=ra)zod+Xgx+75 z-Hro#tw&9Fo6iSQb*CVV8C)iWdvoh&XI-Uq0-xru7CP4;K9a>uT_7 zU1~Hr+|O&jJ+%0E*>aZ-jv_@24-Ao=#J*7PH)*@-V5W=_J^^y94X1;d=1XA3kAJjd>r#f? z3&PPgH~o~D0N^gSnyfUL@(2g%^9Mm-DYk;uRk(B?PdX=l_GiB9tpQew%J#kw12q&L zh`eiboqp}$7mj&{1k&R5%nrnc$yQ)`?FHpj)oA9THKar=-WdU*Fa_3pb?b^*K6)dD zEf0%kfsR*T`CEsFXGXm?e+dLXQ#=UFL=i`wgmiPs>tG{l6JgM5hWf*BUT8~IWc$Nb z$Vf9@(0y~lllS|^1_t41g)LOfw-FO=%DnA;Q?IjV&`3v&*S&UPUDni8)6(**>S~Rq z38mADT4Q8QSpdp|g%zPKN^G?+GAuOn=Nmnd393d5*=}4zSO~L|K$Ho(a zNn`6PD4D_N#m7sM#&$$7Kqx)EXwceLpFMMBm_~V7g=U?d-nY(;`LQ{xJ z!WR$(g7ODPI~_J8Whz15DLW1}0`HAW+L+ojp_GJAC_IV{16w$Uu`; zNHM*LMF(8a{$+n%0hI88kQhie>oQ z$+<_NSyqWEn;(jfrFJu87!$Cp53Q1tdspP2SygHGmM1-Lh0W6<@u@?>`}Y|-g@U}eTh~S|pOP2=Y$mEv?w?cLM50%;aFZ>{2mcpNxSlu~$cV%@EA?W7Yp;8fhWsVUW> z(rBQziN{3)fnAjW-{!w+Kb%(Ry4|amGmV^`JkQ7Se;&~_Rl2mVwEuUc?BTb^=q*KQ zeS1y8^p>!me(Q%*{eL^c*k5WT8M*Fsd3p**1osJRD0nt!I|%*l-gQ0iiFJ2zA>+tz zsQB15)&+;ZIq~4BEK0GxTYb0($GrqO^yOV2)op}2yeKSC2$>^vH3TlBmQ9i6`7w&4 zalKtO=c=)1?djvYtS@!oc`}b=wA;-%)d_yeN;d1+gg1gl-e&Y))-#}`LMkDjvmJBe^~^W06Qo^J&9AEUKuHNq5J&2sVeNwMd$nvirUg6q zyYe+)1%V*oUbE}gYBDy5vy$ap1Z%5ag8$ZtUvP_$n5m~-FY&Q}3wbZFm0#6-Zmz>1R{M4c1>A|kw{j5({%rTF5 zernY9zrQ7x?IU5lMmr;|+yS{E0A&{2!XlmN>Kk&M!92c-ttjbj2^Nlgr42GcfWn{{ zzZ-;xZ%CBM@CfhcHX#7PXsDFTRI!1+3V5oY7gTg_PSv^{BHinlp2dVPjIxVf?9X^} zNphNBRPB-_7UTYP27Zy*Y)TTI%9PKDr&Lt$V|z<$Yb!hX7l~0MgU*d-&~_IQVO9XB zF@9gaizVsD#VPnw@Z}2(U{To7?s>+%ox2_L_DP-9?yjJnCyEttUk8GQ8FEbi7f}!1 zw>w)vC16Tll;l)zNT4I`xK!KP;BXJbfXz!!V?WzT&ikXwbNrsXa$T`6E@YugM+3tH zzL%o*&0D3SE{3`(cp*Njw+CI-6atL~94s3zC7o0qjpQC-2Uv_%u!%N5DMDLFD4d*` z@M$V4DyaJ*BnfPm_z7`txNxAGvY9!%BsJnz-lM8rbQpS``Y7PTHehVG_XH35qLdL` zt4pZO)F;l5un1`G&O7`a$=+(2b*+Y+e%DHV*y%HG^<5%ZizrC?Yus}FJaypML!97Y z;{-aU^n%DPbx$$p_T9lr%F+FDAb!S@0@F|whr!B8fUrDwSN-Oh${srNGJm4 zK&j2MnY(O&=Qq-k4G!eqWOrM!Vf~66RTRqd3zu#%AYpUrr{W3eOSwLM<{oL8!tzj!J zsxK+3cfFg+ntTqgEY#9TNhMj|kYlthf}pdQF@u>|+22?CY4{l(THF5;*VD+!Akw?u zOjqPIGE&n{SGs&iR>!=(7qxHQv9Oi#mX+lK*O{z{#UXtQ3QLRX->@`!T&vS{0y$qS zw&cw$=fl-ZqF;`xd>>>Se*wOSbU(O0B%r>U{7jIPOx$wQ-C*x?bPuJ+36RJUN z&*vqN%Cb0`sk<(5U-GLgMd8WV+gSZG3KHqgkL5`F`VZF$Z(30U8bHDJ<9LdqteBaT zUwOP@zb`q_MY++aOyRFs07nf$GL}f z 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/firebase_authentication_dashboard.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/firebase_authentication_dashboard.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c304055768e92903b2af84ff29113075a0cfc6b2 GIT binary patch literal 54976 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 CAqOS^ literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/firebase_project_settings.jpeg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/firebase_project_settings.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4fbc6521c3f6e5f25fb62dbb406aea0e1d5b34e1 GIT binary patch literal 9407 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/hashtag_example.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/hashtag_example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2bb3ba4c9591e4623696643b2d0a3a88ab3db32 GIT binary patch literal 10727 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/live_stream_2.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/live_stream_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..02a35132976c34f12e4ca177d7f80a59c34570bc GIT binary patch literal 30178 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 U1;#p%x(K-`k=XX#mwzk&4*=jNBLDyZ literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/localization_support.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/localization_support.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50d8b761ee059126f48669a9dfb409c69be48bcb GIT binary patch literal 88489 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

      0d<~D!mQ-AogaNeY z57-m}=+jwWBYrm}YAla~Al9TeJM|hG7Ma<)j|1zPW_sKRijPAZmXYx#nH>nCA-hq` z7;MgEf_1$_MlMKr{D2Y>K-f1Y9Zjk%W}Y6775D%Vz%`2) zNq&E87f+n>y|cWmPcu@Q9R{Dg^-C$Aq1WbAiY^8tpQsvx{j5l5gMg7?9)S)$Rk})I z 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%0AK`xDR0yF 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/location_sharing_example_message_thumbnail.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/location_sharing_example_message_thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e2b7d624f54a69fe6197dc3f6b014e103c018a2c GIT binary patch literal 12822 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_actions.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_actions.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dcfba64ec25fb95155036c037be73702521e3b3d GIT binary patch literal 60906 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 L>gTe~DWM4fP!Vj! literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_input_change_position.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_input_change_position.png new file mode 100644 index 0000000000000000000000000000000000000000..859107d25bb8e20d9997e7c3b5233a3e8e84dcbb GIT binary patch literal 18303 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_input_quoted_message.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_input_quoted_message.png new file mode 100644 index 0000000000000000000000000000000000000000..c1fda2237bf73ee92b8679ae60e1ee2c581035a4 GIT binary patch literal 45822 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

      5nx_&hPo$OOZ;fcukQ4VQKUey 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

      QE#LYHh*(&yDSMtqp2=# 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 z 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

      RyKq_xVxjCI@OZ~E}Vk_Pif=2 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 z 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

      Lu;;Rr$NqRIzAWNVgK@>3YgbmP8 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

      mJMb}! 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_list_view_threads.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_list_view_threads.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9387663f599cff810f176434a1e79e3cc667f4 GIT binary patch literal 25365 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 fvPA!`7u;jtSj|A0^QzZgQ-G3!y8JI$^U(hT!O
      df3>nD_I}zvr9*gnNktc!$`PyVv?JoHKau*+0(S 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Ⓢ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 Vq*@*-5uTxO${dt=#l@EkpA>y)L%6*}%-#l^UC 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%0DcpLw@IOP-0IJT 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_styles.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_styles.png new file mode 100644 index 0000000000000000000000000000000000000000..db04865c059a265e6bda8045a030f2d63c3be7e0 GIT binary patch literal 7728 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_theming.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/message_theming.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d28dde0a732a4bd82fe2c85bbe6e6d003f8f3f GIT binary patch literal 15746 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 literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/swipe_channel.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/swipe_channel.png new file mode 100644 index 0000000000000000000000000000000000000000..44f13ca594cc7c096582f5f920ae7cdde522eb96 GIT binary patch literal 17035 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 Q&p^mXD2SJfehmEo04V`bP5=M^ literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/user_list_view.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/user_list_view.png new file mode 100644 index 0000000000000000000000000000000000000000..9aede8243d04557e77582b80f8577b8ff8219135 GIT binary patch literal 264835 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: + +For the quickest and easiest way to add Chat to your app with prebuilt UI components, use stream_chat_flutter + + +#### The case for stream_chat_flutter_core + +If your application involves UI that does not fit in with the stream_chat_flutter components, stream_chat_flutter_core +strips away the UI associated with the components and provides the data fetching and manipulation +capabilities while supplying builders for UI. This allows you to implement your own UI and themes +completely independently while not worrying about writing functions for data and pagination. + +Summary: + +For implementing your own custom UI while not having to worry about lower level API calls, use stream_chat_flutter_core. + +#### The case for stream_chat + +The stream_chat package is the Low-level Client (LLC) of Stream Chat in Flutter. This package wraps +the underlying functionality of Stream Chat and allows the most customization in terms of UI, data, +and architecture. + +Summary: + +For the most control over the SDK and dealing with low level calls to the API, use stream_chat. diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/introduction.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/introduction.mdx new file mode 100644 index 00000000..99170774 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/introduction.mdx @@ -0,0 +1,77 @@ +--- +slug: / +id: introduction +sidebar_position: 1 +title: About The Flutter SDK +--- +Exploring The Basics Of Stream Chat + +![](../assets/sdk_title.png) + +Stream Chat is a service that helps you easily build a full chat experience in your Flutter apps. +We also support a variety of other SDKs. + +This section of the documentation focuses on our Flutter SDK which helps you easily +ship high quality messaging experiences in apps and programs built with the [Flutter toolkit +made by Google](https://flutter.dev). + +The Stream Chat Flutter SDK comprises five different packages to choose from, ranging from ones +giving you complete control to ones that give you a rich out-of-the-box chat experience. + +The packages that make up the Stream Chat SDK are: + +1. Low Level Client (stream_chat): a pure Dart package that can be used on any Dart project. +It provides a low-level client to access the Stream Chat service. +2. Core (stream_chat_flutter_core): provides business logic to fetch common things required +for integrating Stream Chat into your application. +The core package allows more customisation and hence provides business logic but no UI components. +3. UI (stream_chat_flutter): this library includes both a low-level chat SDK and a set of +reusable and customisable UI components. +4. Persistence (stream_chat_persistence): provides a persistence client for fetching and +saving chat data locally. +5. Localizations (stream_chat_localizations): provides a set of localizations for the SDK. + +We recommend building prototypes using the full UI package, [stream_chat_flutter](https://pub.dev/packages/stream_chat_flutter), +since it contains UI widgets already integrated with Stream's API. It is the fastest way to get up +and running using Stream chat in your app. + +The Flutter SDK enables you to build any type of chat or messaging experience for Android, iOS, Web +and Desktop. + +If you're building a very custom UI and would prefer a more lean package, +[stream_chat_flutter_core](https://pub.dev/packages/stream_chat_flutter_core) will be suited to this +use case. Core allows you to build custom, expressive UIs while retaining the benefits of our full +Flutter SDK. APIs for accessing and controlling users, sending messages, and so forth are seamlessly integrated +into this package and accessible via providers and builders. + +Before going into the docs, let's take a small detour to look at how the elements of Stream Chat are structured. + +### Basic Structure + +There are two core elements in chat, Users and Channels. +Channels are groups of one or more users that can message each other. +In an app, you need to have a user connected to query channels. + +There is no specific distinction between a chat with only two people and a group chat, +but there is a way to create a unique chat between a certain number of people by creating a distinct channel. + +![](../assets/chat_basics.png) + +In essence, a normal two-person chat would be a distinct channel created with two members (you cannot add or delete members in this channel), whereas a group created with two people would simply be a non distinct channel (possible to add or remove members). + +:::note +It is also possible to add more than two people in a distinct channel which retains the same add/removal properties and resembles the Slack DMs where you can DM one or more people as well. +::: + +In summary, if you were creating a Whatsapp-like app, the first screen would be a list of channels - which on opening would show a list of messages that were sent by the users in the Channel. + +While this is a simplistic overview of the service, the Flutter SDK handles the UI and more time consuming things (media upload, offline storage, theming, etc.) for you. + +Before reading the docs, consider trying our [online API tour](https://getstream.io/chat/get_started/), +it is a nice way to learn how the API works. +It's in-browser so you'll need to use Javascript but the core conceps are pretty much the same as Dart. + +You may also like to look at the [Flutter tutorial](https://getstream.io/chat/flutter/tutorial/) +which focuses on using the UI package to get Stream Chat integrated into a Flutter app. + +Further sections break down each individual packages and explain several common operations. \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/versioning_policy.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/versioning_policy.mdx new file mode 100644 index 00000000..48f25d66 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/basics/versioning_policy.mdx @@ -0,0 +1,20 @@ +--- +id: versioning_policy +sidebar_position: 3 +title: Versioning Policy +--- + +All of the Stream Chat packages follow [semantic versioning (semver)](https://semver.org/). + +That means that with a version number x.y.z (major.minor.patch): +- When releasing bug fixes (backwards compatible), we make a patch release by changing the z number (ex: 3.6.2 to 3.6.3). A bug fix is defined as an internal change that fixes incorrect behavior. +- When releasing new features or non-critical fixes, we make a minor release by changing the y number (ex: 3.6.2 to 3.7.0). +- When releasing breaking changes (backward incompatible), we make a major release by changing the x number (ex: 3.6.2 to 4.0.0). + +See the [semantic versioning](https://dart.dev/tools/pub/versioning#semantic-versions) section from the Dart docs for more information. + +This versioning policy does not apply to prerelease packages (below major version of 1). See this +[StackOverflow thread](https://stackoverflow.com/questions/66201337/how-do-dart-package-versions-work-how-should-i-version-my-flutter-plugins) +for more information on Dart package versioning. + +Whenever possible, we will add deprecation warnings in preparation for future breaking changes. diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/_category_.json b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/_category_.json new file mode 100644 index 00000000..cb58ac0d --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Guides", + "position": 2 +} \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_chat_to_video_livestreams.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_chat_to_video_livestreams.mdx new file mode 100644 index 00000000..9e2afb44 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_chat_to_video_livestreams.mdx @@ -0,0 +1,93 @@ +--- +id: adding_chat_to_video_livestreams +sidebar_position: 7 +title: Adding Chat To Video Livestreams +--- + +Adding Chat To Video Livestreams + +### Introduction + +Video livestreams are usually complemented with a chat section to make the livestream more interactive +and encourage retention. There are several ways to show the chat interface on the screen and requires +some design choices. + +This guide details multiple ways of adding chat functionality to your video livestream. + +### Implementing Chat + +There are two common scenarios in live-streaming applications depending how well integrated the two +components (video + chat) are allowed to be on the screen. Two common types are split-screen and a +chat overlay that fades in. + +Let's explore creating both types: + +### Split-screen + +In the split-screen implementation, we have a visual split between the video and the message list. +This allows the content to be unobstructed by chat and have a clear separation of boundaries. + +![](../assets/live_stream_1.jpg) + +```dart +Scaffold( + body: Column( + children: [ + Expanded( + child: // Your video implementation here, + ), + Expanded( + child: Column( + children: [ + Expanded( + child: MessageListView(), + ), + MessageInput(), + ], + ), + ), + ], + ), +) +``` + +### Overlapping chat with a transparency gradient + +Another way to add chat is to overlay the video content with messages which progressively fade out +as we go to the top of the screen. This gives the content a more rich feel as it takes the whole +screen and allows the chat to be more homogeneously integrated with the content. + +The second type looks like this: + +![](../assets/live_stream_2.jpg) + +We can use a `Stack` for achieving this: + +```dart +Scaffold( + body: Stack( + children: [ + // Add your video implementation here + ShaderMask( + shaderCallback: (rect) { + return LinearGradient( + begin: Alignment.bottomCenter, + end: Alignment.topCenter, + colors: [Colors.black, Colors.transparent], + stops: [0.4, 0.65] + ).createShader(Rect.fromLTRB(0, 0, rect.width, rect.height)); + }, + blendMode: BlendMode.dstIn, + child: Column( + children: [ + Expanded( + child: MessageListView(), + ), + MessageInput(), + ], + ), + ), + ], + ), + ) +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_custom_attachments.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_custom_attachments.mdx new file mode 100644 index 00000000..9fe7f6aa --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_custom_attachments.mdx @@ -0,0 +1,264 @@ +--- +id: adding_custom_attachments +sidebar_position: 3 +title: Adding Custom Attachments +--- + +Adding Your Own Types Of Attachments To A Message + +### Introduction + +Stream Chat supports attachment types like images, video and files by default. You can also add your +own types of attachments through the SDK such as location, audio, etc. + +This involves doing three things: + +1) Rendering the attachment thumbnail in the `MessageInput` + +2) Sending a message with the custom attachment + +3) Rendering the custom message attachment + +To do this, let's check out an example to add location sharing to Stream Chat. + +### Location Sharing + +Let's build an example of location sharing option in the app: + +![](../assets/location_sharing_example.jpg) + +* Show a "Share Location" button next to MessageInput Textfield. + +* When the user presses this button, it should fetch the current location coordinates of the user, and send a message on the channel as follows: + +```dart +Message( + text: 'This is my location', + attachments: [ + Attachment( + uploadState: UploadState.success(), + type: 'location', + extraData: { + 'latitude': 'fetched_latitude', + 'longitude': 'fetched_longitude', + }, + ), + ], +) +``` + +For our example, we are going to use [geolocator](https://pub.dev/packages/geolocator) library. +Please check their [setup instructions](https://pub.dev/packages/geolocator) on their docs. + +NOTE: If you are testing on iOS simulator, you will need to set some dummy coordinates, as mentioned [here](https://stackoverflow.com/a/31238119/7489541). +Also don't forget to enable "location update" capability in background mode, from XCode. + +On the receiver end, `location` type attachment should be rendered in map view, in the `MessageListView`. +We are going to use [Google Static Maps API](https://developers.google.com/maps/documentation/maps-static/overview) to render the map in the message. +You can use other libraries as well such as [google_maps_flutter](https://pub.dev/packages/google_maps_flutter). + +First, we add a button which when clicked fetches and shares location into the `MessageInput`: + +```dart +MessageInput( + actions: [ + InkWell( + child: Icon( + Icons.location_on, + size: 20.0, + color: StreamChatTheme.of(context).colorTheme.grey, + ), + onTap: () { + var channel = StreamChannel.of(context).channel; + var user = StreamChat.of(context).user; + + _determinePosition().then((value) { + channel.sendMessage( + Message( + text: 'This is my location', + attachments: [ + Attachment( + uploadState: UploadState.success(), + type: 'location', + extraData: { + 'latitude': value.latitude.toString(), + 'longitude': value.longitude.toString(), + }, + ), + ], + ), + ); + }).catchError((err) { + print('Error getting location!'); + }); + }, + ), + ], +), + +Future _determinePosition() async { + bool serviceEnabled; + LocationPermission permission; + + serviceEnabled = await Geolocator.isLocationServiceEnabled(); + if (!serviceEnabled) { + return Future.error('Location services are disabled.'); + } + + permission = await Geolocator.checkPermission(); + if (permission == LocationPermission.denied) { + permission = await Geolocator.requestPermission(); + if (permission == LocationPermission.deniedForever) { + return Future.error( + 'Location permissions are permanently denied, we cannot request permissions.'); + } + + if (permission == LocationPermission.denied) { + return Future.error( + 'Location permissions are denied'); + } + } + + return await Geolocator.getCurrentPosition(); +} +``` + +Next, we build the Static Maps URL (Add your API key before using the code snippet): + +```dart + String _buildMapAttachment(String lat, String long) { + var baseURL = 'https://maps.googleapis.com/maps/api/staticmap?'; + var url = Uri( + scheme: 'https', + host: 'maps.googleapis.com', + port: 443, + path: '/maps/api/staticmap', + queryParameters: { + 'center': '${lat},${long}', + 'zoom': '15', + 'size': '600x300', + 'maptype': 'roadmap', + 'key': 'YOUR_API_KEY', + 'markers': 'color:red|${lat},${long}' + }); + + return url.toString(); + } +``` + +And then modify the `MessageListView` and tell it how to build a location attachment, using the `messageBuilder` property and copying the default message implementation overriding the `customAttachmentBuilders` property: + +```dart +MessageListView( + messageBuilder: (context, details, messages, defaultMessage) { + return defaultMessage.copyWith( + customAttachmentBuilders: { + 'location': (context, message, attachments) { + final attachmentWidget = Image.network( + _buildMapAttachment( + attachments[0].extraData['latitude'], + attachments[0].extraData['longitude'], + ), + ); + + return wrapAttachmentWidget(context, attachmentWidget, null, true, BorderRadius.circular(8.0)); + } + }, + ); + }, +), +``` + +This gives us the final location attachment: + +![](../assets/location_sharing_example_message.jpg) + +Additionally, you can also add a thumbnail if a message has a location attachment (unlike in this case, where we sent the message directly). + +To do this, we will: + +1) Add an attachment instead of sending a message + +2) Customize the `MessageInput` + +First, we add the attachment when the location button is clicked: + +```dart + GlobalKey _messageInputKey = GlobalKey(); + + MessageInput( + key: _messageInputKey, + actions: [ + InkWell( + child: Icon( + Icons.location_on, + size: 20.0, + color: StreamChatTheme.of(context).colorTheme.grey, + ), + onTap: () { + _determinePosition().then((value) { + _messageInputKey.currentState.addAttachment( + Attachment( + uploadState: UploadState.success(), + type: 'location', + extraData: { + 'latitude': value.latitude.toString(), + 'longitude': value.longitude.toString(), + }, + ), + ); + }).catchError((err) { + print('Error getting location!'); + }); + }, + ), + ], + ), +``` + +After this, we can build the thumbnail: + +```dart +MessageInput( + key: _messageInputKey, + actions: [ + InkWell( + child: Icon( + Icons.location_on, + size: 20.0, + color: StreamChatTheme.of(context).colorTheme.grey, + ), + onTap: () { + _determinePosition().then((value) { + _messageInputKey.currentState.addAttachment( + Attachment( + uploadState: UploadState.success(), + type: 'location', + extraData: { + 'latitude': value.latitude.toString(), + 'longitude': value.longitude.toString(), + }, + ), + ); + }).catchError((err) { + print('Error getting location!'); + }); + }, + ), + ], + attachmentThumbnailBuilders: { + 'location': (context, attachment) { + return Image.network( + _buildMapAttachment( + attachment.extraData['latitude'], + attachment.extraData['longitude'], + ), + ); + }, + }, +), +``` + +And we can see the thumbnails in the MessageInput: + +![](../assets/location_sharing_example_message_thumbnail.jpg) diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_local_data_persistence.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_local_data_persistence.mdx new file mode 100644 index 00000000..e6283ca0 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_local_data_persistence.mdx @@ -0,0 +1,76 @@ +--- +id: adding_local_data_persistence +sidebar_position: 9 +title: Adding Local Data Persistence +--- + +Adding Local Data Persistence + +### Introduction + +Most messaging apps need to work regardless of whether the app is currently connected to the internet. +Local data persistence stores the fetched data from the backend on a local SQLite database using the +moor package in Flutter. All packages in the SDK can use local data persistence to store messages +across multiple platforms. + +### Implementation + +To add data persistence you can extend the class ChatPersistenceClient and pass an instance to the StreamChatClient. + +```dart +class CustomChatPersistentClient extends ChatPersistenceClient { +... +} + +final client = StreamChatClient( + apiKey ?? kDefaultStreamApiKey, + logLevel: Level.INFO, +)..chatPersistenceClient = CustomChatPersistentClient(); +``` + +We provide an official persistent client in the [stream_chat_persistence](https://pub.dev/packages/stream_chat_persistence) +package that works using the library [moor](https://moor.simonbinder.eu), an SQLite ORM. + +Add this to your package's `pubspec.yaml` file, using the latest version. + +```yaml +dependencies: + stream_chat_persistence: ^latest_version +``` + +You should then run `flutter packages get` + +The usage is pretty simple. + +1. Create a new instance of `StreamChatPersistenceClient` providing `logLevel` and `connectionMode` + +```dart +final chatPersistentClient = StreamChatPersistenceClient( + logLevel: Level.INFO, + connectionMode: ConnectionMode.background, +); +``` + +2. Pass the instance to the official `StreamChatClient` + +```dart + final client = StreamChatClient( + apiKey ?? kDefaultStreamApiKey, + logLevel: Level.INFO, + )..chatPersistenceClient = chatPersistentClient; +``` + +And you are ready to go... + +Note that passing `ConnectionMode.background` the database uses a background isolate to unblock the main thread. +The `StreamChatClient` uses the `chatPersistentClient` to synchronize the database with the newest +information every time it receives new data about channels/messages/users. + +### Multi-user + +The DB file is named after the `userId`, so if you instantiate a client using a different `userId` you will use a different database. +Calling `client.disconnectUser(flushChatPersistence: true)` flushes all current database data. + +### Updating/deleting/sending a message while offline + +The information about the action is saved in offline storage. When the client returns online, everything is retried. diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx new file mode 100644 index 00000000..c61f26c7 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_localization.mdx @@ -0,0 +1,191 @@ +--- +id: adding_localization +sidebar_position: 2 +title: Adding Localization (l10n) / Internationalization (i18n) +--- + +Adding Localization To UI Widgets + +### Introduction + +We have a dedicated package for adding localization to our UI widgets. It's called `stream_chat_localizations` and you can find it [here](https://pub.dev/packages/stream_chat_localizations). + +![](../assets/localization_support.jpg) + +## What is Localization? + +If you deploy your app to users who speak another language, you'll need to internationalize (localize) it. That means you need to write the app in a way that makes it possible to localize values like text and layouts for each language or locale that the app supports. For more information, see the [Flutter documentation](https://flutter.dev/docs/development/accessibility-and-localization/internationalization). + +What this package allows you to do is to provide localized strings for the Stream chat widgets. For example, depending on the application locale, the Stream Chat widgets will display the appropriate language. The locale will be set automatically, based on system preferences, or you could set it programmatically in your app. The package supports several different languages, with more to be added. The package allows you to override any supported language or add a new language that isn't supported. + +:::note +If you want to translate messages, or enable automatic translation, please see the [Translation documentation](https://getstream.io/chat/docs/flutter-dart/translation/?language=dart). +::: + +### Supported languages + +At the moment we support the following languages: +- [English](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_en.dart) +- [Hindi](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_hi.dart) +- [Italian](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_it.dart) +- [French](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_fr.dart) +- [Spanish](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_es.dart) +- [Japanese](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ja.dart) +- [Korean](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/lib/src/stream_chat_localizations_ko.dart) +More languages will be added in the future. Feel free to [contribute](https://github.com/GetStream/stream-chat-flutter/blob/master/CONTRIBUTING.md) to add more languages. + +### Add dependency + +Add this to your package's `pubspec.yaml` file, use the latest version [![Pub](https://img.shields.io/pub/v/stream_chat_localizations.svg)](https://pub.dartlang.org/packages/stream_chat_localizations) +```yaml +dependencies: + stream_chat_localizations: ^latest_version +``` + +Then run `flutter packages get` + +### Usage + +Generally, Flutter and the Stream Chat SDK will use the system locale of the user's device, if that locale is supported (see below). If the locale is not supported we will default to `en` (however it's always possible to [customize that](#changing-the-default-language)). +Make sure to read more about localization in the [official Flutter docs](https://flutter.dev/docs/development/accessibility-and-localization/internationalization). + +```dart +import 'package:flutter/material.dart'; +import 'package:stream_chat_localizations/stream_chat_localizations.dart'; + +void main() { + WidgetsFlutterBinding.ensureInitialized(); + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + // Add all the supported locales + supportedLocales: const [ + Locale('en'), + Locale('hi'), + Locale('fr'), + Locale('it'), + Locale('es'), + Locale('ja'), + Locale('ko'), + ], + // Add GlobalStreamChatLocalizations.delegates + localizationsDelegates: GlobalStreamChatLocalizations.delegates, + builder: (context, widget) => StreamChat( + client: client, + child: widget, + ), + home: StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ); + } +} +``` + +## Setting a language +The application language can be changed through system preferences or programmatically. + +### System Preferences +The application locale can be changed by changing the language for your device or emulator within the device's system preferences. + +[iOS change language](https://support.apple.com/en-us/HT204031) + +[Android change language](https://support.google.com/websearch/answer/3333234?co=GENIE.Platform%3DAndroid&hl=en) + +Note that the language needs to be supported in your application to work. + +### Programmatically +You can also set the locale programmatically in your Flutter application without changing the device's language. + +```dart +return MaterialApp( + ... + locale: const Locale('fr'), + ... +); +``` + +There are many ways that this can be set for additional control. For information and examples, see this [Stack Overflow post](https://stackoverflow.com/questions/49441212/flutter-multi-lingual-application-how-to-override-the-locale). + +### Adding a new language + +To add a new language, create a new class extending `GlobalStreamChatLocalizations` and create a delegate for it, adding it to the `delegates` array. + +Check out [this example](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/example/lib/add_new_lang.dart) to see how to add a new language. + +### Override existing languages + +To override an existing language, create a new class extending that particular language class and create a delegate for it, adding it to the `delegates` array. + +Check out [this example](https://github.com/GetStream/stream-chat-flutter/blob/master/packages/stream_chat_localizations/example/lib/override_lang.dart) to see how to override an existing language. + +### Changing the default language + +To change the default language you can use the `MaterialApp.localeListResolutionCallback` property. +Here is an example of how that would look like: + +```dart + MaterialApp( + theme: ThemeData.light(), + darkTheme: ThemeData.dark(), + // Add all the supported locales + supportedLocales: const [ + Locale('en'), + Locale('hi'), + Locale('fr'), + Locale('it'), + Locale('es'), + Locale('ja'), + Locale('ko'), + ], + // locales are the locales of the device + // supportedLocales are the app supported locales + localeListResolutionCallback: (locales, supportedLocales) { + // We map the supported locales to language codes + // note that this is completely optional and this logic can be changed as you like + final supportedLanguageCodes = + supportedLocales.map((e) => e.languageCode); + if (locales != null) { + // we iterate over the locales and find the first one that is supported + for (final locale in locales) { + if (supportedLanguageCodes.contains(locale.languageCode)) { + return locale; + } + } + } + + // if we didn't find a supported language, we return the Italian language + return const Locale('it'); + }, + // Add GlobalStreamChatLocalizations.delegates + localizationsDelegates: GlobalStreamChatLocalizations.delegates, + ... + +``` + +In this case, we're using Italian as the default language. + +### ⚠️ Note on **iOS** + +For translation to work on **iOS** you need to add supported locales to +`ios/Runner/Info.plist` as described [here](https://flutter.dev/docs/development/accessibility-and-localization/internationalization#specifying-supportedlocales). + +Example: + +```xml +CFBundleLocalizations + + en + nb + fr + it + es + ja + ko + +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications.mdx new file mode 100644 index 00000000..328ba546 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications.mdx @@ -0,0 +1,263 @@ +--- +id: adding_push_notifications +sidebar_position: 1 +title: Adding Push Notifications (V1 legacy) +--- + +Adding Push Notifications To Your Application + +:::note +Version 1 (legacy) of push notifications won't be removed immediately but there won't be any new features. That's why new applications are highly recommended to use version 2 from the beginning to leverage upcoming new features. +::: + +### Introduction + +Push notifications are a core part of the experience for a messaging app. Users often need to be notified +of new messages and old notifications sometimes need to be updated silently as well. + +This guide details how to add push notifications to your app. + +Make sure to check [this section](https://getstream.io/chat/docs/flutter-dart/push_introduction/?language=dart) of the docs to read about the push delivery logic. + +### Setup FCM + +To integrate push notifications in your Flutter app you need to use the package [firebase_messaging](https://pub.dev/packages/firebase_messaging). + + +Follow the [Firebase documentation](https://firebase.flutter.dev/docs/messaging/overview/) to know how to set up the plugin for both Android and iOS. + + +Once that's done FCM should be able to send push notifications to your devices. + +### Integration with Stream + +#### Step 1 + +From the [Firebase Console](https://console.firebase.google.com/), select the project your app belongs to. + +#### Step 2 + +Click on the gear icon next to `Project Overview` and navigate to **Project settings** + +![](../assets/firebase_project_settings.jpeg) + +#### Step 3 + +Navigate to the `Cloud Messaging` tab + +#### Step 4 + +Under `Project Credentials`, locate the `Server key` and copy it + +![](../assets/server_key.png) + +#### Step 5 + +Upload the `Server Key` in your chat dashboard + +![](../assets/dashboard_firebase_enable.jpeg) + +![](../assets/dashboard_firebase_key.jpeg) + + +:::note +We are setting up the Android section, but this will work for both Android and iOS if you're using Firebase for both of them! +::: + +#### Step 6 + +Save your push notification settings changes + +![](../assets/dashboard_save_changes.jpeg) + +**OR** + +Upload the `Server Key` via API call using a backend SDK + +```js +await client.updateAppSettings({ + firebase_config: { + server_key: 'server_key', + notification_template: `{"message":{"notification":{"title":"New messages","body":"You have {{ unread_count }} new message(s) from {{ sender.name }}"},"android":{"ttl":"86400s","notification":{"click_action":"OPEN_ACTIVITY_1"}}}}`, + data_template: `{"sender":"{{ sender.id }}","channel":{"type": "{{ channel.type }}","id":"{{ channel.id }}"},"message":"{{ message.id }}"}` + }, +}); +``` + +### Registering a device at Stream Backend + +Once you configure Firebase server key and set it up on Stream dashboard a device that is supposed to receive push notifications needs to be registered at Stream backend. This is usually done by listening for Firebase device token updates and passing them to the backend as follows: + +```dart +firebaseMessaging.onTokenRefresh.listen((token) { + client.addDevice(token, PushProvider.firebase); +}); +``` + +### Possible issues + + +We only send push notifications when the user doesn't have any active websocket connection (which is established when you call `client.connectUser`). If you set the [onBackgroundEventReceived](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChat/onBackgroundEventReceived.html) property of the StreamChat widget, when your app goes to background, your device will keep the ws connection alive for 1 minute, and so within this period, you won't receive any push notification. + +Make sure to read the [general push docs](https://getstream.io/chat/docs/flutter-dart/push_introduction/?language=dart) in order to avoid known gotchas that may make your relationship with notifications go bad 😢 + +### Testing if Push Notifications are Setup Correctly + +If you're not sure if you've set up push notifications correctly (e.g. you don't always receive them, they work unreliably), you can follow these steps to make sure your config is correct and working: + +1. Clone our repo for push testing git clone git@github.com:GetStream/chat-push-test.git + +2. `cd flutter` + +3. In folder run `flutter pub get` + +4. Input your api key and secret in `lib/main.dart` + +5. Change the bundle identifier/application ID and development team/user so you can run the app in your device (**do not** run on iOS simulator, Android emulator is fine) + +6. Add your `google-services.json/GoogleService-Info.plist` + +7. Run the app + +8. Accept push notification permission (iOS only) + +9. Tap on `Device ID` and copy it + +10. Send the app to background + +11. After configuring [stream-cli](https://github.com/GetStream/stream-cli) paste the following command on command line using your user ID + +```shell +stream chat:push:test -u +``` + +You should get a test push notification + +### App in the background but still connected + +The [StreamChat](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChat-class.html) widget lets you define a [onBackgroundEventReceived](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChat/onBackgroundEventReceived.html) handler in order to handle events while the app is in the background, but the client is still connected. + +This is useful because it lets you keep the connection alive in cases in which the app goes in the background just for some seconds (eg: multitasking, picking pictures from the gallery...) + +You can even customize the [backgroundKeepAlive](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChat/backgroundKeepAlive.html) duration. + +In order to show notifications in such a case we suggest using the package [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications); follow the package guide to successfully set up the plugin. + +Once that's done you should set the [onBackgroundEventReceived](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChat/onBackgroundEventReceived.html); here is an example: + +```dart +... +StreamChat( + client: client, + onBackgroundEventReceived: (e) { + final currentUserId = client.state.user.id; + if (![ + EventType.messageNew, + EventType.notificationMessageNew, + ].contains(event.type) || + event.user.id == currentUserId) { + return; + } + if (event.message == null) return; + final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + final initializationSettingsAndroid = + AndroidInitializationSettings('launch_background'); + final initializationSettingsIOS = IOSInitializationSettings(); + final initializationSettings = InitializationSettings( + android: initializationSettingsAndroid, + iOS: initializationSettingsIOS, + ); + await flutterLocalNotificationsPlugin.initialize(initializationSettings); + await flutterLocalNotificationsPlugin.show( + event.message.id.hashCode, + event.message.user.name, + event.message.text, + NotificationDetails( + android: AndroidNotificationDetails( + 'message channel', + 'Message channel', + 'Channel used for showing messages', + priority: Priority.high, + importance: Importance.high, + ), + iOS: IOSNotificationDetails(), + ), + ); + }, + child: .... +); +... +``` + +As you can see we generate a local notification whenever a message.new or notification.message_new event is received. + +### Foreground notifications + +Sometimes you may want to show a notification when the app is in the foreground. +For example, when you're in a channel and you receive a new message from someone in another channel. + +For this scenario, you can also use the `flutter_local_notifications` package to show a notification. + +You need to listen for new events using `StreamChatClient.on` and handle them accordingly. + +Here we're checking if the event is a `message.new` or `notification.message_new` event, and if the message is from a different user than the current user. In that case we'll show a notification. + +```dart +client.on( + EventType.messageNew, + EventType.notificationMessageNew, +).listen((event) { + if (event.message?.user?.id == client.state.currentUser?.id) { + return; + } + showLocalNotification(event, client.state.currentUser!.id, context); +}); +``` + +:::note +You should also check that the channel of the message is different than the channel in the foreground. +How you do this depends on your app infrastructure and how you handle navigation. +Take a look at the [Stream Chat v1 sample app](https://github.com/GetStream/flutter-samples/blob/main/packages/stream_chat_v1/lib/home_page.dart#L11) to see how we're doing it over there. +::: + +### Saving notification messages to the offline storage + +You may want to save received messages when you receive them via a notification so that later on when you open the app they're already there. + +To do this we need to update the push notification data payload at Stream Dashboard and clear the notification one: + +```json +{ + "message_id": "{{ message.id }}", + "channel_id": "{{ channel.id }}", + "channel_type": "{{ channel.type }}" +} +``` + +Then we need to integrate the package [stream_chat_persistence](https://pub.dev/packages/stream_chat_persistence) in our app that exports a persistence client, learn [here](https://pub.dev/packages/stream_chat_persistence#usage) how to set it up. + +Then during the call `firebaseMessaging.configure(...)` we need to set the `onBackgroundMessage` parameter using a TOP-LEVEL or STATIC function to handle background messages; here is an example: + +```dart +Future myBackgroundMessageHandler(message) async { + if (message.containsKey('data')) { + final data = message['data']; + final messageId = data['message_id']; + final channelId = data['channel_id']; + final channelType = data['channel_type']; + final cid = '$channelType:$channelId'; + + final client = StreamChatClient(apiKey); + final persistenceClient = StreamChatPersistenceClient(); + await persistenceClient.connect(userId); + + final message = await client.getMessage(messageId).then((res) => res.message); + + await persistenceClient.updateMessages(cid, [message]); + persistenceClient.disconnect(); + + /// This can be done using the package flutter_local_notifications as we did before 👆 + _showLocalNotification(); + } +} +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications_v2.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications_v2.mdx new file mode 100644 index 00000000..285c2205 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/adding_push_notifications_v2.mdx @@ -0,0 +1,301 @@ +--- +id: adding_push_notifications_v2 +sidebar_position: 1 +title: Adding Push Notifications (V2) +--- + +Adding Push Notifications To Your Application + +### Introduction + +Push notifications are a core part of the experience for a messaging app. Users often need to be notified +of new messages and old notifications sometimes need to be updated silently. + +This guide details how to add push notifications to your app. + +You can read more about Stream’s [push delivery logic](https://getstream.io/chat/docs/flutter-dart/push_introduction/?language=dart#push-delivery-rules). + +### Setup FCM + +To integrate push notifications in your Flutter app, you need to use the package [firebase_messaging](https://pub.dev/packages/firebase_messaging). + + +Follow the [Firebase documentation](https://firebase.flutter.dev/docs/messaging/overview/) to set up the plugin for Android and iOS. + + +Once that's done, FCM should be able to send push notifications to your devices. + +### Integration With Stream + +#### Step 1 - Get the Firebase Credentials + +These credentials are the [private key file](https://firebase.google.com/docs/admin/setup#:~:text=To%20generate%20a%20private%20key%20file%20for%20your%20service%20account%3A) for your service account, in firebase console. + +To generate a private key file for your service account, in the Firebase console: + +- Open Settings > Service Accounts. + +- Click **Generate New Private Key**, then confirm by clicking **Generate Key**. + +- Securely store the JSON file containing the key. + +This JSON file contains the credentials which needs to be uploaded to Stream’s server as explained in next step. + +#### Step 2 - Upload the Firebase Credentials to Stream + +You can upload your Firebase credentials using either the dashboard or the app settings API (available only in backend SDKs). + +##### Using the Stream Dashboard + +1. Go to the **Chat Overview** page on Stream Dashboard + +![](../assets/chat_overview_page-2fbd5bbfb70c5623bd37ff7d6c41bf4d.png) + +2. Enable **Firebase Notification** toggle on **Chat Overview** + +![](../assets/firebase_notifications_toggle-5aeabfcbdc24cb8f1fea7d41d0e845fc.png) + +3. Enter your Firebase Credentials and press "Save". + +##### Using the API + +You can also enable Firebase notifications and upload the Firebase credentials using one of our server SDKs. + +For example, using the JavaScript SDK: + +```js +const client = StreamChat.getInstance('api_key', 'api_secret'); +client.updateAppSettings({ + push_config: { + version: 'v2' + }, + firebase_config: { + credentials_json: fs.readFileSync( + './firebase-credentials.json', + 'utf-8', + ), + }); +``` +### Registering a Device With Stream Backend + +Once you configure a Firebase server key and set it up on Stream dashboard then a device that is supposed to receive push notifications needs to be registered on the Stream backend. This is usually done by listening for Firebase device token updates and passing them to the backend as follows: + +```dart +firebaseMessaging.onTokenRefresh.listen((token) { + client.addDevice(token, PushProvider.firebase); +}); +``` + +### Receiving Notifications + +Push notifications behave a bit differently depending on whether you are using iOS or Android. +See [here](https://firebase.flutter.dev/docs/messaging/usage#message-types) to understand the difference between **notification** and **data** payloads. + +#### iOS + +On iOS we send both a **notification** and a **data** payload. +This means you don't need to do anything special to get the notification to show up. However, you might want to handle the data payload to perform some logic when the user taps on the notification. + +To update the template, you can use a backend SDK. +For example, using the javascript SDK: + +```js +const client = StreamChat.getInstance(‘api_key’, ‘api_secret’); +const apn_template = `{ + "aps": { + "alert": { + "title": "New message from {{ sender.name }}", + "body": "{{ truncate message.text 2000 }}" + }, + "mutable-content": 1, + "category": "stream.chat" + }, + "stream": { + "sender": "stream.chat", + "type": "message.new", + "version": "v2", + "id": "{{ message.id }}", + "cid": "{{ channel.cid }}" + } +}`; + +client.updateAppSettings({ + firebase_config: { + apn_template, + }); +``` + +#### Android +On Android we send only a **data** payload. This gives you more flexibility and lets you decide what to do with the notification. + +For example, you can listen and generate a notification from them. + +To generate a notification when a **data-only** message is received and the app is in background: + +```dart +Future onBackgroundMessage(RemoteMessage message) async { + final chatClient = StreamChatClient(apiKey); + + chatClient.connectUser( + User(id: userId), + userToken, + connectWebSocket: false, + ); + + handleNotification(message, chatClient); +} + +void handleNotification( + RemoteMessage message, + StreamChatClient chatClient, +) async { + + final data = message.data; + + if (data['type'] == 'message.new') { + final flutterLocalNotificationsPlugin = await setupLocalNotifications(); + final messageId = data['id']; + final response = await chatClient.getMessage(messageId); + + flutterLocalNotificationsPlugin.show( + 1, + 'New message from ${response.message.user.name} in ${response.channel.name}', + response.message.text, + NotificationDetails( + android: AndroidNotificationDetails( + 'new_message', + 'New message notifications channel', + )), + ); + } +} + +FirebaseMessaging.onBackgroundMessage(onBackgroundMessage); +``` + +In the above example, you get the message details using the `getMessage` method and then you use the [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) package to show the actual notification. + +##### Using a Template on Android + +It's still possible to add a **notification** payload to Android notifications. +You can do so by adding a template using a backend SDK. +For example, using the javascript SDK: + +```js +const client = StreamChat.getInstance(‘api_key’, ‘api_secret’); +const notification_template = ` +{ + "title": "{{ sender.name }} @ {{ channel.name }}", + "body": "{{ message.text }}", + "click_action": "OPEN_ACTIVITY_1", + "sound": "default" +}`; + +client.updateAppSettings({ + firebase_config: { + notification_template, + }); +``` + +### Possible Issues + +Make sure to read the [general push notification docs](https://getstream.io/chat/docs/flutter-dart/push_introduction/?language=dart) in order to avoid known gotchas that may make your relationship with notifications difficult 😢. + +### Testing if Push Notifications are Setup Correctly + +If you're not sure whether you've set up push notifications correctly, for example, you don't always receive them, or they don’t work reliably, then you can follow these steps to make sure your config is correct and working: +1. Clone our repo for push testing: `git clone git@github.com:GetStream/chat-push-test.git` +2. `cd flutter` +3. In that folder run `flutter pub get` +4. Input your api key and secret in `lib/main.dart` +5. Change the bundle identifier/application ID and development team/user so you can run the app on your physical device.**Do not** run on an iOS simulator, as it will not work. Testing on an Android emulator is fine. +6. Add your `google-services.json/GoogleService-Info.plist` +7. Run the app +8. Accept push notification permission (iOS only) +9. Tap on `Device ID` and copy it +11. After configuring [stream-cli](https://github.com/GetStream/stream-cli), run the following command using your user ID: +```shell +stream chat:push:test -u +``` + +You should get a test push notification 🥳 + + +### Foreground Notifications + +Sometimes you may want to show a notification when the app is in the foreground. +For example, when you're in a channel and you receive a new message from someone in another channel. + +For this scenario, you can also use the `flutter_local_notifications` package to show a notification. + +You need to listen for new events using `FirebaseMessaging.onMessage.listen()` and handle them accordingly: + +```dart +FirebaseMessaging.onMessage.listen((message) async { + handleNotification( + message, + chatClient, + ); +}); +``` + +:::note +You should also check that the channel of the message is different than the channel in the foreground. +How you do this depends on your app infrastructure and how you handle navigation. +Take a look at the [Stream Chat v1 sample app](https://github.com/GetStream/flutter-samples/blob/main/packages/stream_chat_v1/lib/home_page.dart#L11) to see how we're doing it over there. +::: + +### Saving Notification Messages to the Offline Storage (Only Android) + +When the app is closed you may want to save received messages when you receive them via a notification so that later on when you open the app they're already there. + +To do this you need to integrate the package [stream_chat_persistence](https://pub.dev/packages/stream_chat_persistence) in our app that exports a persistence client, see [here](https://pub.dev/packages/stream_chat_persistence#usage) how to set it up. + +Then calling `FirebaseMessaging.onBackgroundMessage(...)` you need to use a TOP-LEVEL or STATIC function to handle background messages; here is an example: + +```dart +Future onBackgroundMessage(RemoteMessage message) async { + final chatClient = StreamChatClient(apiKey); + final persistenceClient = StreamChatPersistenceClient(); + + await persistenceClient.connect(userId); + + chatClient.connectUser( + User(id: userId), + userToken, + connectWebSocket: false, + ); + + handleNotification(message, chatClient); +} + +void handleNotification( + RemoteMessage message, + StreamChatClient chatClient, +) async { + final data = message.data; + if (data['type'] == 'message.new') { + final flutterLocalNotificationsPlugin = await setupLocalNotifications(); + final messageId = data['id']; + final cid = data['cid']; + final response = await chatClient.getMessage(messageId); + await persistenceClient.updateMessages(cid, [response.message]); + + persistenceClient.disconnect(); + + flutterLocalNotificationsPlugin.show( + 1, + 'New message from ${response.message.user.name} in ${response.channel.name}', + response.message.text, + NotificationDetails( + android: AndroidNotificationDetails( + 'new_message', + 'New message notifications channel', + )), + ); + } +} + +FirebaseMessaging.onBackgroundMessage(onBackgroundMessage); +``` + diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_actions.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_actions.mdx new file mode 100644 index 00000000..c3dc2aba --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_actions.mdx @@ -0,0 +1,82 @@ +--- +id: customize_message_actions +sidebar_position: 8 +title: Customize Message Actions +--- + +Customizing Message Actions + +### Introduction + +Message actions pop up in message overlay, when you long-press a message. + +![](../assets/message_actions.jpg) + +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 `MessageWidget`. + +```dart +MessageListView( + 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 `MessageWidget` to add extra actions. + +```dart +MessageListView( + messageBuilder: (context, details, messages, defaultMessage) { + return defaultMessage.copyWith( + customActions: [ + MessageAction( + leading: Icon(Icons.add), + title: Text('Demo Action'), + onTap: (message) { + /// Complete action here + }, + ), + ], + ); + }, +) +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_widget.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_widget.mdx new file mode 100644 index 00000000..af7014fb --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_message_widget.mdx @@ -0,0 +1,182 @@ +--- +id: customize_message_widget +sidebar_position: 11 +title: Customizing The MessageWidget +--- + +Customizing Text Messages + +### Introduction + +Every application provides a unique look and feel to their own messaging interface including and not +limited to fonts, colors, and shapes. + +This guide details how to customize the `MessageWidget` in the Stream Chat Flutter UI SDK. + +### Building Custom Messages + +This guide goes into detail about the ability to customize the `MessageWidget`. However, if you want +to customize the default `MessageWidget` in the `MessageListView` provided, you can use the `.copyWith()` method +provided inside the `messageBuilder` parameter of the `MessageListView` like this: + +```dart +MessageListView( + messageBuilder: (context, details, messageList, defaultImpl) { + // Your implementation of the message here + // E.g: return Text(details.message.text ?? ''); + }, +), +``` + +### Theming + +You can customize the `MessageWidget` using the `StreamChatTheme` class, so that you can change the +message theme at the top instead of creating your own `MessageWidget` at the lower implementation level. + +There are several things you can change in the theme including text styles and colors of various elements. + +You can also set a different theme for the user's own messages and messages received by them. + +:::note +Theming allows you to change minor factors like style while using the widget directly allows you much +more customization such as replacing a certain widget with another. Some things can only be customized +through the widget and not the theme. +::: + +Here is an example: + +```dart +StreamChatThemeData( + + /// Sets theme for user's messages + ownMessageTheme: MessageThemeData( + messageBackgroundColor: colorTheme.textHighEmphasis, + ), + + /// Sets theme for received messages + otherMessageTheme: MessageThemeData( + avatarTheme: AvatarThemeData( + borderRadius: BorderRadius.circular(8), + ), + ), + +) +``` + +![](../assets/message_theming.png) + +#### Change message text style + +The `MessageWidget` has multiple `Text` widgets that you can manipulate the styles of. The three main +are the actual message text, user name, message links, and the message timestamp. + +```dart +MessageThemeData( + messageTextStyle: TextStyle(...), + createdAtStyle: TextStyle(...), + messageAuthorStyle: TextStyle(...), + messageLinksStyle: TextStyle(...), +) +``` + +![](../assets/message_styles.png) + +#### Change avatar theme + +You can change the attributes of the avatar (if displayed) using the `avatarTheme` property. + +```dart +MessageThemeData( + avatarTheme: AvatarThemeData( + borderRadius: BorderRadius.circular(8), + ), +) +``` + +![](../assets/message_rounded_avatar.png) + +#### Changing Reaction theme + +You also customize the reactions attached to every message using the theme. + +```dart +MessageThemeData( + reactionsBackgroundColor: Colors.red, + reactionsBorderColor: Colors.redAccent, + reactionsMaskColor: Colors.pink, +), +``` + +![](../assets/message_reaction_theming.png) + +### Changing Message Actions + +When a message is long pressed, the `MessageActionsModal` is shown. + +The `MessageWidget` allows showing or hiding some options if you so choose. + +```dart +MessageWidget( + ... + showUsername = true, + showTimestamp = true, + showReactions = true, + showDeleteMessage = true, + showEditMessage = true, + showReplyMessage = true, + showThreadReplyMessage = true, + showResendMessage = true, + showCopyMessage = true, + showFlagButton = true, + showPinButton = true, + showPinHighlight = true, +), +``` + +![](../assets/message_widget_actions.png) + +### Building attachments + +The `customAttachmentBuilder` property allows you to build any kind of attachment (inbuilt or custom) +in your own way. While a separate guide is written for this, it is included here because of relevance. + +```dart +MessageListView( + messageBuilder: (context, details, messages, defaultMessage) { + return defaultMessage.copyWith( + customAttachmentBuilders: { + 'location': (context, message, attachments) { + final attachmentWidget = Image.network( + _buildMapAttachment( + attachments[0].extraData['latitude'], + attachments[0].extraData['longitude'], + ), + ); + + return wrapAttachmentWidget(context, attachmentWidget, null, true, BorderRadius.circular(8.0)); + } + }, + ); + }, +), +``` + +### Widget Builders + +Some parameters allow you to construct your own widget in place of some elements in the `MessageWidget`. + +These are: +* `userAvatarBuilder` : Allows user to substitute their own widget in place of the user avatar. +* `editMessageInputBuilder` : Allows user to substitute their own widget in place of the input in edit mode. +* `textBuilder` : Allows user to substitute their own widget in place of the text. +* `bottomRowBuilder` : Allows user to substitute their own widget in the bottom of the message when not deleted. +* `deletedBottomRowBuilder` : Allows user to substitute their own widget in the bottom of the message when deleted. + +```dart +MessageWidget( + ... + textBuilder: (context, message) { + // Add your own text implementation here. + }, +), +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_text_messages.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_text_messages.mdx new file mode 100644 index 00000000..a2d37333 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/customize_text_messages.mdx @@ -0,0 +1,158 @@ +--- +id: customize_text_messages +sidebar_position: 6 +title: Customize Text Messages +--- + +Customizing Text Messages + +### Introduction + +Every application provides a unique look and feel to their own messaging interface including and not +limited to fonts, colors, and shapes. + +This guide details how to customize message text in the `MessageListView` / `MessageWidget` in the +Stream Chat Flutter UI SDK. + +:::note +This guide is specifically for the `MessageListView` but if you intend to display a `MessageWidget` +separately, follow the same process without the `.copyWith` and use the default constructor instead. +::: + +### Basics of customizing a `MessageWidget` + +First, add a `MessageListView` in the appropriate place where you intend to display messages from a +channel. + +```dart +MessageListView( + ... +) +``` + +Now, we use the `messageBuilder` parameter to build a custom message. The builder function also provides +the default implementation of the `MessageWidget` so that we can change certain aspects of the widget +without redoing all of the default parameters. + +:::note +In earlier versions of the SDK, some `MessageWidget` parameters were exposed directly through the `MessageListView`, +however, this quickly becomes hard to maintain as more parameters and customizations are added to the +`MessageWidget`. Newer version utilise a cleaner interface to change the parameters by supplying a +default message implementation as aforementioned. +::: + +```dart +MessageListView( + ... + messageBuilder: (context, messageDetails, messageList, defaultWidget) { + return defaultWidget; + }, +) +``` + +We use `.copyWith()` to customize the widget: + +```dart +MessageListView( + ... + messageBuilder: (context, messageDetails, messageList, defaultWidget) { + return defaultWidget.copyWith( + ... + ); + }, +) +``` + +### Customizing text + +If you intend to simply change the theme for the text, you need not recreate the whole widget. The +`MessageWidget` has a `messageTheme` parameter that allows you to pass the theme for most aspects +of the message. + +```dart +MessageListView( + ... + messageBuilder: (context, messageDetails, messageList, defaultWidget) { + return defaultWidget.copyWith( + messageTheme: MessageTheme( + ... + messageText: TextStyle(), + ), + ); + }, +) +``` + +If you want to replace the entire text widget in the `MessageWidget`, you can use the `textBuilder` +parameter which provides a builder for creating a widget to substitute the default text.parameter + +```dart +MessageListView( + ... + messageBuilder: (context, messageDetails, messageList, defaultWidget) { + return defaultWidget.copyWith( + textBuilder: (context, message) { + return Text(message.text); + }, + ); + }, +) +``` + +### Adding Hashtags + +To add elements like hashtags, we can override the `textBuilder` in the MessageWidget: + +```dart +MessageListView( + ... + messageBuilder: (context, messageDetails, messageList, defaultWidget) { + return defaultWidget.copyWith( + textBuilder: (context, message) { + final text = _replaceHashtags(message.text).replaceAll('\n', '\\\n'); + final messageTheme = StreamChatTheme.of(context).ownMessageTheme; + + return MarkdownBody( + data: text, + onTapLink: ( + String link, + String href, + String title, + ) { + // Do something with tapped hashtag + }, + styleSheet: MarkdownStyleSheet.fromTheme( + Theme.of(context).copyWith( + textTheme: Theme.of(context).textTheme.apply( + bodyColor: messageTheme.messageText.color, + decoration: messageTheme.messageText.decoration, + decorationColor: messageTheme.messageText.decorationColor, + decorationStyle: messageTheme.messageText.decorationStyle, + fontFamily: messageTheme.messageText.fontFamily, + ), + ), + ).copyWith( + a: messageTheme.messageLinks, + p: messageTheme.messageText, + ), + ); + }, + ); + }, +) + +String _replaceHashtags(String text) { + RegExp exp = new RegExp(r"\B#\w\w+"); + exp.allMatches(text).forEach((match){ + text = text.replaceAll( + '${match.group(0)}', '[${match.group(0)}](${match.group(0).replaceAll(' ', '')})'); + }); + return text; +} +``` + +We can replace the hashtags using RegEx and add links for the MarkdownBody which is done here in the +`_replaceHashtags()` function. +Inside the textBuilder, we use the `flutter_markdown` package to build our hashtags as links. + +![](../assets/hashtag_example.jpg) diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/end_to_end_chat_encryption.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/end_to_end_chat_encryption.mdx new file mode 100644 index 00000000..8a85c6a5 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/end_to_end_chat_encryption.mdx @@ -0,0 +1,258 @@ +--- +id: end_to_end_chat_encryption +sidebar_position: 12 +title: End To End Chat Encryption +--- + +## Introduction + +When you communicate over a chat application with another person or group, +you may exchange sensitive information, like personally identifiable information, financial details, or passwords. +A chat application should use end-to-end encryption to ensure that users' data stays secure. + +:::note +Before you start, keep in mind that this guide is a basic example intended for educational purposes only. +If you want to implement end-to-end encryption in your production app, please consult a security professional first. +There’s a lot more to consider from a security perspective that isn’t covered here. +::: + +## What is End-to-End Encryption? + +End-to-end encryption (E2EE) is the process of securing a message from third parties so that only the sender and receiver can access the message. +E2EE provides security by storing the message in an encrypted form on the application's server or database. + +You can only access the message by decrypting and signing it using a known public key (distributed freely) +and a corresponding private key (only known by the owner). + +Each user in the application has their own public-private key pair. +Public keys are distributed publicly and encrypt the sender’s messages. +The receiver can only decrypt the sender’s message with the matching private key. + +Check out the diagram below for an example: + +![](../assets/end_to_end_encryption.png) + +## Setup + +### Dependencies + +Add the [webcrypto](https://pub.dev/packages/webcrypto) package in your `pubspec.yaml` file. + +```yaml +dependencies: + webcrypto: ^0.5.2 # latest version +``` + +### Generate Key Pair + +Write a function that generates a key pair using the **ECDH** algorithm and the **P-256** elliptic curve (**P-256** is well-supported and +offers the right balance of security and performance). + +The pair will consist of two keys: +- **PublicKey**: The key that is linked to a user to encrypt messages. +- **PrivateKey**: The key that is stored locally to decrypt messages. + +```dart +Future generateKeys() async { + final keyPair = await EcdhPrivateKey.generateKey(EllipticCurve.p256); + final publicKeyJwk = await keyPair.publicKey.exportJsonWebKey(); + final privateKeyJwk = await keyPair.privateKey.exportJsonWebKey(); + + return JsonWebKeyPair( + privateKey: json.encode(privateKeyJwk), + publicKey: json.encode(publicKeyJwk), + ); +} + +// Model class for storing keys +class JsonWebKeyPair { + const JsonWebKeyPair({ + required this.privateKey, + required this.publicKey, + }); + + final String privateKey; + final String publicKey; +} +``` + +### Generate a Crypto Key + +Next, create a symmetric **Crypto Key** using the keys generated in the previous step. +You will use those keys to encrypt and decrypt messages. + +```dart +// SendersJwk -> sender.privateKey +// ReceiverJwk -> receiver.publicKey +Future> deriveKey(String senderJwk, String receiverJwk) async { + // Sender's key + final senderPrivateKey = json.decode(senderJwk); + final senderEcdhKey = await EcdhPrivateKey.importJsonWebKey( + senderPrivateKey, + EllipticCurve.p256, + ); + + // Receiver's key + final receiverPublicKey = json.decode(receiverJwk); + final receiverEcdhKey = await EcdhPublicKey.importJsonWebKey( + receiverPublicKey, + EllipticCurve.p256, + ); + + // Generating CryptoKey + final derivedBits = await senderEcdhKey.deriveBits(256, receiverEcdhKey); + return derivedBits; +} +``` + +### Encrypting Messages + +Once you have generated the **Crypto Key**, you're ready to encrypt the message. +You can use the **AES-GCM** algorithm for its known security and performance balance and good browser availability. + +```dart +// The "iv" stands for initialization vector (IV). To ensure the encryption’s strength, +// each encryption process must use a random and distinct IV. +// It’s included in the message so that the decryption procedure can use it. +final Uint8List iv = Uint8List.fromList('Initialization Vector'.codeUnits); +``` + +```dart +Future encryptMessage(String message, List deriveKey) async { + // Importing cryptoKey + final aesGcmSecretKey = await AesGcmSecretKey.importRawKey(deriveKey); + + // Converting message into bytes + final messageBytes = Uint8List.fromList(message.codeUnits); + + // Encrypting the message + final encryptedMessageBytes = + await aesGcmSecretKey.encryptBytes(messageBytes, iv); + + // Converting encrypted message into String + final encryptedMessage = String.fromCharCodes(encryptedMessageBytes); + return encryptedMessage; +} +``` + +### Decrypting Messages + +Decrypting a message is the opposite of encrypting one. +To decrypt a message to a human-readable format, use the code snippet below: + +```dart +Future decryptMessage(String encryptedMessage, List deriveKey) async { + // Importing cryptoKey + final aesGcmSecretKey = await AesGcmSecretKey.importRawKey(deriveKey); + + // Converting message into bytes + final messageBytes = Uint8List.fromList(encryptedMessage.codeUnits); + + // Decrypting the message + final decryptedMessageBytes = + await aesGcmSecretKey.decryptBytes(messageBytes, iv); + + // Converting decrypted message into String + final decryptedMessage = String.fromCharCodes(decryptedMessageBytes); + return decryptedMessage; +} +``` + +## Implement as a Stream Chat Feature + +Now that your setup is complete you can use it to implement end-to-end encryption in your app. + +### Store User's Public Key + +The first thing you need to do is store the generated `publicKey` as an `extraData` property, in order +for other users to encrypt messages. + +```dart +// Generating keyPair using the function defined in above steps +final keyPair = generateKeys(); +``` + +```dart +await client.connectUser( + User( + id: 'cool-shadow-7', + name: 'Cool Shadow', + image: 'https://getstream.io/cool-shadow', + + // set publicKey as a extraData property + extraData: { 'publicKey': keyPair.publicKey }, + ), + client.devToken('cool-shadow-7').rawValue, +); +``` + +### Sending Encrypted Messages + +Now you will use the `encryptMessage()` function created in the previous steps to encrypt the message. + +To do that, you need to make some minor changes to the **MessageInput** widget. + +```dart +final receiverJwk = receiver.extraData['publicKey']; + +// Generating derivedKey using user's privateKey and receiver's publicKey +final derivedKey = await deriveKey(keyPair.privateKey, receiverJwk); +``` + +```dart +MessageInput( + + ... + + preMessageSending: (message) async { + // Encrypting the message text using derivedKey + final encryptedMessage = await encryptMessage(message.text, derivedKey); + + // Creating a new message with the encrypted message text + final newMessage = message.copyWith(text: encryptedMessage); + + return newMessage; + }, +), +``` + +`preMessageSending` is a parameter that allows your app to process the message before it goes to Stream’s server. +Here, you have used it to encrypt the message before sending it to Stream’s backend. + +### Showing Decrypted Messages + +Now, it’s time to decrypt the message and present it in a human-readable format to the receiver. + +You can customize the **MessageListView** widget to have a custom `messagebuilder`, that can decrypt the message. + +```dart +MessageListView( + ... + messageBuilder: (context, messageDetails, currentMessages, defaultWidget) { + // Retrieving the message from details + final message = messageDetails.message; + + // Decrypting the message text using the derivedKey + final decryptedMessageFuture = decryptMessage(message.text, derivedKey); + return FutureBuilder( + future: decryptedMessageFuture, + builder: (context, snapshot) { + if (snapshot.hasError) return Text('Error: ${snapshot.error}'); + if (!snapshot.hasData) return Container(); + + // Updating the original message with the decrypted text + final decryptedMessage = message.copyWith(text: snapshot.data); + + // Returning defaultWidget with updated message + return defaultWidget.copyWith( + message: decryptedMessage, + ); + }, + ); + }, +), +``` + +That's it! That's all you need to implement E2EE in a Stream powered chat app. + +For more details, check out our [end-to-end encrypted chat article](https://getstream.io/blog/end-to-end-encrypted-chat-in-flutter/#whats-end-to-end-encryption). diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/migration_guide_2_0.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/migration_guide_2_0.mdx new file mode 100644 index 00000000..89b6dacc --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/migration_guide_2_0.mdx @@ -0,0 +1,298 @@ +--- +id: mig_guide_2_0 +sidebar_position: 4 +title: Migrating to 2.0 (Null-safety) +--- + +A Migration Guide For Switching To v2.0 Of The Flutter SDK + +### Overview + +v2.0 of the Stream Chat Flutter SDK brings along several changes - primarily making the SDK null-safe. +Null safety allows your apps to run faster, with fewer errors, and with less code. + +Check [this link](https://flutter.dev/docs/null-safety) for more about Null Safety in Flutter. + +This guide is intended to enumerate and better explain the changes in the SDK. + +The changes will be listed by package and a concise changelog will follow with more info. + +### Changelog of `stream_chat_flutter` + +#### 🛑️ Breaking Changes from 1.5.4 + +* Migrate this package to null safety + +* Renamed `ChannelImage` to `ChannelAvatar` + +* Updated `StreamChatThemeData.reactionIcons` to accept custom builder + +* Renamed `ColorTheme` properties to reflect the purpose of the colors + + * `ColorTheme.black` -> `ColorTheme.textHighEmphasis` + * `ColorTheme.grey` -> `ColorTheme.textLowEmphasis` + * `ColorTheme.greyGainsboro` -> `ColorTheme.disabled` + * `ColorTheme.greyWhisper` -> `ColorTheme.borders` + * `ColorTheme.whiteSmoke` -> `ColorTheme.inputBg` + * `ColorTheme.whiteSnow` -> `ColorTheme.appBg` + * `ColorTheme.white` -> `ColorTheme.barsBg` + * `ColorTheme.blueAlice` -> `ColorTheme.linkBg` + * `ColorTheme.accentBlue` -> `ColorTheme.accentPrimary` + * `ColorTheme.accentRed` -> `ColorTheme.accentError` + * `ColorTheme.accentGreen` -> `ColorTheme.accentInfo` + +* `ChannelListCore` options property is removed in favor of individual properties + + * `options.state` -> `bool state` + * `options.watch` -> `bool watch` + * `options.presence` -> `bool presence` + +* `UserListView` options property is removed in favor of individual properties + + * `options.presence` -> `bool presence` + +* Renamed `ImageHeader` to `GalleryHeader` + +* Renamed `ImageFooter` to `GalleryFooter` + +* `MessageBuilder` and `ParentMessageBuilder` signature is now + +```dart +typedef MessageBuilder = Widget Function( + BuildContext, + MessageDetails, + List, + MessageWidget defaultMessageWidget, + ); +``` + +The last parameter is the default `MessageWidget` +You can call `.copyWith` to customize just a subset of properties + +#### ✅ Added + +Added video compress options (frame and quality) to MessageInput +`TypingIndicator` now has a property called `parentId` to show typing indicator specific to threads +#493: add support for `MessageListView` header/footer +`MessageWidget` accepts a `userAvatarBuilder` +Added `pinMessage` ui support +Added `MessageListView.threadSeparatorBuilder` property +Added `MessageInput.onError` property to allow error handling +Added `GalleryHeader`/`GalleryFooter` theme classes + +#### 🐞 Fixed + +#483: Keyboard covers input text box when editing message +`Modals` are shown using the nearest `Navigator` to make using the SDK easier in a nested navigator use case +#484: messages don't update without a reload +`MessageListView` not rendering if the user is not a member of the channel +Fix `MessageInput` overflow when there are no actions +Minor fixes and improvements + +### Migrating to 2.0 for `stream_chat_flutter` + +:::note +If you are migrating your full Flutter project to null-safety, first make sure you follow the +instructions from the [official Null Safety migration guide](https://dart.dev/null-safety/migration-guide). +::: + +To migrate to v2.0 for `stream_chat_flutter`, first change the version of the package to the latest +null-safe version. + +```yaml +dependencies: + stream_chat_flutter: ^2.0.0 +``` + +Upon doing this, all breaking changes from the package will take immediate effect. Here are steps to +remedy the issues: + +1) Replace the offending class names with the revised class names + + * `ChannelImage` -> `ChannelAvatar` + * `ImageHeader` -> `GalleryHeader` + * `ImageFooter` -> `GalleryFooter` + +2) The new version comes with revised color names since the previous names do not suit light/dark mode +nomenclature. Make sure any old colors used from theme are changed over to the new theme color names: + + * `ColorTheme.black` -> `ColorTheme.textHighEmphasis` + * `ColorTheme.grey` -> `ColorTheme.textLowEmphasis` + * `ColorTheme.greyGainsboro` -> `ColorTheme.disabled` + * `ColorTheme.greyWhisper` -> `ColorTheme.borders` + * `ColorTheme.whiteSmoke` -> `ColorTheme.inputBg` + * `ColorTheme.whiteSnow` -> `ColorTheme.appBg` + * `ColorTheme.white` -> `ColorTheme.barsBg` + * `ColorTheme.blueAlice` -> `ColorTheme.linkBg` + * `ColorTheme.accentBlue` -> `ColorTheme.accentPrimary` + * `ColorTheme.accentRed` -> `ColorTheme.accentError` + * `ColorTheme.accentGreen` -> `ColorTheme.accentInfo` + +3) We decided to make messages easier to customize and now supply the default implementation of the +messages in the builder - so you can now customize a single parameter without having to redo the +entire implementation. Please reform your builders to take into account the new format: + +``` +typedef MessageBuilder = Widget Function( + BuildContext, + MessageDetails, + List, + MessageWidget defaultMessageWidget, + ); +``` + +To tweak any of the default properties individually, you can use `defaultMessageWidget.copyWith()`. + +### Changelog of `stream_chat_flutter_core` + +#### 🛑️ Breaking Changes from 1.5.3 + +* Migrate this package to null safety +* `channelsBloc.queryChannels()`, `ChannelListCore` options param/property is removed in favor of individual params/properties + * `options.state` -> `bool state` + * `options.watch` -> `bool watch` + * `options.presence` -> `bool presence` +* `usersBloc.queryUsers()`, `UserListCore` options param/property is removed in favor of individual params/properties + * `options.presence` -> `bool presence` + +#### ✅ Added + +* Monitor connection using `connectivity_plus` package + +#### 🐞 Fixed + +* Minor fixes +* Performance improvements + +### Migrating to 2.0 for `stream_chat_flutter_core` + +:::note +If you are migrating your full Flutter project to null-safety, first make sure you follow the +instructions from the [official Null Safety migration guide](https://dart.dev/null-safety/migration-guide). +::: + +To migrate to v2.0 for `stream_chat_flutter_core`, first change the version of the package to the latest +null-safe version. + +```yaml +dependencies: + stream_chat_flutter_core: ^2.0.0 +``` + +Upon doing this, all breaking changes from the package will take immediate effect. Here are steps to +remedy the issue: + +:::note +The major changes in `stream_chat_flutter_core` consist of changing over from a map full of options +to a more type safe and sound approach by changing over to explicit parameters. +::: + +1) Change over Core widget implementations by using the explicit parameters instead of the options map. +Use these explicit parameters in the widget constructor instead of the option keys: + + * `options.state` -> `bool state` + * `options.watch` -> `bool watch` + * `options.presence` -> `bool presence` + +2) Change over query calls in the BLoCs in the same way (change from options map to explicit parameters +in the constructor) + +### Changelog of `stream_chat` + +#### 🛑️ Breaking Changes from 1.5.3 + +* Migrate this package to null safety +* `ConnectUserWithProvider` now requires `tokenProvider` as a required param. (Removed from the constructor) +* `client.disconnect()` is now divided into two different functions + * `client.closeConnection()` -> for closing user websocket connection. + * `client.disconnectUser()` -> for disconnecting user and resetting client state. +* `client.devToken()` now returns a Token model instead of String. +* `ApiError` is removed in favor of `StreamChatError` + * `StreamChatError` -> parent type for all the stream errors. + * `StreamWebSocketError` -> for user websocket related errors. + * `StreamChatNetworkError` -> for network related errors. +* `client.queryChannels()`, `channel.query()` options param is removed in favor of individual params + * `option.state` -> `bool state` + * `option.watch` -> `bool watch` + * `option.presence` -> `bool presence` +* `client.queryUsers()` options param is removed in favor of individual params + * `option.presence` -> `bool presence` +* Added typed filters + +#### 🐞 Fixed + +* #369: Client does not return without internet connection +* Several minor fixes +* Performance improvements + +#### ✅ Added + +* New Location enum is introduced for easily changing the client location/baseUrl. +* New `client.openConnection()` and `client.closeConnection()` is introduced to connect/disconnect user ws connection. +* New `client.partialUpdateMessage` and `channel.partialUpdateMessage` methods +* `connectWebSocket` parameter in connect user calls to use the client in "connection-less" mode. + +#### 🔄 Changed + +* `baseURL` is now deprecated in favor of using Location to change data location. + +### Migrating to 2.0 for `stream_chat` + +If you are migrating your full Flutter project to null-safety, first make sure you follow the +instructions from the [official Null Safety migration guide](https://dart.dev/null-safety/migration-guide). +::: + +To migrate to v2.0 for `stream_chat`, first change the version of the package to the latest +null-safe version. + +```yaml +dependencies: + stream_chat: ^2.0.0 +``` + +Upon doing this, all breaking changes from the package will take immediate effect. Here are steps to +remedy the issues: + +1) Change over the constructor of `connectUserWithProvider()` to the new format which has `tokenProvider` as a required param. + +2) We added more nuance to `disconnectUser()` by adding two new methods - one to close the connection +and the other to disconnect the user. This allows more fine-grained control of disconnection. + + * `client.closeConnection()` -> for closing user websocket connection. + * `client.disconnectUser()` -> for disconnecting user and resetting client state. + +3) We refactored how we handle errors - new error types are now introduced that replace ApiError. + + * `StreamChatError` -> parent type for all the stream errors. + * `StreamWebSocketError` -> for user websocket related errors. + * `StreamChatNetworkError` -> for network related errors. + +4) We changed over from a map full of options to a more type-safe and sound approach by changing over to explicit parameters. + +Use these explicit parameters in the query parameters instead of the option keys: + +* `client.queryChannels()`, `channel.query()` options param is removed in favor of individual params + * `option.state` -> `bool state` + * `option.watch` -> `bool watch` + * `option.presence` -> `bool presence` +* `client.queryUsers()` options param is removed in favor of individual params + * `option.presence` -> `bool presence` + +5) We added type-safe filters to make filtering in the app easier. Change over the filters to the +new implementation. + +As an example, in the old app this filter: + +```dart + filter: { + 'members': { + '\$in': [StreamChat.of(context).user.id], + } + }, +``` + +Would turn into: + +```dart + filter: Filter.in_('members', [StreamChat.of(context).user.id]) +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/understanding_filters.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/understanding_filters.mdx new file mode 100644 index 00000000..292afd07 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/understanding_filters.mdx @@ -0,0 +1,194 @@ +--- +id: understanding_filters +sidebar_position: 10 +title: Understanding Filters +--- + +Understanding Filters + +### Introduction + +Filters are used to get a specific subset of objects (channels, users, messages, members, etc) which +fit the conditions specified. Earlier versions of the SDK contained String-based filters which are now replaced by type-safe +filters. This guide aims to explain the different types of filters and how to use them. + +### Types Of Filters + +#### Filter.equal + +The 'equal' filter gets the objects where the given key has the specified value. + +```dart +Filter.equal('type', 'messaging'), +``` + +#### Filter.notEqual + +The 'notEqual' filter gets the objects where the given key does not have the specified value. + +```dart +Filter.notEqual('type', 'messaging'), +``` + +#### Filter.greater + +The 'greater' filter gets the objects where the given key has a higher value than the specified value. + +```dart +Filter.greater('count', 5), +``` + +#### Filter.greaterOrEqual + +The 'greaterOrEqual' filter gets the objects where the given key has an equal or higher value than the specified value. + +```dart +Filter.greaterOrEqual('count', 5), +``` + +#### Filter.less + +The 'less' filter gets the objects where the given key has a lesser value than the specified value. + +```dart +Filter.less('count', 5), +``` + +#### Filter.lessOrEqual + +The 'lessOrEqual' filter gets the objects where the given key has a lesser or equal value than the specified value. + +```dart +Filter.lessOrEqual('count', 5), +``` + +#### Filter.in_ + +The 'in_' filter allows getting objects where the key matches any in a specified array. + +```dart +Filter.in_('members', [user.id]) +``` + +:::note +Since 'in' is a keyword in Dart, the filter has an underscore added. This does not apply to the 'notIn' +keyword. +::: + +#### Filter.notIn + +The 'notIn' filter allows getting objects where the key matches none in a specified array. + +```dart +Filter.notIn('members', [user.id]) +``` + +#### Filter.query + +The 'query' filter matches values by performing text search with the specified value. + +```dart +Filter.query('name', 'demo') +``` + +#### Filter.autoComplete + +The 'autoComplete' filter matches values with the specified prefix. + +```dart +Filter.autoComplete('name', 'demo') +``` + +#### Filter.exists + +The 'exists' filter matches values that exist, or don't exist, based on the specified boolean value. + +```dart +Filter.exists('name') +``` + +#### Filter.notExists + +The 'notExists' filter checks if the specified key doesn't exist. This is a simplified call to `Filter.exists` +with the value set to false. + +```dart +Filter.notExists('name') +``` + +#### Filter.contains + +The 'contains' filter matches any list that contains the specified value. + +```dart +Filter.contains('teams', 'red') +``` + +#### Filter.empty + +The 'empty' filter constructor returns an empty filter. It's the equivalent of an empty map `{}`; + +```dart +Filter.empty(); +``` + +#### Filter.raw + +The 'raw' filter constructor lets you specify a raw filter. We suggest using this only if you can't manage to build what you want using the other constructors. + +```dart +Filter.raw(value: { + 'members': [ + ..._selectedUsers.map((e) => e.id), + chatState.currentUser!.id, + ], + 'distinct': true, +}); +``` + +#### Filter.custom + +The 'custom' filter is used to create a custom filter in case it does not exists or it's not been added to the SDK yet. +Note that the filter must be supported by the Stream backend in order to work. + +```dart +Filter.custom( + operator: '\$max', + value: 10, +) +``` + +### Group Queries + +#### Filter.and + +The 'and' operator combines multiple queries. + +```dart +final filter = Filter.and([ + Filter.equal('type', 'messaging'), + Filter.in_('members', [user.id]) +]) +``` + +#### Filter.or + +Combines the provided filters and matches the values matched by at least one of the filters. + +```dart +final filter = Filter.or([ + Filter.in_('bannedUsers', [user.id]), + Filter.in_('shadowBannedUsers', [user.id]) +]) +``` + +#### Filter.nor + +Combines the provided filters and matches the values not matched by all the filters. + +```dart +final filter = Filter.nor([ + Filter.in_('bannedUsers', [user.id]), + Filter.in_('shadowBannedUsers', [user.id]) +]) +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/user_token_generation_with_firebase_auth.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/user_token_generation_with_firebase_auth.mdx new file mode 100644 index 00000000..56192f53 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/guides/user_token_generation_with_firebase_auth.mdx @@ -0,0 +1,448 @@ +--- +id: token_generation_with_firebase +sidebar_position: 5 +title: User Token Generation With Firebase Auth and Cloud Functions +--- + +Securely generate Stream Chat user tokens using Firebase Authentication and Cloud Functions. + +:::note +This guide assumes that you are familiar with Firebase Authentication and Cloud Functions for Flutter and using the Flutter Stream Chat SDK. +::: + +### Introduction + +In this guide, you'll explore how you can use Firebase Auth as an authentication provider and create Firebase Cloud functions to securely +generate Stream Chat user tokens. + +You will use Stream's [NodeJS client](https://getstream.io/chat/docs/node/?language=javascript) for Stream account creation and +token generation, and [Flutter Cloud Functions for Firebase](https://firebase.flutter.dev/docs/functions/overview) to invoke the cloud functions +from your Flutter app. + +Stream supports several different [backend clients](https://getstream.io/chat/sdk/#backend-clients) to integrate with your server. This guide only shows an easy way to integrate Stream Chat authentication using Firebase and Flutter. + +### Flutter Firebase + +See the [Flutter Firebase getting started](https://firebase.flutter.dev/docs/overview) docs for setup and installation instructions. + +You will also need to add the [Flutter Firebase Authentication](https://firebase.flutter.dev/docs/auth/overview), and [Flutter Firebase Cloud Functions](https://firebase.flutter.dev/docs/functions/overview) packages to your app. Depending on the platform that you target, there may be specific configurations that you need to do. + +#### Starting Code + +The following code shows a basic application with **FirebaseAuth** and **FirebaseFunctions**. + +You will extend this later to execute cloud functions. + +```dart +import 'package:cloud_functions/cloud_functions.dart'; +import 'package:firebase_core/firebase_core.dart'; +import 'package:firebase_auth/firebase_auth.dart'; +import 'package:flutter/material.dart'; +import 'dart:async'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + await Firebase.initializeApp(); + runApp(MyApp()); +} + +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + body: Auth(), + ), + ); + } +} + +class Auth extends StatefulWidget { + Auth({Key? key}) : super(key: key); + + @override + _AuthState createState() => _AuthState(); +} + +class _AuthState extends State { + late FirebaseAuth auth; + late FirebaseFunctions functions; + + @override + void initState() { + super.initState(); + auth = FirebaseAuth.instance; + functions = FirebaseFunctions.instance; + } + + final email = 'test@getstream.io'; + final password = 'password'; + + Future createAccount() async { + // Create Firebase account + await auth.createUserWithEmailAndPassword(email: email, password: password); + print('Firebase account created'); + } + + Future signIn() async { + // Sign in with Firebase + await auth.signInWithEmailAndPassword(email: email, password: password); + print('Firebase signed in'); + } + + Future signOut() async { + // Revoke Stream chat token. + final callable = functions.httpsCallable('revokeStreamUserToken'); + await callable(); + print('Stream user token revoked'); + } + + @override + Widget build(BuildContext context) { + return Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + AuthenticationState( + streamUser: auth.authStateChanges(), + ), + ElevatedButton( + onPressed: createAccount, + child: Text('Create account'), + ), + ElevatedButton( + onPressed: signIn, + child: Text('Sign in'), + ), + ElevatedButton( + onPressed: signOut, + child: Text('Sign out'), + ), + ], + ), + ); + } +} + +class AuthenticationState extends StatelessWidget { + const AuthenticationState({ + Key? key, + required this.streamUser, + }) : super(key: key); + + final Stream streamUser; + + @override + Widget build(BuildContext context) { + return StreamBuilder( + stream: streamUser, + builder: (context, snapshot) { + if (snapshot.hasData) { + return (snapshot.data != null) + ? Text('Authenticated') + : Text('Not Authenticated'); + } + return Text('Not Authenticated'); + }, + ); + } +} + +``` + +Running the above will give this: + +![](../assets/authentication_demo_app.jpg) + +The `Auth` widget handles all of the authentication logic. It initializes a `FirebaseAuth.instance` and uses that +in the `createAccount`, `signIn` and `signOut` methods. There is a button to envoke each of these methods. + +The `FirebaseFunctions.instance` will be used later in this guide. + +The `AuthenticationState` widget listens to `auth.authStateChanges()` to display a message +indicating if a user is authenticated. + +### Firebase Cloud Functions + +Firebase Cloud Functions allows you to extend Firebase with custom operations that an event can trigger: +- **Internal event**: For example, when creating a new Firebase account this is automatically triggered. +- **External event**: For example, directly calling a cloud function from your Flutter application. + +To set up your local environment to deploy cloud functions, please see the +[Cloud Functions getting started](https://firebase.flutter.dev/docs/overview) docs. + +After initializing your project with cloud functions, you should have a **functions** folder in your project, including a `package.json` file. + +There should be two dependencies already added, **firebase-admin** and **firebase-functions**. You will also need to add the **stream-chat** dependency. + +Navigate to the **functions** folder and run `npm install stream-chat --save-prod`. + +This will install the node module and add it as a dependency to `package.json`. + +Now open `index.js` and add the following (this is the complete example): + +```js +const StreamChat = require('stream-chat').StreamChat; +const functions = require("firebase-functions"); +const admin = require("firebase-admin"); + +admin.initializeApp(); + +const serverClient = StreamChat.getInstance(functions.config().stream.key, functions.config().stream.secret); + + +// When a user is deleted from Firebase their associated Stream account is also deleted. +exports.deleteStreamUser = functions.auth.user().onDelete((user, context) => { + return serverClient.deleteUser(user.uid); +}); + +// Create a Stream user and return auth token. +exports.createStreamUserAndGetToken = functions.https.onCall(async (data, context) => { + // Checking that the user is authenticated. + if (!context.auth) { + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + + 'while authenticated.'); + } else { + try { + // Create user using the serverClient. + await serverClient.upsertUser({ + id: context.auth.uid, + name: context.auth.token.name, + email: context.auth.token.email, + image: context.auth.token.image, + }); + + /// Create and return user auth token. + return serverClient.createToken(context.auth.uid); + } catch (err) { + console.error(`Unable to create user with ID ${context.auth.uid} on Stream. Error ${err}`); + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('aborted', "Could not create Stream user"); + } + } +}); + +// Get Stream user token. +exports.getStreamUserToken = functions.https.onCall((data, context) => { + // Checking that the user is authenticated. + if (!context.auth) { + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + + 'while authenticated.'); + } else { + try { + return serverClient.createToken(context.auth.uid); + } catch (err) { + console.error(`Unable to get user token with ID ${context.auth.uid} on Stream. Error ${err}`); + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('aborted', "Could not get Stream user"); + } + } +}); + +// Revoke the authenticated user's Stream chat token. +exports.revokeStreamUserToken = functions.https.onCall((data, context) => { + // Checking that the user is authenticated. + if (!context.auth) { + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + + 'while authenticated.'); + } else { + try { + return serverClient.revokeUserToken(context.auth.uid); + } catch (err) { + console.error(`Unable to revoke user token with ID ${context.auth.uid} on Stream. Error ${err}`); + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('aborted', "Could not get Stream user"); + } + } +}); + +``` + +First, you import the necessary packages and call `admin.initializeApp();` to set up Firebase cloud functions. + +Next, you initialize the **StreamChat** server client by calling `StreamChat.getInstance`. This function requires your Stream app's +**token** and **secret**. You can get this from the Stream Dashboard for your app. + +Set these values as environment data on Firebase Functions. + +```bash + firebase functions:config:set stream.key="app-key" stream.secret="app-secret" +``` + +*Replace **app-key** and **app-secret** with the values for your Stream app.* + +This creates an object of **stream** with properties **key** and **secret**. To access this environment +data use `functions.config().stream.key` and `functions.config().stream.secret`. + +See the [Firebase environment configuration](https://firebase.google.com/docs/functions/config-env) +documentation for additional information. + +To deploy these functions to Firebase, run: + +```bash +firebase deploy --only functions +``` + +### Create a Stream User and Get the User's Token + +In the `createStreamUserAndGetToken` cloud function you create an `onCall` HTTPS handler, which exposes +a cloud function that can be envoked from your Flutter app. + +```js +// Create a Stream user and return auth token. +exports.createStreamUserAndGetToken = functions.https.onCall(async (data, context) => { + // Checking that the user is authenticated. + if (!context.auth) { + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('failed-precondition', 'The function must be called ' + + 'while authenticated.'); + } else { + try { + // Create user using the serverClient. + await serverClient.upsertUser({ + id: context.auth.uid, + name: context.auth.token.name, + email: context.auth.token.email, + image: context.auth.token.image, + }); + + /// Create and return user auth token. + return serverClient.createToken(context.auth.uid); + } catch (err) { + console.error(`Unable to create user with ID ${context.auth.uid} on Stream. Error ${err}`); + // Throwing an HttpsError so that the client gets the error details. + throw new functions.https.HttpsError('aborted', "Could not create Stream user"); + } + } +}); +``` + +This function first does a check to see that the client that calls it is authenticated, +by ensuring that `context.auth` is not null. If it is null, then it throws an `HttpsError` with a descriptive +message. This error can be caught in your Flutter application. + +If the caller is authenticated the function proceeds to use the `serverClient` to create a new Stream Chat +user by calling the `upsertUser` method and passing in some user data. It uses the authenticated caller's **uid** as an **id**. + +After the user is created it generates a token for that user. This token is then returned to the caller. + +To call this from Flutter, you will need to use the `cloud_functions` package. + +Update the **createAccount** method in your Flutter code to the following: + +```dart +Future createAccount() async { + // Create Firebase account + await auth.createUserWithEmailAndPassword(email: email, password: password); + print('Firebase account created'); + + // Create Stream user and get token + final callable = functions.httpsCallable('createStreamUserAndGetToken'); + final results = await callable(); + print('Stream account created, token: ${results.data}'); +} +``` + +Calling this method will do the following: +1. Create a new Firebase User and authenticate that user. +2. Call the `createStreamUserAndGetToken` cloud function and get the Stream user token for the authenticated user. + +As you can see, calling a cloud function is easy and will also send all the necessary user authentication information (such as the UID) +in the request. + +Once you have the Stream user token, you can authenticate your Stream Chat user as you normally would. + +Please see our [initialization documention](https://getstream.io/chat/docs/flutter-dart/init_and_users/?language=dart) for more information. + +As you can see below, the User ID matches on both Firebase's and Stream's user database. + +##### Firebase Authentication Database + +![Firebase Auth Database with new user created](../assets/firebase_authentication_dashboard.jpg) + +##### Stream Chat User Database + +![Stream chat user database new account created](../assets/stream_chat_user_database.jpg) + + +### Get the Stream User Token + +The `getStreamUserToken` cloud function is very similar to the `createStreamUserAndGetToken` function. The only difference is +that it only creates a user token and does not create a new user account on Stream. + +Update the **signIn** method in your Flutter code to the following: + +```dart +Future signIn() async { + // Sign in with Firebase + await auth.signInWithEmailAndPassword(email: email, password: password); + print('Firebase signed in'); + + // Get Stream user token + final callable = functions.httpsCallable('getStreamUserToken'); + final results = await callable(); + print('Stream user token retrieved: ${results.data}'); +} +``` + +Calling this method will do the following: +1. Sign in using Firebase Auth. +2. Call the `getStreamUserToken` cloud function to get a Stream user token. + +:::note +The user needs to be authenticated to call this cloud function. Otherwise, the function will throw +the **failed-precondition** error that you specified. +::: + +### Revoke Stream User Token + +You may also want to revoke the Stream user token if you sign out from Firebase. + +Update the `signOut` method in your Flutter code to the following: + +```dart +Future signOut() async { + // Revoke Stream user token. + final callable = functions.httpsCallable('revokeStreamUserToken'); + await callable(); + print('Stream user token revoked'); + + // Sign out Firebase. + await auth.signOut(); + print('Firebase signed out'); +} +``` +:::note +Call the cloud function before signing out from Firebase. +::: + +### Delete Stream User + +When deleting a Firebase user account, it would make sense also to delete the +associated Stream user account. + +The cloud function looks like this: + +```js +// When a user is deleted from Firebase their associated Stream account is also deleted. +exports.deleteStreamUser = functions.auth.user().onDelete((user, context) => { + return serverClient.deleteUser(user.uid); +}); +``` + +In this function, you are listening to delete events on Firebase auth. When an account is deleted, this function will be triggered, and you can get the +user's **uid** and call the `deleteUser` method on the `serverClient`. + +This is not an external cloud function; it can only be triggered when an +account is deleted. + +### Conclusion + +In this guide, you have seen how to securely create Stream Chat tokens using +Firebase Authentication and Cloud Functions. + +The principles shown in this guide can be applied to your preferred authentication +provider and cloud architecture of choice. \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/_category_.json b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/_category_.json new file mode 100644 index 00000000..242afb7b --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Stream Chat Flutter", + "position": 3 +} \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_header.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_header.mdx new file mode 100644 index 00000000..bf65a863 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_header.mdx @@ -0,0 +1,84 @@ +--- +id: channel_header +sidebar_position: 10 +title: ChannelHeader +--- + +A Widget To Display Common Channel Details + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/ChannelHeader-class.html) + +![](../assets/channel_header.png) + +### Background + +When a user opens a channel, it is helpful to provide context of which channel they are in. This may +be in the form of a channel name or the users in the channel. Along with that, there also needs to be +a way for the user to look at more details of the channel (media, pinned messages, actions, etc.) and +preferably also a way to navigate back to where they came from. + +To encapsulate all of this functionality into one widget, the Flutter SDK contains a `ChannelHeader` +widget which provides these out of the box. + +### Basic Example + +Let's just add a `ChannelHeader` to a page with a `MessageListView` and a `MessageInput` to display +and send messages. + +```dart +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: ChannelHeader(), + body: Column( + children: [ + Expanded( + child: MessageListView( + threadBuilder: (_, parentMessage) { + return ThreadPage( + parent: parentMessage, + ); + }, + ), + ), + MessageInput(), + ], + ), + ); + } +} +``` + +### Customizing Parts Of The Header + +The header works like a `ListTile` widget. + +Use the `title`, `subtitle`, `leading`, or `actions` parameters to substitute the widgets for your own. + +```dart +//... +ChannelHeader( + title: Text('My Custom Name'), +), +``` + +![](../assets/channel_header_custom_title.png) + +### Showing Connection State + +The `ChannelHeader` can also display connection state below the tile which shows the user if they +are connected or offline, etc. on connection events. + +To enable this, use the `showConnectionStateTile` property. + +```dart +//... +ChannelHeader( + showConnectionStateTile: true, +), +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_header.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_header.mdx new file mode 100644 index 00000000..d6930cb4 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_header.mdx @@ -0,0 +1,88 @@ +--- +id: channel_list_header +sidebar_position: 9 +title: ChannelListHeader +--- + +A Header Widget For A List Of Channels + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/ChannelListHeader-class.html) + +![](../assets/channel_list_header.png) + +### Background + +A common pattern for most messaging apps is to show a list of Channels (chats) on the first screen +and navigate to an individual one on being clicked. On this first page where the list of channels are +displayed, it is usual to have functionality such as adding a new chat, display the user logged in, etc. + +To encapsulate all of this functionality into one widget, the Flutter SDK contains a `ChannelListHeader` +widget which provides these out of the box. + +### Basic Example + +This is a basic example of a page which has a `ChannelListView` and a `ChannelListHeader` to recreate a +common Channels Page. + +```dart +class DemoPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: ChannelListHeader(), + body: ChannelsBloc( + child: ChannelListView( + filter: Filter.in_('members', [StreamChat.of(context).user.id]), + sort: [SortOption('last_message_at')], + pagination: PaginationParams( + limit: 20, + ), + channelWidget: ChannelPage(), + ), + ), + ); + } +} +``` + +### Customizing Parts Of The Header + +The header works like a `ListTile` widget. + +Use the `titleBuilder`, `subtitle`, `leading`, or `actions` parameters to substitute the widgets for your own. + +```dart +//... +ChannelListHeader( + subtitle: Text('My Custom Subtitle'), +), +``` + +![](../assets/channel_list_header_custom_subtitle.png) + +The `titleBuilder` param helps you build different titles depending on the connection state: + +```dart +//... +ChannelListHeader( + titleBuilder: (context, status, client) { + switch(status) { + /// Return your title widget + } + }, +), +``` + +### Showing Connection State + +The `ChannelListHeader` can also display connection state below the tile which shows the user if they +are connected or offline, etc. on connection events. + +To enable this, use the `showConnectionStateTile` property. + +```dart +//... +ChannelListHeader( + showConnectionStateTile: true, +), +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_view.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_view.mdx new file mode 100644 index 00000000..eb7baf20 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/channel_list_view.mdx @@ -0,0 +1,111 @@ +--- +id: channel_list_view +sidebar_position: 4 +title: ChannelListView +--- + +A Widget For Displaying A List Of Channels + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/ChannelListView-class.html) + +![](../assets/channel_list_view.png) + +### Background + +Channels are fundamental elements of Stream Chat and constitute shared spaces which allow users to +message each other. + +1:1 conversations and groups are both examples of channels, albeit with some (distinct/non-distinct) +differences. Displaying the list of channels that a user is a part of is a pattern present in most messaging apps. + +The `ChannelListView` widget allows displaying a list of channels to a user. By default, this is NOT +ONLY the channels that the user is a part of. This section goes into setting up and using a `ChannelListView` +widget. + +### Basic Example + +Here is a basic example of the `ChannelListView` widget. It consists of the main widget itself, a `Filter` +to filter only the channels that the user is a part of, sorting by last message time, pagination params, +and the widget to use when a particular channel is clicked. + +```dart +class ChannelListPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: ChannelsBloc( + child: ChannelListView( + filter: Filter.in_('members', [StreamChat.of(context).user.id]), + sort: [SortOption('last_message_at')], + pagination: PaginationParams( + limit: 20, + ), + channelWidget: ChannelPage(), + ), + ), + ); + } +} +``` + +This example by default displays the channels that a user is a part of. Now let's look at customizing +the widget. + +### Customizing the Channel Preview + +A common aspect of the widget needed to be tweaked according to each app is the Channel Preview (the +Channel tile in the list). To do this, we use the `channelPreviewBuilder` param like this: + +```dart +ChannelListView( + ... + channelPreviewBuilder: (context, channel) { + return ListTile( + tileColor: Colors.amberAccent, + title: Center( + child: ChannelName(), + ), + ); + }, +), +``` + +Which gives you a new Channel preview in the list: + +![](../assets/channel_preview.png) + +### Adding Swipe Actions + +To add actions (such as delete, more info, etc) when Channel preview is swiped left, set the `swipeToAction` +parameter to `true`. + +```dart +ChannelListView( + ... + swipeToAction: true, +), +``` + +This adds two basic actions - info and delete: + +![](../assets/swipe_channel.png) + +To add custom actions of your own, use the `swipeActions` param: + +```dart +ChannelListView( + ... + swipeToAction: true, + swipeActions: [ + SwipeAction( + color: Colors.blue, + iconWidget: Icon(Icons.add), + onTap: (channel) { + // Things to do on icon tap + }, + ), + // Other actions here + ] +), +``` + diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/introduction.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/introduction.mdx new file mode 100644 index 00000000..28640483 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/introduction.mdx @@ -0,0 +1,18 @@ +--- +id: introduction +sidebar_position: 1 +title: Introduction +--- + +Understanding The UI Package Of The Flutter SDK + +### What function does `stream_chat_flutter` serve? + +The UI SDK (`stream_chat_flutter`) contains official Flutter components for Stream Chat, a service for building chat applications. + +While the Stream Chat service provides the backend for messaging and the LLC provides an easy way to +use it in your Flutter apps, we wanted to make sure that adding Chat functionality to your app was as quick as possible. + +The UI package is built on top of the low-level client and the core package and allows you to build a +full fledged app with either the inbuilt components, modify existing components, or easily add widgets +of your own to match your app's style better. diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_input.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_input.mdx new file mode 100644 index 00000000..f33f85e9 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_input.mdx @@ -0,0 +1,170 @@ +--- +id: message_input +sidebar_position: 6 +title: MessageInput +--- + +A Widget Dealing With Everything Related To Sending A Message + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageInput-class.html) + +![](../assets/message_input.png) + +### Background + +In Stream Chat, we can send messages in a channel. However, sending a message isn't as simple as adding +a `TextField` and logic for sending a message. It involves additional processes like addition of media, +quoting a message, adding a custom command like a GIF board, and much more. Moreover, most apps also +need to customize the input to match their theme, overall color and structure pattern, etc. + +To do this, we created a `MessageInput` widget which abstracts all expected functionality a modern input +needs - and allows you to use it out of the box. + +### Basic Example + +A `StreamChannel` is required above the widget tree in which the `MessageInput` is rendered since the channel is +where the messages sent actually go. Let's look at a common example of how we could use the `MessageInput`: + +```dart +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: ChannelHeader(), + body: Column( + children: [ + Expanded( + child: MessageListView( + threadBuilder: (_, parentMessage) { + return ThreadPage( + parent: parentMessage, + ); + }, + ), + ), + MessageInput(), + ], + ), + ); + } +} +``` + +It is common to put this widget in the same page of a `MessageListView` as the bottom widget. + +### Quoting A Message + +The quoting functionality allows us to 'reply' to a specific message without creating a thread out of it. +It adds the other message as context when sending a message and also displays it above the sent message. + +To quote a message, we provide a `quotedMessage` to the `MessageInput`. + +```dart +Message? message; + +// ... +MessageInput( + quotedMessage: message, +), +``` + +This will add the message given above the message about to be sent. + +While you can implement your own functionality to select which message to reply to, the `MessageListView` +widget helps in this case since it has an inbuilt `onMessageSwiped` callback which we can use. + +```dart + +class ChannelPage extends StatefulWidget { + @override + _ChannelPageState createState() => _ChannelPageState(); +} + +class _ChannelPageState extends State { + Message? quotedMessage; + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + Expanded( + child: MessageListView( + // ... + onMessageSwiped: (message) { + setState(() { + quotedMessage = message; + }); + }, + ), + ), + MessageInput( + quotedMessage: _quotedMessage, + onQuotedMessageCleared: () { + setState(() => _quotedMessage = null); + }, + ), + ], + ), + ); + } +} +``` + +![](../assets/message_input_quoted_message.png) + +### Adding Custom Actions + +By default, the `MessageInput` has two actions: one for attachments and one for commands like Giphy. +To add your own action, we use the `actions` parameter like this: + +```dart +MessageInput( + actions: [ + InkWell( + child: Icon( + Icons.location_on, + size: 20.0, + color: StreamChatTheme.of(context).colorTheme.grey, + ), + onTap: () { + // Do something here + }, + ), + ], +), +``` + +This will add on your action to the existing ones. + +### Disable Attachments + +To disable attachments being added to the message, set the `disableAttachments` parameter to true. + +```dart +MessageInput( + disableAttachments: true, +), +``` + +### Changing Position Of MessageInput Components + +You can also change the position of the TextField, actions and 'send' button relative to each other. + +To do this, use the `actionsLocation` or `sendButtonLocation` parameters which help you decide the location +of the buttons in the input. + +For example, if we want the actions on the right and the send button inside the TextField, we can do: + +```dart +MessageInput( + sendButtonLocation: SendButtonLocation.inside, + actionsLocation: ActionsLocation.right, +), +``` + +![](../assets/message_input_change_position.png) diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_list_view.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_list_view.mdx new file mode 100644 index 00000000..0ac78f7d --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_list_view.mdx @@ -0,0 +1,115 @@ +--- +id: message_list_view +sidebar_position: 5 +title: MessageListView +--- + +A Widget For Displaying A List Of Messages + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageListView-class.html) + +![](../assets/message_list_view.png) + +### Background + +Every channel can contain a list of messages sent by users inside it. The `MessageListView` widget +displays the list of messages inside a particular channel along with possible attachments and +other message attributes (if the message is pinned for example). This sets it apart from the `MessageSearchListView` +which may not contain messages only from a single channel and is used to search for messages across +many. + +### Basic Example + +The `MessageListView` shows the list of messages of the current channel. It has inbuilt support for +common messaging functionality: displaying and editing messages, adding / modifying reactions, support +for quoting messages, pinning messages, and more. + +An example of how you can use the MessageListView is: + +```dart +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: ChannelHeader(), + body: Column( + children: [ + Expanded( + child: MessageListView( + threadBuilder: (_, parentMessage) { + return ThreadPage( + parent: parentMessage, + ); + }, + ), + ), + MessageInput(), + ], + ), + ); + } +} +``` + +### Enable Threads + +Threads are made of a parent message and replies linked to it. To enable threading, the SDK requires you +to supply a `threadBuilder` which will supply the page when the thread is clicked. + +```dart +MessageListView( + threadBuilder: (_, parentMessage) { + return ThreadPage( + parent: parentMessage, + ); + }, +), +``` + +![](../assets/message_list_view_threads.png) + +The `MessageListView` itself can render the thread by supplying the `parentMessage` parameter. + +```dart +MessageListView( + parentMessage: parent, +), +``` + +### Building Custom Messages + +You can also supply your own implementation for displaying messages using the `messageBuilder` parameter. + +:::note +To customize the existing implementation, look at the `MessageWidget` documentation instead. +::: + +```dart +MessageListView( + messageBuilder: (context, details, messageList, defaultImpl) { + // Your implementation of the message here + // E.g: return Text(details.message.text ?? ''); + }, +), +``` + +### Enabling Message Pinning + +Message pins save and highlight the message in the `MessageListView`. To enable users to pin the message, +make sure the pin permissions are granted for different types of users on the dashboard. After confirming +the appropriate users have permissions, add the user types in the `pinPermissions` parameter. + +```dart +MessageListView( + //... + pinPermissions: ['admin', 'userType1', 'userType2'], +), +``` + +This will allow these user types to pin messages through the message actions modal. + +![](../assets/message_list_view_pin.png) diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_search_list_view.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_search_list_view.mdx new file mode 100644 index 00000000..39bf2d9e --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_search_list_view.mdx @@ -0,0 +1,62 @@ +--- +id: message_search_list_view +sidebar_position: 8 +title: MessageSearchListView +--- + +A Widget To Search For Messages Across Channels + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageSearchListView-class.html) + +![](../assets/message_search_list_view.png) + +### Background + +Users in Stream Chat can have several channels and it can get hard to remember which channel has the +message they are searching for. As such, there needs to be a way to search for a message across multiple +channels. This is where `MessageSearchListView` comes in. + +### Basic Example + +While the MessageListView is tied to a certain `StreamChannel`, a `MessageSearchListView` is not. + +```dart +class MessageSearchPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: MessageSearchBloc( + child: MessageSearchListView( + filters: Filter.in_('members', [StreamChat.of(context).user!.id],), + messageQuery: 'your query here', + limit: 20, + ), + ), + ); + } +} +``` + +### Customize The Result Tiles + +You can use your own widget for the result items using the `itemBuilder` parameter. + +```dart +MessageSearchListView( + // ... + itemBuilder: (context, response) { + return Text(response.message.text); + }, +), +``` + +### Show Result Count + +You show the number of results via the `showResultCount` parameter. + +```dart +MessageSearchListView( + // ... + showResultCount: true, +), +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_widget.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_widget.mdx new file mode 100644 index 00000000..5060bcac --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/message_widget.mdx @@ -0,0 +1,98 @@ +--- +id: message_widget +sidebar_position: 11 +title: MessageWidget +--- + +A Widget For Displaying Messages And Attachments + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageWidget-class.html) + +### Background + +There are several things that need to be displayed with text in a message in a modern messaging app: +attachments, highlights if the message is pinned, user avatars of the sender, etc. + +To encapsulate all of this functionality into one widget, the Flutter SDK contains a `MessageWidget` +widget which provides these out of the box. + +### Basic Example (Modifying `MessageWidget` in `MessageListView`) + +Primarily, the `MessageWidget` is used in the `MessageListView`. To customize only a few properties +of the `MessageWidget` without supplying all other properties, the `messageBuilder` builder supplies +a default implementation of the widget for us to modify. + +```dart +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: MessageListView( + messageBuilder: (context, details, messageList, defaultMessageWidget) { + return defaultMessageWidget.copyWith( + showThreadReplyIndicator: false, + ); + }, + ), + + ); + } +} +``` + +### Building A Custom Attachment + +When a custom attachment type (location, audio, etc.) is sent, the MessageWidget also needs to know +how to build it. For this purpose, we can use the `customAttachmentBuilders` parameter. + +As an example, if a message has a attachment type 'location', we do: + +```dart +MessageWidget( + //... + customAttachmentBuilders: { + 'location': (context, message, attachments) { + var attachmentWidget = Image.network( + _buildMapAttachment( + attachments[0].extraData['latitude'], + attachments[0].extraData['longitude'], + ), + ); + + return wrapAttachmentWidget(context, attachmentWidget, null, true, BorderRadius.circular(8.0)); + } + }, +) +``` + +You can also override the builder for existing attachment types like `image` and `video`. + +### Show User Avatar For Messages + +You can decide to show, hide, or remove user avatars of the sender of the message. To do this, set +the `showUserAvatar` property like this: + +```dart +MessageWidget( + //... + showUserAvatar = DisplayWidget.show, +) +``` + +### Reverse the message + +In most cases, `MessageWidget` needs to be a different orientation depending upon if the sender is the +user or someone else. + +For this, we use the `reverse` parameter to change the orientation of the message: + +```dart +MessageWidget( + //... + reverse = true, +) +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/setup.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/setup.mdx new file mode 100644 index 00000000..22e5c6c5 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/setup.mdx @@ -0,0 +1,48 @@ +--- +id: setup +sidebar_position: 2 +title: Setup +--- + +Understanding Setup For `stream_chat_flutter` + +### Add pub.dev dependency + +First, you need to add the `stream_chat_flutter` dependency to your `pubspec.yaml`. + +You can either run this command: + +```shell +flutter pub add stream_chat_flutter +``` + +OR + +Add this line in the dependencies section of your pubspec.yaml after substituting latest version: + +```yaml +dependencies: + stream_chat_flutter: ^latest_version +``` + +You can find the package details on [pub.dev](https://pub.dev/packages/stream_chat_flutter). + +### Details On Platform Support + +`stream_chat_flutter` was originally created for Android and iOS mobile platforms. As Flutter matured, +support for additional platforms was added and the package now has experimental support for web and desktop as +[detailed here](https://getstream.io/blog/announcing-experimental-multi-platform-support-for-the-stream-flutter-sdk/). + +However, platforms other than mobile may have additional constraints due to not supporting all plugins, +which will be addressed by the respective plugin creators over time. + +### Setup: iOS + +The library uses [flutter file picker plugin](https://github.com/miguelpruivo/flutter_file_picker) to pick files from the os. +Follow [this wiki](https://github.com/miguelpruivo/flutter_file_picker/wiki/Setup#ios) to fulfill iOS requirements. + +We also use [video_player](https://pub.dev/packages/video_player) to reproduce videos. +Follow [this guide](https://pub.dev/packages/video_player#installation) to fulfill the requirements. + +To pick images from the camera, we use the [image_picker](https://pub.dev/packages/image_picker) plugin. +Follow [these instructions](https://pub.dev/packages/image_picker#ios) to check the requirements. diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/stream_chat_and_theming.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/stream_chat_and_theming.mdx new file mode 100644 index 00000000..d527b738 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/stream_chat_and_theming.mdx @@ -0,0 +1,71 @@ +--- +id: stream_chat_and_theming +sidebar_position: 3 +title: StreamChat And Theming +--- + +Understanding How To Customize Widgets Using `StreamChatTheme` + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChatTheme-class.html) and [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChatThemeData-class.html) + +### Background + +Stream's UI SDK makes it easy for developers to add custom styles and attributes to our widgets. Like most Flutter frameworks, Stream exposes a dedicated widget for theming. + +Using `StreamChatTheme`, users can customize most aspects of our UI widgets by setting attributes using `StreamChatThemeData`. + +Similar to the `Theme` and `ThemeData` in Flutter, Stream Chat uses a top level [inherited widget](https://api.flutter.dev/flutter/widgets/InheritedWidget-class.html) to provide theming information throughout your application. This can be optionally set at the top of your application tree or at a localized point in your widget sub-tree. + +If you'd like to customize the look and feel of Stream chat across your entire application, we recommend setting your theme at the top level. Conversely, users can customize specific screens or widgets by wrapping components in a `StreamChatTheme`. + +### A closer look at StreamChatThemeData + +Looking at the constructor for `StreamChatThemeData`, we can see the full list of properties and widgets available for customization. + +Some high-level properties such as `textTheme` or `colorTheme` can be set application-wide directly from this class. In contrast, larger components such as `ChannelHeader`, `MessageInputs`, etc. have been broken up into smaller theme objects. + +```dart +factory StreamChatThemeData({ + Brightness? brightness, + TextTheme? textTheme, + ColorTheme? colorTheme, + ChannelListHeaderTheme? channelListHeaderTheme, + ChannelPreviewTheme? channelPreviewTheme, + ChannelTheme? channelTheme, + MessageTheme? otherMessageTheme, + MessageTheme? ownMessageTheme, + MessageInputTheme? messageInputTheme, + Widget Function(BuildContext, Channel)? defaultChannelImage, + Widget Function(BuildContext, User)? defaultUserImage, + IconThemeData? primaryIconTheme, + List? reactionIcons, + }); +``` + +### Stream Chat Theme in use + +Let's take a look at customizing widgets using `StreamChatTheme`. In the example below, we can change the default color theme to yellow and override the channel header's typography and colors. + +```dart +builder: (context, child) => StreamChat( + client: client, + child: child, + streamChatThemeData: StreamChatThemeData( + colorTheme: ColorTheme.light( + primaryAccent: const Color(0xffffe072), + ), + channelTheme: ChannelTheme( + channelHeaderTheme: ChannelHeaderTheme( + color: const Color(0xffd34646), + title: TextStyle( + color: Colors.white, + ), + ), + ), + ), + ), +``` + +We are creating this class at the very top of our widget tree using the `streamChatThemeData` parameter found in the `StreamChat` widget. + +![](../assets/using_theme.jpg) diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/user_list_view.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/user_list_view.mdx new file mode 100644 index 00000000..61dfbeb4 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter/user_list_view.mdx @@ -0,0 +1,88 @@ +--- +id: user_list_view +sidebar_position: 7 +title: UserListView +--- + +A Widget For Displaying And Selecting Users + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/UserListView-class.html) + +![](../assets/user_list_view.png) + +### Background + +A list of users is required for many different purposes: showing a list of users in a Channel, +selecting users to add in a channel, etc. The `UserListView` displays and allows selection of a list +of users along with multiple display configurations like a list and grid. + +### Basic Example + +Let's take a look at an example where we use the widget to autocomplete user names: + +```dart +class UsersListPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: UsersBloc( + child: UsersListView( + filter: Filter.notEqual('id', StreamChat.of(context).user!.id), + sort: [ + SortOption( + 'name', + direction: 1, + ), + ], + pagination: PaginationParams( + limit: 25, + ), + ), + ), + ); + } +} +``` + +### Customize The User Items + +You can use your own widget for the user items using the `userItemBuilder` parameter. + +```dart +UsersListView( + // ... + userItemBuilder: (context, user, isSelected) { + return Text(user.name); + }, +), +``` + +### Group Alphabetically + +You can group alphabetically using the `groupAlphabetically` parameter: + +```dart +UsersListView( + //... + groupAlphabetically: true, +), +``` + +### Selecting Users + +The `UserListView` widget allows selecting users in a list by supplying a selected users list and callbacks +for when user items are tapped. + +```dart +Set? selectedUsers = {}; + +UsersListView( + //... + selectedUsers: selectedUsers, + onUserTap: (user, _) { + setState(() { + selectedUsers.add(user); + }); + }, +), +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/_category_.json b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/_category_.json new file mode 100644 index 00000000..8d738e89 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Stream Chat Flutter Core", + "position": 4 +} \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channel_list_core.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channel_list_core.mdx new file mode 100644 index 00000000..4196a14c --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channel_list_core.mdx @@ -0,0 +1,68 @@ +--- +id: channel_list_core +sidebar_position: 4 +title: ChannelListCore +--- + +A Widget For Building A List Of Channels + +### Background + +The UI SDK of Stream Chat supplies a `ChannelListView` class that builds a list of channels fetching +according to the filters and sort order given. However, in some cases, implementing novel UI is necessary +that cannot be done using the customization approaches given in the widget. + +To do this, we extracted the logic required for fetching channels into a 'Core' widget - a widget that +fetches channels in the expected way via the usual params but does not supply any UI and instead +exposes builders to build the UI in situations such as loading, empty data, errors, and on data received. + +### Basic Example + +`ChannelListCore` is a simplified class that allows fetching a list of +channels while exposing UI builders. + +This allows you to construct your own UI while not having to +worry about the specific logic of fetching channels in your app. + +A `ChannelListController` is used to reload and paginate data. + +```dart +class ChannelListPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: ChannelListCore( + filter: Filter.in_( + 'members', + [StreamChat.of(context).user!.id], + ), + sort: [SortOption('last_message_at')], + pagination: PaginationParams( + limit: 20, + ), + errorBuilder: (context, err) { + return Center( + child: Text('An error has occured'), + ); + }, + emptyBuilder: (context) { + return Center( + child: Text('Nothing here...'), + ); + }, + loadingBuilder: (context) { + return Center( + child: CircularProgressIndicator(), + ); + }, + listBuilder: (context, list) { + return ChannelPage(list); + } + ), + ); + } +} +``` + +Make sure to have a `StreamChatCore` ancestor in order to provide the +information about the channels. \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channels_bloc.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channels_bloc.mdx new file mode 100644 index 00000000..3cb1728a --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/channels_bloc.mdx @@ -0,0 +1,90 @@ +--- +id: channels_bloc +sidebar_position: 7 +title: ChannelsBloc +--- + +A Widget Dedicated To The Management Of A Channel List With Pagination. + +### Background + +Most widgets in the Core SDK are focused on fetching a particular type of object from Stream Chat - channels, +messages, users, etc. The BLoC widgets bundle up the base functions used to fetch data as well as the current +data fetched by the respective functions. Furthermore, the Core widgets use this BLoC to fetch new or +existing data and build UI based on it. + +All Core and UI widgets which focus on fetching a list of objects need to have their respective functions +above them in the widget tree. The ChannelListCore and ChannelListView require the ChannelsBloc +above them in the widget hierarchy without which they will fail. + +### Understanding The Widget + +`ChannelsBloc` is used together with `ChannelListCore` to manage a list of +Channels with pagination, re-ordering, querying and other operations +associated with Channels. + +`ChannelsBloc` can be accessed at anytime by using the static `.of` method +using Flutter's `BuildContext`. + +```dart +var _channelsBloc = ChannelsBloc.of(context); +``` + +The `ChannelsBloc` widget encapsulates common functionality related to channel lists such as fetching +the existing channels and querying new channels and also supplies them down the widget tree. + +The widget is required for the respective core widget (`ChannelListCore`) to fetch channels and hence +must be above the core widget in the tree. + +Here is a basic implementation of `ChannelsBloc`: + +```dart +ChannelsBloc( + child: // Further Widget Tree +), +``` + +The `ChannelsBloc` widget allows three customisations: + +#### Lock Channels Order + +ChannelsBloc may change the order of channels when new messages arrive. To lock this order, we can +set the `lockChannelsOrder` property to true. + +```dart +ChannelsBloc( + lockChannelsOrder: true, + child: // Further Widget Tree +), +``` + +#### Set custom channel order + +We can decide the order of the channels in the list by supplying a comparator to the `channelsComparator` +parameter: + +```dart +ChannelsBloc( + channelsComparator: (a, b) { + return a.createdAt!.millisecondsSinceEpoch > + b.createdAt!.millisecondsSinceEpoch + ? 1 + : -1; + }, + child: // Further Widget Tree +), +``` + +#### Decide if channel should be added on new message event + +When a new message arrives, a `message.new` event is received. We can decide if we want to add the channel +to the list using the `shouldAddChannel` parameter which is a callback supplying the event data: + +```dart +ChannelsBloc( + shouldAddChannel: (event) { + return event.message!.extraData['priority'] == '1'; + }, + child: // Further Widget Tree +), +``` \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/introduction.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/introduction.mdx new file mode 100644 index 00000000..3c6a70f2 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/introduction.mdx @@ -0,0 +1,80 @@ +--- +id: introduction +sidebar_position: 1 +title: Introduction +--- + +Understanding The Core Package Of The Flutter SDK + +This package provides business logic to fetch common things required for integrating Stream Chat into your application. +The core package allows more customisation and hence provides business logic but no UI components. +Please use the `stream_chat_flutter` package for the full fledged suite of UI components or `stream_chat` for the low-level client. + +### Background + +In the early days of the Flutter SDK, the SDK was only split into the LLC (`stream_chat`) and +the UI package (`stream_chat_flutter`). With this you could use a fully built interface with the UI package +or a fully custom interface with the LLC. However, we soon recognised the need for a third intermediary +package which made tasks like building and modifying a list of channels or messages easy but without +the complexity of using low level components. The Core package (`stream_chat_flutter_core`) is a manifestation +of the same idea and allows you to build an interface with Stream Chat without having to deal with +low level code and architecture as well as implementing your own theme and UI effortlessly. +Also, it has very few dependencies. + +We will now explore the components of this intermediary package and understand how it helps you build +the experience you want your users to have. + +The package primarily contains three types of classes: + +* Business Logic Components +* Core Components +* Core Controllers + +### Business Logic Components + +These components allow you to have the maximum and lower-level control of the queries being executed. + +In BLoCs, the basic functionalities - such as queries for messages, channels or queries - are bundled up +and passed along down the tree. Using a BLoC allows you to either create your own way to fetch and +build UIs or use an inbuilt Core widget to do the work such as queries, pagination, etc for you. + +The BLoCs we provide are: + +* ChannelsBloc +* MessageSearchBloc +* UsersBloc + +### Core Components + +Core components usually are an easy way to fetch data associated with Stream Chat. +Core components use functions exposed by the respective BLoCs (for example the ChannelListCore uses the ChannelsBloc) +and use the respective controllers for various operations. Unlike heavier components from the UI +package, core components are decoupled from UI and they expose builders instead to help you build +a fully custom interface. + +Data fetching can be controlled with the controllers of the respective core components. + +* ChannelListCore (Fetch a list of channels) +* MessageListCore (Fetch a list of messages from a channel) +* MessageSearchListCore (Fetch a list of search messages) +* UserListCore (Fetch a list of users) +* StreamChatCore (This is different from the other core components - it is a version of StreamChat decoupled from theme and initialisations.) + +### Core Controllers + +Core Controllers are supplied to respective CoreList widgets which allows reloading and pagination of data whenever needed. + +Unlike the UI package, the Core package allows a fully custom user interface built with the data. This +in turn provides a few challenges: we do not know implicitly when to paginate your list or reload your data. + +While this is handled out of the box in the UI package since the List implementation is inbuilt, a controller +needs to be used in the core package notifying the core components to reload or paginate the data existing +currently. For this, each core component has a respective controller which you can use to call the +specific function (reload / paginate) whenever such an event is triggered through / needed in your UI. + +* ChannelListController +* MessageListController +* MessageSearchListController +* ChannelListController + +This section goes into the individual core package widgets and their functional use. diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_list_core.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_list_core.mdx new file mode 100644 index 00000000..5fd5877a --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_list_core.mdx @@ -0,0 +1,70 @@ +--- +id: message_list_core +sidebar_position: 5 +title: MessageListCore +--- + +A Widget For Building A List Of Messages + +### Background + +The UI SDK of Stream Chat supplies a `MessageListView` class that builds a list of channels fetching +according to the filters and sort order given. However, in some cases, implementing novel UI is necessary +that cannot be done using the customization approaches given in the widget. + +To do this, we extracted the logic required for fetching channels into a 'Core' widget - a widget that +fetches channels in the expected way via the usual params but does not supply any UI and instead +exposes builders to build the UI in situations such as loading, empty data, errors, and on data received. + +### Basic Example + +`MessageListCore` is a simplified class that allows fetching a list of +messages while exposing UI builders. + +This allows you to construct your own UI while not having to +worry about the specific logic of fetching messages in a channel. + +A `MessageListController` is used to paginate data. + +```dart +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + Expanded( + child: MessageListCore( + emptyBuilder: (context) { + return Center( + child: Text('Nothing here...'), + ); + }, + loadingBuilder: (context) { + return Center( + child: CircularProgressIndicator(), + ); + }, + messageListBuilder: (context, list) { + return MessagesPage(list); + }, + errorWidgetBuilder: (context, err) { + return Center( + child: Text('Error'), + ); + }, + ), + ), + ], + ), + ); + } +} +``` + +Make sure to have a `StreamChannel` ancestor in order to provide the +information about the channels. \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_bloc.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_bloc.mdx new file mode 100644 index 00000000..15f5a6d6 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_bloc.mdx @@ -0,0 +1,40 @@ +--- +id: message_search_list_block +sidebar_position: 8 +title: MessageSearchListBloc +--- + +A Widget Used To Manage A List Of Messages With Pagination. + +### Background + +Most widgets in the Core SDK are focused on fetching a particular type of object from Stream Chat - channels, +messages, users etc. The BLoC widgets bundle up the base functions used to fetch data as well as the current +data fetched by the respective functions. Furthermore, the Core widgets use this BLoC to fetch new or +existing data and build UI based on it. + +All Core and UI widgets which focus on fetching a list of objects need to have their respective functions +above them in the widget tree. The MessageSearchListCore and MessageSearchListView require the +MessageSearchListCore above them in the widget hierarchy without which they will fail. + +### Understanding The Widget + +This class can be used to load messages, perform queries, etc. + +`MessageSearchBloc` can be accessed at anytime by using the static `.of` method +using Flutter's BuildContext. + +```dart +var _searchBloc = MessageSearchBloc.of(context); +``` + +The `MessageSearchBloc` widget encapsulates common functionality related to searching for messages +across channels and also supplies them down the widget tree. + +Here is a basic implementation of `ChannelsBloc`: + +```dart +MessageSearchBloc( + child: // Further Widget Tree +), +``` \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_list_core.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_list_core.mdx new file mode 100644 index 00000000..f3be5e85 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/message_search_list_core.mdx @@ -0,0 +1,41 @@ +--- +id: message_search_list_core +sidebar_position: 6 +title: MessageSearchListCore +--- + +A Widget For Displaying Message Searches + +### Background + +The UI SDK of Stream Chat supplies a `MessageSearchListView` class that builds a list of channels fetching +according to the filters and sort order given. However, in some cases, implementing novel UI is necessary +that cannot be done using the customization approaches given in the widget. + +To do this, we extracted the logic required for fetching channels into a 'Core' widget - a widget that +fetches channels in the expected way via the usual params but does not supply any UI and instead +exposes builders to build the UI in situations such as loading, empty data, errors, and on data received. + +### Basic Example + +`MessageSearchListCore` is a simplified class that allows searching for + messages across channels while exposing UI builders. + A `MessageSearchListController` is used to load and paginate data. + +```dart +class MessageSearchPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: MessageSearchListCore( + messageQuery: _messageFilter, + filters: _channelsFilter, + limit: 20, + ), + ); + } +} +``` + +Make sure to have a `MessageSearchBloc` ancestor in order to provide the +information about the messages. \ No newline at end of file diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/setup.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/setup.mdx new file mode 100644 index 00000000..15b15a56 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/setup.mdx @@ -0,0 +1,28 @@ +--- +id: setup +sidebar_position: 2 +title: Setup +--- + +Understanding Setup For `stream_chat_flutter_core` + +### Add pub.dev dependency + +First, you need to add the `stream_chat_flutter_core` dependency to your pubspec.yaml + +You can either run this command: + +```shell +flutter pub add stream_chat_flutter_core +``` + +OR + +Add this line in the dependencies section of your pubspec.yaml after substituting latest version: + +```yaml +dependencies: + stream_chat_flutter_core: ^latest_version +``` + +You can find the package details on [pub.dev](https://pub.dev/packages/stream_chat_flutter_core). diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/stream_chat_core.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/stream_chat_core.mdx new file mode 100644 index 00000000..2a43ae52 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/stream_chat_core.mdx @@ -0,0 +1,26 @@ +--- +id: stream_chat_core +sidebar_position: 3 +title: StreamChatCore +--- + +`StreamChatCore` is a version of `StreamChat` found in `stream_chat_flutter` that is decoupled from +theme and initialisations. + +`StreamChatCore` is used to provide information about the chat client to the widget tree. +This Widget is used to react to life cycle changes and system updates. +When the app goes into the background, the websocket connection is automatically closed and when it goes back to foreground the connection is opened again. + +Like the `StreamChat` widget in the higher level UI package, the `StreamChatCore` widget should +be on the top level before using any Stream functionality: + +```dart +return MaterialApp( + title: 'Stream Chat Core Example', + home: HomeScreen(), + builder: (context, child) => StreamChatCore( + client: client, + child: child!, + ), + ); +``` diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/user_list_core.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/user_list_core.mdx new file mode 100644 index 00000000..622d0025 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/user_list_core.mdx @@ -0,0 +1,64 @@ +--- +id: user_list_core +sidebar_position: 10 +title: UserListCore +--- + +A Widget For Building A List Of Users + +### Background + +The UI SDK of Stream Chat supplies a `UserListView` class that builds a list of channels fetching +according to the filters and sort order given. However, in some cases, implementing novel UI is necessary +that cannot be done using the customization approaches given in the widget. + +To do this, we extracted the logic required for fetching channels into a 'Core' widget - a widget that +fetches channels in the expected way via the usual params but does not supply any UI and instead +exposes builders to build the UI in situations such as loading, empty data, errors, and on data received. + +### Basic Example + +`UserListCore` is a simplified class that allows fetching users while +exposing UI builders. +A `UserListController` is used to load and paginate data. + +```dart +class UsersListPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: UsersListCore( + sort: [SortOption('last_active')], + pagination: PaginationParams( + limit: 20, + ), + errorBuilder: (err) { + return Center( + child: Text('An error has occured'), + ); + }, + emptyBuilder: (context) { + return Center( + child: Text('Nothing here...'), + ); + }, + emptyBuilder: (context) { + return Center( + child: CircularProgressIndicator(), + ); + }, + listBuilder: (context, list) { + return UsersPage(list); + } + ), + ); + } +} +``` + +`UsersBloc` must be the ancestor of this widget. This is necessary since +`UserListCore` depends on functionality contained within `UsersBloc`. + +The parameters `listBuilder`, `loadingBuilder`, `emptyBuilder` and +`errorBuilder` must all be supplied and not null. + diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/users_bloc.mdx b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/users_bloc.mdx new file mode 100644 index 00000000..61463599 --- /dev/null +++ b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/stream_chat_flutter_core/users_bloc.mdx @@ -0,0 +1,37 @@ +--- +id: users_bloc +sidebar_position: 9 +title: UsersBloc +--- + +A Widget Dedicated To The Management Of A Users List With Pagination. + +### Background + +Most widgets in the Core SDK are focused on fetching a particular type of object from Stream Chat - channels, +messages, users, etc. The BLoC widgets bundle up the base functions used to fetch data as well as the current +data fetched by the respective functions. Furthermore, the Core widgets use this BLoC to fetch new or +existing data and build UI based on it. + +All Core and UI widgets which focus on fetching a list of objects need to have their respective functions +above them in the widget tree. The UserListCore and UserListView require the UserListCore +above them in the widget hierarchy without which they will fail. + +### Understanding The Widget + +`UsersBloc` can be accessed at anytime by using the static `.of` method +using Flutter's `BuildContext`. + +```dart +var _userBloc_ = UsersBloc.of(context); +``` + +The `UsersBloc` widget encapsulates common functionality related to user lists and also supplies them down the widget tree. + +Here is a basic implementation of `UsersBloc`: + +```dart +UsersBloc( + child: // Further Widget Tree +), +``` \ No newline at end of file diff --git a/docusaurus/flutter_versioned_sidebars/version-3.x.x-sidebars.json b/docusaurus/flutter_versioned_sidebars/version-3.x.x-sidebars.json new file mode 100644 index 00000000..6a5949a0 --- /dev/null +++ b/docusaurus/flutter_versioned_sidebars/version-3.x.x-sidebars.json @@ -0,0 +1,8 @@ +{ + "version-3.x.x/defaultSidebar": [ + { + "type": "autogenerated", + "dirName": "." + } + ] + } \ No newline at end of file diff --git a/docusaurus/flutter_versions.json b/docusaurus/flutter_versions.json new file mode 100644 index 00000000..008922d4 --- /dev/null +++ b/docusaurus/flutter_versions.json @@ -0,0 +1,3 @@ +[ + "3.x.x" +] From ec6ac99f3627e915fa2029191950ae3dd27005e3 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 11:15:56 +0200 Subject: [PATCH 159/201] StreamChannelListView --- .../stream_chat_flutter/channel_list_view.mdx | 116 ++++++++---------- 1 file changed, 54 insertions(+), 62 deletions(-) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_view.mdx index eb7baf20..f0835d23 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_view.mdx @@ -1,12 +1,12 @@ --- -id: channel_list_view +id: stream_channel_list_view sidebar_position: 4 -title: ChannelListView +title: StreamChannelListView --- A Widget For Displaying A List Of Channels -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/ChannelListView-class.html) +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChannelListView-class.html) ![](../assets/channel_list_view.png) @@ -18,33 +18,61 @@ message each other. 1:1 conversations and groups are both examples of channels, albeit with some (distinct/non-distinct) differences. Displaying the list of channels that a user is a part of is a pattern present in most messaging apps. -The `ChannelListView` widget allows displaying a list of channels to a user. By default, this is NOT -ONLY the channels that the user is a part of. This section goes into setting up and using a `ChannelListView` +The `StreamChannelListView` widget allows displaying a list of channels to a user. By default, this is NOT +ONLY the channels that the user is a part of. This section goes into setting up and using a `StreamChannelListView` widget. ### Basic Example -Here is a basic example of the `ChannelListView` widget. It consists of the main widget itself, a `Filter` -to filter only the channels that the user is a part of, sorting by last message time, pagination params, -and the widget to use when a particular channel is clicked. +Here is a basic example of the `StreamChannelListView` widget. It consists of the main widget itself, a `StreamChannelListController` to control the list of channels and a callback to handle the tap of a channel. ```dart -class ChannelListPage extends StatelessWidget { +class ChannelListPage extends StatefulWidget { + const ChannelListPage({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + @override - Widget build(BuildContext context) { - return Scaffold( - body: ChannelsBloc( - child: ChannelListView( - filter: Filter.in_('members', [StreamChat.of(context).user.id]), - sort: [SortOption('last_message_at')], - pagination: PaginationParams( - limit: 20, - ), - channelWidget: ChannelPage(), - ), - ), - ); + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _controller = StreamChannelListController( + client: widget.client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); } + + @override + Widget build(BuildContext context) => Scaffold( + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ), + ), + ), + ); } ``` @@ -54,16 +82,16 @@ the widget. ### Customizing the Channel Preview A common aspect of the widget needed to be tweaked according to each app is the Channel Preview (the -Channel tile in the list). To do this, we use the `channelPreviewBuilder` param like this: +Channel tile in the list). To do this, we use the `itemBuilder` parameter like this: ```dart -ChannelListView( +StreamChannelListView( ... - channelPreviewBuilder: (context, channel) { + itemBuilder: (context, channels, index, defaultTile) { return ListTile( tileColor: Colors.amberAccent, title: Center( - child: ChannelName(), + child: StreamChannelName(channel: channels[index]), ), ); }, @@ -73,39 +101,3 @@ ChannelListView( Which gives you a new Channel preview in the list: ![](../assets/channel_preview.png) - -### Adding Swipe Actions - -To add actions (such as delete, more info, etc) when Channel preview is swiped left, set the `swipeToAction` -parameter to `true`. - -```dart -ChannelListView( - ... - swipeToAction: true, -), -``` - -This adds two basic actions - info and delete: - -![](../assets/swipe_channel.png) - -To add custom actions of your own, use the `swipeActions` param: - -```dart -ChannelListView( - ... - swipeToAction: true, - swipeActions: [ - SwipeAction( - color: Colors.blue, - iconWidget: Icon(Icons.add), - onTap: (channel) { - // Things to do on icon tap - }, - ), - // Other actions here - ] -), -``` - From 8afc669826796698b8d4528d697a0fc2d2c930df Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 12:30:59 +0200 Subject: [PATCH 160/201] StreamChannelListView --- .../{channel_list_view.mdx => stream_channel_list_view.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docusaurus/docs/Flutter/stream_chat_flutter/{channel_list_view.mdx => stream_channel_list_view.mdx} (100%) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/channel_list_view.mdx rename to docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx From e0f31778995b969062c60ce29bce1d28188f7547 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 12:31:12 +0200 Subject: [PATCH 161/201] StreamMessageListView --- ..._view.mdx => stream_message_list_view.mdx} | 53 ++++++------------- 1 file changed, 15 insertions(+), 38 deletions(-) rename docusaurus/docs/Flutter/stream_chat_flutter/{message_list_view.mdx => stream_message_list_view.mdx} (55%) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/message_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_list_view.mdx similarity index 55% rename from docusaurus/docs/Flutter/stream_chat_flutter/message_list_view.mdx rename to docusaurus/docs/Flutter/stream_chat_flutter/stream_message_list_view.mdx index 0ac78f7d..19a041a0 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/message_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_list_view.mdx @@ -1,30 +1,30 @@ --- -id: message_list_view +id: stream_message_list_view sidebar_position: 5 -title: MessageListView +title: StreamMessageListView --- A Widget For Displaying A List Of Messages -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageListView-class.html) +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamMessageListView-class.html) ![](../assets/message_list_view.png) ### Background -Every channel can contain a list of messages sent by users inside it. The `MessageListView` widget +Every channel can contain a list of messages sent by users inside it. The `StreamMessageListView` widget displays the list of messages inside a particular channel along with possible attachments and -other message attributes (if the message is pinned for example). This sets it apart from the `MessageSearchListView` +other message attributes (if the message is pinned for example). This sets it apart from the `StreamMessageSearchListView` which may not contain messages only from a single channel and is used to search for messages across many. ### Basic Example -The `MessageListView` shows the list of messages of the current channel. It has inbuilt support for +The `StreamMessageListView` shows the list of messages of the current channel. It has inbuilt support for common messaging functionality: displaying and editing messages, adding / modifying reactions, support for quoting messages, pinning messages, and more. -An example of how you can use the MessageListView is: +An example of how you can use the `StreamMessageListView` is: ```dart class ChannelPage extends StatelessWidget { @@ -35,19 +35,13 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - appBar: ChannelHeader(), + appBar: StreamChannelHeader(), body: Column( children: [ Expanded( - child: MessageListView( - threadBuilder: (_, parentMessage) { - return ThreadPage( - parent: parentMessage, - ); - }, - ), + child: StreamMessageListView(), ), - MessageInput(), + StreamMessageInput(), ], ), ); @@ -61,7 +55,7 @@ Threads are made of a parent message and replies linked to it. To enable threadi to supply a `threadBuilder` which will supply the page when the thread is clicked. ```dart -MessageListView( +StreamMessageListView( threadBuilder: (_, parentMessage) { return ThreadPage( parent: parentMessage, @@ -72,10 +66,10 @@ MessageListView( ![](../assets/message_list_view_threads.png) -The `MessageListView` itself can render the thread by supplying the `parentMessage` parameter. +The `StreamMessageListView` itself can render the thread by supplying the `parentMessage` parameter. ```dart -MessageListView( +StreamMessageListView( parentMessage: parent, ), ``` @@ -85,31 +79,14 @@ MessageListView( You can also supply your own implementation for displaying messages using the `messageBuilder` parameter. :::note -To customize the existing implementation, look at the `MessageWidget` documentation instead. +To customize the existing implementation, look at the `StreamMessageWidget` documentation instead. ::: ```dart -MessageListView( +StreamMessageListView( messageBuilder: (context, details, messageList, defaultImpl) { // Your implementation of the message here // E.g: return Text(details.message.text ?? ''); }, ), ``` - -### Enabling Message Pinning - -Message pins save and highlight the message in the `MessageListView`. To enable users to pin the message, -make sure the pin permissions are granted for different types of users on the dashboard. After confirming -the appropriate users have permissions, add the user types in the `pinPermissions` parameter. - -```dart -MessageListView( - //... - pinPermissions: ['admin', 'userType1', 'userType2'], -), -``` - -This will allow these user types to pin messages through the message actions modal. - -![](../assets/message_list_view_pin.png) From 1fedb3005c09b831da780da594d555ec5d7b169d Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Thu, 28 Apr 2022 16:03:13 +0530 Subject: [PATCH 162/201] Migrated guides in the docs to v4 --- .../adding_chat_to_video_livestreams.mdx | 8 ++-- .../guides/adding_custom_attachments.mdx | 22 ++++----- .../guides/customize_message_actions.mdx | 10 ++-- .../guides/customize_message_widget.mdx | 46 +++++++++---------- .../guides/customize_text_messages.mdx | 36 +++++++-------- .../guides/end_to_end_chat_encryption.mdx | 8 ++-- 6 files changed, 65 insertions(+), 65 deletions(-) diff --git a/docusaurus/docs/Flutter/guides/adding_chat_to_video_livestreams.mdx b/docusaurus/docs/Flutter/guides/adding_chat_to_video_livestreams.mdx index 9e2afb44..cc6e868a 100644 --- a/docusaurus/docs/Flutter/guides/adding_chat_to_video_livestreams.mdx +++ b/docusaurus/docs/Flutter/guides/adding_chat_to_video_livestreams.mdx @@ -40,9 +40,9 @@ Scaffold( child: Column( children: [ Expanded( - child: MessageListView(), + child: StreamMessageListView(), ), - MessageInput(), + StreamMessageInput(), ], ), ), @@ -81,9 +81,9 @@ Scaffold( child: Column( children: [ Expanded( - child: MessageListView(), + child: StreamMessageListView(), ), - MessageInput(), + StreamMessageInput(), ], ), ), diff --git a/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx b/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx index 9fe7f6aa..e6b5f686 100644 --- a/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx +++ b/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx @@ -13,7 +13,7 @@ own types of attachments through the SDK such as location, audio, etc. This involves doing three things: -1) Rendering the attachment thumbnail in the `MessageInput` +1) Rendering the attachment thumbnail in the `StreamMessageInput` 2) Sending a message with the custom attachment @@ -27,7 +27,7 @@ Let's build an example of location sharing option in the app: ![](../assets/location_sharing_example.jpg) -* Show a "Share Location" button next to MessageInput Textfield. +* Show a "Share Location" button next to StreamMessageInput Textfield. * When the user presses this button, it should fetch the current location coordinates of the user, and send a message on the channel as follows: @@ -53,14 +53,14 @@ Please check their [setup instructions](https://pub.dev/packages/geolocator) on NOTE: If you are testing on iOS simulator, you will need to set some dummy coordinates, as mentioned [here](https://stackoverflow.com/a/31238119/7489541). Also don't forget to enable "location update" capability in background mode, from XCode. -On the receiver end, `location` type attachment should be rendered in map view, in the `MessageListView`. +On the receiver end, `location` type attachment should be rendered in map view, in the `StreamMessageListView`. We are going to use [Google Static Maps API](https://developers.google.com/maps/documentation/maps-static/overview) to render the map in the message. You can use other libraries as well such as [google_maps_flutter](https://pub.dev/packages/google_maps_flutter). First, we add a button which when clicked fetches and shares location into the `MessageInput`: ```dart -MessageInput( +StreamMessageInput( actions: [ InkWell( child: Icon( @@ -146,10 +146,10 @@ Next, we build the Static Maps URL (Add your API key before using the code snipp } ``` -And then modify the `MessageListView` and tell it how to build a location attachment, using the `messageBuilder` property and copying the default message implementation overriding the `customAttachmentBuilders` property: +And then modify the `StreamMessageListView` and tell it how to build a location attachment, using the `messageBuilder` property and copying the default message implementation overriding the `customAttachmentBuilders` property: ```dart -MessageListView( +StreamMessageListView( messageBuilder: (context, details, messages, defaultMessage) { return defaultMessage.copyWith( customAttachmentBuilders: { @@ -179,14 +179,14 @@ To do this, we will: 1) Add an attachment instead of sending a message -2) Customize the `MessageInput` +2) Customize the `StreamMessageInput` First, we add the attachment when the location button is clicked: ```dart - GlobalKey _messageInputKey = GlobalKey(); + GlobalKey _messageInputKey = GlobalKey(); - MessageInput( + StreamMessageInput( key: _messageInputKey, actions: [ InkWell( @@ -219,7 +219,7 @@ First, we add the attachment when the location button is clicked: After this, we can build the thumbnail: ```dart -MessageInput( +StreamMessageInput( key: _messageInputKey, actions: [ InkWell( @@ -259,6 +259,6 @@ MessageInput( ), ``` -And we can see the thumbnails in the MessageInput: +And we can see the thumbnails in the StreamMessageInput: ![](../assets/location_sharing_example_message_thumbnail.jpg) diff --git a/docusaurus/docs/Flutter/guides/customize_message_actions.mdx b/docusaurus/docs/Flutter/guides/customize_message_actions.mdx index c3dc2aba..12cc7715 100644 --- a/docusaurus/docs/Flutter/guides/customize_message_actions.mdx +++ b/docusaurus/docs/Flutter/guides/customize_message_actions.mdx @@ -38,10 +38,10 @@ Additionally, pinning a message requires you to add the roles which are allowed ### 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 `MessageWidget`. +here is how to do it using the `messageBuilder` with our `StreamMessageWidget`. ```dart -MessageListView( +StreamMessageListView( messageBuilder: (context, details, messages, defaultMessage) { return defaultMessage.copyWith( showFlagButton: false, @@ -61,14 +61,14 @@ 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 `MessageWidget` to add extra actions. +We use the `customActions` parameter of the `StreamMessageWidget` to add extra actions. ```dart -MessageListView( +StreamMessageListView( messageBuilder: (context, details, messages, defaultMessage) { return defaultMessage.copyWith( customActions: [ - MessageAction( + StreamMessageAction( leading: Icon(Icons.add), title: Text('Demo Action'), onTap: (message) { diff --git a/docusaurus/docs/Flutter/guides/customize_message_widget.mdx b/docusaurus/docs/Flutter/guides/customize_message_widget.mdx index af7014fb..600f05d1 100644 --- a/docusaurus/docs/Flutter/guides/customize_message_widget.mdx +++ b/docusaurus/docs/Flutter/guides/customize_message_widget.mdx @@ -1,7 +1,7 @@ --- id: customize_message_widget sidebar_position: 11 -title: Customizing The MessageWidget +title: Customizing The StreamMessageWidget --- Customizing Text Messages @@ -11,16 +11,16 @@ Customizing Text Messages Every application provides a unique look and feel to their own messaging interface including and not limited to fonts, colors, and shapes. -This guide details how to customize the `MessageWidget` in the Stream Chat Flutter UI SDK. +This guide details how to customize the `StreamMessageWidget` in the Stream Chat Flutter UI SDK. ### Building Custom Messages -This guide goes into detail about the ability to customize the `MessageWidget`. However, if you want -to customize the default `MessageWidget` in the `MessageListView` provided, you can use the `.copyWith()` method -provided inside the `messageBuilder` parameter of the `MessageListView` like this: +This guide goes into detail about the ability to customize the `StreamMessageWidget`. However, if you want +to customize the default `StreamMessageWidget` in the `StreamMessageListView` provided, you can use the `.copyWith()` method +provided inside the `messageBuilder` parameter of the `StreamMessageListView` like this: ```dart -MessageListView( +StreamMessageListView( messageBuilder: (context, details, messageList, defaultImpl) { // Your implementation of the message here // E.g: return Text(details.message.text ?? ''); @@ -30,8 +30,8 @@ MessageListView( ### Theming -You can customize the `MessageWidget` using the `StreamChatTheme` class, so that you can change the -message theme at the top instead of creating your own `MessageWidget` at the lower implementation level. +You can customize the `StreamMessageWidget` using the `StreamChatTheme` class, so that you can change the +message theme at the top instead of creating your own `StreamMessageWidget` at the lower implementation level. There are several things you can change in the theme including text styles and colors of various elements. @@ -49,13 +49,13 @@ Here is an example: StreamChatThemeData( /// Sets theme for user's messages - ownMessageTheme: MessageThemeData( + ownMessageTheme: StreamMessageThemeData( messageBackgroundColor: colorTheme.textHighEmphasis, ), /// Sets theme for received messages - otherMessageTheme: MessageThemeData( - avatarTheme: AvatarThemeData( + otherMessageTheme: StreamMessageThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(8), ), ), @@ -67,11 +67,11 @@ StreamChatThemeData( #### Change message text style -The `MessageWidget` has multiple `Text` widgets that you can manipulate the styles of. The three main +The `StreamMessageWidget` has multiple `Text` widgets that you can manipulate the styles of. The three main are the actual message text, user name, message links, and the message timestamp. ```dart -MessageThemeData( +StreamMessageThemeData( messageTextStyle: TextStyle(...), createdAtStyle: TextStyle(...), messageAuthorStyle: TextStyle(...), @@ -86,8 +86,8 @@ MessageThemeData( You can change the attributes of the avatar (if displayed) using the `avatarTheme` property. ```dart -MessageThemeData( - avatarTheme: AvatarThemeData( +StreamMessageThemeData( + avatarTheme: StreamAvatarThemeData( borderRadius: BorderRadius.circular(8), ), ) @@ -100,7 +100,7 @@ MessageThemeData( You also customize the reactions attached to every message using the theme. ```dart -MessageThemeData( +StreamMessageThemeData( reactionsBackgroundColor: Colors.red, reactionsBorderColor: Colors.redAccent, reactionsMaskColor: Colors.pink, @@ -111,12 +111,12 @@ MessageThemeData( ### Changing Message Actions -When a message is long pressed, the `MessageActionsModal` is shown. +When a message is long pressed, the `StreamMessageActionsModal` is shown. -The `MessageWidget` allows showing or hiding some options if you so choose. +The `StreamMessageWidget` allows showing or hiding some options if you so choose. ```dart -MessageWidget( +StreamMessageWidget( ... showUsername = true, showTimestamp = true, @@ -137,11 +137,11 @@ MessageWidget( ### Building attachments -The `customAttachmentBuilder` property allows you to build any kind of attachment (inbuilt or custom) +The `customAttachmentBuilders` property allows you to build any kind of attachment (inbuilt or custom) in your own way. While a separate guide is written for this, it is included here because of relevance. ```dart -MessageListView( +StreamMessageListView( messageBuilder: (context, details, messages, defaultMessage) { return defaultMessage.copyWith( customAttachmentBuilders: { @@ -163,7 +163,7 @@ MessageListView( ### Widget Builders -Some parameters allow you to construct your own widget in place of some elements in the `MessageWidget`. +Some parameters allow you to construct your own widget in place of some elements in the `StreamMessageWidget`. These are: * `userAvatarBuilder` : Allows user to substitute their own widget in place of the user avatar. @@ -173,7 +173,7 @@ These are: * `deletedBottomRowBuilder` : Allows user to substitute their own widget in the bottom of the message when deleted. ```dart -MessageWidget( +StreamMessageWidget( ... textBuilder: (context, message) { // Add your own text implementation here. diff --git a/docusaurus/docs/Flutter/guides/customize_text_messages.mdx b/docusaurus/docs/Flutter/guides/customize_text_messages.mdx index a2d37333..57b3301d 100644 --- a/docusaurus/docs/Flutter/guides/customize_text_messages.mdx +++ b/docusaurus/docs/Flutter/guides/customize_text_messages.mdx @@ -11,38 +11,38 @@ Customizing Text Messages Every application provides a unique look and feel to their own messaging interface including and not limited to fonts, colors, and shapes. -This guide details how to customize message text in the `MessageListView` / `MessageWidget` in the +This guide details how to customize message text in the `StreamMessageListView` / `StreamMessageWidget` in the Stream Chat Flutter UI SDK. :::note -This guide is specifically for the `MessageListView` but if you intend to display a `MessageWidget` +This guide is specifically for the `StreamMessageListView` but if you intend to display a `StreamMessageWidget` separately, follow the same process without the `.copyWith` and use the default constructor instead. ::: -### Basics of customizing a `MessageWidget` +### Basics of customizing a `StreamMessageWidget` -First, add a `MessageListView` in the appropriate place where you intend to display messages from a +First, add a `StreamMessageListView` in the appropriate place where you intend to display messages from a channel. ```dart -MessageListView( +StreamMessageListView( ... ) ``` Now, we use the `messageBuilder` parameter to build a custom message. The builder function also provides -the default implementation of the `MessageWidget` so that we can change certain aspects of the widget +the default implementation of the `StreamMessageWidget` so that we can change certain aspects of the widget without redoing all of the default parameters. :::note -In earlier versions of the SDK, some `MessageWidget` parameters were exposed directly through the `MessageListView`, +In earlier versions of the SDK, some `StreamMessageWidget` parameters were exposed directly through the `StreamMessageListView`, however, this quickly becomes hard to maintain as more parameters and customizations are added to the -`MessageWidget`. Newer version utilise a cleaner interface to change the parameters by supplying a +`StreamMessageWidget`. Newer version utilise a cleaner interface to change the parameters by supplying a default message implementation as aforementioned. ::: ```dart -MessageListView( +StreamMessageListView( ... messageBuilder: (context, messageDetails, messageList, defaultWidget) { return defaultWidget; @@ -53,7 +53,7 @@ MessageListView( We use `.copyWith()` to customize the widget: ```dart -MessageListView( +StreamMessageListView( ... messageBuilder: (context, messageDetails, messageList, defaultWidget) { return defaultWidget.copyWith( @@ -66,28 +66,28 @@ MessageListView( ### Customizing text If you intend to simply change the theme for the text, you need not recreate the whole widget. The -`MessageWidget` has a `messageTheme` parameter that allows you to pass the theme for most aspects +`StreamMessageWidget` has a `messageTheme` parameter that allows you to pass the theme for most aspects of the message. ```dart -MessageListView( +StreamMessageListView( ... messageBuilder: (context, messageDetails, messageList, defaultWidget) { return defaultWidget.copyWith( - messageTheme: MessageTheme( + messageTheme: StreamMessageThemeData( ... - messageText: TextStyle(), + messageTextStyle: TextStyle(), ), ); }, ) ``` -If you want to replace the entire text widget in the `MessageWidget`, you can use the `textBuilder` +If you want to replace the entire text widget in the `StreamMessageWidget`, you can use the `textBuilder` parameter which provides a builder for creating a widget to substitute the default text.parameter ```dart -MessageListView( +StreamMessageListView( ... messageBuilder: (context, messageDetails, messageList, defaultWidget) { return defaultWidget.copyWith( @@ -101,10 +101,10 @@ MessageListView( ### Adding Hashtags -To add elements like hashtags, we can override the `textBuilder` in the MessageWidget: +To add elements like hashtags, we can override the `textBuilder` in the StreamMessageWidget: ```dart -MessageListView( +StreamMessageListView( ... messageBuilder: (context, messageDetails, messageList, defaultWidget) { return defaultWidget.copyWith( diff --git a/docusaurus/docs/Flutter/guides/end_to_end_chat_encryption.mdx b/docusaurus/docs/Flutter/guides/end_to_end_chat_encryption.mdx index 8a85c6a5..8a463af4 100644 --- a/docusaurus/docs/Flutter/guides/end_to_end_chat_encryption.mdx +++ b/docusaurus/docs/Flutter/guides/end_to_end_chat_encryption.mdx @@ -190,7 +190,7 @@ await client.connectUser( Now you will use the `encryptMessage()` function created in the previous steps to encrypt the message. -To do that, you need to make some minor changes to the **MessageInput** widget. +To do that, you need to make some minor changes to the **StreamMessageInput** widget. ```dart final receiverJwk = receiver.extraData['publicKey']; @@ -200,7 +200,7 @@ final derivedKey = await deriveKey(keyPair.privateKey, receiverJwk); ``` ```dart -MessageInput( +StreamMessageInput( ... @@ -223,10 +223,10 @@ Here, you have used it to encrypt the message before sending it to Stream’s ba Now, it’s time to decrypt the message and present it in a human-readable format to the receiver. -You can customize the **MessageListView** widget to have a custom `messagebuilder`, that can decrypt the message. +You can customize the **StreamMessageListView** widget to have a custom `messagebuilder`, that can decrypt the message. ```dart -MessageListView( +StreamMessageListView( ... messageBuilder: (context, messageDetails, currentMessages, defaultWidget) { // Retrieving the message from details From bc6f392f5dc6b6878a5e8ad3e3e56c97477bc032 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 14:50:01 +0200 Subject: [PATCH 163/201] StreamMessageInput --- ...age_input.mdx => stream_message_input.mdx} | 91 ++++--------------- 1 file changed, 17 insertions(+), 74 deletions(-) rename docusaurus/docs/Flutter/stream_chat_flutter/{message_input.mdx => stream_message_input.mdx} (52%) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/message_input.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_input.mdx similarity index 52% rename from docusaurus/docs/Flutter/stream_chat_flutter/message_input.mdx rename to docusaurus/docs/Flutter/stream_chat_flutter/stream_message_input.mdx index f33f85e9..b60696ae 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/message_input.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_input.mdx @@ -1,12 +1,12 @@ --- -id: message_input +id: stream_message_input sidebar_position: 6 -title: MessageInput +title: StreamMessageInput --- A Widget Dealing With Everything Related To Sending A Message -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageInput-class.html) +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamMessageInput-class.html) ![](../assets/message_input.png) @@ -17,13 +17,13 @@ a `TextField` and logic for sending a message. It involves additional processes quoting a message, adding a custom command like a GIF board, and much more. Moreover, most apps also need to customize the input to match their theme, overall color and structure pattern, etc. -To do this, we created a `MessageInput` widget which abstracts all expected functionality a modern input +To do this, we created a `StreamMessageInput` widget which abstracts all expected functionality a modern input needs - and allows you to use it out of the box. ### Basic Example -A `StreamChannel` is required above the widget tree in which the `MessageInput` is rendered since the channel is -where the messages sent actually go. Let's look at a common example of how we could use the `MessageInput`: +A `StreamChannel` is required above the widget tree in which the `StreamMessageInput` is rendered since the channel is +where the messages sent actually go. Let's look at a common example of how we could use the `StreamMessageInput`: ```dart class ChannelPage extends StatelessWidget { @@ -34,11 +34,11 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - appBar: ChannelHeader(), + appBar: StreaChannelHeader(), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( threadBuilder: (_, parentMessage) { return ThreadPage( parent: parentMessage, @@ -46,7 +46,7 @@ class ChannelPage extends StatelessWidget { }, ), ), - MessageInput(), + StreamMessageInput(), ], ), ); @@ -54,76 +54,19 @@ class ChannelPage extends StatelessWidget { } ``` -It is common to put this widget in the same page of a `MessageListView` as the bottom widget. +It is common to put this widget in the same page of a `StreamMessageListView` as the bottom widget. -### Quoting A Message - -The quoting functionality allows us to 'reply' to a specific message without creating a thread out of it. -It adds the other message as context when sending a message and also displays it above the sent message. - -To quote a message, we provide a `quotedMessage` to the `MessageInput`. - -```dart -Message? message; - -// ... -MessageInput( - quotedMessage: message, -), -``` - -This will add the message given above the message about to be sent. - -While you can implement your own functionality to select which message to reply to, the `MessageListView` -widget helps in this case since it has an inbuilt `onMessageSwiped` callback which we can use. - -```dart - -class ChannelPage extends StatefulWidget { - @override - _ChannelPageState createState() => _ChannelPageState(); -} - -class _ChannelPageState extends State { - Message? quotedMessage; - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - Expanded( - child: MessageListView( - // ... - onMessageSwiped: (message) { - setState(() { - quotedMessage = message; - }); - }, - ), - ), - MessageInput( - quotedMessage: _quotedMessage, - onQuotedMessageCleared: () { - setState(() => _quotedMessage = null); - }, - ), - ], - ), - ); - } -} -``` - -![](../assets/message_input_quoted_message.png) +:::note +Make sure to check the [StreamMessageInputController](./stream_message_input_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageInput`. +::: ### Adding Custom Actions -By default, the `MessageInput` has two actions: one for attachments and one for commands like Giphy. +By default, the `StreamMessageInput` has two actions: one for attachments and one for commands like Giphy. To add your own action, we use the `actions` parameter like this: ```dart -MessageInput( +StreamMessageInput( actions: [ InkWell( child: Icon( @@ -146,7 +89,7 @@ This will add on your action to the existing ones. To disable attachments being added to the message, set the `disableAttachments` parameter to true. ```dart -MessageInput( +StreamMessageInput( disableAttachments: true, ), ``` @@ -161,7 +104,7 @@ of the buttons in the input. For example, if we want the actions on the right and the send button inside the TextField, we can do: ```dart -MessageInput( +StreamMessageInput( sendButtonLocation: SendButtonLocation.inside, actionsLocation: ActionsLocation.right, ), From 4372b07e488cced7810db2294131d7bdc99028c1 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 14:58:32 +0200 Subject: [PATCH 164/201] StreamUserListView --- .../stream_channel_list_view.mdx | 4 + .../stream_chat_flutter/user_list_view.mdx | 113 +++++++++--------- 2 files changed, 63 insertions(+), 54 deletions(-) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx index f0835d23..dbb3f266 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_view.mdx @@ -22,6 +22,10 @@ The `StreamChannelListView` widget allows displaying a list of channels to a use ONLY the channels that the user is a part of. This section goes into setting up and using a `StreamChannelListView` widget. +:::note +Make sure to check the [StreamChannelListController](./stream_channel_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamChannelListView`. +::: + ### Basic Example Here is a basic example of the `StreamChannelListView` widget. It consists of the main widget itself, a `StreamChannelListController` to control the list of channels and a callback to handle the tap of a channel. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/user_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/user_list_view.mdx index 61dfbeb4..a37670d3 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/user_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/user_list_view.mdx @@ -1,7 +1,7 @@ --- -id: user_list_view +id: stream_user_list_view sidebar_position: 7 -title: UserListView +title: StreamUserListView --- A Widget For Displaying And Selecting Users @@ -13,76 +13,81 @@ Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_ ### Background A list of users is required for many different purposes: showing a list of users in a Channel, -selecting users to add in a channel, etc. The `UserListView` displays and allows selection of a list -of users along with multiple display configurations like a list and grid. +selecting users to add in a channel, etc. The `StreamUserListView` displays a list +of users. + +:::note +Make sure to check the [StreamUserListController](./stream_user_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamUserListView`. +::: ### Basic Example Let's take a look at an example where we use the widget to autocomplete user names: ```dart -class UsersListPage extends StatelessWidget { +class UserListPage extends StatefulWidget { + const UserListPage({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + @override - Widget build(BuildContext context) { - return Scaffold( - body: UsersBloc( - child: UsersListView( - filter: Filter.notEqual('id', StreamChat.of(context).user!.id), - sort: [ - SortOption( - 'name', - direction: 1, + State createState() => _UserListPageState(); +} + +class _UserListPageState extends State { + late final _controller = StreamUserListController( + client: widget.client, + limit: 25, + filter: Filter.and([ + Filter.notEqual('id', StreamChat.of(context).currentUser!.id), + ]), + sort: [ + SortOption( + 'name', + direction: 1, + ), + ], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), ), - ], - pagination: PaginationParams( - limit: 25, ), ), - ), - ); - } + ); } ``` ### Customize The User Items -You can use your own widget for the user items using the `userItemBuilder` parameter. +You can use your own widget for the user items using the `itemBuilder` parameter. ```dart -UsersListView( +StreamUsersListView( // ... - userItemBuilder: (context, user, isSelected) { - return Text(user.name); + itemBuilder: (context, users, index, defaultWidget) { + return Text(user[index].name); }, ), ``` - -### Group Alphabetically - -You can group alphabetically using the `groupAlphabetically` parameter: - -```dart -UsersListView( - //... - groupAlphabetically: true, -), -``` - -### Selecting Users - -The `UserListView` widget allows selecting users in a list by supplying a selected users list and callbacks -for when user items are tapped. - -```dart -Set? selectedUsers = {}; - -UsersListView( - //... - selectedUsers: selectedUsers, - onUserTap: (user, _) { - setState(() { - selectedUsers.add(user); - }); - }, -), -``` From 0568f81a202728484f1ddc401b745f4623bde20e Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 14:58:48 +0200 Subject: [PATCH 165/201] rename file --- .../{user_list_view.mdx => stream_user_list_view.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docusaurus/docs/Flutter/stream_chat_flutter/{user_list_view.mdx => stream_user_list_view.mdx} (100%) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/user_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx similarity index 100% rename from docusaurus/docs/Flutter/stream_chat_flutter/user_list_view.mdx rename to docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx From 936872cb55b57b9ba87397f95d3e3d6b436c91dc Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Thu, 28 Apr 2022 18:44:55 +0530 Subject: [PATCH 166/201] Changed customising attachment guide to use controller --- .../docs/Flutter/guides/adding_custom_attachments.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx b/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx index e6b5f686..510e8c22 100644 --- a/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx +++ b/docusaurus/docs/Flutter/guides/adding_custom_attachments.mdx @@ -184,10 +184,10 @@ To do this, we will: First, we add the attachment when the location button is clicked: ```dart - GlobalKey _messageInputKey = GlobalKey(); + StreamMessageInputController _messageInputController = StreamMessageInputController(); StreamMessageInput( - key: _messageInputKey, + messageInputController: _messageInputController, actions: [ InkWell( child: Icon( @@ -197,7 +197,7 @@ First, we add the attachment when the location button is clicked: ), onTap: () { _determinePosition().then((value) { - _messageInputKey.currentState.addAttachment( + _messageInputController.addAttachment( Attachment( uploadState: UploadState.success(), type: 'location', @@ -220,7 +220,7 @@ After this, we can build the thumbnail: ```dart StreamMessageInput( - key: _messageInputKey, + messageInputController: _messageInputController, actions: [ InkWell( child: Icon( @@ -230,7 +230,7 @@ StreamMessageInput( ), onTap: () { _determinePosition().then((value) { - _messageInputKey.currentState.addAttachment( + _messageInputController.addAttachment( Attachment( uploadState: UploadState.success(), type: 'location', From 9e937e87fbd7a414c0ba78ba7beec26fb6c8e491 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 16:05:41 +0200 Subject: [PATCH 167/201] StreamMessageSearchListView --- .../message_search_list_view.mdx | 62 ---------------- .../stream_message_search_list_view.mdx | 74 +++++++++++++++++++ .../stream_user_list_view.mdx | 2 +- 3 files changed, 75 insertions(+), 63 deletions(-) delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter/message_search_list_view.mdx create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/message_search_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/message_search_list_view.mdx deleted file mode 100644 index 39bf2d9e..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter/message_search_list_view.mdx +++ /dev/null @@ -1,62 +0,0 @@ ---- -id: message_search_list_view -sidebar_position: 8 -title: MessageSearchListView ---- - -A Widget To Search For Messages Across Channels - -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageSearchListView-class.html) - -![](../assets/message_search_list_view.png) - -### Background - -Users in Stream Chat can have several channels and it can get hard to remember which channel has the -message they are searching for. As such, there needs to be a way to search for a message across multiple -channels. This is where `MessageSearchListView` comes in. - -### Basic Example - -While the MessageListView is tied to a certain `StreamChannel`, a `MessageSearchListView` is not. - -```dart -class MessageSearchPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - body: MessageSearchBloc( - child: MessageSearchListView( - filters: Filter.in_('members', [StreamChat.of(context).user!.id],), - messageQuery: 'your query here', - limit: 20, - ), - ), - ); - } -} -``` - -### Customize The Result Tiles - -You can use your own widget for the result items using the `itemBuilder` parameter. - -```dart -MessageSearchListView( - // ... - itemBuilder: (context, response) { - return Text(response.message.text); - }, -), -``` - -### Show Result Count - -You show the number of results via the `showResultCount` parameter. - -```dart -MessageSearchListView( - // ... - showResultCount: true, -), -``` diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx new file mode 100644 index 00000000..e08bed07 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx @@ -0,0 +1,74 @@ +--- +id: stream_message_search_list_view +sidebar_position: 8 +title: StreamMessageSearchListView +--- + +A Widget To Search For Messages Across Channels + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamMessageSearchListView-class.html) + +![](../assets/message_search_list_view.png) + +### Background + +Users in Stream Chat can have several channels and it can get hard to remember which channel has the +message they are searching for. As such, there needs to be a way to search for a message across multiple +channels. This is where `StreamMessageSearchListView` comes in. + +:::note +Make sure to check the [StreamMessageSearchListController](./stream_message_search_list_controller.mdx) documentation for more information on how to use the controller to manipulate the `StreamMessageSearchListView`. +::: + +### Basic Example + +While the `StreamMessageListView` is tied to a certain `StreamChannel`, a `StreamMessageSearchListView` is not. + +```dart +class StreamMessageSearchPage extends StatefulWidget { + const StreamMessageSearchPage({ + Key? key, + required this.client, + }) : super(key: key);` + + final StreamChatClient client; + + @override + State createState() => _StreamMessageSearchState(); +} + +class _StreamMessageSearchState extends State { + late final _controller = StreamMessageSearchListController( + client: widget.client, + limit: 20, + filters: Filter.in_('members', [StreamChat.of(context).user!.id],), + searchQuery: 'your query here', + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + body: StreamChannelListView( + controller: _controller, + ), + ); +} +``` + +### Customize The Result Tiles + +You can use your own widget for the result items using the `itemBuilder` parameter. + +```dart +StreamMessageSearchListView( + // ... + itemBuilder: (context, responses, index, defaultWidget) { + return Text(responses[index].message.text); + }, +), +``` diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx index a37670d3..14cf92f9 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx @@ -6,7 +6,7 @@ title: StreamUserListView A Widget For Displaying And Selecting Users -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/UserListView-class.html) +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamUserListView-class.html) ![](../assets/user_list_view.png) From f3d3715c85aed5b435df95473e9d093f9e385013 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 16:45:53 +0200 Subject: [PATCH 168/201] StreamChannelListHeader --- .../channel_list_header.mdx | 80 +++++++++++++------ 1 file changed, 55 insertions(+), 25 deletions(-) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_header.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_header.mdx index d6930cb4..146a8021 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_header.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_header.mdx @@ -1,14 +1,14 @@ --- -id: channel_list_header +id: stream_channel_list_header sidebar_position: 9 -title: ChannelListHeader +title: StreamChannelListHeader --- A Header Widget For A List Of Channels -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/ChannelListHeader-class.html) +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChannelListHeader-class.html) -![](../assets/channel_list_header.png) +![](../assets/stream_channel_list_header.png) ### Background @@ -16,32 +16,62 @@ A common pattern for most messaging apps is to show a list of Channels (chats) o and navigate to an individual one on being clicked. On this first page where the list of channels are displayed, it is usual to have functionality such as adding a new chat, display the user logged in, etc. -To encapsulate all of this functionality into one widget, the Flutter SDK contains a `ChannelListHeader` +To encapsulate all of this functionality into one widget, the Flutter SDK contains a `StreamChannelListHeader` widget which provides these out of the box. ### Basic Example -This is a basic example of a page which has a `ChannelListView` and a `ChannelListHeader` to recreate a +This is a basic example of a page which has a `StreamChannelListView` and a `StreamChannelListHeader` to recreate a common Channels Page. ```dart -class DemoPage extends StatelessWidget { +class ChannelListPage extends StatefulWidget { + const ChannelListPage({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + @override - Widget build(BuildContext context) { - return Scaffold( - appBar: ChannelListHeader(), - body: ChannelsBloc( - child: ChannelListView( - filter: Filter.in_('members', [StreamChat.of(context).user.id]), - sort: [SortOption('last_message_at')], - pagination: PaginationParams( - limit: 20, - ), - channelWidget: ChannelPage(), - ), - ), - ); + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _controller = StreamChannelListController( + client: widget.client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); } + + @override + Widget build(BuildContext context) => Scaffold( + appBar: StreamChannelListHeader(), + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ), + ), + ), + ); } ``` @@ -53,7 +83,7 @@ Use the `titleBuilder`, `subtitle`, `leading`, or `actions` parameters to substi ```dart //... -ChannelListHeader( +StreamChannelListHeader( subtitle: Text('My Custom Subtitle'), ), ``` @@ -64,7 +94,7 @@ The `titleBuilder` param helps you build different titles depending on the conne ```dart //... -ChannelListHeader( +StreamChannelListHeader( titleBuilder: (context, status, client) { switch(status) { /// Return your title widget @@ -75,14 +105,14 @@ ChannelListHeader( ### Showing Connection State -The `ChannelListHeader` can also display connection state below the tile which shows the user if they +The `StreamChannelListHeader` can also display connection state below the tile which shows the user if they are connected or offline, etc. on connection events. To enable this, use the `showConnectionStateTile` property. ```dart //... -ChannelListHeader( +StreamChannelListHeader( showConnectionStateTile: true, ), ``` From 6c2c60075a3872ae5a29fae3699de327556a7ccb Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 28 Apr 2022 16:53:11 +0200 Subject: [PATCH 169/201] StreamChannelListHeader --- .../{channel_list_header.mdx => stream_channel_list_header.mdx} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename docusaurus/docs/Flutter/stream_chat_flutter/{channel_list_header.mdx => stream_channel_list_header.mdx} (98%) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_header.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_header.mdx similarity index 98% rename from docusaurus/docs/Flutter/stream_chat_flutter/channel_list_header.mdx rename to docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_header.mdx index 146a8021..4c8fbc63 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/channel_list_header.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_list_header.mdx @@ -8,7 +8,7 @@ A Header Widget For A List Of Channels Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChannelListHeader-class.html) -![](../assets/stream_channel_list_header.png) +![](../assets/channel_list_header.png) ### Background From 94c4db0c803be6980266fc61cadee8a3c892afbe Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 29 Apr 2022 09:38:43 +0200 Subject: [PATCH 170/201] StreamChannelHeader --- ...l_header.mdx => stream_channel_header.mdx} | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename docusaurus/docs/Flutter/stream_chat_flutter/{channel_header.mdx => stream_channel_header.mdx} (74%) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/channel_header.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_header.mdx similarity index 74% rename from docusaurus/docs/Flutter/stream_chat_flutter/channel_header.mdx rename to docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_header.mdx index bf65a863..bc3c8aaf 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/channel_header.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_header.mdx @@ -1,12 +1,12 @@ --- -id: channel_header +id: stream_channel_header sidebar_position: 10 -title: ChannelHeader +title: StreamChannelHeader --- A Widget To Display Common Channel Details -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/ChannelHeader-class.html) +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChannelHeader-class.html) ![](../assets/channel_header.png) @@ -17,28 +17,28 @@ be in the form of a channel name or the users in the channel. Along with that, t a way for the user to look at more details of the channel (media, pinned messages, actions, etc.) and preferably also a way to navigate back to where they came from. -To encapsulate all of this functionality into one widget, the Flutter SDK contains a `ChannelHeader` +To encapsulate all of this functionality into one widget, the Flutter SDK contains a `StreamChannelHeader` widget which provides these out of the box. ### Basic Example -Let's just add a `ChannelHeader` to a page with a `MessageListView` and a `MessageInput` to display +Let's just add a `StreamChannelHeader` to a page with a `StreamMessageListView` and a `StreamMessageInput` to display and send messages. ```dart class ChannelPage extends StatelessWidget { const ChannelPage({ - Key? key, + Key key, }) : super(key: key); @override Widget build(BuildContext context) { return Scaffold( - appBar: ChannelHeader(), + appBar: StreaChannelHeader(), body: Column( children: [ Expanded( - child: MessageListView( + child: StreamMessageListView( threadBuilder: (_, parentMessage) { return ThreadPage( parent: parentMessage, @@ -46,7 +46,7 @@ class ChannelPage extends StatelessWidget { }, ), ), - MessageInput(), + StreamMessageInput(), ], ), ); @@ -62,7 +62,7 @@ Use the `title`, `subtitle`, `leading`, or `actions` parameters to substitute th ```dart //... -ChannelHeader( +StreamChannelHeader( title: Text('My Custom Name'), ), ``` @@ -71,14 +71,14 @@ ChannelHeader( ### Showing Connection State -The `ChannelHeader` can also display connection state below the tile which shows the user if they +The `StreamChannelHeader` can also display connection state below the tile which shows the user if they are connected or offline, etc. on connection events. To enable this, use the `showConnectionStateTile` property. ```dart //... -ChannelHeader( +StreamChannelHeader( showConnectionStateTile: true, ), ``` From d1e7a7a7b8b809ec9bfa91103d09fce65e186e5c Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 29 Apr 2022 09:45:33 +0200 Subject: [PATCH 171/201] StreamMessageWidget --- ...e_widget.mdx => stream_message_widget.mdx} | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) rename docusaurus/docs/Flutter/stream_chat_flutter/{message_widget.mdx => stream_message_widget.mdx} (76%) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/message_widget.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx similarity index 76% rename from docusaurus/docs/Flutter/stream_chat_flutter/message_widget.mdx rename to docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx index 5060bcac..a48f3175 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/message_widget.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx @@ -1,25 +1,25 @@ --- -id: message_widget +id: stream_message_widget sidebar_position: 11 -title: MessageWidget +title: StreamMessageWidget --- A Widget For Displaying Messages And Attachments -Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/MessageWidget-class.html) +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamMessageWidget-class.html) ### Background There are several things that need to be displayed with text in a message in a modern messaging app: attachments, highlights if the message is pinned, user avatars of the sender, etc. -To encapsulate all of this functionality into one widget, the Flutter SDK contains a `MessageWidget` +To encapsulate all of this functionality into one widget, the Flutter SDK contains a `StreamMessageWidget` widget which provides these out of the box. -### Basic Example (Modifying `MessageWidget` in `MessageListView`) +### Basic Example (Modifying `StreamMessageWidget` in `StreamMessageListView`) -Primarily, the `MessageWidget` is used in the `MessageListView`. To customize only a few properties -of the `MessageWidget` without supplying all other properties, the `messageBuilder` builder supplies +Primarily, the `StreamMessageWidget` is used in the `StreamMessageListView`. To customize only a few properties +of the `StreamMessageWidget` without supplying all other properties, the `messageBuilder` builder supplies a default implementation of the widget for us to modify. ```dart @@ -31,7 +31,7 @@ class ChannelPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - body: MessageListView( + body: StreamMessageListView( messageBuilder: (context, details, messageList, defaultMessageWidget) { return defaultMessageWidget.copyWith( showThreadReplyIndicator: false, @@ -52,7 +52,7 @@ how to build it. For this purpose, we can use the `customAttachmentBuilders` par As an example, if a message has a attachment type 'location', we do: ```dart -MessageWidget( +StreamMessageWidget( //... customAttachmentBuilders: { 'location': (context, message, attachments) { @@ -77,7 +77,7 @@ You can decide to show, hide, or remove user avatars of the sender of the messag the `showUserAvatar` property like this: ```dart -MessageWidget( +StreamMessageWidget( //... showUserAvatar = DisplayWidget.show, ) @@ -85,13 +85,13 @@ MessageWidget( ### Reverse the message -In most cases, `MessageWidget` needs to be a different orientation depending upon if the sender is the +In most cases, `StreamMessageWidget` needs to be a different orientation depending upon if the sender is the user or someone else. For this, we use the `reverse` parameter to change the orientation of the message: ```dart -MessageWidget( +StreamMessageWidget( //... reverse = true, ) From 1e9a5b6c1e8fa6d7919e9dc0177045d383830110 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 29 Apr 2022 14:28:50 +0530 Subject: [PATCH 172/201] feat(core, ui): add grid views, minor refactoring Signed-off-by: xsahil03x --- .../example/lib/tutorial_part_4.dart | 2 +- .../example/lib/tutorial_part_6.dart | 2 +- .../lib/src/message_actions_modal.dart | 2 +- .../stream_channel_list_loading_tile.dart | 96 ----- .../stream_attachment_picker.dart | 6 +- .../message_input/stream_message_input.dart | 16 +- .../stream_message_text_field.dart | 10 +- .../stream_channel_grid_tile.dart | 91 ++++ .../stream_channel_grid_view.dart | 399 ++++++++++++++++++ .../stream_channel_list_loading_tile.dart | 96 +++++ .../stream_channel_list_tile.dart | 1 - .../stream_channel_list_view.dart | 141 ++----- .../stream_message_search_list_tile.dart | 6 +- .../stream_message_search_list_view.dart | 180 ++------ .../stream_scroll_view_empty_widget.dart | 61 +++ .../stream_scroll_view_error_widget.dart | 92 ++++ ...am_scroll_view_indexed_widget_builder.dart | 15 + .../stream_scroll_view_load_more_error.dart | 110 +++++ ...tream_scroll_view_load_more_indicator.dart | 25 ++ .../stream_scroll_view_loading_widget.dart | 24 ++ .../stream_user_grid_tile.dart | 102 +++++ .../stream_user_grid_view.dart | 395 +++++++++++++++++ .../stream_user_list_tile.dart | 0 .../stream_user_list_view.dart | 173 ++------ ...ream_list_view_indexed_widget_builder.dart | 9 - .../lib/stream_chat_flutter.dart | 27 +- ...t => stream_message_input_controller.dart} | 50 +-- .../lib/stream_chat_flutter_core.dart | 2 +- 28 files changed, 1588 insertions(+), 545 deletions(-) delete mode 100644 packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart rename packages/stream_chat_flutter/lib/src/v4/{channel_list_view => scroll_view/channel_scroll_view}/stream_channel_list_tile.dart (99%) rename packages/stream_chat_flutter/lib/src/v4/{channel_list_view => scroll_view/channel_scroll_view}/stream_channel_list_view.dart (80%) rename packages/stream_chat_flutter/lib/src/v4/{message_search_list_view => scroll_view/message_search_scroll_view}/stream_message_search_list_tile.dart (95%) rename packages/stream_chat_flutter/lib/src/v4/{message_search_list_view => scroll_view/message_search_scroll_view}/stream_message_search_list_view.dart (74%) create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_empty_widget.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_error_widget.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_error.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_loading_widget.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart rename packages/stream_chat_flutter/lib/src/v4/{user_list_view => scroll_view/user_scroll_view}/stream_user_list_tile.dart (100%) rename packages/stream_chat_flutter/lib/src/v4/{user_list_view => scroll_view/user_scroll_view}/stream_user_list_view.dart (75%) delete mode 100644 packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart rename packages/stream_chat_flutter_core/lib/src/{message_input_controller.dart => stream_message_input_controller.dart} (85%) diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart index 209af7ea..376b0ba8 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_4.dart @@ -145,7 +145,7 @@ class ThreadPage extends StatelessWidget { ), ), StreamMessageInput( - messageInputController: MessageInputController( + messageInputController: StreamMessageInputController( message: Message(parentId: parent!.id), ), ), diff --git a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart index a872fb6e..e9c0168f 100644 --- a/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart +++ b/packages/stream_chat_flutter/example/lib/tutorial_part_6.dart @@ -184,7 +184,7 @@ class ThreadPage extends StatelessWidget { ), ), StreamMessageInput( - messageInputController: MessageInputController( + messageInputController: StreamMessageInputController( message: Message(parentId: parent!.id), ), ), diff --git a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart index 056e84fc..ffd8f386 100644 --- a/packages/stream_chat_flutter/lib/src/message_actions_modal.dart +++ b/packages/stream_chat_flutter/lib/src/message_actions_modal.dart @@ -639,7 +639,7 @@ class _StreamMessageActionsModalState extends State { widget.editMessageInputBuilder!(context, widget.message) else StreamMessageInput( - messageInputController: MessageInputController( + messageInputController: StreamMessageInputController( message: widget.message, ), preMessageSending: (m) { diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart b/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart deleted file mode 100644 index 69a6cf6e..00000000 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_loading_tile.dart +++ /dev/null @@ -1,96 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:shimmer/shimmer.dart'; -import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; - -/// A shimmering list item which shows a loading effect. -/// -/// This is used by [StreamChannelListView] to show a loading effect while -/// the list is being loaded. -class StreamChannelListLoadingTile extends StatelessWidget { - /// Creates a new instance of [StreamChannelListLoadingTile] widget. - const StreamChannelListLoadingTile({ - Key? key, - this.visualDensity = VisualDensity.standard, - this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), - }) : super(key: key); - - /// Defines how compact the list tile's layout will be. - /// - /// {@macro flutter.material.themedata.visualDensity} - /// - /// See also: - /// - /// * [ThemeData.visualDensity], which specifies the [visualDensity] for all - /// widgets within a [Theme]. - final VisualDensity visualDensity; - - /// The tile's internal padding. - /// - /// Insets a [ListTile]'s contents: its [leading], [title], [subtitle], - /// and [trailing] widgets. - /// - /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. - final EdgeInsetsGeometry contentPadding; - - @override - Widget build(BuildContext context) { - final colorTheme = StreamChatTheme.of(context).colorTheme; - - final leading = Container( - height: 49, - width: 49, - decoration: BoxDecoration( - color: colorTheme.barsBg, - shape: BoxShape.circle, - ), - ); - - final title = Container( - height: 16, - width: 66, - decoration: BoxDecoration( - color: colorTheme.barsBg, - borderRadius: BorderRadius.circular(8), - ), - ); - - final subtitle = Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Expanded( - child: Align( - alignment: Alignment.centerLeft, - child: Container( - height: 16, - decoration: BoxDecoration( - color: colorTheme.barsBg, - borderRadius: BorderRadius.circular(8), - ), - ), - ), - ), - const SizedBox(width: 8), - Container( - height: 16, - width: 50, - decoration: BoxDecoration( - color: colorTheme.barsBg, - borderRadius: BorderRadius.circular(8), - ), - ), - ], - ); - - return Shimmer.fromColors( - baseColor: colorTheme.disabled, - highlightColor: colorTheme.inputBg, - child: ListTile( - leading: leading, - title: title, - subtitle: subtitle, - visualDensity: visualDensity, - contentPadding: contentPadding, - ), - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_attachment_picker.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_attachment_picker.dart index cb3859be..33ba2a25 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_attachment_picker.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_attachment_picker.dart @@ -47,8 +47,8 @@ class StreamAttachmentPicker extends StatefulWidget { /// The picker size in height. final double pickerSize; - /// The [MessageInputController] linked to this picker. - final MessageInputController messageInputController; + /// The [StreamMessageInputController] linked to this picker. + final StreamMessageInputController messageInputController; /// The limit of attachments that can be picked. final int attachmentLimit; @@ -77,7 +77,7 @@ class StreamAttachmentPicker extends StatefulWidget { /// properties. StreamAttachmentPicker copyWith({ Key? key, - MessageInputController? messageInputController, + StreamMessageInputController? messageInputController, FilePickerCallback? onFilePicked, bool? isOpen, double? pickerSize, diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart index 9c33d83c..a16cd49e 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart @@ -76,16 +76,16 @@ typedef ActionButtonBuilder = Widget Function( ); /// Widget builder for widgets that may require data from the -/// [MessageInputController]. +/// [StreamMessageInputController]. typedef MessageRelatedBuilder = Widget Function( BuildContext context, - MessageInputController messageInputController, + StreamMessageInputController messageInputController, ); /// Widget builder for a custom attachment picker. typedef AttachmentsPickerBuilder = Widget Function( BuildContext context, - MessageInputController messageInputController, + StreamMessageInputController messageInputController, StreamAttachmentPicker defaultPicker, ); @@ -246,7 +246,7 @@ class StreamMessageInput extends StatefulWidget { final bool hideSendAsDm; /// The text controller of the TextField. - final MessageInputController? messageInputController; + final StreamMessageInputController? messageInputController; /// List of action widgets. final List actions; @@ -375,14 +375,14 @@ class StreamMessageInputState extends State bool get _disableEmojiSuggestionsOverlay => widget.disableEmojiSuggestionsOverlay ?? false; - RestorableMessageInputController? _controller; + StreamRestorableMessageInputController? _controller; - MessageInputController get _effectiveController => + StreamMessageInputController get _effectiveController => widget.messageInputController ?? _controller!.value; void _createLocalController([Message? message]) { assert(_controller == null, ''); - _controller = RestorableMessageInputController(message: message); + _controller = StreamRestorableMessageInputController(message: message); } void _registerController() { @@ -502,7 +502,7 @@ class StreamMessageInputState extends State ), ); } - return MessageValueListenableBuilder( + return StreamMessageValueListenableBuilder( valueListenable: _effectiveController, builder: (context, value, _) { Widget child = DecoratedBox( diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_text_field.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_text_field.dart index 8e4a34eb..d6a6879a 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_text_field.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_text_field.dart @@ -181,8 +181,8 @@ class StreamMessageTextField extends StatefulWidget { /// Controls the message being edited. /// - /// If null, this widget will create its own [MessageInputController]. - final MessageInputController? controller; + /// If null, this widget will create its own [StreamMessageInputController]. + final StreamMessageInputController? controller; /// Defines the keyboard focus for this widget. /// @@ -656,9 +656,9 @@ class StreamMessageTextField extends StatefulWidget { class _StreamMessageTextFieldState extends State with RestorationMixin { - RestorableMessageInputController? _controller; + StreamRestorableMessageInputController? _controller; - MessageInputController get _effectiveController => + StreamMessageInputController get _effectiveController => widget.controller ?? _controller!.value; @override @@ -671,7 +671,7 @@ class _StreamMessageTextFieldState extends State void _createLocalController([Message? message]) { assert(_controller == null, ''); - _controller = RestorableMessageInputController(message: message); + _controller = StreamRestorableMessageInputController(message: message); } @override diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart new file mode 100644 index 00000000..b8e2cf24 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart @@ -0,0 +1,91 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// A widget that displays a user. +/// +/// This widget is intended to be used as a Tile in +/// [StreamChannelGridView]. +/// +/// It shows the user's avatar and name. +/// +/// See also: +/// * [StreamChannelGridView] +/// * [StreamUserAvatar] +class StreamChannelGridTile extends StatelessWidget { + /// Creates a new instance of [StreamChannelGridTile] widget. + const StreamChannelGridTile({ + Key? key, + required this.channel, + this.child, + this.footer, + this.onTap, + this.onLongPress, + }) : super(key: key); + + /// The channel to display. + final Channel channel; + + /// The widget to display in the body of the tile. + final Widget? child; + + /// The widget to display in the footer of the tile. + final Widget? footer; + + /// Called when the user taps this grid tile. + final GestureTapCallback? onTap; + + /// Called when the user long-presses on this grid tile. + final GestureLongPressCallback? onLongPress; + + /// Creates a copy of this tile but with the given fields replaced with + /// the new values. + StreamChannelGridTile copyWith({ + Key? key, + Channel? channel, + Widget? child, + Widget? footer, + GestureTapCallback? onTap, + GestureLongPressCallback? onLongPress, + }) => + StreamChannelGridTile( + key: key ?? this.key, + channel: channel ?? this.channel, + footer: footer ?? this.footer, + onTap: onTap ?? this.onTap, + onLongPress: onLongPress ?? this.onLongPress, + child: child ?? this.child, + ); + + @override + Widget build(BuildContext context) { + final channelPreviewTheme = StreamChannelPreviewTheme.of(context); + + final child = this.child ?? + StreamChannelAvatar( + channel: channel, + borderRadius: BorderRadius.circular(32), + constraints: const BoxConstraints.tightFor( + height: 64, + width: 64, + ), + ); + + final footer = this.footer ?? + StreamChannelName( + channel: channel, + textStyle: channelPreviewTheme.titleStyle, + ); + + return InkWell( + onTap: onTap, + onLongPress: onLongPress, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + child, + footer, + ], + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart new file mode 100644 index 00000000..af5e03ce --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart @@ -0,0 +1,399 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_empty_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_error_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_error.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_loading_widget.dart'; +import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; + +/// Default grid delegate for [StreamChannelGridView]. +const defaultChannelGridViewDelegate = + SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4); + +/// Signature for the item builder that creates the children of the +/// [StreamChannelGridView]. +typedef StreamChannelGridViewIndexedWidgetBuilder + = StreamScrollViewIndexedWidgetBuilder; + +/// A [GridView] that shows a grid of [User]s, +/// it uses [StreamChannelGridTile] as a default item. +/// +/// Example: +/// +/// ```dart +/// StreamChannelGridView( +/// controller: controller, +/// onChannelTap: (channel) { +/// // Handle channel tap event +/// }, +/// onChannelLongPress: (channel) { +/// // Handle channel long press event +/// }, +/// ) +/// ``` +/// +/// See also: +/// * [StreamChannelGridTile] +/// * [StreamChannelListController] +class StreamChannelGridView extends StatelessWidget { + /// Creates a new instance of [StreamChannelGridView]. + const StreamChannelGridView({ + Key? key, + required this.controller, + this.gridDelegate = defaultChannelGridViewDelegate, + this.itemBuilder, + this.emptyBuilder, + this.loadMoreErrorBuilder, + this.loadMoreIndicatorBuilder, + this.loadingBuilder, + this.errorBuilder, + this.onChannelTap, + this.onChannelLongPress, + this.loadMoreTriggerIndex = 3, + this.scrollDirection = Axis.vertical, + this.reverse = false, + this.scrollController, + this.primary, + this.physics, + this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, + this.cacheExtent, + this.semanticChildCount, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + this.clipBehavior = Clip.hardEdge, + }) : super(key: key); + + /// The [StreamUserListController] used to control the grid of users. + final StreamChannelListController controller; + + /// A delegate that controls the layout of the children within + /// the [PagedValueGridView]. + final SliverGridDelegate gridDelegate; + + /// A builder that is called to build items in the [PagedValueGridView]. + /// + /// The `value` parameter is the [V] at this position in the grid. + final StreamChannelGridViewIndexedWidgetBuilder? itemBuilder; + + /// A builder that is called to build the empty state of the grid. + final WidgetBuilder? emptyBuilder; + + /// A builder that is called to build the load more error state of the grid. + final PagedValueScrollViewLoadMoreErrorBuilder? loadMoreErrorBuilder; + + /// A builder that is called to build the load more indicator of the grid. + final WidgetBuilder? loadMoreIndicatorBuilder; + + /// A builder that is called to build the loading state of the grid. + final WidgetBuilder? loadingBuilder; + + /// A builder that is called to build the error state of the grid. + final Widget Function(BuildContext, StreamChatError)? errorBuilder; + + /// Called when the user taps this grid tile. + final void Function(Channel)? onChannelTap; + + /// Called when the user long-presses on this grid tile. + final void Function(Channel)? onChannelLongPress; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if the reading direction is left-to-right and + /// [scrollDirection] is [Axis.horizontal], then the scroll view scrolls from + /// left to right when [reverse] is false and from right to left when + /// [reverse] is true. + /// + /// Similarly, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the application, + /// the ScrollAction will be evaluated using this scroll view, for example, + /// when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollDirection] is [Axis.vertical] and + /// [controller] is null. + final bool? primary; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// The number of children that will contribute semantic information. + /// + /// Some subtypes of [ScrollView] can infer this value automatically. For + /// example [ListView] will use the number of widgets in the child list, + /// while the [ListView.separated] constructor will use half that amount. + /// + /// For [CustomScrollView] and other types which do not receive a builder + /// or list of widgets, the child count must be explicitly provided. If the + /// number is unknown or unbounded this should be left unset or set to null. + /// + /// See also: + /// + /// * [SemanticsConfiguration.scrollChildCount], the corresponding semantics property. + final int? semanticChildCount; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + + @override + Widget build(BuildContext context) { + return PagedValueGridView( + scrollDirection: scrollDirection, + reverse: reverse, + controller: controller, + primary: primary, + physics: physics, + shrinkWrap: shrinkWrap, + padding: padding, + scrollController: scrollController, + addAutomaticKeepAlives: addAutomaticKeepAlives, + addRepaintBoundaries: addRepaintBoundaries, + addSemanticIndexes: addSemanticIndexes, + cacheExtent: cacheExtent, + semanticChildCount: semanticChildCount, + dragStartBehavior: dragStartBehavior, + keyboardDismissBehavior: keyboardDismissBehavior, + restorationId: restorationId, + clipBehavior: clipBehavior, + gridDelegate: gridDelegate, + itemBuilder: (context, channels, index) { + final channel = channels[index]; + final onTap = onChannelTap; + final onLongPress = onChannelLongPress; + + final streamChannelGridTile = StreamChannelGridTile( + channel: channel, + onTap: onTap == null ? null : () => onTap(channel), + onLongPress: onLongPress == null ? null : () => onLongPress(channel), + ); + + return itemBuilder?.call( + context, + channels, + index, + streamChannelGridTile, + ) ?? + streamChannelGridTile; + }, + emptyBuilder: (context) { + final chatThemeData = StreamChatTheme.of(context); + return emptyBuilder?.call(context) ?? + Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: StreamScrollViewEmptyWidget( + emptyIcon: StreamSvgIcon.message( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + emptyTitle: Text( + context.translations.letsStartChattingLabel, + style: chatThemeData.textTheme.headline, + ), + ), + ), + ); + }, + loadMoreErrorBuilder: (context, error) => + StreamScrollViewLoadMoreError.grid( + onTap: controller.retry, + error: Text( + context.translations.loadingChannelsError, + textAlign: TextAlign.center, + ), + ), + loadMoreIndicatorBuilder: (context) => const Center( + child: Padding( + padding: EdgeInsets.all(16), + child: StreamScrollViewLoadMoreIndicator(), + ), + ), + loadingBuilder: (context) => + loadingBuilder?.call(context) ?? + const Center( + child: StreamScrollViewLoadingWidget(), + ), + errorBuilder: (context, error) => + errorBuilder?.call(context, error) ?? + Center( + child: StreamScrollViewErrorWidget( + errorTitle: Text(context.translations.loadingChannelsError), + onRetryPressed: controller.refresh, + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart new file mode 100644 index 00000000..e3f7f374 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart @@ -0,0 +1,96 @@ +// import 'package:flutter/material.dart'; +// import 'package:shimmer/shimmer.dart'; +// import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +// +// /// A shimmering list item which shows a loading effect. +// /// +// /// This is used by [StreamChannelListView] to show a loading effect while +// /// the list is being loaded. +// class StreamChannelListLoadingTile extends StatelessWidget { +// /// Creates a new instance of [StreamChannelListLoadingTile] widget. +// const StreamChannelListLoadingTile({ +// Key? key, +// this.visualDensity = VisualDensity.standard, +// this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), +// }) : super(key: key); +// +// /// Defines how compact the list tile's layout will be. +// /// +// /// {@macro flutter.material.themedata.visualDensity} +// /// +// /// See also: +// /// +// /// * [ThemeData.visualDensity], which specifies the [visualDensity] for all +// /// widgets within a [Theme]. +// final VisualDensity visualDensity; +// +// /// The tile's internal padding. +// /// +// /// Insets a [ListTile]'s contents: its [leading], [errorTitle], [subtitle], +// /// and [trailing] widgets. +// /// +// /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. +// final EdgeInsetsGeometry contentPadding; +// +// @override +// Widget build(BuildContext context) { +// final colorTheme = StreamChatTheme.of(context).colorTheme; +// +// final leading = Container( +// height: 49, +// width: 49, +// decoration: BoxDecoration( +// color: colorTheme.barsBg, +// shape: BoxShape.circle, +// ), +// ); +// +// final title = Container( +// height: 16, +// width: 66, +// decoration: BoxDecoration( +// color: colorTheme.barsBg, +// borderRadius: BorderRadius.circular(8), +// ), +// ); +// +// final subtitle = Row( +// mainAxisAlignment: MainAxisAlignment.spaceBetween, +// children: [ +// Expanded( +// child: Align( +// alignment: Alignment.centerLeft, +// child: Container( +// height: 16, +// decoration: BoxDecoration( +// color: colorTheme.barsBg, +// borderRadius: BorderRadius.circular(8), +// ), +// ), +// ), +// ), +// const SizedBox(width: 8), +// Container( +// height: 16, +// width: 50, +// decoration: BoxDecoration( +// color: colorTheme.barsBg, +// borderRadius: BorderRadius.circular(8), +// ), +// ), +// ], +// ); +// +// return Shimmer.fromColors( +// baseColor: colorTheme.disabled, +// highlightColor: colorTheme.inputBg, +// child: ListTile( +// leading: leading, +// title: title, +// subtitle: subtitle, +// visualDensity: visualDensity, +// contentPadding: contentPadding, +// ), +// ); +// } +// } diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart similarity index 99% rename from packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart rename to packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart index 8c5acea6..8a180fca 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart @@ -1,7 +1,6 @@ import 'package:collection/collection.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/v4/stream_message_preview_text.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// A widget that displays a channel preview. diff --git a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart similarity index 80% rename from packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart rename to packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart index 1e76a25b..0feb84c6 100644 --- a/packages/stream_chat_flutter/lib/src/v4/channel_list_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart @@ -3,9 +3,14 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; -import 'package:stream_chat_flutter/src/v4/channel_list_view/stream_channel_list_tile.dart'; -import 'package:stream_chat_flutter/src/v4/stream_list_view_indexed_widget_builder.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_empty_widget.dart'; + +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_error_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_error.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_loading_widget.dart'; import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// Default separator builder for [StreamChannelListView]. @@ -19,7 +24,7 @@ Widget defaultChannelListViewSeparatorBuilder( /// Signature for the item builder that creates the children of the /// [StreamChannelListView]. typedef StreamChannelListViewIndexedWidgetBuilder - = StreamListViewIndexedWidgetBuilder; + = StreamScrollViewIndexedWidgetBuilder; /// A [ListView] that shows a list of [Channel]s, /// it uses [StreamChannelListTile] as a default item. @@ -328,96 +333,52 @@ class StreamChannelListView extends StatelessWidget { ) ?? streamChannelListTile; }, - emptyBuilder: (context) => - emptyBuilder?.call(context) ?? - const Center( - child: Padding( - padding: EdgeInsets.all(8), - child: StreamChannelListEmptyWidget(), - ), - ), + emptyBuilder: (context) { + final chatThemeData = StreamChatTheme.of(context); + return emptyBuilder?.call(context) ?? + Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: StreamScrollViewEmptyWidget( + emptyIcon: StreamSvgIcon.message( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + emptyTitle: Text( + context.translations.letsStartChattingLabel, + style: chatThemeData.textTheme.headline, + ), + ), + ), + ); + }, loadMoreErrorBuilder: (context, error) => - StreamChannelListLoadMoreError(onTap: controller.retry), + StreamScrollViewLoadMoreError.list( + onTap: controller.retry, + error: Text(context.translations.loadingChannelsError), + ), loadMoreIndicatorBuilder: (context) => const Center( child: Padding( padding: EdgeInsets.all(16), - child: StreamChannelListLoadMoreIndicator(), + child: StreamScrollViewLoadMoreIndicator(), ), ), loadingBuilder: (context) => loadingBuilder?.call(context) ?? - ListView.separated( - padding: padding, - physics: physics, - reverse: reverse, - itemCount: 25, - separatorBuilder: (_, __) => const StreamChannelListSeparator(), - itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + const Center( + child: StreamScrollViewLoadingWidget(), ), errorBuilder: (context, error) => errorBuilder?.call(context, error) ?? Center( - child: StreamChannelListErrorWidget( - onPressed: controller.refresh, + child: StreamScrollViewErrorWidget( + errorTitle: Text(context.translations.loadingChannelsError), + onRetryPressed: controller.refresh, ), ), ); } -/// A [StreamChannelListTile] that can be used in a [ListView] to show a -/// loading tile while waiting for the [StreamChannelListController] to load -/// more channels. -class StreamChannelListLoadMoreIndicator extends StatelessWidget { - /// Creates a new instance of [StreamChannelListLoadMoreIndicator]. - const StreamChannelListLoadMoreIndicator({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) => const SizedBox( - height: 16, - width: 16, - child: CircularProgressIndicator.adaptive(), - ); -} - -/// A [StreamChannelListTile] that is used to display the error indicator when -/// loading more channels fails. -class StreamChannelListLoadMoreError extends StatelessWidget { - /// Creates a new instance of [StreamChannelListLoadMoreError]. - const StreamChannelListLoadMoreError({ - Key? key, - this.onTap, - }) : super(key: key); - - /// The callback to invoke when the user taps on the error indicator. - final GestureTapCallback? onTap; - - @override - Widget build(BuildContext context) { - final theme = StreamChatTheme.of(context); - return InkWell( - onTap: onTap, - child: Container( - color: theme.colorTheme.textLowEmphasis.withOpacity(0.9), - child: Padding( - padding: const EdgeInsets.all(16), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - context.translations.loadingChannelsError, - style: theme.textTheme.body.copyWith( - color: Colors.white, - ), - ), - StreamSvgIcon.retry(color: Colors.white), - ], - ), - ), - ), - ); - } -} - /// A widget that is used to display a separator between /// [StreamChannelListTile] items. class StreamChannelListSeparator extends StatelessWidget { @@ -471,29 +432,3 @@ class StreamChannelListErrorWidget extends StatelessWidget { ], ); } - -/// A widget that is used to display an empty state when -/// [StreamChannelListController] loads zero channels. -class StreamChannelListEmptyWidget extends StatelessWidget { - /// Creates a new instance of [StreamChannelListEmptyWidget] widget. - const StreamChannelListEmptyWidget({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - final chatThemeData = StreamChatTheme.of(context); - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - StreamSvgIcon.message( - size: 148, - color: chatThemeData.colorTheme.disabled, - ), - const SizedBox(height: 28), - Text( - context.translations.letsStartChattingLabel, - style: chatThemeData.textTheme.headline, - ), - ], - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart similarity index 95% rename from packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_tile.dart rename to packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart index f67597f0..c303add0 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; -import 'package:stream_chat_flutter/src/v4/stream_message_preview_text.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// A widget that displays a message search item. @@ -158,15 +157,19 @@ class StreamMessageSearchListTile extends StatelessWidget { } } +/// A widget that displays the title of a [StreamMessageSearchListTile]. class MessageSearchListTileTitle extends StatelessWidget { + /// Creates a new [MessageSearchListTileTitle] instance. const MessageSearchListTileTitle({ Key? key, required this.messageResponse, this.textStyle, }) : super(key: key); + /// The message response for the tile. final GetMessageResponse messageResponse; + /// The style to use for the title. final TextStyle? textStyle; @override @@ -200,6 +203,7 @@ class MessageSearchListTileTitle extends StatelessWidget { } } +/// A widget which shows formatted created date of the passed [message]. class MessageSearchTileMessageDate extends StatelessWidget { /// Creates a new instance of [MessageSearchTileMessageDate]. const MessageSearchTileMessageDate({ diff --git a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart similarity index 74% rename from packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart rename to packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart index aef76b10..e6b526d7 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_search_list_view/stream_message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart @@ -1,6 +1,11 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_empty_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_error_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_error.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_loading_widget.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Default separator builder for [StreamMessageSearchListView]. @@ -14,7 +19,7 @@ Widget defaultMessageSearchListViewSeparatorBuilder( /// Signature for the item builder that creates the children of the /// [StreamMessageSearchListView]. typedef StreamMessageSearchListViewIndexedWidgetBuilder - = StreamListViewIndexedWidgetBuilder; /// A [ListView] that shows a list of [GetMessageResponse]s, @@ -312,7 +317,7 @@ class StreamMessageSearchListView extends StatelessWidget { final onTap = onMessageTap; final onLongPress = onMessageLongPress; - final streamUserListTile = StreamMessageSearchListTile( + final streamMessageSearchListTile = StreamMessageSearchListTile( messageResponse: messageResponse, onTap: onTap == null ? null : () => onTap(messageResponse), onLongPress: @@ -323,101 +328,56 @@ class StreamMessageSearchListView extends StatelessWidget { context, messageResponses, index, - streamUserListTile, + streamMessageSearchListTile, ) ?? - streamUserListTile; + streamMessageSearchListTile; + }, + emptyBuilder: (context) { + final chatThemeData = StreamChatTheme.of(context); + return emptyBuilder?.call(context) ?? + Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: StreamScrollViewEmptyWidget( + emptyIcon: StreamSvgIcon.message( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + emptyTitle: Text( + context.translations.emptyMessagesText, + style: chatThemeData.textTheme.headline, + ), + ), + ), + ); }, - emptyBuilder: (context) => - emptyBuilder?.call(context) ?? - const Center( - child: Padding( - padding: EdgeInsets.all(8), - child: StreamMessageSearchListEmptyWidget(), - ), - ), loadMoreErrorBuilder: (context, error) => - StreamMessageSearchListLoadMoreError(onTap: controller.retry), + StreamScrollViewLoadMoreError.list( + onTap: controller.retry, + error: Text(context.translations.loadingMessagesError), + ), loadMoreIndicatorBuilder: (context) => const Center( child: Padding( padding: EdgeInsets.all(16), - child: StreamMessageSearchListLoadMoreIndicator(), + child: StreamScrollViewLoadMoreIndicator(), ), ), loadingBuilder: (context) => loadingBuilder?.call(context) ?? - ListView.separated( - padding: padding, - physics: physics, - reverse: reverse, - itemCount: 25, - separatorBuilder: (_, __) => - const StreamMessageSearchListSeparator(), - itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + const Center( + child: StreamScrollViewLoadingWidget(), ), errorBuilder: (context, error) => errorBuilder?.call(context, error) ?? Center( - child: StreamMessageSearchListErrorWidget( - onPressed: controller.refresh, + child: StreamScrollViewErrorWidget( + errorTitle: Text(context.translations.loadingMessagesError), + onRetryPressed: controller.refresh, ), ), ); } -/// A [StreamMessageSearchListTile] that can be used in a [ListView] to show a -/// loading tile while waiting for the [StreamMessageSearchListController] to -/// load more messages. -class StreamMessageSearchListLoadMoreIndicator extends StatelessWidget { - /// Creates a new instance of [StreamMessageSearchListLoadMoreIndicator]. - const StreamMessageSearchListLoadMoreIndicator({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) => const SizedBox( - height: 16, - width: 16, - child: CircularProgressIndicator.adaptive(), - ); -} - -/// A [StreamMessageSearchListTile] that is used to display the error indicator -/// when loading more messages fails. -class StreamMessageSearchListLoadMoreError extends StatelessWidget { - /// Creates a new instance of [StreamMessageSearchListLoadMoreError]. - const StreamMessageSearchListLoadMoreError({ - Key? key, - this.onTap, - }) : super(key: key); - - /// The callback to invoke when the user taps on the error indicator. - final GestureTapCallback? onTap; - - @override - Widget build(BuildContext context) { - final theme = StreamChatTheme.of(context); - return InkWell( - onTap: onTap, - child: Container( - color: theme.colorTheme.textLowEmphasis.withOpacity(0.9), - child: Padding( - padding: const EdgeInsets.all(16), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - context.translations.loadingChannelsError, - style: theme.textTheme.body.copyWith( - color: Colors.white, - ), - ), - StreamSvgIcon.retry(color: Colors.white), - ], - ), - ), - ), - ); - } -} - /// A widget that is used to display a separator between /// [StreamMessageSearchListTile] items. class StreamMessageSearchListSeparator extends StatelessWidget { @@ -433,67 +393,3 @@ class StreamMessageSearchListSeparator extends StatelessWidget { ); } } - -/// A widget that is used to display an error screen -/// when [StreamMessageSearchListController] fails to load initial messages. -class StreamMessageSearchListErrorWidget extends StatelessWidget { - /// Creates a new instance of [StreamMessageSearchListErrorWidget] widget. - const StreamMessageSearchListErrorWidget({ - Key? key, - this.onPressed, - }) : super(key: key); - - /// The callback to invoke when the user taps on the retry button. - final VoidCallback? onPressed; - - @override - Widget build(BuildContext context) => Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text.rich( - TextSpan( - children: [ - const WidgetSpan( - child: Padding( - padding: EdgeInsets.only(right: 2), - child: Icon(Icons.error_outline), - ), - ), - TextSpan(text: context.translations.loadingChannelsError), - ], - ), - style: Theme.of(context).textTheme.headline6, - ), - TextButton( - onPressed: onPressed, - child: Text(context.translations.retryLabel), - ), - ], - ); -} - -/// A widget that is used to display an empty state when -/// [StreamMessageSearchListController] loads zero messages. -class StreamMessageSearchListEmptyWidget extends StatelessWidget { - /// Creates a new instance of [StreamMessageSearchListEmptyWidget] widget. - const StreamMessageSearchListEmptyWidget({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - final chatThemeData = StreamChatTheme.of(context); - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - StreamSvgIcon.message( - size: 148, - color: chatThemeData.colorTheme.disabled, - ), - const SizedBox(height: 28), - Text( - context.translations.letsStartChattingLabel, - style: chatThemeData.textTheme.headline, - ), - ], - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_empty_widget.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_empty_widget.dart new file mode 100644 index 00000000..531eac79 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_empty_widget.dart @@ -0,0 +1,61 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; + +/// A widget that shows an empty view when the [StreamScrollView] loads +/// empty data. +class StreamScrollViewEmptyWidget extends StatelessWidget { + /// Creates a new instance of the [StreamScrollViewEmptyWidget]. + const StreamScrollViewEmptyWidget({ + Key? key, + required this.emptyIcon, + required this.emptyTitle, + this.emptyTitleStyle, + this.mainAxisSize = MainAxisSize.max, + this.mainAxisAlignment = MainAxisAlignment.center, + this.crossAxisAlignment = CrossAxisAlignment.center, + }) : super(key: key); + + /// The title of the empty view. + final Widget emptyTitle; + + /// The style of the title. + final TextStyle? emptyTitleStyle; + + /// The icon of the empty view. + final Widget emptyIcon; + + /// The main axis size of the empty view. + final MainAxisSize mainAxisSize; + + /// The main axis alignment of the empty view. + final MainAxisAlignment mainAxisAlignment; + + /// The cross axis alignment of the empty view. + final CrossAxisAlignment crossAxisAlignment; + + @override + Widget build(BuildContext context) { + final chatThemeData = StreamChatTheme.of(context); + + final emptyIcon = AnimatedSwitcher( + duration: kThemeChangeDuration, + child: this.emptyIcon, + ); + + final emptyTitleText = AnimatedDefaultTextStyle( + style: emptyTitleStyle ?? chatThemeData.textTheme.headline, + duration: kThemeChangeDuration, + child: emptyTitle, + ); + + return Column( + mainAxisSize: mainAxisSize, + mainAxisAlignment: mainAxisAlignment, + crossAxisAlignment: crossAxisAlignment, + children: [ + emptyIcon, + emptyTitleText, + ], + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_error_widget.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_error_widget.dart new file mode 100644 index 00000000..9d6af29c --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_error_widget.dart @@ -0,0 +1,92 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; + +/// A widget that is displayed when a [StreamScrollView] encounters an error +/// while loading the initial items. +class StreamScrollViewErrorWidget extends StatelessWidget { + /// Creates a new instance of the [StreamScrollViewErrorWidget]. + const StreamScrollViewErrorWidget({ + Key? key, + this.errorTitle, + this.errorTitleStyle, + this.errorIcon, + this.retryButtonText, + this.retryButtonTextStyle, + required this.onRetryPressed, + this.mainAxisSize = MainAxisSize.max, + this.mainAxisAlignment = MainAxisAlignment.center, + this.crossAxisAlignment = CrossAxisAlignment.center, + }) : super(key: key); + + /// The title of the error. + final Widget? errorTitle; + + /// The style of the title. + final TextStyle? errorTitleStyle; + + /// The icon to display when the list shows error. + final Widget? errorIcon; + + /// The text to display in the retry button. + final Widget? retryButtonText; + + /// The style of the retryButtonText. + final TextStyle? retryButtonTextStyle; + + /// The callback to invoke when the user taps on the retry button. + final VoidCallback onRetryPressed; + + /// The main axis size of the error view. + final MainAxisSize mainAxisSize; + + /// The main axis alignment of the error view. + final MainAxisAlignment mainAxisAlignment; + + /// The cross axis alignment of the error view. + final CrossAxisAlignment crossAxisAlignment; + + @override + Widget build(BuildContext context) { + final chatThemeData = StreamChatTheme.of(context); + + final errorIcon = AnimatedSwitcher( + duration: kThemeChangeDuration, + child: this.errorIcon ?? + Icon( + Icons.error_outline_rounded, + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + ); + + final titleText = AnimatedDefaultTextStyle( + style: errorTitleStyle ?? chatThemeData.textTheme.headline, + duration: kThemeChangeDuration, + child: errorTitle ?? const SizedBox(), + ); + + final retryButtonText = AnimatedDefaultTextStyle( + style: errorTitleStyle ?? + chatThemeData.textTheme.headline.copyWith( + color: Colors.white, + ), + duration: kThemeChangeDuration, + child: this.retryButtonText ?? Text(context.translations.retryLabel), + ); + + return Column( + mainAxisSize: mainAxisSize, + mainAxisAlignment: mainAxisAlignment, + crossAxisAlignment: crossAxisAlignment, + children: [ + errorIcon, + titleText, + ElevatedButton( + onPressed: onRetryPressed, + child: retryButtonText, + ), + ], + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart new file mode 100644 index 00000000..0305cd1f --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart @@ -0,0 +1,15 @@ +import 'package:flutter/material.dart'; + +/// Signature for a function that creates a widget for a given index, e.g., in a +/// list, grid. +/// +/// Used by [StreamChannelListView], [StreamMessageSearchListView] +/// and [StreamUserListView]. +typedef StreamScrollViewIndexedWidgetBuilder + = Widget Function( + BuildContext context, + List items, + int index, + WidgetType defaultWidget, +); diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_error.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_error.dart new file mode 100644 index 00000000..03575b1f --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_error.dart @@ -0,0 +1,110 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; +import 'package:stream_chat_flutter/src/stream_svg_icon.dart'; + +/// A tile that is used to display the error indicator when +/// loading more items fails. +class StreamScrollViewLoadMoreError extends StatelessWidget { + /// Creates a new instance of [StreamScrollViewLoadMoreError.list]. + const StreamScrollViewLoadMoreError.list({ + Key? key, + this.error, + this.errorStyle, + this.errorIcon, + this.backgroundColor, + required this.onTap, + this.padding = const EdgeInsets.all(16), + this.mainAxisSize = MainAxisSize.max, + this.mainAxisAlignment = MainAxisAlignment.spaceBetween, + this.crossAxisAlignment = CrossAxisAlignment.center, + }) : _isList = true, + super(key: key); + + /// Creates a new instance of [StreamScrollViewLoadMoreError.grid]. + const StreamScrollViewLoadMoreError.grid({ + Key? key, + this.error, + this.errorStyle, + this.errorIcon, + this.backgroundColor, + required this.onTap, + this.padding = const EdgeInsets.all(16), + this.mainAxisSize = MainAxisSize.max, + this.mainAxisAlignment = MainAxisAlignment.spaceEvenly, + this.crossAxisAlignment = CrossAxisAlignment.center, + }) : _isList = false, + super(key: key); + + /// The error message to display. + final Widget? error; + + /// The style of the error message. + final TextStyle? errorStyle; + + /// The icon to display next to the message. + final Widget? errorIcon; + + /// The background color of the error message. + final Color? backgroundColor; + + /// The callback to invoke when the user taps on the error indicator. + final GestureTapCallback onTap; + + /// The amount of space by which to inset the child. + final EdgeInsetsGeometry padding; + + /// The main axis size of the error view. + final MainAxisSize mainAxisSize; + + /// The main axis alignment of the error view. + final MainAxisAlignment mainAxisAlignment; + + /// The cross axis alignment of the error view. + final CrossAxisAlignment crossAxisAlignment; + + final bool _isList; + + @override + Widget build(BuildContext context) { + final theme = StreamChatTheme.of(context); + + final errorText = AnimatedDefaultTextStyle( + style: errorStyle ?? theme.textTheme.body.copyWith(color: Colors.white), + duration: kThemeChangeDuration, + child: error ?? const SizedBox(), + ); + + final errorIcon = AnimatedSwitcher( + duration: kThemeChangeDuration, + child: this.errorIcon ?? StreamSvgIcon.retry(color: Colors.white), + ); + + final backgroundColor = this.backgroundColor ?? + theme.colorTheme.textLowEmphasis.withOpacity(0.9); + + final children = [errorText, errorIcon]; + + return InkWell( + onTap: onTap, + child: Container( + color: backgroundColor, + child: Padding( + padding: padding, + child: _isList + ? Row( + mainAxisSize: mainAxisSize, + mainAxisAlignment: mainAxisAlignment, + crossAxisAlignment: crossAxisAlignment, + children: children, + ) + : Column( + mainAxisSize: mainAxisSize, + mainAxisAlignment: mainAxisAlignment, + crossAxisAlignment: crossAxisAlignment, + children: children, + ), + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart new file mode 100644 index 00000000..93bf8d06 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart @@ -0,0 +1,25 @@ +import 'package:flutter/material.dart'; + +/// A widget that shows a loading indicator when the user is near the bottom of +/// the list. +class StreamScrollViewLoadMoreIndicator extends StatelessWidget { + /// Creates a new instance of [StreamScrollViewLoadMoreIndicator]. + const StreamScrollViewLoadMoreIndicator({ + Key? key, + this.height = 16, + this.width = 16, + }) : super(key: key); + + /// The height of the indicator. + final double height; + + /// The width of the indicator. + final double width; + + @override + Widget build(BuildContext context) => SizedBox( + height: height, + width: width, + child: const CircularProgressIndicator.adaptive(), + ); +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_loading_widget.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_loading_widget.dart new file mode 100644 index 00000000..ae47b152 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/stream_scroll_view_loading_widget.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; + +/// A widget that is displayed while the [StreamScrollView] is loading. +class StreamScrollViewLoadingWidget extends StatelessWidget { + /// Creates a new instance of [StreamScrollViewLoadingWidget]. + const StreamScrollViewLoadingWidget({ + Key? key, + this.height = 42, + this.width = 42, + }) : super(key: key); + + /// The height of the indicator. + final double height; + + /// The width of the indicator. + final double width; + + @override + Widget build(BuildContext context) => SizedBox( + height: height, + width: width, + child: const CircularProgressIndicator.adaptive(), + ); +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart new file mode 100644 index 00000000..6f8743eb --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart @@ -0,0 +1,102 @@ +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// A widget that displays a user. +/// +/// This widget is intended to be used as a Tile in [StreamUserGridView] +/// +/// It shows the user's avatar and name. +/// +/// See also: +/// * [StreamUserGridView] +/// * [StreamUserAvatar] +class StreamUserGridTile extends StatelessWidget { + /// Creates a new instance of [StreamUserGridTile] widget. + const StreamUserGridTile({ + Key? key, + required this.user, + this.child, + this.footer, + this.onTap, + this.onLongPress, + }) : super(key: key); + + /// The user to display. + final User user; + + /// The widget to display in the body of the tile. + final Widget? child; + + /// The widget to display in the footer of the tile. + final Widget? footer; + + /// Called when the user taps this grid tile. + final GestureTapCallback? onTap; + + /// Called when the user long-presses on this grid tile. + final GestureLongPressCallback? onLongPress; + + /// Creates a copy of this tile but with the given fields replaced with + /// the new values. + StreamUserGridTile copyWith({ + Key? key, + User? user, + Widget? child, + Widget? footer, + GestureTapCallback? onTap, + GestureLongPressCallback? onLongPress, + }) => + StreamUserGridTile( + key: key ?? this.key, + user: user ?? this.user, + footer: footer ?? this.footer, + onTap: onTap ?? this.onTap, + onLongPress: onLongPress ?? this.onLongPress, + child: child ?? this.child, + ); + + @override + Widget build(BuildContext context) { + final child = this.child ?? + StreamUserAvatar( + user: user, + borderRadius: BorderRadius.circular(32), + constraints: const BoxConstraints.tightFor( + height: 64, + width: 64, + ), + onlineIndicatorConstraints: const BoxConstraints.tightFor( + height: 12, + width: 12, + ), + ); + + final footer = this.footer ?? + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: Text( + user.name, + textAlign: TextAlign.center, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: const TextStyle( + fontWeight: FontWeight.bold, + fontSize: 12, + ), + ), + ); + + return InkWell( + onTap: onTap, + onLongPress: onLongPress, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + child, + const SizedBox(height: 4), + footer, + ], + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart new file mode 100644 index 00000000..24765a6a --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart @@ -0,0 +1,395 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_empty_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_error_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_error.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_loading_widget.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// Default grid delegate for [StreamUserGridView]. +const defaultUserGridViewDelegate = + SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4); + +/// Signature for the item builder that creates the children of the +/// [StreamUserGridView]. +typedef StreamUserGridViewIndexedWidgetBuilder + = StreamScrollViewIndexedWidgetBuilder; + +/// A [GridView] that shows a grid of [User]s, +/// it uses [StreamUserGridTile] as a default item. +/// +/// Example: +/// +/// ```dart +/// StreamUserGridView( +/// controller: controller, +/// onUserTap: (user) { +/// // Handle user tap event +/// }, +/// onUserLongPress: (user) { +/// // Handle user long press event +/// }, +/// ) +/// ``` +/// +/// See also: +/// * [StreamUserListTile] +/// * [StreamUserListController] +class StreamUserGridView extends StatelessWidget { + /// Creates a new instance of [StreamUserGridView]. + const StreamUserGridView({ + Key? key, + required this.controller, + this.gridDelegate = defaultUserGridViewDelegate, + this.itemBuilder, + this.emptyBuilder, + this.loadMoreErrorBuilder, + this.loadMoreIndicatorBuilder, + this.loadingBuilder, + this.errorBuilder, + this.onUserTap, + this.onUserLongPress, + this.loadMoreTriggerIndex = 3, + this.scrollDirection = Axis.vertical, + this.reverse = false, + this.scrollController, + this.primary, + this.physics, + this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, + this.cacheExtent, + this.semanticChildCount, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + this.clipBehavior = Clip.hardEdge, + }) : super(key: key); + + /// The [StreamUserListController] used to control the grid of users. + final StreamUserListController controller; + + /// A delegate that controls the layout of the children within + /// the [PagedValueGridView]. + final SliverGridDelegate gridDelegate; + + /// A builder that is called to build items in the [PagedValueGridView]. + /// + /// The `value` parameter is the [V] at this position in the grid. + final StreamUserGridViewIndexedWidgetBuilder? itemBuilder; + + /// A builder that is called to build the empty state of the grid. + final WidgetBuilder? emptyBuilder; + + /// A builder that is called to build the load more error state of the grid. + final PagedValueScrollViewLoadMoreErrorBuilder? loadMoreErrorBuilder; + + /// A builder that is called to build the load more indicator of the grid. + final WidgetBuilder? loadMoreIndicatorBuilder; + + /// A builder that is called to build the loading state of the grid. + final WidgetBuilder? loadingBuilder; + + /// A builder that is called to build the error state of the grid. + final Widget Function(BuildContext, StreamChatError)? errorBuilder; + + /// Called when the user taps this grid tile. + final void Function(User)? onUserTap; + + /// Called when the user long-presses on this grid tile. + final void Function(User)? onUserLongPress; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if the reading direction is left-to-right and + /// [scrollDirection] is [Axis.horizontal], then the scroll view scrolls from + /// left to right when [reverse] is false and from right to left when + /// [reverse] is true. + /// + /// Similarly, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the application, + /// the ScrollAction will be evaluated using this scroll view, for example, + /// when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollDirection] is [Axis.vertical] and + /// [controller] is null. + final bool? primary; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// The number of children that will contribute semantic information. + /// + /// Some subtypes of [ScrollView] can infer this value automatically. For + /// example [ListView] will use the number of widgets in the child list, + /// while the [ListView.separated] constructor will use half that amount. + /// + /// For [CustomScrollView] and other types which do not receive a builder + /// or list of widgets, the child count must be explicitly provided. If the + /// number is unknown or unbounded this should be left unset or set to null. + /// + /// See also: + /// + /// * [SemanticsConfiguration.scrollChildCount], the corresponding semantics property. + final int? semanticChildCount; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + + @override + Widget build(BuildContext context) { + return PagedValueGridView( + scrollDirection: scrollDirection, + reverse: reverse, + controller: controller, + primary: primary, + physics: physics, + shrinkWrap: shrinkWrap, + padding: padding, + scrollController: scrollController, + addAutomaticKeepAlives: addAutomaticKeepAlives, + addRepaintBoundaries: addRepaintBoundaries, + addSemanticIndexes: addSemanticIndexes, + cacheExtent: cacheExtent, + semanticChildCount: semanticChildCount, + dragStartBehavior: dragStartBehavior, + keyboardDismissBehavior: keyboardDismissBehavior, + restorationId: restorationId, + clipBehavior: clipBehavior, + gridDelegate: gridDelegate, + itemBuilder: (context, users, index) { + final user = users[index]; + final onTap = onUserTap; + final onLongPress = onUserLongPress; + + final streamUserGridTile = StreamUserGridTile( + user: user, + onTap: onTap == null ? null : () => onTap(user), + onLongPress: onLongPress == null ? null : () => onLongPress(user), + ); + + return itemBuilder?.call( + context, + users, + index, + streamUserGridTile, + ) ?? + streamUserGridTile; + }, + emptyBuilder: (context) { + final chatThemeData = StreamChatTheme.of(context); + return emptyBuilder?.call(context) ?? + Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: StreamScrollViewEmptyWidget( + emptyIcon: StreamSvgIcon.user( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + emptyTitle: Text( + context.translations.noUsersLabel, + style: chatThemeData.textTheme.headline, + ), + ), + ), + ); + }, + loadMoreErrorBuilder: (context, error) => + StreamScrollViewLoadMoreError.grid( + onTap: controller.retry, + error: Text( + context.translations.loadingUsersError, + textAlign: TextAlign.center, + ), + ), + loadMoreIndicatorBuilder: (context) => const Center( + child: Padding( + padding: EdgeInsets.all(16), + child: StreamScrollViewLoadMoreIndicator(), + ), + ), + loadingBuilder: (context) => + loadingBuilder?.call(context) ?? + const Center( + child: StreamScrollViewLoadingWidget(), + ), + errorBuilder: (context, error) => + errorBuilder?.call(context, error) ?? + Center( + child: StreamScrollViewErrorWidget( + errorTitle: Text(context.translations.loadingUsersError), + onRetryPressed: controller.refresh, + ), + ), + ); + } +} diff --git a/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_tile.dart similarity index 100% rename from packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_tile.dart rename to packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_tile.dart diff --git a/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart similarity index 75% rename from packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart rename to packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart index 45fd37bb..1bca6e84 100644 --- a/packages/stream_chat_flutter/lib/src/v4/user_list_view/stream_user_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart @@ -1,6 +1,11 @@ import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:stream_chat_flutter/src/extension.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_empty_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_error_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_error.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_loading_widget.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; /// Default separator builder for [StreamUserListView]. @@ -14,7 +19,7 @@ Widget defaultUserListViewSeparatorBuilder( /// Signature for the item builder that creates the children of the /// [StreamUserListView]. typedef StreamUserListViewIndexedWidgetBuilder - = StreamListViewIndexedWidgetBuilder; + = StreamScrollViewIndexedWidgetBuilder; /// A [ListView] that shows a list of [User]s, /// it uses [StreamUserListTile] as a default item. @@ -322,96 +327,52 @@ class StreamUserListView extends StatelessWidget { ) ?? streamUserListTile; }, + emptyBuilder: (context) { + final chatThemeData = StreamChatTheme.of(context); + return emptyBuilder?.call(context) ?? + Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: StreamScrollViewEmptyWidget( + emptyIcon: StreamSvgIcon.user( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + emptyTitle: Text( + context.translations.noUsersLabel, + style: chatThemeData.textTheme.headline, + ), + ), + ), + ); + }, loadMoreErrorBuilder: (context, error) => - StreamUserListLoadMoreError(onTap: controller.retry), + StreamScrollViewLoadMoreError.list( + onTap: controller.retry, + error: Text(context.translations.loadingUsersError), + ), loadMoreIndicatorBuilder: (context) => const Center( child: Padding( padding: EdgeInsets.all(16), - child: StreamUserListLoadMoreIndicator(), + child: StreamScrollViewLoadMoreIndicator(), ), ), - emptyBuilder: (context) => - emptyBuilder?.call(context) ?? - const Center( - child: Padding( - padding: EdgeInsets.all(8), - child: StreamUserListEmptyWidget(), - ), - ), loadingBuilder: (context) => loadingBuilder?.call(context) ?? - ListView.separated( - padding: padding, - physics: physics, - reverse: reverse, - itemCount: 25, - separatorBuilder: (_, __) => const StreamUserListSeparator(), - itemBuilder: (_, __) => const StreamChannelListLoadingTile(), + const Center( + child: StreamScrollViewLoadingWidget(), ), errorBuilder: (context, error) => errorBuilder?.call(context, error) ?? Center( - child: StreamUserListErrorWidget( - onPressed: controller.refresh, + child: StreamScrollViewErrorWidget( + errorTitle: Text(context.translations.loadingUsersError), + onRetryPressed: controller.refresh, ), ), ); } -/// A [StreamUserListTile] that can be used in a [ListView] to show a -/// loading tile while waiting for the [StreamUserListController] to load -/// more channels. -class StreamUserListLoadMoreIndicator extends StatelessWidget { - /// Creates a new instance of [StreamUserListLoadMoreIndicator]. - const StreamUserListLoadMoreIndicator({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) => const SizedBox( - height: 16, - width: 16, - child: CircularProgressIndicator.adaptive(), - ); -} - -/// A [StreamUserListTile] that is used to display the error indicator when -/// loading more users fails. -class StreamUserListLoadMoreError extends StatelessWidget { - /// Creates a new instance of [StreamUserListLoadMoreError]. - const StreamUserListLoadMoreError({ - Key? key, - this.onTap, - }) : super(key: key); - - /// The callback to invoke when the user taps on the error indicator. - final GestureTapCallback? onTap; - - @override - Widget build(BuildContext context) { - final theme = StreamChatTheme.of(context); - return InkWell( - onTap: onTap, - child: Container( - color: theme.colorTheme.textLowEmphasis.withOpacity(0.9), - child: Padding( - padding: const EdgeInsets.all(16), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - context.translations.loadingChannelsError, - style: theme.textTheme.body.copyWith( - color: Colors.white, - ), - ), - StreamSvgIcon.retry(color: Colors.white), - ], - ), - ), - ), - ); - } -} - /// A widget that is used to display a separator between /// [StreamUserListTile] items. class StreamUserListSeparator extends StatelessWidget { @@ -427,67 +388,3 @@ class StreamUserListSeparator extends StatelessWidget { ); } } - -/// A widget that is used to display an error screen -/// when [StreamUserListController] fails to load initial users. -class StreamUserListErrorWidget extends StatelessWidget { - /// Creates a new instance of [StreamUserListErrorWidget] widget. - const StreamUserListErrorWidget({ - Key? key, - this.onPressed, - }) : super(key: key); - - /// The callback to invoke when the user taps on the retry button. - final VoidCallback? onPressed; - - @override - Widget build(BuildContext context) => Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text.rich( - TextSpan( - children: [ - const WidgetSpan( - child: Padding( - padding: EdgeInsets.only(right: 2), - child: Icon(Icons.error_outline), - ), - ), - TextSpan(text: context.translations.loadingChannelsError), - ], - ), - style: Theme.of(context).textTheme.headline6, - ), - TextButton( - onPressed: onPressed, - child: Text(context.translations.retryLabel), - ), - ], - ); -} - -/// A widget that is used to display an empty state when -/// [StreamUserListController] loads zero users. -class StreamUserListEmptyWidget extends StatelessWidget { - /// Creates a new instance of [StreamUserListEmptyWidget] widget. - const StreamUserListEmptyWidget({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - final chatThemeData = StreamChatTheme.of(context); - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - StreamSvgIcon.message( - size: 148, - color: chatThemeData.colorTheme.disabled, - ), - const SizedBox(height: 28), - Text( - context.translations.letsStartChattingLabel, - style: chatThemeData.textTheme.headline, - ), - ], - ); - } -} diff --git a/packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart b/packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart deleted file mode 100644 index e235e36a..00000000 --- a/packages/stream_chat_flutter/lib/src/v4/stream_list_view_indexed_widget_builder.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter/material.dart'; - -typedef StreamListViewIndexedWidgetBuilder - = Widget Function( - BuildContext context, - List items, - int index, - WidgetType defaultWidget, -); diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 0c2fc44b..5178fc01 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -48,23 +48,30 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; - -// v4 -export 'src/v4/channel_list_view/stream_channel_list_loading_tile.dart'; -export 'src/v4/channel_list_view/stream_channel_list_tile.dart'; -export 'src/v4/channel_list_view/stream_channel_list_view.dart'; export 'src/v4/message_input/countdown_button.dart'; export 'src/v4/message_input/stream_attachment_picker.dart'; export 'src/v4/message_input/stream_message_input.dart'; export 'src/v4/message_input/stream_message_send_button.dart'; export 'src/v4/message_input/stream_message_text_field.dart'; -export 'src/v4/message_search_list_view/stream_message_search_list_tile.dart'; -export 'src/v4/message_search_list_view/stream_message_search_list_view.dart'; +export 'src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart'; +export 'src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart'; + +// v4 +export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart'; +export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart'; +export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart'; + +export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart'; +export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart'; +export 'src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart'; +export 'src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart'; +export 'src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart'; +export 'src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart'; +export 'src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart'; +export 'src/v4/scroll_view/user_scroll_view/stream_user_list_tile.dart'; +export 'src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart'; export 'src/v4/stream_channel_avatar.dart'; export 'src/v4/stream_channel_info_bottom_sheet.dart'; export 'src/v4/stream_channel_name.dart'; -export 'src/v4/stream_list_view_indexed_widget_builder.dart'; export 'src/v4/stream_message_preview_text.dart'; -export 'src/v4/user_list_view/stream_user_list_tile.dart'; -export 'src/v4/user_list_view/stream_user_list_view.dart'; export 'src/visible_footnote.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/stream_message_input_controller.dart similarity index 85% rename from packages/stream_chat_flutter_core/lib/src/message_input_controller.dart rename to packages/stream_chat_flutter_core/lib/src/stream_message_input_controller.dart index 65c6d8d8..e5dbc898 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_message_input_controller.dart @@ -8,46 +8,46 @@ import 'package:stream_chat_flutter_core/src/message_text_field_controller.dart' /// A value listenable builder related to a [Message]. /// -/// Pass in a [MessageInputController] as the `valueListenable`. -typedef MessageValueListenableBuilder = ValueListenableBuilder; +/// Pass in a [StreamMessageInputController] as the `valueListenable`. +typedef StreamMessageValueListenableBuilder = ValueListenableBuilder; /// Controller for storing and mutating a [Message] value. -class MessageInputController extends ValueNotifier { +class StreamMessageInputController extends ValueNotifier { /// Creates a controller for an editable text field. /// /// This constructor treats a null [message] argument as if it were the empty /// message. - factory MessageInputController({ + factory StreamMessageInputController({ Message? message, Map? textPatternStyle, }) => - MessageInputController._( + StreamMessageInputController._( initialMessage: message ?? Message(), textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from an initial [text]. - factory MessageInputController.fromText( + factory StreamMessageInputController.fromText( String? text, { Map? textPatternStyle, }) => - MessageInputController._( + StreamMessageInputController._( initialMessage: Message(text: text), textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from initial /// [attachments]. - factory MessageInputController.fromAttachments( + factory StreamMessageInputController.fromAttachments( List attachments, { Map? textPatternStyle, }) => - MessageInputController._( + StreamMessageInputController._( initialMessage: Message(attachments: attachments), textPatternStyle: textPatternStyle, ); - MessageInputController._({ + StreamMessageInputController._({ required Message initialMessage, Map? textPatternStyle, }) : _textEditingController = MessageTextFieldController.fromValue( @@ -245,7 +245,7 @@ class MessageInputController extends ValueNotifier { /// will all be empty. /// /// Calling this will notify all the listeners of this - /// [MessageInputController] that they need to update + /// [StreamMessageInputController] that they need to update /// (calls [notifyListeners]). For this reason, /// this method should only be called between frames, e.g. in response to user /// actions, not during the build, layout, or paint phases. @@ -272,36 +272,36 @@ class MessageInputController extends ValueNotifier { } /// A [RestorableProperty] that knows how to store and restore a -/// [MessageInputController]. +/// [StreamMessageInputController]. /// -/// The [MessageInputController] is accessible via the [value] getter. During -/// state restoration, the property will restore [MessageInputController.value] +/// The [StreamMessageInputController] is accessible via the [value] getter. During +/// state restoration, the property will restore [StreamMessageInputController.value] /// to the value it had when the restoration data it is getting restored from /// was collected. -class RestorableMessageInputController - extends RestorableChangeNotifier { - /// Creates a [RestorableMessageInputController]. +class StreamRestorableMessageInputController + extends RestorableChangeNotifier { + /// Creates a [StreamRestorableMessageInputController]. /// /// This constructor creates a default [Message] when no `message` argument /// is supplied. - RestorableMessageInputController({Message? message}) + StreamRestorableMessageInputController({Message? message}) : _initialValue = message ?? Message(); - /// Creates a [RestorableMessageInputController] from an initial + /// Creates a [StreamRestorableMessageInputController] from an initial /// [text] value. - factory RestorableMessageInputController.fromText(String? text) => - RestorableMessageInputController(message: Message(text: text)); + factory StreamRestorableMessageInputController.fromText(String? text) => + StreamRestorableMessageInputController(message: Message(text: text)); final Message _initialValue; @override - MessageInputController createDefaultValue() => - MessageInputController(message: _initialValue); + StreamMessageInputController createDefaultValue() => + StreamMessageInputController(message: _initialValue); @override - MessageInputController fromPrimitives(Object? data) { + StreamMessageInputController fromPrimitives(Object? data) { final message = Message.fromJson(json.decode(data! as String)); - return MessageInputController(message: message); + return StreamMessageInputController(message: message); } @override diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index cddae515..a5004f32 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -7,7 +7,6 @@ export 'src/better_stream_builder.dart'; export 'src/channel_list_core.dart' hide ChannelListCoreState; export 'src/channels_bloc.dart'; export 'src/lazy_load_scroll_view.dart'; -export 'src/message_input_controller.dart'; export 'src/message_list_core.dart' hide MessageListCoreState; export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; @@ -18,6 +17,7 @@ export 'src/stream_channel.dart'; export 'src/stream_channel_list_controller.dart'; export 'src/stream_channel_list_event_handler.dart'; export 'src/stream_chat_core.dart'; +export 'src/stream_message_input_controller.dart'; export 'src/stream_message_search_list_controller.dart'; export 'src/stream_user_list_controller.dart'; export 'src/typedef.dart'; From 2142577a7d949f5d49e7c2cf08c0c6b3a90be87a Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 29 Apr 2022 14:33:25 +0530 Subject: [PATCH 173/201] chore(core): remove stream_channel_list_loading_tile.dart Signed-off-by: xsahil03x --- .../stream_channel_list_loading_tile.dart | 96 ------------------- .../lib/stream_chat_flutter.dart | 1 - 2 files changed, 97 deletions(-) delete mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart deleted file mode 100644 index e3f7f374..00000000 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart +++ /dev/null @@ -1,96 +0,0 @@ -// import 'package:flutter/material.dart'; -// import 'package:shimmer/shimmer.dart'; -// import 'package:stream_chat_flutter/src/stream_chat_theme.dart'; -// -// /// A shimmering list item which shows a loading effect. -// /// -// /// This is used by [StreamChannelListView] to show a loading effect while -// /// the list is being loaded. -// class StreamChannelListLoadingTile extends StatelessWidget { -// /// Creates a new instance of [StreamChannelListLoadingTile] widget. -// const StreamChannelListLoadingTile({ -// Key? key, -// this.visualDensity = VisualDensity.standard, -// this.contentPadding = const EdgeInsets.symmetric(horizontal: 8), -// }) : super(key: key); -// -// /// Defines how compact the list tile's layout will be. -// /// -// /// {@macro flutter.material.themedata.visualDensity} -// /// -// /// See also: -// /// -// /// * [ThemeData.visualDensity], which specifies the [visualDensity] for all -// /// widgets within a [Theme]. -// final VisualDensity visualDensity; -// -// /// The tile's internal padding. -// /// -// /// Insets a [ListTile]'s contents: its [leading], [errorTitle], [subtitle], -// /// and [trailing] widgets. -// /// -// /// If null, `EdgeInsets.symmetric(horizontal: 16.0)` is used. -// final EdgeInsetsGeometry contentPadding; -// -// @override -// Widget build(BuildContext context) { -// final colorTheme = StreamChatTheme.of(context).colorTheme; -// -// final leading = Container( -// height: 49, -// width: 49, -// decoration: BoxDecoration( -// color: colorTheme.barsBg, -// shape: BoxShape.circle, -// ), -// ); -// -// final title = Container( -// height: 16, -// width: 66, -// decoration: BoxDecoration( -// color: colorTheme.barsBg, -// borderRadius: BorderRadius.circular(8), -// ), -// ); -// -// final subtitle = Row( -// mainAxisAlignment: MainAxisAlignment.spaceBetween, -// children: [ -// Expanded( -// child: Align( -// alignment: Alignment.centerLeft, -// child: Container( -// height: 16, -// decoration: BoxDecoration( -// color: colorTheme.barsBg, -// borderRadius: BorderRadius.circular(8), -// ), -// ), -// ), -// ), -// const SizedBox(width: 8), -// Container( -// height: 16, -// width: 50, -// decoration: BoxDecoration( -// color: colorTheme.barsBg, -// borderRadius: BorderRadius.circular(8), -// ), -// ), -// ], -// ); -// -// return Shimmer.fromColors( -// baseColor: colorTheme.disabled, -// highlightColor: colorTheme.inputBg, -// child: ListTile( -// leading: leading, -// title: title, -// subtitle: subtitle, -// visualDensity: visualDensity, -// contentPadding: contentPadding, -// ), -// ); -// } -// } diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 5178fc01..c9a0d359 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -57,7 +57,6 @@ export 'src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart'; export 'src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart'; // v4 -export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_loading_tile.dart'; export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart'; export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart'; From bf94372b1cc65e388fe1cb648edba9b2db204da3 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 29 Apr 2022 11:41:30 +0200 Subject: [PATCH 174/201] core intro --- .../Flutter/guides/migration_guide_2_0.mdx | 298 ------------------ .../stream_chat_flutter_core/introduction.mdx | 57 +--- 2 files changed, 7 insertions(+), 348 deletions(-) delete mode 100644 docusaurus/docs/Flutter/guides/migration_guide_2_0.mdx diff --git a/docusaurus/docs/Flutter/guides/migration_guide_2_0.mdx b/docusaurus/docs/Flutter/guides/migration_guide_2_0.mdx deleted file mode 100644 index 89b6dacc..00000000 --- a/docusaurus/docs/Flutter/guides/migration_guide_2_0.mdx +++ /dev/null @@ -1,298 +0,0 @@ ---- -id: mig_guide_2_0 -sidebar_position: 4 -title: Migrating to 2.0 (Null-safety) ---- - -A Migration Guide For Switching To v2.0 Of The Flutter SDK - -### Overview - -v2.0 of the Stream Chat Flutter SDK brings along several changes - primarily making the SDK null-safe. -Null safety allows your apps to run faster, with fewer errors, and with less code. - -Check [this link](https://flutter.dev/docs/null-safety) for more about Null Safety in Flutter. - -This guide is intended to enumerate and better explain the changes in the SDK. - -The changes will be listed by package and a concise changelog will follow with more info. - -### Changelog of `stream_chat_flutter` - -#### 🛑️ Breaking Changes from 1.5.4 - -* Migrate this package to null safety - -* Renamed `ChannelImage` to `ChannelAvatar` - -* Updated `StreamChatThemeData.reactionIcons` to accept custom builder - -* Renamed `ColorTheme` properties to reflect the purpose of the colors - - * `ColorTheme.black` -> `ColorTheme.textHighEmphasis` - * `ColorTheme.grey` -> `ColorTheme.textLowEmphasis` - * `ColorTheme.greyGainsboro` -> `ColorTheme.disabled` - * `ColorTheme.greyWhisper` -> `ColorTheme.borders` - * `ColorTheme.whiteSmoke` -> `ColorTheme.inputBg` - * `ColorTheme.whiteSnow` -> `ColorTheme.appBg` - * `ColorTheme.white` -> `ColorTheme.barsBg` - * `ColorTheme.blueAlice` -> `ColorTheme.linkBg` - * `ColorTheme.accentBlue` -> `ColorTheme.accentPrimary` - * `ColorTheme.accentRed` -> `ColorTheme.accentError` - * `ColorTheme.accentGreen` -> `ColorTheme.accentInfo` - -* `ChannelListCore` options property is removed in favor of individual properties - - * `options.state` -> `bool state` - * `options.watch` -> `bool watch` - * `options.presence` -> `bool presence` - -* `UserListView` options property is removed in favor of individual properties - - * `options.presence` -> `bool presence` - -* Renamed `ImageHeader` to `GalleryHeader` - -* Renamed `ImageFooter` to `GalleryFooter` - -* `MessageBuilder` and `ParentMessageBuilder` signature is now - -```dart -typedef MessageBuilder = Widget Function( - BuildContext, - MessageDetails, - List, - MessageWidget defaultMessageWidget, - ); -``` - -The last parameter is the default `MessageWidget` -You can call `.copyWith` to customize just a subset of properties - -#### ✅ Added - -Added video compress options (frame and quality) to MessageInput -`TypingIndicator` now has a property called `parentId` to show typing indicator specific to threads -#493: add support for `MessageListView` header/footer -`MessageWidget` accepts a `userAvatarBuilder` -Added `pinMessage` ui support -Added `MessageListView.threadSeparatorBuilder` property -Added `MessageInput.onError` property to allow error handling -Added `GalleryHeader`/`GalleryFooter` theme classes - -#### 🐞 Fixed - -#483: Keyboard covers input text box when editing message -`Modals` are shown using the nearest `Navigator` to make using the SDK easier in a nested navigator use case -#484: messages don't update without a reload -`MessageListView` not rendering if the user is not a member of the channel -Fix `MessageInput` overflow when there are no actions -Minor fixes and improvements - -### Migrating to 2.0 for `stream_chat_flutter` - -:::note -If you are migrating your full Flutter project to null-safety, first make sure you follow the -instructions from the [official Null Safety migration guide](https://dart.dev/null-safety/migration-guide). -::: - -To migrate to v2.0 for `stream_chat_flutter`, first change the version of the package to the latest -null-safe version. - -```yaml -dependencies: - stream_chat_flutter: ^2.0.0 -``` - -Upon doing this, all breaking changes from the package will take immediate effect. Here are steps to -remedy the issues: - -1) Replace the offending class names with the revised class names - - * `ChannelImage` -> `ChannelAvatar` - * `ImageHeader` -> `GalleryHeader` - * `ImageFooter` -> `GalleryFooter` - -2) The new version comes with revised color names since the previous names do not suit light/dark mode -nomenclature. Make sure any old colors used from theme are changed over to the new theme color names: - - * `ColorTheme.black` -> `ColorTheme.textHighEmphasis` - * `ColorTheme.grey` -> `ColorTheme.textLowEmphasis` - * `ColorTheme.greyGainsboro` -> `ColorTheme.disabled` - * `ColorTheme.greyWhisper` -> `ColorTheme.borders` - * `ColorTheme.whiteSmoke` -> `ColorTheme.inputBg` - * `ColorTheme.whiteSnow` -> `ColorTheme.appBg` - * `ColorTheme.white` -> `ColorTheme.barsBg` - * `ColorTheme.blueAlice` -> `ColorTheme.linkBg` - * `ColorTheme.accentBlue` -> `ColorTheme.accentPrimary` - * `ColorTheme.accentRed` -> `ColorTheme.accentError` - * `ColorTheme.accentGreen` -> `ColorTheme.accentInfo` - -3) We decided to make messages easier to customize and now supply the default implementation of the -messages in the builder - so you can now customize a single parameter without having to redo the -entire implementation. Please reform your builders to take into account the new format: - -``` -typedef MessageBuilder = Widget Function( - BuildContext, - MessageDetails, - List, - MessageWidget defaultMessageWidget, - ); -``` - -To tweak any of the default properties individually, you can use `defaultMessageWidget.copyWith()`. - -### Changelog of `stream_chat_flutter_core` - -#### 🛑️ Breaking Changes from 1.5.3 - -* Migrate this package to null safety -* `channelsBloc.queryChannels()`, `ChannelListCore` options param/property is removed in favor of individual params/properties - * `options.state` -> `bool state` - * `options.watch` -> `bool watch` - * `options.presence` -> `bool presence` -* `usersBloc.queryUsers()`, `UserListCore` options param/property is removed in favor of individual params/properties - * `options.presence` -> `bool presence` - -#### ✅ Added - -* Monitor connection using `connectivity_plus` package - -#### 🐞 Fixed - -* Minor fixes -* Performance improvements - -### Migrating to 2.0 for `stream_chat_flutter_core` - -:::note -If you are migrating your full Flutter project to null-safety, first make sure you follow the -instructions from the [official Null Safety migration guide](https://dart.dev/null-safety/migration-guide). -::: - -To migrate to v2.0 for `stream_chat_flutter_core`, first change the version of the package to the latest -null-safe version. - -```yaml -dependencies: - stream_chat_flutter_core: ^2.0.0 -``` - -Upon doing this, all breaking changes from the package will take immediate effect. Here are steps to -remedy the issue: - -:::note -The major changes in `stream_chat_flutter_core` consist of changing over from a map full of options -to a more type safe and sound approach by changing over to explicit parameters. -::: - -1) Change over Core widget implementations by using the explicit parameters instead of the options map. -Use these explicit parameters in the widget constructor instead of the option keys: - - * `options.state` -> `bool state` - * `options.watch` -> `bool watch` - * `options.presence` -> `bool presence` - -2) Change over query calls in the BLoCs in the same way (change from options map to explicit parameters -in the constructor) - -### Changelog of `stream_chat` - -#### 🛑️ Breaking Changes from 1.5.3 - -* Migrate this package to null safety -* `ConnectUserWithProvider` now requires `tokenProvider` as a required param. (Removed from the constructor) -* `client.disconnect()` is now divided into two different functions - * `client.closeConnection()` -> for closing user websocket connection. - * `client.disconnectUser()` -> for disconnecting user and resetting client state. -* `client.devToken()` now returns a Token model instead of String. -* `ApiError` is removed in favor of `StreamChatError` - * `StreamChatError` -> parent type for all the stream errors. - * `StreamWebSocketError` -> for user websocket related errors. - * `StreamChatNetworkError` -> for network related errors. -* `client.queryChannels()`, `channel.query()` options param is removed in favor of individual params - * `option.state` -> `bool state` - * `option.watch` -> `bool watch` - * `option.presence` -> `bool presence` -* `client.queryUsers()` options param is removed in favor of individual params - * `option.presence` -> `bool presence` -* Added typed filters - -#### 🐞 Fixed - -* #369: Client does not return without internet connection -* Several minor fixes -* Performance improvements - -#### ✅ Added - -* New Location enum is introduced for easily changing the client location/baseUrl. -* New `client.openConnection()` and `client.closeConnection()` is introduced to connect/disconnect user ws connection. -* New `client.partialUpdateMessage` and `channel.partialUpdateMessage` methods -* `connectWebSocket` parameter in connect user calls to use the client in "connection-less" mode. - -#### 🔄 Changed - -* `baseURL` is now deprecated in favor of using Location to change data location. - -### Migrating to 2.0 for `stream_chat` - -If you are migrating your full Flutter project to null-safety, first make sure you follow the -instructions from the [official Null Safety migration guide](https://dart.dev/null-safety/migration-guide). -::: - -To migrate to v2.0 for `stream_chat`, first change the version of the package to the latest -null-safe version. - -```yaml -dependencies: - stream_chat: ^2.0.0 -``` - -Upon doing this, all breaking changes from the package will take immediate effect. Here are steps to -remedy the issues: - -1) Change over the constructor of `connectUserWithProvider()` to the new format which has `tokenProvider` as a required param. - -2) We added more nuance to `disconnectUser()` by adding two new methods - one to close the connection -and the other to disconnect the user. This allows more fine-grained control of disconnection. - - * `client.closeConnection()` -> for closing user websocket connection. - * `client.disconnectUser()` -> for disconnecting user and resetting client state. - -3) We refactored how we handle errors - new error types are now introduced that replace ApiError. - - * `StreamChatError` -> parent type for all the stream errors. - * `StreamWebSocketError` -> for user websocket related errors. - * `StreamChatNetworkError` -> for network related errors. - -4) We changed over from a map full of options to a more type-safe and sound approach by changing over to explicit parameters. - -Use these explicit parameters in the query parameters instead of the option keys: - -* `client.queryChannels()`, `channel.query()` options param is removed in favor of individual params - * `option.state` -> `bool state` - * `option.watch` -> `bool watch` - * `option.presence` -> `bool presence` -* `client.queryUsers()` options param is removed in favor of individual params - * `option.presence` -> `bool presence` - -5) We added type-safe filters to make filtering in the app easier. Change over the filters to the -new implementation. - -As an example, in the old app this filter: - -```dart - filter: { - 'members': { - '\$in': [StreamChat.of(context).user.id], - } - }, -``` - -Would turn into: - -```dart - filter: Filter.in_('members', [StreamChat.of(context).user.id]) -``` diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx index 3c6a70f2..c7c6f4b9 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx @@ -24,57 +24,14 @@ Also, it has very few dependencies. We will now explore the components of this intermediary package and understand how it helps you build the experience you want your users to have. -The package primarily contains three types of classes: +The package primarily contains a bunch of controller classes. +Controllers are used to handle the business logic of the chat. You can use them together with our UI widgets, or you can even use them to build your own UI. -* Business Logic Components -* Core Components -* Core Controllers - -### Business Logic Components - -These components allow you to have the maximum and lower-level control of the queries being executed. - -In BLoCs, the basic functionalities - such as queries for messages, channels or queries - are bundled up -and passed along down the tree. Using a BLoC allows you to either create your own way to fetch and -build UIs or use an inbuilt Core widget to do the work such as queries, pagination, etc for you. - -The BLoCs we provide are: - -* ChannelsBloc -* MessageSearchBloc -* UsersBloc - -### Core Components - -Core components usually are an easy way to fetch data associated with Stream Chat. -Core components use functions exposed by the respective BLoCs (for example the ChannelListCore uses the ChannelsBloc) -and use the respective controllers for various operations. Unlike heavier components from the UI -package, core components are decoupled from UI and they expose builders instead to help you build -a fully custom interface. - -Data fetching can be controlled with the controllers of the respective core components. - -* ChannelListCore (Fetch a list of channels) -* MessageListCore (Fetch a list of messages from a channel) -* MessageSearchListCore (Fetch a list of search messages) -* UserListCore (Fetch a list of users) -* StreamChatCore (This is different from the other core components - it is a version of StreamChat decoupled from theme and initialisations.) - -### Core Controllers - -Core Controllers are supplied to respective CoreList widgets which allows reloading and pagination of data whenever needed. - -Unlike the UI package, the Core package allows a fully custom user interface built with the data. This -in turn provides a few challenges: we do not know implicitly when to paginate your list or reload your data. - -While this is handled out of the box in the UI package since the List implementation is inbuilt, a controller -needs to be used in the core package notifying the core components to reload or paginate the data existing -currently. For this, each core component has a respective controller which you can use to call the -specific function (reload / paginate) whenever such an event is triggered through / needed in your UI. - -* ChannelListController +* StreamChannelListController +* StreamMessageSearchListController +* StreamChannelListController +* StreamUserListController +* StreamMessageInputController * MessageListController -* MessageSearchListController -* ChannelListController This section goes into the individual core package widgets and their functional use. From 5e965746297074a3c07c995b226c20893368d665 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 29 Apr 2022 17:56:32 +0530 Subject: [PATCH 175/201] feat(ui): add stream_message_search_grid_view.dart Signed-off-by: xsahil03x --- .../stream_message_search_grid_view.dart | 366 ++++++++++++++++++ 1 file changed, 366 insertions(+) create mode 100644 packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart new file mode 100644 index 00000000..27af9937 --- /dev/null +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart @@ -0,0 +1,366 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:stream_chat_flutter/src/extension.dart'; + +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_empty_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_error_widget.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_error.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_load_more_indicator.dart'; +import 'package:stream_chat_flutter/src/v4/scroll_view/stream_scroll_view_loading_widget.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +/// Default grid delegate for [StreamMessageSearchGridView]. +const defaultMessageSearchGridViewDelegate = + SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4); + +/// Signature for the item builder that creates the children of the +/// [StreamMessageSearchGridView]. +typedef StreamMessageSearchGridViewIndexedWidgetBuilder + = PagedValueScrollViewIndexedWidgetBuilder; + +/// A [GridView] that shows a grid of [GetMessageResponse]s, +/// it uses [StreamMessageSearchGridTile] as a default item. +/// +/// Example: +/// +/// ```dart +/// StreamMessageSearchGridView( +/// controller: controller, +/// onMessageTap: (user) { +/// // Handle user tap event +/// }, +/// onMessageLongPress: (user) { +/// // Handle user long press event +/// }, +/// ) +/// ``` +/// +/// See also: +/// * [StreamUserListTile] +/// * [StreamUserListController] +class StreamMessageSearchGridView extends StatelessWidget { + /// Creates a new instance of [StreamMessageSearchGridView]. + const StreamMessageSearchGridView({ + Key? key, + required this.controller, + required this.itemBuilder, + this.gridDelegate = defaultMessageSearchGridViewDelegate, + this.emptyBuilder, + this.loadMoreErrorBuilder, + this.loadMoreIndicatorBuilder, + this.loadingBuilder, + this.errorBuilder, + this.loadMoreTriggerIndex = 3, + this.scrollDirection = Axis.vertical, + this.reverse = false, + this.scrollController, + this.primary, + this.physics, + this.shrinkWrap = false, + this.padding, + this.addAutomaticKeepAlives = true, + this.addRepaintBoundaries = true, + this.addSemanticIndexes = true, + this.cacheExtent, + this.semanticChildCount, + this.dragStartBehavior = DragStartBehavior.start, + this.keyboardDismissBehavior = ScrollViewKeyboardDismissBehavior.manual, + this.restorationId, + this.clipBehavior = Clip.hardEdge, + }) : super(key: key); + + /// The [StreamUserListController] used to control the grid of users. + final StreamMessageSearchListController controller; + + /// A delegate that controls the layout of the children within + /// the [PagedValueGridView]. + final SliverGridDelegate gridDelegate; + + /// A builder that is called to build items in the [PagedValueGridView]. + /// + /// The `value` parameter is the [V] at this position in the grid. + final StreamMessageSearchGridViewIndexedWidgetBuilder itemBuilder; + + /// A builder that is called to build the empty state of the grid. + final WidgetBuilder? emptyBuilder; + + /// A builder that is called to build the load more error state of the grid. + final PagedValueScrollViewLoadMoreErrorBuilder? loadMoreErrorBuilder; + + /// A builder that is called to build the load more indicator of the grid. + final WidgetBuilder? loadMoreIndicatorBuilder; + + /// A builder that is called to build the loading state of the grid. + final WidgetBuilder? loadingBuilder; + + /// A builder that is called to build the error state of the grid. + final Widget Function(BuildContext, StreamChatError)? errorBuilder; + + /// The index to take into account when triggering [controller.loadMore]. + final int loadMoreTriggerIndex; + + /// {@template flutter.widgets.scroll_view.scrollDirection} + /// The axis along which the scroll view scrolls. + /// + /// Defaults to [Axis.vertical]. + /// {@endtemplate} + final Axis scrollDirection; + + /// {@template flutter.widgets.scroll_view.reverse} + /// Whether the scroll view scrolls in the reading direction. + /// + /// For example, if the reading direction is left-to-right and + /// [scrollDirection] is [Axis.horizontal], then the scroll view scrolls from + /// left to right when [reverse] is false and from right to left when + /// [reverse] is true. + /// + /// Similarly, if [scrollDirection] is [Axis.vertical], then the scroll view + /// scrolls from top to bottom when [reverse] is false and from bottom to top + /// when [reverse] is true. + /// + /// Defaults to false. + /// {@endtemplate} + final bool reverse; + + /// {@template flutter.widgets.scroll_view.controller} + /// An object that can be used to control the position to which this scroll + /// view is scrolled. + /// + /// Must be null if [primary] is true. + /// + /// A [ScrollController] serves several purposes. It can be used to control + /// the initial scroll position (see [ScrollController.initialScrollOffset]). + /// It can be used to control whether the scroll view should automatically + /// save and restore its scroll position in the [PageStorage] (see + /// [ScrollController.keepScrollOffset]). It can be used to read the current + /// scroll position (see [ScrollController.offset]), or change it (see + /// [ScrollController.animateTo]). + /// {@endtemplate} + final ScrollController? scrollController; + + /// {@template flutter.widgets.scroll_view.primary} + /// Whether this is the primary scroll view associated with the parent + /// [PrimaryScrollController]. + /// + /// When this is true, the scroll view is scrollable even if it does not have + /// sufficient content to actually scroll. Otherwise, by default the user can + /// only scroll the view if it has sufficient content. See [physics]. + /// + /// Also when true, the scroll view is used for default [ScrollAction]s. If a + /// ScrollAction is not handled by an otherwise focused part of the application, + /// the ScrollAction will be evaluated using this scroll view, for example, + /// when executing [Shortcuts] key events like page up and down. + /// + /// On iOS, this also identifies the scroll view that will scroll to top in + /// response to a tap in the status bar. + /// {@endtemplate} + /// + /// Defaults to true when [scrollDirection] is [Axis.vertical] and + /// [controller] is null. + final bool? primary; + + /// {@template flutter.widgets.scroll_view.physics} + /// How the scroll view should respond to user input. + /// + /// For example, determines how the scroll view continues to animate after the + /// user stops dragging the scroll view. + /// + /// Defaults to matching platform conventions. Furthermore, if [primary] is + /// false, then the user cannot scroll if there is insufficient content to + /// scroll, while if [primary] is true, they can always attempt to scroll. + /// + /// To force the scroll view to always be scrollable even if there is + /// insufficient content, as if [primary] was true but without necessarily + /// setting it to true, provide an [AlwaysScrollableScrollPhysics] physics + /// object, as in: + /// + /// ```dart + /// physics: const AlwaysScrollableScrollPhysics(), + /// ``` + /// + /// To force the scroll view to use the default platform conventions and not + /// be scrollable if there is insufficient content, regardless of the value of + /// [primary], provide an explicit [ScrollPhysics] object, as in: + /// + /// ```dart + /// physics: const ScrollPhysics(), + /// ``` + /// + /// The physics can be changed dynamically (by providing a new object in a + /// subsequent build), but new physics will only take effect if the _class_ of + /// the provided object changes. Merely constructing a new instance with a + /// different configuration is insufficient to cause the physics to be + /// reapplied. (This is because the final object used is generated + /// dynamically, which can be relatively expensive, and it would be + /// inefficient to speculatively create this object each frame to see if the + /// physics should be updated.) + /// {@endtemplate} + /// + /// If an explicit [ScrollBehavior] is provided to [scrollBehavior], the + /// [ScrollPhysics] provided by that behavior will take precedence after + /// [physics]. + final ScrollPhysics? physics; + + /// {@template flutter.widgets.scroll_view.shrinkWrap} + /// Whether the extent of the scroll view in the [scrollDirection] should be + /// determined by the contents being viewed. + /// + /// If the scroll view does not shrink wrap, then the scroll view will expand + /// to the maximum allowed size in the [scrollDirection]. If the scroll view + /// has unbounded constraints in the [scrollDirection], then [shrinkWrap] must + /// be true. + /// + /// Shrink wrapping the content of the scroll view is significantly more + /// expensive than expanding to the maximum allowed size because the content + /// can expand and contract during scrolling, which means the size of the + /// scroll view needs to be recomputed whenever the scroll position changes. + /// + /// Defaults to false. + /// {@endtemplate} + final bool shrinkWrap; + + /// The amount of space by which to inset the children. + final EdgeInsetsGeometry? padding; + + /// Whether to wrap each child in an [AutomaticKeepAlive]. + /// + /// Typically, children in lazy list are wrapped in [AutomaticKeepAlive] + /// widgets so that children can use [KeepAliveNotification]s to preserve + /// their state when they would otherwise be garbage collected off-screen. + /// + /// This feature (and [addRepaintBoundaries]) must be disabled if the children + /// are going to manually maintain their [KeepAlive] state. It may also be + /// more efficient to disable this feature if it is known ahead of time that + /// none of the children will ever try to keep themselves alive. + /// + /// Defaults to true. + final bool addAutomaticKeepAlives; + + /// Whether to wrap each child in a [RepaintBoundary]. + /// + /// Typically, children in a scrolling container are wrapped in repaint + /// boundaries so that they do not need to be repainted as the list scrolls. + /// If the children are easy to repaint (e.g., solid color blocks or a short + /// snippet of text), it might be more efficient to not add a repaint boundary + /// and simply repaint the children during scrolling. + /// + /// Defaults to true. + final bool addRepaintBoundaries; + + /// Whether to wrap each child in an [IndexedSemantics]. + /// + /// Typically, children in a scrolling container must be annotated with a + /// semantic index in order to generate the correct accessibility + /// announcements. This should only be set to false if the indexes have + /// already been provided by an [IndexedSemantics] widget. + /// + /// Defaults to true. + /// + /// See also: + /// + /// * [IndexedSemantics], for an explanation of how to manually + /// provide semantic indexes. + final bool addSemanticIndexes; + + /// {@macro flutter.rendering.RenderViewportBase.cacheExtent} + final double? cacheExtent; + + /// The number of children that will contribute semantic information. + /// + /// Some subtypes of [ScrollView] can infer this value automatically. For + /// example [ListView] will use the number of widgets in the child list, + /// while the [ListView.separated] constructor will use half that amount. + /// + /// For [CustomScrollView] and other types which do not receive a builder + /// or list of widgets, the child count must be explicitly provided. If the + /// number is unknown or unbounded this should be left unset or set to null. + /// + /// See also: + /// + /// * [SemanticsConfiguration.scrollChildCount], the corresponding semantics property. + final int? semanticChildCount; + + /// {@macro flutter.widgets.scrollable.dragStartBehavior} + final DragStartBehavior dragStartBehavior; + + /// {@template flutter.widgets.scroll_view.keyboardDismissBehavior} + /// [ScrollViewKeyboardDismissBehavior] the defines how this [ScrollView] will + /// dismiss the keyboard automatically. + /// {@endtemplate} + final ScrollViewKeyboardDismissBehavior keyboardDismissBehavior; + + /// {@macro flutter.widgets.scrollable.restorationId} + final String? restorationId; + + /// {@macro flutter.material.Material.clipBehavior} + /// + /// Defaults to [Clip.hardEdge]. + final Clip clipBehavior; + + @override + Widget build(BuildContext context) { + return PagedValueGridView( + scrollDirection: scrollDirection, + reverse: reverse, + controller: controller, + primary: primary, + physics: physics, + shrinkWrap: shrinkWrap, + padding: padding, + scrollController: scrollController, + addAutomaticKeepAlives: addAutomaticKeepAlives, + addRepaintBoundaries: addRepaintBoundaries, + addSemanticIndexes: addSemanticIndexes, + cacheExtent: cacheExtent, + semanticChildCount: semanticChildCount, + dragStartBehavior: dragStartBehavior, + keyboardDismissBehavior: keyboardDismissBehavior, + restorationId: restorationId, + clipBehavior: clipBehavior, + gridDelegate: gridDelegate, + itemBuilder: itemBuilder, + emptyBuilder: (context) { + final chatThemeData = StreamChatTheme.of(context); + return emptyBuilder?.call(context) ?? + Center( + child: Padding( + padding: const EdgeInsets.all(8), + child: StreamScrollViewEmptyWidget( + emptyIcon: StreamSvgIcon.message( + size: 148, + color: chatThemeData.colorTheme.disabled, + ), + emptyTitle: Text( + context.translations.emptyMessagesText, + style: chatThemeData.textTheme.headline, + ), + ), + ), + ); + }, + loadMoreErrorBuilder: (context, error) => + StreamScrollViewLoadMoreError.grid( + onTap: controller.retry, + error: Text(context.translations.loadingMessagesError), + ), + loadMoreIndicatorBuilder: (context) => const Center( + child: Padding( + padding: EdgeInsets.all(16), + child: StreamScrollViewLoadMoreIndicator(), + ), + ), + loadingBuilder: (context) => + loadingBuilder?.call(context) ?? + const Center( + child: StreamScrollViewLoadingWidget(), + ), + errorBuilder: (context, error) => + errorBuilder?.call(context, error) ?? + Center( + child: StreamScrollViewErrorWidget( + onRetryPressed: controller.refresh, + ), + ), + ); + } +} From 7589e39323b1cb01cf4af54661bda8f9be3f6e68 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 29 Apr 2022 17:57:15 +0530 Subject: [PATCH 176/201] chore(ui): export StreamMessageSearchGridView Signed-off-by: xsahil03x --- packages/stream_chat_flutter/lib/stream_chat_flutter.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index c9a0d359..736b9dce 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -59,7 +59,7 @@ export 'src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart'; // v4 export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart'; export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart'; - +export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart'; export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart'; export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart'; export 'src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart'; From 264253feaec5132ae61d891682f5016b25be688d Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 29 Apr 2022 18:00:34 +0530 Subject: [PATCH 177/201] chore(ui): update doc Signed-off-by: xsahil03x --- .../stream_message_search_grid_view.dart | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart index 27af9937..502b6f54 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart @@ -26,11 +26,8 @@ typedef StreamMessageSearchGridViewIndexedWidgetBuilder /// ```dart /// StreamMessageSearchGridView( /// controller: controller, -/// onMessageTap: (user) { -/// // Handle user tap event -/// }, -/// onMessageLongPress: (user) { -/// // Handle user long press event +/// itemBuilder: (context, messageResponses, index) { +/// return GridTile(message: messageResponses[index]); /// }, /// ) /// ``` From 51a3711613179e6f6e312b1a39a31bcefcedf821 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Fri, 29 Apr 2022 18:14:01 +0530 Subject: [PATCH 178/201] chore(ui): remove generics from grid views, update docs Signed-off-by: xsahil03x --- .../channel_scroll_view/stream_channel_grid_view.dart | 4 ++-- .../channel_scroll_view/stream_channel_list_view.dart | 4 ---- .../stream_message_search_grid_view.dart | 4 ++-- .../stream_message_search_list_view.dart | 4 ---- .../scroll_view/user_scroll_view/stream_user_grid_view.dart | 4 +--- .../scroll_view/user_scroll_view/stream_user_list_view.dart | 4 ---- 6 files changed, 5 insertions(+), 19 deletions(-) diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart index af5e03ce..27b71979 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart @@ -41,7 +41,7 @@ typedef StreamChannelGridViewIndexedWidgetBuilder /// See also: /// * [StreamChannelGridTile] /// * [StreamChannelListController] -class StreamChannelGridView extends StatelessWidget { +class StreamChannelGridView extends StatelessWidget { /// Creates a new instance of [StreamChannelGridView]. const StreamChannelGridView({ Key? key, @@ -83,7 +83,7 @@ class StreamChannelGridView extends StatelessWidget { /// A builder that is called to build items in the [PagedValueGridView]. /// - /// The `value` parameter is the [V] at this position in the grid. + /// The `value` parameter is the [Channel] at this position in the grid. final StreamChannelGridViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the empty state of the grid. diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart index 0feb84c6..23753644 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart @@ -83,10 +83,6 @@ class StreamChannelListView extends StatelessWidget { final StreamChannelListController controller; /// A builder that is called to build items in the [ListView]. - /// - /// The `channel` parameter is the [Channel] at this position in the list - /// and the `defaultWidget` is the default widget used - /// i.e: [StreamChannelListTile]. final StreamChannelListViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the list separator. diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart index 502b6f54..142d4a7a 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart @@ -35,7 +35,7 @@ typedef StreamMessageSearchGridViewIndexedWidgetBuilder /// See also: /// * [StreamUserListTile] /// * [StreamUserListController] -class StreamMessageSearchGridView extends StatelessWidget { +class StreamMessageSearchGridView extends StatelessWidget { /// Creates a new instance of [StreamMessageSearchGridView]. const StreamMessageSearchGridView({ Key? key, @@ -75,7 +75,7 @@ class StreamMessageSearchGridView extends StatelessWidget { /// A builder that is called to build items in the [PagedValueGridView]. /// - /// The `value` parameter is the [V] at this position in the grid. + /// The `value` parameter is the [GetMessageBuilder] at this position in the grid. final StreamMessageSearchGridViewIndexedWidgetBuilder itemBuilder; /// A builder that is called to build the empty state of the grid. diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart index e6b526d7..3b23694b 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart @@ -80,10 +80,6 @@ class StreamMessageSearchListView extends StatelessWidget { final StreamMessageSearchListController controller; /// A builder that is called to build items in the [ListView]. - /// - /// The `messageResponse` parameter is the [GetMessageResponse] at this - /// position in the list and the `defaultWidget` is the default widget used - /// i.e: [StreamMessageSearchListTile]. final StreamMessageSearchListViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the list separator. diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart index 24765a6a..3b900971 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_view.dart @@ -37,7 +37,7 @@ typedef StreamUserGridViewIndexedWidgetBuilder /// See also: /// * [StreamUserListTile] /// * [StreamUserListController] -class StreamUserGridView extends StatelessWidget { +class StreamUserGridView extends StatelessWidget { /// Creates a new instance of [StreamUserGridView]. const StreamUserGridView({ Key? key, @@ -78,8 +78,6 @@ class StreamUserGridView extends StatelessWidget { final SliverGridDelegate gridDelegate; /// A builder that is called to build items in the [PagedValueGridView]. - /// - /// The `value` parameter is the [V] at this position in the grid. final StreamUserGridViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the empty state of the grid. diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart index 1bca6e84..92915811 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart @@ -78,10 +78,6 @@ class StreamUserListView extends StatelessWidget { final StreamUserListController controller; /// A builder that is called to build items in the [ListView]. - /// - /// The `user` parameter is the [User] at this position in the list - /// and the `defaultWidget` is the default widget used - /// i.e: [StreamUserListTile]. final StreamUserListViewIndexedWidgetBuilder? itemBuilder; /// A builder that is called to build the list separator. From f29daff13fc899332f434f3702ad67ed1f83e15f Mon Sep 17 00:00:00 2001 From: Gordon Hayes Date: Fri, 29 Apr 2022 14:58:24 +0200 Subject: [PATCH 179/201] docs: v4 migration guide --- .../docs/Flutter/assets/slidable_demo.jpg | Bin 0 -> 12551 bytes .../Flutter/guides/migration_guide_4_0.mdx | 713 ++++++++++++++++++ .../guides/slidable_channel_list_preview.mdx | 212 ++++++ 3 files changed, 925 insertions(+) create mode 100644 docusaurus/docs/Flutter/assets/slidable_demo.jpg create mode 100644 docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx create mode 100644 docusaurus/docs/Flutter/guides/slidable_channel_list_preview.mdx diff --git a/docusaurus/docs/Flutter/assets/slidable_demo.jpg b/docusaurus/docs/Flutter/assets/slidable_demo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4cbda5d738370373027a213a5304783786e74d72 GIT binary patch literal 12551 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. + +### Slidable Channel List Item + +The default slidable channel preview behavior has been removed. We have created a [guide](slidable_channel_list_preview.mdx) showing you how you can easily add this functionality yourself. + +![Slidable demo](../assets/slidable_demo.jpg) + +### Pin Permission + +`pinPermissions` is no longer needed in the **MessageListView** widget. The permissions are automatically fetched for each Stream project. To enable users to pin the message, make sure the pin permissions are granted for different types of users on your [Stream application dashboard](https://dashboard.getstream.io/). + +--- + +## Deprecated Classes + +This section covers all the deprecated classes and widgets in the Stream chat packages. Some of these have also undergone functional changes, for example, **MessageInput** and **ChannelsBloc**. These are discussed in more detail below. + +The majority of the Stream widgets and classes have now been renamed to have a **"Stream"** prefix associated with them. + +Changes: + +- `AttachmentTitle` in favor of `StreamAttachmentTitle` +- `AttachmentUploadStateBuilder` in favor of `StreamAttachmentsUploadStateBuilder` +- `AttachmentWidget` in favor of `StreamAttachmentWidget` +- `AvatarThemeData` in favor of `StreamAvatarThemeData` +- `ChannelAvatar` in favor of `StreamChannelAvatar` +- `ChannelBottomSheet` in favor of `StreamChannelInfoBottomSheet` +- `ChannelHeader` in favor of `StreamChannelHeader` +- `ChannelHeaderTheme` in favor of `StreamChannelHeaderTheme` +- `ChannelHeaderThemeData` in favor of `StreamChannelHeaderThemeData` +- `ChannelInfo` in favor of `StreamChannelInfo` +- `ChannelListHeader` in favor of `StreamChannelListHeader` +- `ChannelListHeaderTheme` in favor of `StreamChannelListHeaderTheme` +- `ChannelListHeaderThemeData` in favor of `StreamChannelListHeaderThemeData` +- `ChannelListView` in favor of `StreamChannelListView` +- `ChannelListViewTheme` in favor of `StreamChannelListViewTheme` +- `ChannelListViewThemeData` in favor of `StreamChannelListViewThemeData` +- `ChannelListHeader` in favor of `StreamChannelListHeader` +- `ChannelListView` in favor of `StreamChannelListView` +- `ChannelName` in favor of `StreamChannelName` +- `ChannelPreview` in favor of `StreamChannelListTile` +- `ChannelPreviewTheme` in favor of `StreamChannelPreviewTheme` +- `ChannelPreviewThemeData` in favor of `StreamChannelPreviewThemeData` +- `ChannelName` in favor of `StreamChannelName` +- `ColorTheme` in favor of `StreamColorTheme` +- `CommandsOverlay` in favor of `StreamCommandsOverlay` +- `ConnectionStatusBuilder` in favor of `StreamConnectionStatusBuilder` +- `DateDivider` in favor of `StreamDateDivider` +- `DeletedMessage` in favor of `StreamDeletedMessage` +- `EmojiOverlay` in favor of `StreamEmojiOverlay` +- `FileAttachment` in favor of `StreamFileAttachment` +- `FullScreenMedia` in favor of `StreamFullScreenMedia` +- `GalleryFooter` in favor of `StreamGalleryFooter` +- `GalleryFooterThemeData` in favor of `StreamGalleryFooterThemeData` +- `GalleryHeader` in favor of `StreamGalleryHeader` +- `GalleryHeaderTheme` in favor of `StreamGalleryHeaderTheme` +- `GalleryHeaderThemeData` in favor of `StreamGalleryHeaderThemeData` +- `GiphyAttachment` in favor of `StreamGiphyAttachment` +- `GradientAvatar` in favor of `StreamGradientAvatar` +- `GroupAvatar` in favor of `StreamGroupAvatar` +- `ImageAttachment` in favor of `StreamImageAttachment` +- `ImageGroup` in favor of `StreamImageGroup` +- `InfoTile` in favor of `StreamInfoTile` +- `MediaListView` in favor of `StreamMediaListView` +- `MessageAction` in favor of `StreamMessageAction` +- `MessageActionsModal` in favor `StreamMessageActionsModal` +- `MessageInput` in favor of `StreamMessageInput` +- `MessageInputTheme` in favor of `StreamMessageInputTheme` +- `MessageInputThemeData` in favor of `StreamMessageInputThemeData` +- `MessageInputState` in favor of `StreamMessageInput` +- `MessageListView` in favor of `StreamMessageListView` +- `MessageListViewTheme` in favor of `StreamMessageListViewTheme` +- `MessageListViewThemeData` in favor of `StreamMessageListViewThemeData` +- `MessageSearchListView` in favor of `StreamMessageSearchListView` +- `MessageSearchListViewTheme` in favor of `StreamMessageSearchListViewTheme` +- `MessageSearchListViewThemeData` in favor of `StreamMessageSearchListViewThemeData` +- `MessageReactionsModal` in favor of `StreamMessageReactionsModal` +- `MessageSearchItem` in favor of `StreamMessageSearchItem` +- `MessageSearchListView` in favor of `StreamMessageSearchListView` +- `MessageText` in favor of `StreamMessageText` +- `MessageWidget` in favor of `StreamMessageWidget` +- `MessageThemeData` in favor of `StreamMessageThemeData` +- `MultiOverlay` in favor of `StreamMultiOverlay` +- `OptionListTile` in favor of `StreamOptionListTile` +- `QuotedMessageWidget` in favor of `StreamQuotedMessageWidget` +- `ReactionBubble` in favor of `StreamReactionBubble` +- `ReactionIcon` in favor of `StreamReactionIcon` +- `ReactionPicker` in favor of `StreamReactionPicker` +- `SendingIndicator` in favor of `StreamSendingIndicator` +- `SystemMessage` in favor of `StreamSystemMessage` +- `TextTheme` in favor of `StreamTextTheme` +- `ThreadHeader` in favor of `StreamThreadHeader` +- `TypingIndicator` in favor of `StreamTypingIndicator` +- `UnreadIndicator` in favor of `SteamUnreadIndicator` +- `UploadProgressIndicator` in favor of `StreamUploadProgressIndicator` +- `UrlAttachment` in favor of `StreamUrlAttachment` +- `UserAvatar` in favor of `StreamUserAvatar` +- `UserItem` in favor of `StreamUserItem` +- `UserListView` in favor of `StreamUserListView` +- `UserListViewTheme` in favor of `StreamUserListViewTheme` +- `UserListViewThemeData` in favor of `StreamUserListViewThemeData` +- `UserMentionTile` in favor of `StreamUserMentionTile` +- `UserMentionsOverlay` in favor of `StreamUserMentionsOverlay` +- `VideoAttachment` in favor of `StreamVideoAttachment` +- `VideoService` in favor of `StreamVideoService` +- `VideoThumbnailImage` in favor of `StreamVideoThumbnailImage` +- `VisibleFootnote` in favor of `StreamVisibleFootnote` + +## ChannelListView to StreamChannelListView + +The `ChannelListView` widget has been deprecated, and it is now recommended to use `StreamChannelListView`. + +Version 4 of the Stream Chat Flutter packages introduces a new controller called, `StreamChannelListController`. This controller manages the content for a channel list; it lets you perform tasks such as: + +- Load initial data. +- Use channel events handlers. +- Load more data using `loadMore`. +- Replace the previously loaded channels. +- Return/Create a new channel and start watching it. +- Pause and Resume all subscriptions added to this composite. + +### ChannelsBloc to StreamChannelListController + +The `ChannelsBloc` widget should be replaced with `StreamChannelListController`. This controller provides all the functionality needed to query and manipulate channel data previously accessible through `ChannelsBloc`. + +### StreamChannelListView Examples + +Let's explore some examples of the functional differences when using the new `StreamChannelListView`. + +The **StreamChannelListController** provides various methods, such as: + +- **deleteChannel** +- **loadMore** +- **muteChannel** +- **deleteChannel** + +For a complete list with additional information, see the code documentation. + +#### Basic Use + +The following code demonstrates the old way of creating a **ChannelListPage**, that displays a list of channels: + +```dart +class ChannelListPage extends StatelessWidget { + const ChannelListPage({ + Key? key, + }) : super(key: key); + + @override + // ignore: prefer_expression_function_bodies + Widget build(BuildContext context) { + return Scaffold( + body: ChannelsBloc( + child: ChannelListView( + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + limit: 20, + channelWidget: const ChannelPage(), + ), + ), + ); + } +} +``` + +In **v4** this can now be achieved with the following: + +```dart +class ChannelListPage extends StatefulWidget { + const ChannelListPage({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + + @override + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _controller = StreamChannelListController( + client: widget.client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ), + ), + ), + ); +} +``` + +As you can see, the **ChannelsBloc** has been replaced with a **StreamChannelListController**, where the **filter**, **limit**, and **sort** arguments can be set. The above code also demonstrates how to refresh the channel list by calling `_controller.refresh()`. + +## MessageSearchListView to StreamMessageSearchListView + +The `MessageSearchListView` widget has been deprecated, and it is now recommended to use `StreamMessageSearchListView`. + +Version 4 of the Stream Chat Flutter packages introduces a new controller called, `StreamMessageSearchListController`. This controller manages the content when searching for a message; it lets you perform tasks such as: + +- Load initial data. +- Set filters and search terms. +- Load more data using `loadMore`. +- Refresh data. + +### MessageSearchBloc to StreamMessageSearchListController + +The `MessageSearchBloc` widget should be replaced with a `StreamMessageSearchListController`. This controller provides all the functionality needed to query and manipulate message search data previously accessible through `MessageSearchBloc`. + +### StreamMessageSearchListView Example + +The following code demonstrates the old way of searching for messages: + +```dart +class SearchExample extends StatelessWidget { + const SearchExample({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return MessageSearchBloc( + child: MessageSearchListView( + showErrorTile: true, + messageQuery: 'message query', + filters: Filter.in_('members', const ['user-id']), + sortOptions: const [ + SortOption( + 'created_at', + direction: SortOption.ASC, + ), + ], + pullToRefresh: false, + limit: 30, + emptyBuilder: (context) => const Text('Nothing to show'), + itemBuilder: (context, messageResponse) { + /// Return widget + } + onItemTap: (messageResponse) { + /// Handle on tap + } + ), + ); + } +} +``` + +In **v4**, this can now be achieved with the following: + +```dart +class SearchExample extends StatefulWidget { + const SearchExample({ + Key? key, + }) : super(key: key); + + @override + State createState() => _SearchExampleState(); +} + +class _SearchExampleState extends State { + late final StreamMessageSearchListController _messageSearchListController = + StreamMessageSearchListController( + client: StreamChat.of(context).client, + filter: Filter.in_('members', [StreamChat.of(context).currentUser!.id]), + limit: 5, + searchQuery: '', + sort: [ + const SortOption( + 'created_at', + direction: SortOption.ASC, + ), + ], + ); + + search() { + _messageSearchListController.searchQuery = 'search-value'; + _messageSearchListController.doInitialLoad(); + } + + @override + dispose() { + _messageSearchListController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return StreamMessageSearchListView( + controller: _messageSearchListController, + emptyBuilder: (context) => const Text('Nothing to show'), + itemBuilder: ( + context, + messageResponses, + index, + defaultWidget, + ) { + return defaultWidget.copyWith(); // modify default widget + }); + } +} +``` + +## UserListView to StreamUserListView + +The `UserListView` widget has been deprecated, and it is now recommended to use `StreamUserListView`. + +Version 4 of the Stream Chat Flutter packages introduces a new controller called, `StreamUserListController`. This controller manages the content when retrieving Stream users; it let's you perform tasks, such as: + +- Load data. +- Set filters. +- Refresh data. + +### UsersBloc to StreamUserListController + +The `UsersBloc` widget should be replaced with a `StreamUserListController`. This controller provides all the functionality needed to query and manipulate user data previously accessible through `UsersBloc`. + +### StreamUserListView Example + +The following code demonstrates the old way of displaying all users: + +```dart +class UsersExample extends StatelessWidget { + const UsersExample({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return UsersBloc( + child: UserListView( + groupAlphabetically: true, + onUserTap: (user, _) { + /// Handle on tap + }, + limit: 25, + filter: Filter.and([ + Filter.autoComplete('name', 'some-name'), + Filter.notEqual('id', StreamChat.of(context).currentUser!.id), + ]), + sort: const [ + SortOption( + 'name', + direction: 1, + ), + ], + ), + ); + } +} +``` + +In **v4**, this can now be achieved with the following: + +```dart +class UsersExample extends StatefulWidget { + const UsersExample({ + Key? key, + }) : super(key: key); + + @override + State createState() => _UsersExampleState(); +} + +class _UsersExampleState extends State { + late final userListController = StreamUserListController( + client: StreamChat.of(context).client, + limit: 25, + filter: Filter.and([ + Filter.notEqual('id', StreamChat.of(context).currentUser!.id), + ]), + sort: [ + const SortOption( + 'name', + direction: 1, + ), + ], + ); + + void _load() { + userListController.filter = Filter.and([ + Filter.autoComplete('name', 'some-name'), + Filter.notEqual('id', StreamChat.of(context).currentUser!.id), + ]); + userListController.doInitialLoad(); + } + + @override + dispose() { + userListController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return StreamUserListView( + controller: userListController, + onUserTap: (user) { + /// Handle on tap + }, + emptyBuilder: (context) => const Text('Nothing to show'), + itemBuilder: ( + context, + users, + index, + defaultWidget, + ) { + return defaultWidget.copyWith(); // modify default widget + }, + ); + } +} +``` + +## MessageInput to StreamMessageInput + +The `MessageInput` widget has been deprecated, and it is now recommended to use `StreamMessageInput`. + +Version 4 of the Stream Chat Flutter packages introduces a new controller called, `MessageInputController`. This controller maintains the state of the message input and exposes various methods to allow you to customize and manipulate the underlying **Message** value. + +Creating a separate controller allows easier control over the message input content by moving logic out of the deprecated `MessageInput` and into the controller. This controller can then be created, managed, and exposed in whatever way you like. + +The widget is also separated into smaller components: `StreamCountDownButton`, `StreamAttachmentPicker`, etc. + +> ❗The `MessageInputController` is exposed by the **stream_chat_flutter_core** package. This allows you to use the controller even if you're not using the UI components. + +As a result of this extra control, it is no longer needed for the new `StreamMessageInput` widget to expose these `MessageInput` arguments: + +- `parentMessage`: parent message in case of a thread +- `editMessage`: message to edit +- `initialMessage`: message to start with +- `quotedMessage`: message to quote/reply +- `onQuotedMessageCleared`: callback for clearing quoted message +- `textEditingController`: the text controller of the text field + +The following arguments are newly introduced to the `StreamMessageInput`, and are not available on the old `MessageInput`: + +- `messageInputController`: the controller for the message input +- `attachmentsPickerBuilder`: builder for bottom sheet when attachment picker is opened +- `sendButtonBuilder`: builder for creating send button +- `validator`: a callback function that validates the message +- `restorationId`: restoration ID to save and restore the state of the MessageInput +- `enableSafeArea`: wraps the **StreamMessageInput** widget with a **SafeArea** widget +- `elevation`: elevation of the **StreamMessageInput** widget +- `shadow`: **Shadow** for the **StreamMessageInput** widget + +### StreamMessageInput Examples + +Let's explore some examples of the functional differences when using the new `StreamMessageInput`. + +#### Basic Use + +Unless you want to programmatically manipulate the value of the message input, then there is no difference in how you would use the message input widget. + +The following code demonstrates the old way of creating a **ChannelPage** widget that displays a chat screen: + +```dart +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: const ChannelHeader(), + body: Column( + children: const [ + Expanded( + child: MessageListView(), + ), + MessageInput(), + ], + ), + ); + } +} +``` + +In **v4** this is the same, the only difference being that all the Stream widgets are now prefixed with **Stream**. For example, **MessageListView** becomes **StreamMessageListView**, and so forth. + +```dart +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) => Scaffold( + appBar: const StreamChannelHeader(), + body: Column( + children: const [ + Expanded( + child: StreamMessageListView(), + ), + StreamMessageInput(), + ], + ), + ); +} +``` + +However, you can optionally pass in a **MessageInputController** in the **StreamMessageInput**, which gives extra control over the message input value. + +#### Thread Page + +The following code demonstrates the old way of creating a thread page: + +```dart +class ThreadPage extends StatelessWidget { + const ThreadPage({ + Key? key, + this.parent, + }) : super(key: key); + + final Message? parent; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: ThreadHeader( + parent: parent!, + ), + body: Column( + children: [ + Expanded( + child: MessageListView( + parentMessage: parent, + ), + ), + MessageInput( + parentMessage: parent, + ), + ], + ), + ); + } +} +``` + +In **v4** the only difference is the **Stream** prefix and the way that the parent message is passed to the message input: + +```dart +class ThreadPage extends StatelessWidget { + const ThreadPage({ + Key? key, + this.parent, + }) : super(key: key); + + final Message? parent; + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: StreamThreadHeader( + parent: parent!, + ), + body: Column( + children: [ + Expanded( + child: StreamMessageListView( + parentMessage: parent, + ), + ), + StreamMessageInput( + messageInputController: MessageInputController( + message: Message(parentId: parent!.id), + ), + ), + ], + ), + ); + } +} +``` + +To send a thread message, you need to specify the message's parent ID for which you're creating a thread. + +#### Reply/Quote Message + +The following code demonstrates the old way of replying to a message: + +```dart +... + +void _reply(Message message) { + setState(() => _quotedMessage = message); +} + +... + +MessageInput + quotedMessage: _quotedMessage, + onQuotedMessageCleared: () { + setState(() => _quotedMessage = null); + }, +), +``` + +To reply to a message in **v4**: + +```dart +... + +void _reply(Message message) { + _messageInputController.quotedMessage = message; +} + +... + +StreamMessageInput( + messageInputController: _messageInputController, +), +``` + +The controller makes it much simpler to dynamically modify the message input. + +## Stream Chat Flutter Core + +Various changes have been made to the Core package, most notably, the indroduction of all of the controllers mentioned above: + +These controllers replace the business logic implementations (Bloc). Please note that this is not related to the well-known Flutter Bloc package, but instead refers to the naming we used for our business logic components. + +In this version we're introducing controllers in place of their bloc counterparts: +**StreamChannelListController** in favor of **ChannelsBloc** +**StreamMessageSearchListController** in favor of **MessageSearchBloc** +**StreamUserListController** in favor of **UsersBloc** + +The Bloc components are deprecated in v4.0.0 but can still be used. They will be removed in the next major release (v5.0.0). + +Additionally, we also now have the **StreamMessageInputController**, as discussed above. This can be used outside of our UI package as well. + +Finally, the following Core builders are also deprecated as their functionality can be replaced using their controller counterparts: + +- ChannelListCore +- MessageSearchListCore +- UserListCore diff --git a/docusaurus/docs/Flutter/guides/slidable_channel_list_preview.mdx b/docusaurus/docs/Flutter/guides/slidable_channel_list_preview.mdx new file mode 100644 index 00000000..9d57e709 --- /dev/null +++ b/docusaurus/docs/Flutter/guides/slidable_channel_list_preview.mdx @@ -0,0 +1,212 @@ +--- +id: slidable_channel_list_preview +sidebar_position: 14 +title: Slidable Channel List Preview +--- + +Slidable Channel List Preview + +### Introduction + +The default slidable behavior within the channel list has been removed in v4 of the Stream Chat Flutter SDK. +This guide will show you how you can easily add this functionality yourself. + +Please see our [full v4 migration guide](migration_guide_4_0.mdx) if you're migrating from an earlier version of the Stream Chat Flutter SDK. + +![Slidable demo](../assets/slidable_demo.jpg) + +### Prerequisites + +This guide assumes you are familiar with the Stream Chat SDK. +If you're new to Stream Chat Flutter, we recommend looking at our [getting started tutorial](https://getstream.io/chat/flutter/tutorial/). + +**Dependencies:** + +```dart +dependencies: + flutter: + sdk: flutter + stream_chat_flutter: ^4.0.0 + flutter_slidable: ^1.2.0 +``` + +⚠️ Note: The examples shown in this guide use the above packages and versions. + +### Example Code - Custom Stream Channel Item Builder + +In this example, you are doing a few important things in the ChannelListPage widget. You're: + +- Using the **flutter_slidable** package to easily add slide functionality. +- Passing in the `itemBuilder` argument for the **StreamChannelListView** widget. This gives access to the current **BuildContext**, **Channel**, and **StreamChannelListTile**, and allows you to create, or customize, the stream channel list tiles. +- Returning a Slidable widget with two CustomSlidableAction widgets - to delete a channel and show more options. These widgets come from the flutter_slidable package. +- Adding `onPressed` behaviour to call `showConfirmationDialog` and `showChannelInfoModalBottomSheet`. These methods come from the **stream_chat_flutter** package. They have a few different on-tap callbacks you can supply, for example, `onViewInfoTap`. Alternatively, you can create custom dialogs from scratch. +- Using the **StreamChannelListController** to perform actions, such as, `deleteChannel`. + +```dart +import 'package:flutter/material.dart'; +import 'package:flutter_slidable/flutter_slidable.dart'; +import 'package:stream_chat_flutter/stream_chat_flutter.dart'; + +void main() async { + final client = StreamChatClient( + 's2dxdhpxd94g', + ); + + await client.connectUser( + User(id: 'super-band-9'), + '''eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoic3VwZXItYmFuZC05In0.0L6lGoeLwkz0aZRUcpZKsvaXtNEDHBcezVTZ0oPq40A''', + ); + + runApp( + MyApp( + client: client, + ), + ); +} + +class MyApp extends StatelessWidget { + const MyApp({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + + @override + Widget build(BuildContext context) { + return MaterialApp( + builder: (context, child) => StreamChat( + client: client, + child: child, + ), + home: ChannelListPage( + client: client, + ), + ); + } +} + +class ChannelListPage extends StatefulWidget { + const ChannelListPage({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + + @override + State createState() => _ChannelListPageState(); +} + +class _ChannelListPageState extends State { + late final _controller = StreamChannelListController( + client: widget.client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + body: SlidableAutoCloseBehavior( + child: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelListView( + controller: _controller, + itemBuilder: (context, channel, tile) { + final chatTheme = StreamChatTheme.of(context); + final backgroundColor = chatTheme.colorTheme.inputBg; + final canDeleteChannel = channel.ownCapabilities + .contains(PermissionType.deleteChannel); + return Slidable( + groupTag: 'channels-actions', + endActionPane: ActionPane( + extentRatio: canDeleteChannel ? 0.40 : 0.20, + motion: const BehindMotion(), + children: [ + CustomSlidableAction( + onPressed: (_) { + showChannelInfoModalBottomSheet( + context: context, + channel: channel, + onViewInfoTap: () { + Navigator.pop(context); + // Navigate to info screen + }, + ); + }, + backgroundColor: backgroundColor, + child: const Icon(Icons.more_horiz), + ), + if (canDeleteChannel) + CustomSlidableAction( + backgroundColor: backgroundColor, + child: StreamSvgIcon.delete( + color: chatTheme.colorTheme.accentError, + ), + onPressed: (_) async { + final res = await showConfirmationDialog( + context, + title: 'Delete Conversation', + question: + 'Are you sure you want to delete this conversation?', + okText: 'Delete', + cancelText: 'Cancel', + icon: StreamSvgIcon.delete( + color: chatTheme.colorTheme.accentError, + ), + ); + if (res == true) { + await _controller.deleteChannel(channel); + } + }, + ), + ], + ), + child: tile, + ); + }, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ), + ), + ), + ), + ); +} + +class ChannelPage extends StatelessWidget { + const ChannelPage({ + Key? key, + }) : super(key: key); + + @override + Widget build(BuildContext context) => Scaffold( + appBar: const StreamChannelHeader(), + body: Column( + children: const [ + Expanded( + child: StreamMessageListView(), + ), + StreamMessageInput(), + ], + ), + ); +} +``` + +The above is the complete sample, and all you need for a basic implementation. From 6048d61862156344528c887fc1e18941e5e59238 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 29 Apr 2022 15:25:35 +0200 Subject: [PATCH 180/201] add exports, minor refactoring --- .../core/models/attachment_file.freezed.dart | 16 ++++++++++------ .../lib/src/core/models/channel_model.dart | 4 ++-- .../lib/src/core/models/channel_model.g.dart | 5 ++--- .../stream_channel_list_view.dart | 4 ---- .../stream_message_search_list_view.dart | 6 ------ .../user_scroll_view/stream_user_grid_tile.dart | 2 +- .../user_scroll_view/stream_user_list_view.dart | 6 ------ .../lib/stream_chat_flutter.dart | 4 ++-- .../src/stream_channel_list_event_handler.dart | 17 +---------------- .../lib/stream_chat_flutter_core.dart | 3 ++- 10 files changed, 20 insertions(+), 47 deletions(-) diff --git a/packages/stream_chat/lib/src/core/models/attachment_file.freezed.dart b/packages/stream_chat/lib/src/core/models/attachment_file.freezed.dart index c524a742..634af64f 100644 --- a/packages/stream_chat/lib/src/core/models/attachment_file.freezed.dart +++ b/packages/stream_chat/lib/src/core/models/attachment_file.freezed.dart @@ -1,5 +1,6 @@ // coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target part of 'attachment_file.dart'; @@ -324,13 +325,15 @@ class _$InProgress implements InProgress { return identical(this, other) || (other.runtimeType == runtimeType && other is InProgress && - (identical(other.uploaded, uploaded) || - other.uploaded == uploaded) && - (identical(other.total, total) || other.total == total)); + const DeepCollectionEquality().equals(other.uploaded, uploaded) && + const DeepCollectionEquality().equals(other.total, total)); } @override - int get hashCode => Object.hash(runtimeType, uploaded, total); + int get hashCode => Object.hash( + runtimeType, + const DeepCollectionEquality().hash(uploaded), + const DeepCollectionEquality().hash(total)); @JsonKey(ignore: true) @override @@ -612,11 +615,12 @@ class _$Failed implements Failed { return identical(this, other) || (other.runtimeType == runtimeType && other is Failed && - (identical(other.error, error) || other.error == error)); + const DeepCollectionEquality().equals(other.error, error)); } @override - int get hashCode => Object.hash(runtimeType, error); + int get hashCode => + Object.hash(runtimeType, const DeepCollectionEquality().hash(error)); @JsonKey(ignore: true) @override diff --git a/packages/stream_chat/lib/src/core/models/channel_model.dart b/packages/stream_chat/lib/src/core/models/channel_model.dart index cb2f81c2..c3e83435 100644 --- a/packages/stream_chat/lib/src/core/models/channel_model.dart +++ b/packages/stream_chat/lib/src/core/models/channel_model.dart @@ -13,7 +13,7 @@ class ChannelModel { String? id, String? type, String? cid, - this.ownCapabilities = const [], + this.ownCapabilities, ChannelConfig? config, this.createdBy, this.frozen = false, @@ -54,7 +54,7 @@ class ChannelModel { /// List of user permissions on this channel @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) - final List ownCapabilities; + final List? ownCapabilities; /// The channel configuration data @JsonKey(includeIfNull: false, toJson: Serializer.readOnly) diff --git a/packages/stream_chat/lib/src/core/models/channel_model.g.dart b/packages/stream_chat/lib/src/core/models/channel_model.g.dart index 974ef383..9bd8f062 100644 --- a/packages/stream_chat/lib/src/core/models/channel_model.g.dart +++ b/packages/stream_chat/lib/src/core/models/channel_model.g.dart @@ -11,9 +11,8 @@ ChannelModel _$ChannelModelFromJson(Map json) => ChannelModel( type: json['type'] as String?, cid: json['cid'] as String?, ownCapabilities: (json['own_capabilities'] as List?) - ?.map((e) => e as String) - .toList() ?? - const [], + ?.map((e) => e as String) + .toList(), config: json['config'] == null ? null : ChannelConfig.fromJson(json['config'] as Map), diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart index 23753644..2a511835 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart @@ -89,13 +89,9 @@ class StreamChannelListView extends StatelessWidget { final PagedValueScrollViewIndexedWidgetBuilder separatorBuilder; /// A builder that is called to build the empty state of the list. - /// - /// If not provided, [StreamChannelListEmptyWidget] will be used. final WidgetBuilder? emptyBuilder; /// A builder that is called to build the loading state of the list. - /// - /// If not provided, [StreamChannelListLoadingTile] will be used. final WidgetBuilder? loadingBuilder; /// A builder that is called to build the error state of the list. diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart index 3b23694b..e07bfc32 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart @@ -87,18 +87,12 @@ class StreamMessageSearchListView extends StatelessWidget { separatorBuilder; /// A builder that is called to build the empty state of the list. - /// - /// If not provided, [StreamMessageSearchListEmptyWidget] will be used. final WidgetBuilder? emptyBuilder; /// A builder that is called to build the loading state of the list. - /// - /// If not provided, [StreamMessageSearchListLoadingTile] will be used. final WidgetBuilder? loadingBuilder; /// A builder that is called to build the error state of the list. - /// - /// If not provided, [StreamMessageSearchListErrorWidget] will be used. final Widget Function(BuildContext, StreamChatError)? errorBuilder; /// Called when the user taps this list tile. diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart index 6f8743eb..6d904086 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart @@ -77,7 +77,7 @@ class StreamUserGridTile extends StatelessWidget { child: Text( user.name, textAlign: TextAlign.center, - maxLines: 2, + maxLines: 1, overflow: TextOverflow.ellipsis, style: const TextStyle( fontWeight: FontWeight.bold, diff --git a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart index 92915811..2524f5da 100644 --- a/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/v4/scroll_view/user_scroll_view/stream_user_list_view.dart @@ -84,18 +84,12 @@ class StreamUserListView extends StatelessWidget { final PagedValueScrollViewIndexedWidgetBuilder separatorBuilder; /// A builder that is called to build the empty state of the list. - /// - /// If not provided, [StreamUserListEmptyWidget] will be used. final WidgetBuilder? emptyBuilder; /// A builder that is called to build the loading state of the list. - /// - /// If not provided, [StreamUserListLoadingTile] will be used. final WidgetBuilder? loadingBuilder; /// A builder that is called to build the error state of the list. - /// - /// If not provided, [StreamUserListErrorWidget] will be used. final Widget Function(BuildContext, StreamChatError)? errorBuilder; /// Called when the user taps this list tile. diff --git a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart index 736b9dce..7a569711 100644 --- a/packages/stream_chat_flutter/lib/stream_chat_flutter.dart +++ b/packages/stream_chat_flutter/lib/stream_chat_flutter.dart @@ -48,6 +48,7 @@ export 'src/user_item.dart'; export 'src/user_list_view.dart'; export 'src/user_mention_tile.dart'; export 'src/utils.dart'; +// v4 export 'src/v4/message_input/countdown_button.dart'; export 'src/v4/message_input/stream_attachment_picker.dart'; export 'src/v4/message_input/stream_message_input.dart'; @@ -55,13 +56,12 @@ export 'src/v4/message_input/stream_message_send_button.dart'; export 'src/v4/message_input/stream_message_text_field.dart'; export 'src/v4/scroll_view/channel_scroll_view/stream_channel_grid_tile.dart'; export 'src/v4/scroll_view/channel_scroll_view/stream_channel_grid_view.dart'; - -// v4 export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_tile.dart'; export 'src/v4/scroll_view/channel_scroll_view/stream_channel_list_view.dart'; export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_grid_view.dart'; export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_tile.dart'; export 'src/v4/scroll_view/message_search_scroll_view/stream_message_search_list_view.dart'; +export 'src/v4/scroll_view/stream_scroll_view_empty_widget.dart'; export 'src/v4/scroll_view/stream_scroll_view_indexed_widget_builder.dart'; export 'src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart'; export 'src/v4/scroll_view/user_scroll_view/stream_user_grid_tile.dart'; diff --git a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_event_handler.dart b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_event_handler.dart index 8d548c67..e62ab380 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_channel_list_event_handler.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_channel_list_event_handler.dart @@ -49,22 +49,7 @@ class StreamChannelListEventHandler { /// This event is fired when a channel is updated. /// /// By default, this updates the channel received in the event. - void onChannelUpdated(Event event, StreamChannelListController controller) { - final eventChannel = event.channel; - if (eventChannel == null) return; - - final channels = [...controller.currentItems]; - final channelIndex = channels.indexWhere( - (it) => it.cid == (event.cid ?? eventChannel.cid), - ); - - if (channelIndex >= 0) { - final channelState = ChannelState(channel: eventChannel); - channels[channelIndex].state?.updateChannelState(channelState); - } - - controller.channels = channels; - } + void onChannelUpdated(Event event, StreamChannelListController controller) {} /// Function which gets called for the event /// [EventType.channelVisible]. diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index a5004f32..a5cd79df 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -11,7 +11,8 @@ export 'src/message_list_core.dart' hide MessageListCoreState; export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; export 'src/message_text_field_controller.dart'; -export 'src/paged_value_notifier.dart' show PagedValueListenableBuilder; +export 'src/paged_value_notifier.dart' + show PagedValueListenableBuilder, PagedValue; export 'src/paged_value_scroll_view.dart'; export 'src/stream_channel.dart'; export 'src/stream_channel_list_controller.dart'; From ba353a2a379bde24b08f9088d30d212bc6928b90 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 29 Apr 2022 15:46:54 +0200 Subject: [PATCH 181/201] update core example --- .../example/analysis_options.yaml | 29 +++ .../android/app/src/main/AndroidManifest.xml | 2 +- .../kotlin/example/example/MainActivity.kt | 6 + .../res/drawable-v21/launch_background.xml | 12 + .../app/src/main/res/values-night/styles.xml | 18 ++ .../example/lib/main.dart | 178 +++++++------ .../example/test/widget_test.dart | 30 +++ .../example/web/favicon.png | Bin 0 -> 917 bytes .../example/web/icons/Icon-192.png | Bin 0 -> 5292 bytes .../example/web/icons/Icon-512.png | Bin 0 -> 8252 bytes .../example/web/icons/Icon-maskable-192.png | Bin 0 -> 5594 bytes .../example/web/icons/Icon-maskable-512.png | Bin 0 -> 20998 bytes .../example/web/index.html | 104 ++++++++ .../example/web/manifest.json | 35 +++ .../example/windows/.gitignore | 17 ++ .../example/windows/CMakeLists.txt | 95 +++++++ .../example/windows/flutter/CMakeLists.txt | 103 ++++++++ .../flutter/generated_plugin_registrant.cc | 14 + .../flutter/generated_plugin_registrant.h | 15 ++ .../windows/flutter/generated_plugins.cmake | 16 ++ .../example/windows/runner/CMakeLists.txt | 17 ++ .../example/windows/runner/Runner.rc | 121 +++++++++ .../example/windows/runner/flutter_window.cpp | 61 +++++ .../example/windows/runner/flutter_window.h | 33 +++ .../example/windows/runner/main.cpp | 43 +++ .../example/windows/runner/resource.h | 16 ++ .../windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes .../windows/runner/runner.exe.manifest | 20 ++ .../example/windows/runner/utils.cpp | 64 +++++ .../example/windows/runner/utils.h | 19 ++ .../example/windows/runner/win32_window.cpp | 245 ++++++++++++++++++ .../example/windows/runner/win32_window.h | 98 +++++++ 32 files changed, 1327 insertions(+), 84 deletions(-) create mode 100644 packages/stream_chat_flutter_core/example/analysis_options.yaml create mode 100644 packages/stream_chat_flutter_core/example/android/app/src/main/kotlin/example/example/MainActivity.kt create mode 100644 packages/stream_chat_flutter_core/example/android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 packages/stream_chat_flutter_core/example/android/app/src/main/res/values-night/styles.xml create mode 100644 packages/stream_chat_flutter_core/example/test/widget_test.dart create mode 100644 packages/stream_chat_flutter_core/example/web/favicon.png create mode 100644 packages/stream_chat_flutter_core/example/web/icons/Icon-192.png create mode 100644 packages/stream_chat_flutter_core/example/web/icons/Icon-512.png create mode 100644 packages/stream_chat_flutter_core/example/web/icons/Icon-maskable-192.png create mode 100644 packages/stream_chat_flutter_core/example/web/icons/Icon-maskable-512.png create mode 100644 packages/stream_chat_flutter_core/example/web/index.html create mode 100644 packages/stream_chat_flutter_core/example/web/manifest.json create mode 100644 packages/stream_chat_flutter_core/example/windows/.gitignore create mode 100644 packages/stream_chat_flutter_core/example/windows/CMakeLists.txt create mode 100644 packages/stream_chat_flutter_core/example/windows/flutter/CMakeLists.txt create mode 100644 packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.cc create mode 100644 packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.h create mode 100644 packages/stream_chat_flutter_core/example/windows/flutter/generated_plugins.cmake create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/CMakeLists.txt create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/Runner.rc create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/flutter_window.cpp create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/flutter_window.h create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/main.cpp create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/resource.h create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/resources/app_icon.ico create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/runner.exe.manifest create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/utils.cpp create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/utils.h create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/win32_window.cpp create mode 100644 packages/stream_chat_flutter_core/example/windows/runner/win32_window.h diff --git a/packages/stream_chat_flutter_core/example/analysis_options.yaml b/packages/stream_chat_flutter_core/example/analysis_options.yaml new file mode 100644 index 00000000..61b6c4de --- /dev/null +++ b/packages/stream_chat_flutter_core/example/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/stream_chat_flutter_core/example/android/app/src/main/AndroidManifest.xml b/packages/stream_chat_flutter_core/example/android/app/src/main/AndroidManifest.xml index d2eb734a..dfabc845 100644 --- a/packages/stream_chat_flutter_core/example/android/app/src/main/AndroidManifest.xml +++ b/packages/stream_chat_flutter_core/example/android/app/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> + + + + + + + diff --git a/packages/stream_chat_flutter_core/example/android/app/src/main/res/values-night/styles.xml b/packages/stream_chat_flutter_core/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..3db14bb5 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/stream_chat_flutter_core/example/lib/main.dart b/packages/stream_chat_flutter_core/example/lib/main.dart index 8c081082..49f2be75 100644 --- a/packages/stream_chat_flutter_core/example/lib/main.dart +++ b/packages/stream_chat_flutter_core/example/lib/main.dart @@ -60,102 +60,114 @@ class StreamExample extends StatelessWidget { } /// Basic layout displaying a list of [Channel]s the user is a part of. -/// This is implemented using [ChannelListCore]. +/// This is implemented using a [StreamChannelListController]. /// -/// [ChannelListCore] is a `builder` with callbacks for constructing UIs based -/// on different scenarios. -class HomeScreen extends StatelessWidget { +/// [StreamChannelListController] is a controller that lets you manage a list of +/// channels. +class HomeScreen extends StatefulWidget { /// Builds a basic layout displaying a list of [Channel]s the user is a /// part of. - HomeScreen({Key? key}) : super(key: key); + const HomeScreen({Key? key}) : super(key: key); + @override + State createState() => _HomeScreenState(); +} + +class _HomeScreenState extends State { /// Controller used for loading more data and controlling pagination in - /// [ChannelListCore]. - final channelListController = ChannelListController(); + /// [StreamChannelListController]. + late final channelListController = StreamChannelListController( + client: StreamChatCore.of(context).client, + filter: Filter.and([ + Filter.equal('type', 'messaging'), + Filter.in_( + 'members', + [ + StreamChatCore.of(context).currentUser!.id, + ], + ), + ]), + ); + + @override + void initState() { + channelListController.doInitialLoad(); + super.initState(); + } + + @override + void dispose() { + channelListController.dispose(); + super.dispose(); + } @override Widget build(BuildContext context) => Scaffold( appBar: AppBar( title: const Text('Channels'), ), - body: ChannelsBloc( - child: ChannelListCore( - channelListController: channelListController, - filter: Filter.and([ - Filter.equal('type', 'messaging'), - Filter.in_( - 'members', - [ - StreamChatCore.of(context).currentUser!.id, - ], - ), - ]), - emptyBuilder: (BuildContext context) => const Center( - child: Text('Looks like you are not in any channels'), - ), - loadingBuilder: (BuildContext context) => const Center( - child: SizedBox( - height: 100, - width: 100, - child: CircularProgressIndicator(), - ), - ), - errorBuilder: ( - BuildContext context, - dynamic error, - ) => - Center( - child: Text( - 'Oh no, something went wrong. ' - 'Please check your config. $error', - ), - ), - listBuilder: ( - BuildContext context, - List channels, - ) => - LazyLoadScrollView( - onEndOfPage: () async { - channelListController.paginateData!(); - }, - child: ListView.builder( - itemCount: channels.length, - itemBuilder: (BuildContext context, int index) { - final _item = channels[index]; - return ListTile( - title: Text(_item.name ?? ''), - subtitle: StreamBuilder( - stream: _item.state!.lastMessageStream, - initialData: _item.state!.lastMessage, - builder: (context, snapshot) { - if (snapshot.hasData) { - return Text(snapshot.data!.text!); - } - - return const SizedBox(); - }, - ), - onTap: () { - /// Display a list of messages when the user taps on - /// an item. We can use [StreamChannel] to wrap our - /// [MessageScreen] screen with the selected channel. - /// - /// This allows us to use a built-in inherited widget - /// for accessing our `channel` later on. - Navigator.of(context).push( - MaterialPageRoute( - builder: (context) => StreamChannel( - channel: _item, - child: const MessageScreen(), - ), - ), - ); - }, - ); + body: PagedValueListenableBuilder( + valueListenable: channelListController, + builder: (context, value, child) { + return value.when( + (channels, nextPageKey, error) => LazyLoadScrollView( + onEndOfPage: () async { + if (nextPageKey != null) { + channelListController.loadMore(nextPageKey); + } }, + child: ListView.builder( + itemCount: channels.length, + itemBuilder: (BuildContext context, int index) { + final _item = channels[index]; + return ListTile( + title: Text(_item.name ?? ''), + subtitle: StreamBuilder( + stream: _item.state!.lastMessageStream, + initialData: _item.state!.lastMessage, + builder: (context, snapshot) { + if (snapshot.hasData) { + return Text(snapshot.data!.text!); + } + + return const SizedBox(); + }, + ), + onTap: () { + /// Display a list of messages when the user taps on + /// an item. We can use [StreamChannel] to wrap our + /// [MessageScreen] screen with the selected channel. + /// + /// This allows us to use a built-in inherited widget + /// for accessing our `channel` later on. + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => StreamChannel( + channel: _item, + child: const MessageScreen(), + ), + ), + ); + }, + ); + }, + ), ), - ), - ), + loading: () => const Center( + child: SizedBox( + height: 100, + width: 100, + child: CircularProgressIndicator(), + ), + ), + error: (e) => Center( + child: Text( + 'Oh no, something went wrong. ' + 'Please check your config. $e', + ), + ), + ); + }, ), ); } diff --git a/packages/stream_chat_flutter_core/example/test/widget_test.dart b/packages/stream_chat_flutter_core/example/test/widget_test.dart new file mode 100644 index 00000000..a19dabb0 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/test/widget_test.dart @@ -0,0 +1,30 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility that Flutter provides. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:example/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/packages/stream_chat_flutter_core/example/web/favicon.png b/packages/stream_chat_flutter_core/example/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/packages/stream_chat_flutter_core/example/web/icons/Icon-192.png b/packages/stream_chat_flutter_core/example/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 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 literal 0 HcmV?d00001 diff --git a/packages/stream_chat_flutter_core/example/web/icons/Icon-512.png b/packages/stream_chat_flutter_core/example/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 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 literal 0 HcmV?d00001 diff --git a/packages/stream_chat_flutter_core/example/web/icons/Icon-maskable-192.png b/packages/stream_chat_flutter_core/example/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..eb9b4d76e525556d5d89141648c724331630325d GIT binary patch literal 5594 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 X>c!)3PgKfL&lX^$Z>Cpu&6)6jvi^Z! literal 0 HcmV?d00001 diff --git a/packages/stream_chat_flutter_core/example/web/icons/Icon-maskable-512.png b/packages/stream_chat_flutter_core/example/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..d69c56691fbdb0b7efa65097c7cc1edac12a6d3e GIT binary patch literal 20998 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 MPgg&ebxsLQ025IeI{*Lx literal 0 HcmV?d00001 diff --git a/packages/stream_chat_flutter_core/example/web/index.html b/packages/stream_chat_flutter_core/example/web/index.html new file mode 100644 index 00000000..b6b9dd23 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/web/index.html @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + example + + + + + + + diff --git a/packages/stream_chat_flutter_core/example/web/manifest.json b/packages/stream_chat_flutter_core/example/web/manifest.json new file mode 100644 index 00000000..096edf8f --- /dev/null +++ b/packages/stream_chat_flutter_core/example/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "example", + "short_name": "example", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} diff --git a/packages/stream_chat_flutter_core/example/windows/.gitignore b/packages/stream_chat_flutter_core/example/windows/.gitignore new file mode 100644 index 00000000..d492d0d9 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/packages/stream_chat_flutter_core/example/windows/CMakeLists.txt b/packages/stream_chat_flutter_core/example/windows/CMakeLists.txt new file mode 100644 index 00000000..1633297a --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/CMakeLists.txt @@ -0,0 +1,95 @@ +cmake_minimum_required(VERSION 3.14) +project(example LANGUAGES CXX) + +set(BINARY_NAME "example") + +cmake_policy(SET CMP0063 NEW) + +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Configure build options. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() + +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") + +# Flutter library and tool build rules. +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build +add_subdirectory("runner") + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/packages/stream_chat_flutter_core/example/windows/flutter/CMakeLists.txt b/packages/stream_chat_flutter_core/example/windows/flutter/CMakeLists.txt new file mode 100644 index 00000000..b2e4bd8d --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/flutter/CMakeLists.txt @@ -0,0 +1,103 @@ +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.cc b/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..8083d749 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,14 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + ConnectivityPlusWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); +} diff --git a/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.h b/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..dc139d85 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugins.cmake b/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugins.cmake new file mode 100644 index 00000000..ba4a2175 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/flutter/generated_plugins.cmake @@ -0,0 +1,16 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + connectivity_plus_windows +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) diff --git a/packages/stream_chat_flutter_core/example/windows/runner/CMakeLists.txt b/packages/stream_chat_flutter_core/example/windows/runner/CMakeLists.txt new file mode 100644 index 00000000..de2d8916 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) +apply_standard_settings(${BINARY_NAME}) +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/packages/stream_chat_flutter_core/example/windows/runner/Runner.rc b/packages/stream_chat_flutter_core/example/windows/runner/Runner.rc new file mode 100644 index 00000000..79f0da9a --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#ifdef FLUTTER_BUILD_NUMBER +#define VERSION_AS_NUMBER FLUTTER_BUILD_NUMBER +#else +#define VERSION_AS_NUMBER 1,0,0 +#endif + +#ifdef FLUTTER_BUILD_NAME +#define VERSION_AS_STRING #FLUTTER_BUILD_NAME +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "example" "\0" + VALUE "FileDescription", "example" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "example" "\0" + VALUE "LegalCopyright", "Copyright (C) 2022 example. All rights reserved." "\0" + VALUE "OriginalFilename", "example.exe" "\0" + VALUE "ProductName", "example" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/packages/stream_chat_flutter_core/example/windows/runner/flutter_window.cpp b/packages/stream_chat_flutter_core/example/windows/runner/flutter_window.cpp new file mode 100644 index 00000000..b43b9095 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/flutter_window.cpp @@ -0,0 +1,61 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/packages/stream_chat_flutter_core/example/windows/runner/flutter_window.h b/packages/stream_chat_flutter_core/example/windows/runner/flutter_window.h new file mode 100644 index 00000000..6da0652f --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/packages/stream_chat_flutter_core/example/windows/runner/main.cpp b/packages/stream_chat_flutter_core/example/windows/runner/main.cpp new file mode 100644 index 00000000..bcb57b0e --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.CreateAndShow(L"example", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/packages/stream_chat_flutter_core/example/windows/runner/resource.h b/packages/stream_chat_flutter_core/example/windows/runner/resource.h new file mode 100644 index 00000000..66a65d1e --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/packages/stream_chat_flutter_core/example/windows/runner/resources/app_icon.ico b/packages/stream_chat_flutter_core/example/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/packages/stream_chat_flutter_core/example/windows/runner/runner.exe.manifest b/packages/stream_chat_flutter_core/example/windows/runner/runner.exe.manifest new file mode 100644 index 00000000..c977c4a4 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/packages/stream_chat_flutter_core/example/windows/runner/utils.cpp b/packages/stream_chat_flutter_core/example/windows/runner/utils.cpp new file mode 100644 index 00000000..d19bdbbc --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/utils.cpp @@ -0,0 +1,64 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr); + if (target_length == 0) { + return std::string(); + } + std::string utf8_string; + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, utf8_string.data(), + target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/packages/stream_chat_flutter_core/example/windows/runner/utils.h b/packages/stream_chat_flutter_core/example/windows/runner/utils.h new file mode 100644 index 00000000..3879d547 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/packages/stream_chat_flutter_core/example/windows/runner/win32_window.cpp b/packages/stream_chat_flutter_core/example/windows/runner/win32_window.cpp new file mode 100644 index 00000000..c10f08dc --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/win32_window.cpp @@ -0,0 +1,245 @@ +#include "win32_window.h" + +#include + +#include "resource.h" + +namespace { + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + FreeLibrary(user32_module); + } +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW | WS_VISIBLE, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + return OnCreate(); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} diff --git a/packages/stream_chat_flutter_core/example/windows/runner/win32_window.h b/packages/stream_chat_flutter_core/example/windows/runner/win32_window.h new file mode 100644 index 00000000..17ba4311 --- /dev/null +++ b/packages/stream_chat_flutter_core/example/windows/runner/win32_window.h @@ -0,0 +1,98 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates and shows a win32 window with |title| and position and size using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size to will treat the width height passed in to this function + // as logical pixels and scale to appropriate for the default monitor. Returns + // true if the window was created successfully. + bool CreateAndShow(const std::wstring& title, + const Point& origin, + const Size& size); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responsponds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_ From 28e8910c1162ca5febcce4757713fe0caa6cd6c2 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Fri, 29 Apr 2022 15:52:00 +0200 Subject: [PATCH 182/201] deprecate core lists --- .../stream_chat_flutter_core/lib/src/channel_list_core.dart | 5 +++++ .../lib/src/message_search_list_core.dart | 5 +++++ .../stream_chat_flutter_core/lib/src/user_list_core.dart | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/packages/stream_chat_flutter_core/lib/src/channel_list_core.dart b/packages/stream_chat_flutter_core/lib/src/channel_list_core.dart index d807091c..5bde8abd 100644 --- a/packages/stream_chat_flutter_core/lib/src/channel_list_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/channel_list_core.dart @@ -54,6 +54,11 @@ import 'package:stream_chat_flutter_core/src/typedef.dart'; /// /// Make sure to have a [StreamChatCore] ancestor in order to provide the /// information about the channels. +@Deprecated(''' +ChannelListCore is deprecated and will be removed in the next +major version. Use StreamChannelListController instead to create your custom list. +More details here https://getstream.io/chat/docs/sdk/flutter/stream_chat_flutter_core/stream_channel_list_controller +''') class ChannelListCore extends StatefulWidget { /// Instantiate a new ChannelListView const ChannelListCore({ diff --git a/packages/stream_chat_flutter_core/lib/src/message_search_list_core.dart b/packages/stream_chat_flutter_core/lib/src/message_search_list_core.dart index 565743f2..a96f626d 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_search_list_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_search_list_core.dart @@ -31,6 +31,11 @@ import 'package:stream_chat_flutter_core/src/typedef.dart'; /// information about the messages. /// The widget uses a [ListView.separated] to render the list of messages. /// +@Deprecated(''' +MessageSearchListCore is deprecated and will be removed in the next +major version. Use StreamMessageSearchListController instead to create your custom list. +More details here https://getstream.io/chat/docs/sdk/flutter/stream_chat_flutter_core/stream_message_search_list_controller +''') class MessageSearchListCore extends StatefulWidget { /// Instantiate a new [MessageSearchListView]. /// The following parameters must be supplied and not null: diff --git a/packages/stream_chat_flutter_core/lib/src/user_list_core.dart b/packages/stream_chat_flutter_core/lib/src/user_list_core.dart index 61fbb860..ea6ba145 100644 --- a/packages/stream_chat_flutter_core/lib/src/user_list_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/user_list_core.dart @@ -53,6 +53,11 @@ import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart'; /// /// The parameters [listBuilder], [loadingBuilder], [emptyBuilder] and /// [errorBuilder] must all be supplied and not null. +@Deprecated(''' +UserListCore is deprecated and will be removed in the next +major version. Use StreamUserListController instead to create your custom list. +More details here https://getstream.io/chat/docs/sdk/flutter/stream_chat_flutter_core/stream_user_list_controller +''') class UserListCore extends StatefulWidget { /// Instantiate a new [UserListCore] const UserListCore({ From 487c4202263607749f57ec9fc31765ee9769748d Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 10:51:12 +0200 Subject: [PATCH 183/201] StreamChannelListController --- .../channel_list_core.mdx | 68 --------- .../stream_chat_flutter_core/introduction.mdx | 5 +- .../stream_channel_list_controller.mdx | 141 ++++++++++++++++++ .../example/lib/main.dart | 15 +- 4 files changed, 158 insertions(+), 71 deletions(-) delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/channel_list_core.mdx create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/channel_list_core.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/channel_list_core.mdx deleted file mode 100644 index 4196a14c..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/channel_list_core.mdx +++ /dev/null @@ -1,68 +0,0 @@ ---- -id: channel_list_core -sidebar_position: 4 -title: ChannelListCore ---- - -A Widget For Building A List Of Channels - -### Background - -The UI SDK of Stream Chat supplies a `ChannelListView` class that builds a list of channels fetching -according to the filters and sort order given. However, in some cases, implementing novel UI is necessary -that cannot be done using the customization approaches given in the widget. - -To do this, we extracted the logic required for fetching channels into a 'Core' widget - a widget that -fetches channels in the expected way via the usual params but does not supply any UI and instead -exposes builders to build the UI in situations such as loading, empty data, errors, and on data received. - -### Basic Example - -`ChannelListCore` is a simplified class that allows fetching a list of -channels while exposing UI builders. - -This allows you to construct your own UI while not having to -worry about the specific logic of fetching channels in your app. - -A `ChannelListController` is used to reload and paginate data. - -```dart -class ChannelListPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - body: ChannelListCore( - filter: Filter.in_( - 'members', - [StreamChat.of(context).user!.id], - ), - sort: [SortOption('last_message_at')], - pagination: PaginationParams( - limit: 20, - ), - errorBuilder: (context, err) { - return Center( - child: Text('An error has occured'), - ); - }, - emptyBuilder: (context) { - return Center( - child: Text('Nothing here...'), - ); - }, - loadingBuilder: (context) { - return Center( - child: CircularProgressIndicator(), - ); - }, - listBuilder: (context, list) { - return ChannelPage(list); - } - ), - ); - } -} -``` - -Make sure to have a `StreamChatCore` ancestor in order to provide the -information about the channels. \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx index c7c6f4b9..fd53daee 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx @@ -27,11 +27,12 @@ the experience you want your users to have. The package primarily contains a bunch of controller classes. Controllers are used to handle the business logic of the chat. You can use them together with our UI widgets, or you can even use them to build your own UI. -* StreamChannelListController -* StreamMessageSearchListController * StreamChannelListController * StreamUserListController +* StreamMessageSearchListController * StreamMessageInputController * MessageListController +* LazyLoadScrollView +* PagedValueListenableBuilder This section goes into the individual core package widgets and their functional use. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx new file mode 100644 index 00000000..e1aaaec4 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx @@ -0,0 +1,141 @@ +--- +id: stream_channel_list_controller +sidebar_position: 4 +title: StreamChannelListController +--- + +A Widget For Controlling A List Of Channels + +### Background + +The `StreamChannelListController` is a controller class that allows you to control a list of channels. +`StreamChannelListController` is a required parameter of the `StreamChannelListView` widget. +Check the [`StreamChannelListView` documentation](../stream_chat_flutter/stream_channel_list_view.mdx) to read more about that. + +### Basic Example + +Building a custom channel list is a very common task. Here is an example of how to use the `StreamChannelListController` to build a simple list with pagination. + +First of all we should create an instance of the `StreamChannelListController` and provide it with the `StreamChatClient` instance. +You can also add a `Filter`, a list of `SortOption`s and other pagination-related parameters. + +```dart +class ChannelListPageState extends State { + /// Controller used for loading more data and controlling pagination in + /// [StreamChannelListController]. + late final channelListController = StreamChannelListController( + client: StreamChatCore.of(context).client, + filter: Filter.and([ + Filter.equal('type', 'messaging'), + Filter.in_( + 'members', + [ + StreamChatCore.of(context).currentUser!.id, + ], + ), + ]), + ); +``` + +Make sure you call `channelListController.doInitialLoad()` to load the initial data and `channelListController.dispose()` when the controller is no longer required. + +```dart +@override +void initState() { + channelListController.doInitialLoad(); + super.initState(); +} + +@override +void dispose() { + channelListController.dispose(); + super.dispose(); +} +``` + +The `StreamChannelListController` is basically a [`PagedValueNotifier`](./paged_value_notifier.mdx) that notifies you when the list of channels has changed. +You can use a [`PagedValueListenableBuilder`](./paged_value_listenable_builder.mdx) to build your UI depending on the latest channels. + +```dart +@override +Widget build(BuildContext context) => Scaffold( + body: PagedValueListenableBuilder( + valueListenable: channelListController, + builder: (context, value, child) { + return value.when( + (channels, nextPageKey, error) => LazyLoadScrollView( + onEndOfPage: () async { + if (nextPageKey != null) { + channelListController.loadMore(nextPageKey); + } + }, + child: ListView.builder( + /// We're using the channels length when there are no more + /// pages to load and there are no errors with pagination. + /// In case we need to show a loading indicator or and error + /// tile we're increasing the count by 1. + itemCount: (nextPageKey != null || error != null) + ? channels.length + 1 + : channels.length, + itemBuilder: (BuildContext context, int index) { + if (index == channels.length) { + if (error != null) { + return Text(error.message); + } + return CircularProgressIndicator(); + } + + final _item = channels[index]; + return ListTile( + title: Text(_item.name ?? ''), + subtitle: StreamBuilder( + stream: _item.state!.lastMessageStream, + initialData: _item.state!.lastMessage, + builder: (context, snapshot) { + if (snapshot.hasData) { + return Text(snapshot.data!.text!); + } + + return const SizedBox(); + }, + ), + onTap: () { + /// Display a list of messages when the user taps on + /// an item. We can use [StreamChannel] to wrap our + /// [MessageScreen] screen with the selected channel. + /// + /// This allows us to use a built-in inherited widget + /// for accessing our `channel` later on. + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => StreamChannel( + channel: _item, + child: const MessageScreen(), + ), + ), + ); + }, + ); + }, + ), + ), + loading: () => const Center( + child: SizedBox( + height: 100, + width: 100, + child: CircularProgressIndicator(), + ), + ), + error: (e) => Center( + child: Text( + 'Oh no, something went wrong. ' + 'Please check your config. $e', + ), + ), + ); + }, + ), + ); +``` + +In this case we're using the [`LazyLoadScrollView`](./lazy_load_scroll_view.mdx) widget to load more data when the user scrolls to the bottom of the list. \ No newline at end of file diff --git a/packages/stream_chat_flutter_core/example/lib/main.dart b/packages/stream_chat_flutter_core/example/lib/main.dart index 49f2be75..7f093c6d 100644 --- a/packages/stream_chat_flutter_core/example/lib/main.dart +++ b/packages/stream_chat_flutter_core/example/lib/main.dart @@ -117,8 +117,21 @@ class _HomeScreenState extends State { } }, child: ListView.builder( - itemCount: channels.length, + /// We're using the channels length when there are no more + /// pages to load and there are no errors with pagination. + /// In case we need to show a loading indicator or and error + /// tile we're increasing the count by 1. + itemCount: (nextPageKey != null || error != null) + ? channels.length + 1 + : channels.length, itemBuilder: (BuildContext context, int index) { + if (index == channels.length) { + if (error != null) { + return Text(error.message); + } + return CircularProgressIndicator(); + } + final _item = channels[index]; return ListTile( title: Text(_item.name ?? ''), From 2083c3d72aa89857355a3f2790dadc5297669834 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 11:26:57 +0200 Subject: [PATCH 184/201] StreamUserListController --- .../stream_channel_list_controller.mdx | 7 +- .../stream_user_list_controller.mdx | 110 ++++++++++++++++++ .../example/lib/main.dart | 7 +- 3 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx index e1aaaec4..310ee569 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx @@ -80,7 +80,12 @@ Widget build(BuildContext context) => Scaffold( itemBuilder: (BuildContext context, int index) { if (index == channels.length) { if (error != null) { - return Text(error.message); + return TextButton( + onPressed: () { + channelListController.retry(); + }, + child: Text(error.message), + ); } return CircularProgressIndicator(); } diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx new file mode 100644 index 00000000..dc394416 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx @@ -0,0 +1,110 @@ +--- +id: stream_user_list_controller +sidebar_position: 5 +title: StreamUserListController +--- + +A Widget For Controlling A List Of Users + +### Background + +The `StreamUserListController` is a controller class that allows you to control a list of users. +`StreamUserListController` is a required parameter of the `StreamUserListView` widget. +Check the [`StreamUserListView` documentation](../stream_chat_flutter/stream_user_list_view.mdx) to read more about that. + +### Basic Example + +Building a custom user list is a very common task. Here is an example of how to use the `StreamUserListController` to build a simple list with pagination. + +First of all we should create an instance of the `StreamUserListController` and provide it with the `StreamChatClient` instance. +You can also add a `Filter`, a list of `SortOption`s and other pagination-related parameters. + +```dart +class UserListPageState extends State { + /// Controller used for loading more data and controlling pagination in + /// [StreamUserListController]. + late final userListController = StreamUserListController( + client: StreamChatCore.of(context).client, + ); +``` + +Make sure you call `userListController.doInitialLoad()` to load the initial data and `userListController.dispose()` when the controller is no longer required. + +```dart +@override +void initState() { + userListController.doInitialLoad(); + super.initState(); +} + +@override +void dispose() { + userListController.dispose(); + super.dispose(); +} +``` + +The `StreamUserListController` is basically a [`PagedValueNotifier`](./paged_value_notifier.mdx) that notifies you when the list of users has changed. +You can use a [`PagedValueListenableBuilder`](./paged_value_listenable_builder.mdx) to build your UI depending on the latest users. + +```dart +@override +Widget build(BuildContext context) => Scaffold( + body: PagedValueListenableBuilder( + valueListenable: userListController, + builder: (context, value, child) { + return value.when( + (users, nextPageKey, error) => LazyLoadScrollView( + onEndOfPage: () async { + if (nextPageKey != null) { + userListController.loadMore(nextPageKey); + } + }, + child: ListView.builder( + /// We're using the users length when there are no more + /// pages to load and there are no errors with pagination. + /// In case we need to show a loading indicator or and error + /// tile we're increasing the count by 1. + itemCount: (nextPageKey != null || error != null) + ? users.length + 1 + : users.length, + itemBuilder: (BuildContext context, int index) { + if (index == users.length) { + if (error != null) { + return TextButton( + onPressed: () { + userListController.retry(); + }, + child: Text(error.message), + ); + } + return CircularProgressIndicator(); + } + + final _item = users[index]; + return ListTile( + title: Text(_item.name ?? ''), + ); + }, + ), + ), + loading: () => const Center( + child: SizedBox( + height: 100, + width: 100, + child: CircularProgressIndicator(), + ), + ), + error: (e) => Center( + child: Text( + 'Oh no, something went wrong. ' + 'Please check your config. $e', + ), + ), + ); + }, + ), + ); +``` + +In this case we're using the [`LazyLoadScrollView`](./lazy_load_scroll_view.mdx) widget to load more data when the user scrolls to the bottom of the list. \ No newline at end of file diff --git a/packages/stream_chat_flutter_core/example/lib/main.dart b/packages/stream_chat_flutter_core/example/lib/main.dart index 7f093c6d..379d26a1 100644 --- a/packages/stream_chat_flutter_core/example/lib/main.dart +++ b/packages/stream_chat_flutter_core/example/lib/main.dart @@ -127,7 +127,12 @@ class _HomeScreenState extends State { itemBuilder: (BuildContext context, int index) { if (index == channels.length) { if (error != null) { - return Text(error.message); + return TextButton( + onPressed: () { + channelListController.retry(); + }, + child: Text(error.message), + ); } return CircularProgressIndicator(); } From 736d70e4667f3aebc8a9f28fee9d463bf34b4e75 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 11:41:37 +0200 Subject: [PATCH 185/201] StreamMessageSearchListController --- .../stream_message_search_list_controller.mdx | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx new file mode 100644 index 00000000..1caf4504 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx @@ -0,0 +1,126 @@ +--- +id: stream_message_search_list_controller +sidebar_position: 5 +title: StreamMessageSearchListController +--- + +A Widget For Controlling A List Of Searched Messages + +### Background + +The `StreamMessageSearchListController` is a controller class that allows you to control a list of searched messages. +`StreamMessageSearchListController` is a required parameter of the `StreamMessageSearchListView` widget. +Check the [`StreamMessageSearchListView` documentation](../stream_chat_flutter/stream_message_search_list_view.mdx) to read more about that. + +### Basic Example + +Building a custom message search feature is a common task. Here is an example of how to use the `StreamMessageSearchListController` to build a simple search list with pagination. + +First of all we should create an instance of the `StreamMessageSearchListController` and provide it with the `StreamChatClient` instance. +You can also add a `Filter`, a list of `SortOption`s and other pagination-related parameters. + +```dart +class SearchListPage extends State { + /// Controller used for loading more data and controlling pagination in + /// [StreamMessageSearchListController]. + late final messageSearchListController = StreamMessageSearchListController( + client: StreamChatCore.of(context).client, + ); +``` + +Make sure you call `messageSearchListController.doInitialLoad()` to load the initial data and `messageSearchListController.dispose()` when the controller is no longer required. + +```dart +@override +void initState() { + messageSearchListController.doInitialLoad(); + super.initState(); +} + +@override +void dispose() { + messageSearchListController.dispose(); + super.dispose(); +} +``` + +The `StreamMessageSearchListController` is basically a [`PagedValueNotifier`](./paged_value_notifier.mdx) that notifies you when the list of responses has changed. +You can use a [`PagedValueListenableBuilder`](./paged_value_listenable_builder.mdx) to build your UI depending on the latest responses. + +```dart +@override +Widget build(BuildContext context) => Scaffold( + body: Column( + children: [ + TextField( + /// This is just a sample implementation of a search field. + /// In a real-world app you should throttle the search requests. + /// You can use our library [rate_limiter](https://pub.dev/packages/rate_limiter). + onChanged: (s) { + messageSearchListController.searchQuery = s; + messageSearchListController.doInitialLoad(); + }, + ), + Expanded( + child: PagedValueListenableBuilder( + valueListenable: messageSearchListController, + builder: (context, value, child) { + return value.when( + (responses, nextPageKey, error) => LazyLoadScrollView( + onEndOfPage: () async { + if (nextPageKey != null) { + messageSearchListController.loadMore(nextPageKey); + } + }, + child: ListView.builder( + /// We're using the responses length when there are no more + /// pages to load and there are no errors with pagination. + /// In case we need to show a loading indicator or and error + /// tile we're increasing the count by 1. + itemCount: (nextPageKey != null || error != null) + ? responses.length + 1 + : responses.length, + itemBuilder: (BuildContext context, int index) { + if (index == responses.length) { + if (error != null) { + return TextButton( + onPressed: () { + messageSearchListController.retry(); + }, + child: Text(error.message), + ); + } + return CircularProgressIndicator(); + } + + final _item = responses[index]; + return ListTile( + title: Text(_item.channel?.name ?? ''), + subtitle: Text(_item.message.text ?? ''), + ); + }, + ), + ), + loading: () => const Center( + child: SizedBox( + height: 100, + width: 100, + child: CircularProgressIndicator(), + ), + ), + error: (e) => Center( + child: Text( + 'Oh no, something went wrong. ' + 'Please check your config. $e', + ), + ), + ); + }, + ), + ), + ], + ), + ); +``` + +In this case we're using the [`LazyLoadScrollView`](./lazy_load_scroll_view.mdx) widget to load more data when the user scrolls to the bottom of the list. \ No newline at end of file From 402b0038c6811422e9860b4da5fca320ef954233 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 11:59:32 +0200 Subject: [PATCH 186/201] StreamMessageInputController --- .../channels_bloc.mdx | 90 ------------------- .../message_search_bloc.mdx | 40 --------- .../message_search_list_core.mdx | 41 --------- .../stream_message_input_controller.mdx | 87 ++++++++++++++++++ .../stream_message_search_list_controller.mdx | 4 +- .../stream_user_list_controller.mdx | 2 +- .../user_list_core.mdx | 64 ------------- .../stream_chat_flutter_core/users_bloc.mdx | 37 -------- .../ios/Flutter/AppFrameworkInfo.plist | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 20 ++++- .../contents.xcworkspacedata | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../example/lib/main.dart | 16 ++-- 13 files changed, 121 insertions(+), 286 deletions(-) delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/channels_bloc.mdx delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_bloc.mdx delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_list_core.mdx create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/user_list_core.mdx delete mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/users_bloc.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/channels_bloc.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/channels_bloc.mdx deleted file mode 100644 index 3cb1728a..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/channels_bloc.mdx +++ /dev/null @@ -1,90 +0,0 @@ ---- -id: channels_bloc -sidebar_position: 7 -title: ChannelsBloc ---- - -A Widget Dedicated To The Management Of A Channel List With Pagination. - -### Background - -Most widgets in the Core SDK are focused on fetching a particular type of object from Stream Chat - channels, -messages, users, etc. The BLoC widgets bundle up the base functions used to fetch data as well as the current -data fetched by the respective functions. Furthermore, the Core widgets use this BLoC to fetch new or -existing data and build UI based on it. - -All Core and UI widgets which focus on fetching a list of objects need to have their respective functions -above them in the widget tree. The ChannelListCore and ChannelListView require the ChannelsBloc -above them in the widget hierarchy without which they will fail. - -### Understanding The Widget - -`ChannelsBloc` is used together with `ChannelListCore` to manage a list of -Channels with pagination, re-ordering, querying and other operations -associated with Channels. - -`ChannelsBloc` can be accessed at anytime by using the static `.of` method -using Flutter's `BuildContext`. - -```dart -var _channelsBloc = ChannelsBloc.of(context); -``` - -The `ChannelsBloc` widget encapsulates common functionality related to channel lists such as fetching -the existing channels and querying new channels and also supplies them down the widget tree. - -The widget is required for the respective core widget (`ChannelListCore`) to fetch channels and hence -must be above the core widget in the tree. - -Here is a basic implementation of `ChannelsBloc`: - -```dart -ChannelsBloc( - child: // Further Widget Tree -), -``` - -The `ChannelsBloc` widget allows three customisations: - -#### Lock Channels Order - -ChannelsBloc may change the order of channels when new messages arrive. To lock this order, we can -set the `lockChannelsOrder` property to true. - -```dart -ChannelsBloc( - lockChannelsOrder: true, - child: // Further Widget Tree -), -``` - -#### Set custom channel order - -We can decide the order of the channels in the list by supplying a comparator to the `channelsComparator` -parameter: - -```dart -ChannelsBloc( - channelsComparator: (a, b) { - return a.createdAt!.millisecondsSinceEpoch > - b.createdAt!.millisecondsSinceEpoch - ? 1 - : -1; - }, - child: // Further Widget Tree -), -``` - -#### Decide if channel should be added on new message event - -When a new message arrives, a `message.new` event is received. We can decide if we want to add the channel -to the list using the `shouldAddChannel` parameter which is a callback supplying the event data: - -```dart -ChannelsBloc( - shouldAddChannel: (event) { - return event.message!.extraData['priority'] == '1'; - }, - child: // Further Widget Tree -), -``` \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_bloc.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_bloc.mdx deleted file mode 100644 index 15f5a6d6..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_bloc.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -id: message_search_list_block -sidebar_position: 8 -title: MessageSearchListBloc ---- - -A Widget Used To Manage A List Of Messages With Pagination. - -### Background - -Most widgets in the Core SDK are focused on fetching a particular type of object from Stream Chat - channels, -messages, users etc. The BLoC widgets bundle up the base functions used to fetch data as well as the current -data fetched by the respective functions. Furthermore, the Core widgets use this BLoC to fetch new or -existing data and build UI based on it. - -All Core and UI widgets which focus on fetching a list of objects need to have their respective functions -above them in the widget tree. The MessageSearchListCore and MessageSearchListView require the -MessageSearchListCore above them in the widget hierarchy without which they will fail. - -### Understanding The Widget - -This class can be used to load messages, perform queries, etc. - -`MessageSearchBloc` can be accessed at anytime by using the static `.of` method -using Flutter's BuildContext. - -```dart -var _searchBloc = MessageSearchBloc.of(context); -``` - -The `MessageSearchBloc` widget encapsulates common functionality related to searching for messages -across channels and also supplies them down the widget tree. - -Here is a basic implementation of `ChannelsBloc`: - -```dart -MessageSearchBloc( - child: // Further Widget Tree -), -``` \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_list_core.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_list_core.mdx deleted file mode 100644 index f3be5e85..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/message_search_list_core.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: message_search_list_core -sidebar_position: 6 -title: MessageSearchListCore ---- - -A Widget For Displaying Message Searches - -### Background - -The UI SDK of Stream Chat supplies a `MessageSearchListView` class that builds a list of channels fetching -according to the filters and sort order given. However, in some cases, implementing novel UI is necessary -that cannot be done using the customization approaches given in the widget. - -To do this, we extracted the logic required for fetching channels into a 'Core' widget - a widget that -fetches channels in the expected way via the usual params but does not supply any UI and instead -exposes builders to build the UI in situations such as loading, empty data, errors, and on data received. - -### Basic Example - -`MessageSearchListCore` is a simplified class that allows searching for - messages across channels while exposing UI builders. - A `MessageSearchListController` is used to load and paginate data. - -```dart -class MessageSearchPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - body: MessageSearchListCore( - messageQuery: _messageFilter, - filters: _channelsFilter, - limit: 20, - ), - ); - } -} -``` - -Make sure to have a `MessageSearchBloc` ancestor in order to provide the -information about the messages. \ No newline at end of file diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx new file mode 100644 index 00000000..4da94fbe --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx @@ -0,0 +1,87 @@ +--- +id: stream_message_input_controller +sidebar_position: 4 +title: StreamMessageInputController +--- + +A Widget For Controlling A Message Input + +### Background + +The `StreamMessageInputController` is a controller class that embed the business logic to compose a message. +`StreamMessageInputController` is a parameter of the `StreamMessageInput` widget. +Check the [`StreamMessageInput` documentation](../stream_chat_flutter/stream_message_input.mdx) to read more about that. + +### Basic Example + +Building a custom message input is a common task. Here is an example of how to use the `StreamMessageInputController` to build a simple custom message input widget. + +First of all we should create an instance of the `StreamMessageInputController`. + +```dart +class MessageScreenState extends State { + final StreamMessageInputController messageInputController = StreamMessageInputController(); +``` + +Make sure you call `messageInputController.dispose()` when the controller is no longer required. + +```dart +@override +void dispose() { + messageInputController.dispose(); + super.dispose(); +} +``` + +The `StreamMessageInputController` is basically a `ValueNotifier` that notifies you when the message being composed has changed. +You can use a `ValueListenableBuilder` to build your UI depending on the latest message. +For a very simple message input you could even pass the `messageInputController.textEditingController` to your `TextField` and set the `onChanged` callback. + +```dart +... +Padding( + padding: const EdgeInsets.all(8), + child: Row( + children: [ + Expanded( + child: TextField( + controller: messageInputController.textEditingController, + onChanged: (s) => messageInputController.text = s, + decoration: const InputDecoration( + hintText: 'Enter your message', + ), + ), + ), + Material( + type: MaterialType.circle, + color: Colors.blue, + clipBehavior: Clip.hardEdge, + child: InkWell( + onTap: () async { + if (messageInputController.message.text?.isNotEmpty == + true) { + await channel.sendMessage( + messageInputController.message, + ); + messageInputController.clear(); + if (mounted) { + _updateList(); + } + } + }, + child: const Padding( + padding: EdgeInsets.all(8), + child: Center( + child: Icon( + Icons.send, + color: Colors.white, + ), + ), + ), + ), + ), + ], + ), +), +... +``` diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx index 1caf4504..c854808b 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx @@ -1,6 +1,6 @@ --- id: stream_message_search_list_controller -sidebar_position: 5 +sidebar_position: 6 title: StreamMessageSearchListController --- @@ -20,7 +20,7 @@ First of all we should create an instance of the `StreamMessageSearchListControl You can also add a `Filter`, a list of `SortOption`s and other pagination-related parameters. ```dart -class SearchListPage extends State { +class SearchListPageState extends State { /// Controller used for loading more data and controlling pagination in /// [StreamMessageSearchListController]. late final messageSearchListController = StreamMessageSearchListController( diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx index dc394416..6a035540 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx @@ -20,7 +20,7 @@ First of all we should create an instance of the `StreamUserListController` and You can also add a `Filter`, a list of `SortOption`s and other pagination-related parameters. ```dart -class UserListPageState extends State { +class UserListPageState extends State { /// Controller used for loading more data and controlling pagination in /// [StreamUserListController]. late final userListController = StreamUserListController( diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/user_list_core.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/user_list_core.mdx deleted file mode 100644 index 622d0025..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/user_list_core.mdx +++ /dev/null @@ -1,64 +0,0 @@ ---- -id: user_list_core -sidebar_position: 10 -title: UserListCore ---- - -A Widget For Building A List Of Users - -### Background - -The UI SDK of Stream Chat supplies a `UserListView` class that builds a list of channels fetching -according to the filters and sort order given. However, in some cases, implementing novel UI is necessary -that cannot be done using the customization approaches given in the widget. - -To do this, we extracted the logic required for fetching channels into a 'Core' widget - a widget that -fetches channels in the expected way via the usual params but does not supply any UI and instead -exposes builders to build the UI in situations such as loading, empty data, errors, and on data received. - -### Basic Example - -`UserListCore` is a simplified class that allows fetching users while -exposing UI builders. -A `UserListController` is used to load and paginate data. - -```dart -class UsersListPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - body: UsersListCore( - sort: [SortOption('last_active')], - pagination: PaginationParams( - limit: 20, - ), - errorBuilder: (err) { - return Center( - child: Text('An error has occured'), - ); - }, - emptyBuilder: (context) { - return Center( - child: Text('Nothing here...'), - ); - }, - emptyBuilder: (context) { - return Center( - child: CircularProgressIndicator(), - ); - }, - listBuilder: (context, list) { - return UsersPage(list); - } - ), - ); - } -} -``` - -`UsersBloc` must be the ancestor of this widget. This is necessary since -`UserListCore` depends on functionality contained within `UsersBloc`. - -The parameters `listBuilder`, `loadingBuilder`, `emptyBuilder` and -`errorBuilder` must all be supplied and not null. - diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/users_bloc.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/users_bloc.mdx deleted file mode 100644 index 61463599..00000000 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/users_bloc.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -id: users_bloc -sidebar_position: 9 -title: UsersBloc ---- - -A Widget Dedicated To The Management Of A Users List With Pagination. - -### Background - -Most widgets in the Core SDK are focused on fetching a particular type of object from Stream Chat - channels, -messages, users, etc. The BLoC widgets bundle up the base functions used to fetch data as well as the current -data fetched by the respective functions. Furthermore, the Core widgets use this BLoC to fetch new or -existing data and build UI based on it. - -All Core and UI widgets which focus on fetching a list of objects need to have their respective functions -above them in the widget tree. The UserListCore and UserListView require the UserListCore -above them in the widget hierarchy without which they will fail. - -### Understanding The Widget - -`UsersBloc` can be accessed at anytime by using the static `.of` method -using Flutter's `BuildContext`. - -```dart -var _userBloc_ = UsersBloc.of(context); -``` - -The `UsersBloc` widget encapsulates common functionality related to user lists and also supplies them down the widget tree. - -Here is a basic implementation of `UsersBloc`: - -```dart -UsersBloc( - child: // Further Widget Tree -), -``` \ No newline at end of file diff --git a/packages/stream_chat_flutter_core/example/ios/Flutter/AppFrameworkInfo.plist b/packages/stream_chat_flutter_core/example/ios/Flutter/AppFrameworkInfo.plist index 6b4c0f78..f2872cf4 100644 --- a/packages/stream_chat_flutter_core/example/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/stream_chat_flutter_core/example/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 8.0 + 9.0 diff --git a/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.pbxproj b/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.pbxproj index 26de6f3b..b55c0437 100644 --- a/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.pbxproj @@ -139,6 +139,7 @@ 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + EDC4CAB19281E65D2B18E888 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -155,7 +156,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1020; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -247,6 +248,23 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; + EDC4CAB19281E65D2B18E888 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ diff --git a/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 1d526a16..919434a6 100644 --- a/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index a28140cf..3db53b6e 100644 --- a/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/stream_chat_flutter_core/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { - late final TextEditingController _controller; + final StreamMessageInputController messageInputController = + StreamMessageInputController(); late final ScrollController _scrollController; final messageListController = MessageListController(); @override void initState() { super.initState(); - _controller = TextEditingController(); _scrollController = ScrollController(); } @override void dispose() { - _controller.dispose(); + messageInputController.dispose(); _scrollController.dispose(); super.dispose(); } @@ -319,7 +319,8 @@ class _MessageScreenState extends State { children: [ Expanded( child: TextField( - controller: _controller, + controller: messageInputController.textEditingController, + onChanged: (s) => messageInputController.text = s, decoration: const InputDecoration( hintText: 'Enter your message', ), @@ -331,12 +332,13 @@ class _MessageScreenState extends State { clipBehavior: Clip.hardEdge, child: InkWell( onTap: () async { - if (_controller.value.text.isNotEmpty) { + if (messageInputController.message.text?.isNotEmpty == + true) { await channel.sendMessage( - Message(text: _controller.value.text), + messageInputController.message, ); + messageInputController.clear(); if (mounted) { - _controller.clear(); _updateList(); } } From 0ec80452b6a4fedfbb61b3477b85b5bfe4d06a62 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 12:15:32 +0200 Subject: [PATCH 187/201] LazyLoadScrollView --- .../stream_chat_flutter_core/introduction.mdx | 1 - .../lazy_load_scroll_view.mdx | 41 +++++++++++++++++++ .../message_list_core.mdx | 2 + .../stream_channel_list_controller.mdx | 2 + .../stream_chat_core.mdx | 2 + .../stream_message_input_controller.mdx | 2 + .../stream_message_search_list_controller.mdx | 2 + .../stream_user_list_controller.mdx | 2 + 8 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/lazy_load_scroll_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx index fd53daee..5cb8f0db 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/introduction.mdx @@ -31,7 +31,6 @@ Controllers are used to handle the business logic of the chat. You can use them * StreamUserListController * StreamMessageSearchListController * StreamMessageInputController -* MessageListController * LazyLoadScrollView * PagedValueListenableBuilder diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/lazy_load_scroll_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/lazy_load_scroll_view.mdx new file mode 100644 index 00000000..457f15c7 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/lazy_load_scroll_view.mdx @@ -0,0 +1,41 @@ +--- +id: lazy_load_scroll_view +sidebar_position: 8 +title: LazyLoadScrollView +--- + +A Widget For Building A Paginated List + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/LazyLoadScrollView-class.html) + +### Background + +The `LazyLoadScrollView` is a widget that helps you build a paginated list. +It provides callbacks to notify you when the list has been scrolled to the bottom and when the list has been scrolled to the top and other necessary callbacks. + +#### Callbacks + +* onStartOfPage: called when the list has been scrolled to the top of the page. + +* onEndOfPage: called when the list has been scrolled to the bottom of the page. + +* onPageScrollStart: called when the scroll of the list starts. + +* onPageScrollEnd: called when the scroll of the list ends. + +* onInBetweenOfPage: called when the list is not either at the top nor at the bottom of the page. + +### Basic Example + +Building a paginated list is a very common task. Here is an example of how to use the `LazyLoadScrollView` to build a simple list with pagination. + +```dart +LazyLoadScrollView( + onEndOfPage: _paginateData, + /// The child could be any widget which dispatches [ScrollNotification]s. + /// For example [ListView], [GridView] or [CustomScrollView]. + child: ListView.builder( + itemBuilder: ((context, index) => _buildListTile), + ), +) +``` diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/message_list_core.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/message_list_core.mdx index 5fd5877a..57f06b2a 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/message_list_core.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/message_list_core.mdx @@ -6,6 +6,8 @@ title: MessageListCore A Widget For Building A List Of Messages +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/MessageListCore-class.html) + ### Background The UI SDK of Stream Chat supplies a `MessageListView` class that builds a list of channels fetching diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx index 310ee569..ac478f99 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx @@ -6,6 +6,8 @@ title: StreamChannelListController A Widget For Controlling A List Of Channels +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/StreamChannelListController-class.html) + ### Background The `StreamChannelListController` is a controller class that allows you to control a list of channels. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_chat_core.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_chat_core.mdx index 2a43ae52..e3434e7f 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_chat_core.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_chat_core.mdx @@ -7,6 +7,8 @@ title: StreamChatCore `StreamChatCore` is a version of `StreamChat` found in `stream_chat_flutter` that is decoupled from theme and initialisations. +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/StreamChatCore-class.html) + `StreamChatCore` is used to provide information about the chat client to the widget tree. This Widget is used to react to life cycle changes and system updates. When the app goes into the background, the websocket connection is automatically closed and when it goes back to foreground the connection is opened again. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx index 4da94fbe..7139d15e 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_input_controller.mdx @@ -6,6 +6,8 @@ title: StreamMessageInputController A Widget For Controlling A Message Input +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/StreamMessageInputController-class.html) + ### Background The `StreamMessageInputController` is a controller class that embed the business logic to compose a message. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx index c854808b..f4546331 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_message_search_list_controller.mdx @@ -6,6 +6,8 @@ title: StreamMessageSearchListController A Widget For Controlling A List Of Searched Messages +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/StreamMessageSearchListController-class.html) + ### Background The `StreamMessageSearchListController` is a controller class that allows you to control a list of searched messages. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx index 6a035540..0bee29ed 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_user_list_controller.mdx @@ -6,6 +6,8 @@ title: StreamUserListController A Widget For Controlling A List Of Users +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/StreamUserListController-class.html) + ### Background The `StreamUserListController` is a controller class that allows you to control a list of users. From bd12ece9ea4581ae6fe4a47ef43904c24210128a Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 12:44:28 +0200 Subject: [PATCH 188/201] PagedValueListenableBuilder --- .../paged_value_listenable_builder.mdx | 88 +++++++++++++++++++ .../lib/stream_chat_flutter_core.dart | 2 +- 2 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/paged_value_listenable_builder.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/paged_value_listenable_builder.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/paged_value_listenable_builder.mdx new file mode 100644 index 00000000..b527f7a0 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/paged_value_listenable_builder.mdx @@ -0,0 +1,88 @@ +--- +id: paged_value_listenable_builder +sidebar_position: 9 +title: PagedValueListenableBuilder +--- + +A Widget Whose Content Stays Synced With A `ValueNotifier` Of Type `PagedValue`. + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/PagedValueListenableBuilder-class.html) + +### Background + +Given a `PagedValueNotifier` implementation and a [builder] which builds widgets from +concrete values of `PagedValue`, this class will automatically register itself as a +listener of the [PagedValueNotifier] and call the [builder] with updated values +when the value changes. + +### Basic Example + +```dart +class UserNameValueNotifier extends PagedValueNotifier { + UserNameValueNotifier() : super(const PagedValue.loading()); + + @override + Future doInitialLoad() async { + // Imitating network delay + await Future.delayed(const Duration(seconds: 1)); + value = const PagedValue( + items: ['Sahil', 'Salvatore', 'Reuben'], + + /// Passing the key to load the next page + nextPageKey: nextPageKey, + ); + } + + @override + Future loadMore(int nextPageKey) async { + // Imitating network delay + await Future.delayed(const Duration(seconds: 1)); + final previousItems = value.asSuccess.items; + final newItems = previousItems + ['Deven', 'Sacha', 'Gordon']; + value = PagedValue( + items: newItems, + // Passing nextPageKey as null to indicate + // that there are no more items. + nextPageKey: null, + ); + } +} + +class _MyHomePageState extends State { + final pagedValueNotifier = UserNameValueNotifier(); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: PagedValueListenableBuilder( + builder: (context, value, child) { + // This builder will only get called when the _counter + // is updated. + return value.when( + (userNames, nextPageKey, error) => Column( + children: [ + const Text('Usernames:'), + Expanded( + child: ListView( + children: userNames.map((it) => Text(it)).toList(), + ), + ), + if (nextPageKey != null) + TextButton( + child: const Text('Load more'), + onPressed: () => pagedValueNotifier.loadMore(nextPageKey), + ), + ], + ), + loading: () => CircularProgressIndicator(), + error: (e) => Text('Error: $e'), + ); + }, + valueListenable: pagedValueNotifier, + ), + ), + ); + } +} +``` diff --git a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart index a5cd79df..34cbaaa1 100644 --- a/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart +++ b/packages/stream_chat_flutter_core/lib/stream_chat_flutter_core.dart @@ -12,7 +12,7 @@ export 'src/message_search_bloc.dart'; export 'src/message_search_list_core.dart' hide MessageSearchListCoreState; export 'src/message_text_field_controller.dart'; export 'src/paged_value_notifier.dart' - show PagedValueListenableBuilder, PagedValue; + show PagedValueListenableBuilder, PagedValue, PagedValueNotifier; export 'src/paged_value_scroll_view.dart'; export 'src/stream_channel.dart'; export 'src/stream_channel_list_controller.dart'; From a2e7bc452b31b59f5bdd5d7d878123502b1c8865 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 13:15:47 +0200 Subject: [PATCH 189/201] cleanup --- .../docs/Flutter/guides/migration_guide_4_0.mdx | 14 ++++++++++++++ .../stream_channel_list_controller.mdx | 3 +++ 2 files changed, 17 insertions(+) diff --git a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx b/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx index 76e55057..afffe006 100644 --- a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx +++ b/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx @@ -168,10 +168,14 @@ Version 4 of the Stream Chat Flutter packages introduces a new controller called - Return/Create a new channel and start watching it. - Pause and Resume all subscriptions added to this composite. +For more information see the [`StreamChannelListView` documentation](../stream_chat_flutter/stream_channel_list_view.mdx). + ### ChannelsBloc to StreamChannelListController The `ChannelsBloc` widget should be replaced with `StreamChannelListController`. This controller provides all the functionality needed to query and manipulate channel data previously accessible through `ChannelsBloc`. +For more information see the [`StreamChannelListController` documentation](../stream_chat_flutter_core/stream_channel_list_controller.mdx). + ### StreamChannelListView Examples Let's explore some examples of the functional differences when using the new `StreamChannelListView`. @@ -280,10 +284,14 @@ Version 4 of the Stream Chat Flutter packages introduces a new controller called - Load more data using `loadMore`. - Refresh data. +For more information see the [`StreamMessageSearchListView` documentation](../stream_chat_flutter/stream_message_search_list_view.mdx). + ### MessageSearchBloc to StreamMessageSearchListController The `MessageSearchBloc` widget should be replaced with a `StreamMessageSearchListController`. This controller provides all the functionality needed to query and manipulate message search data previously accessible through `MessageSearchBloc`. +For more information see the [`StreamMessageSearchListController` documentation](../stream_chat_flutter_core/stream_message_search_list_controller.mdx). + ### StreamMessageSearchListView Example The following code demonstrates the old way of searching for messages: @@ -387,10 +395,14 @@ Version 4 of the Stream Chat Flutter packages introduces a new controller called - Set filters. - Refresh data. +For more information see the [`StreamUserListView` documentation](../stream_chat_flutter/stream_user_list_view.mdx). + ### UsersBloc to StreamUserListController The `UsersBloc` widget should be replaced with a `StreamUserListController`. This controller provides all the functionality needed to query and manipulate user data previously accessible through `UsersBloc`. +For more information see the [`StreamUserListController` documentation](../stream_chat_flutter_core/stream_user_list_controller.mdx). + ### StreamUserListView Example The following code demonstrates the old way of displaying all users: @@ -520,6 +532,8 @@ The following arguments are newly introduced to the `StreamMessageInput`, and ar - `elevation`: elevation of the **StreamMessageInput** widget - `shadow`: **Shadow** for the **StreamMessageInput** widget +For more information see the [`StreamMessageInput` documentation](../stream_chat_flutter_core/stream_message_input_controller.mdx). + ### StreamMessageInput Examples Let's explore some examples of the functional differences when using the new `StreamMessageInput`. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx index ac478f99..c37eeedd 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_controller.mdx @@ -14,6 +14,9 @@ The `StreamChannelListController` is a controller class that allows you to contr `StreamChannelListController` is a required parameter of the `StreamChannelListView` widget. Check the [`StreamChannelListView` documentation](../stream_chat_flutter/stream_channel_list_view.mdx) to read more about that. +The `StreamChannelListController` also listens for various events and manipulates the current list of channels accordingly. +Passing a `StreamChannelListEventHandler` to the `StreamChannelListController` will allow you to customize this behaviour. + ### Basic Example Building a custom channel list is a very common task. Here is an example of how to use the `StreamChannelListController` to build a simple list with pagination. From 52e590371b40e4a29af5378f13a95d9a94d612f2 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 2 May 2022 19:01:01 +0530 Subject: [PATCH 190/201] doc(docs): add stream_channel_list_event_handler.mdx Signed-off-by: xsahil03x --- .../stream_channel_list_event_handler.mdx | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_event_handler.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_event_handler.mdx b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_event_handler.mdx new file mode 100644 index 00000000..043d41a1 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter_core/stream_channel_list_event_handler.mdx @@ -0,0 +1,64 @@ +--- +id: stream_channel_list_event_handler +sidebar_position: 10 +title: StreamChannelListEventHandler +--- + +A Class To Customize The Event Handler For The StreamChannelListController. + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter_core/latest/stream_chat_flutter_core/StreamChannelListEventHandler-class.html) + +### Background + +A `StreamChannelListEventHandler` is a class that handles the events that are related to the channel list loaded by `StreamChannelListController`. +The `StreamChannelListController` automatically creates a `StreamChannelListEventHandler` internally and handles the events. In order to provide a custom +implementation of `StreamChannelListEventHandler`, you need to create a class that extends the `StreamChannelListEventHandler` class. + +### Basic Example + +There are 2 ways to provide a custom implementation of `StreamChannelListEventHandler`: + +* Create a class that extends the `StreamChannelListEventHandler` and pass it down to the controller. + +```dart +class MyCustomEventHandler extends StreamChannelListEventHandler { + @override + void onConnectionRecovered( + Event event, + StreamChannelListController controller, + ) { + // Write your own custom implementation here + } +} +``` + +Pass it down to the controller: + +```dart + late final listController = StreamChannelListController( + client: StreamChat.of(context).client, + eventHandler: MyCustomEventHandler(), + ); +``` + +* Mix the `StreamChannelListEventHandler` into your widget state. + +```dart +class _ChannelListPageState extends State + with StreamChannelListEventHandler { + + @override + void onConnectionRecovered( + Event event, + StreamChannelListController controller, + ) { + // Write your own custom implementation here + } + + late final _listController = StreamChannelListController( + client: StreamChat.of(context).client, + eventHandler: this, + ); +} +``` + From 15221812948f4c95d8256a1ff530c7e86fd16556 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 15:40:55 +0200 Subject: [PATCH 191/201] doc(docs): add grid docs --- .../stream_channel_grid_view.mdx | 74 +++++++++++++++++++ .../stream_message_search_grid_view.mdx | 55 ++++++++++++++ .../stream_message_search_list_view.mdx | 2 +- .../stream_user_grid_view.mdx | 74 +++++++++++++++++++ .../stream_user_list_view.mdx | 2 - 5 files changed, 204 insertions(+), 3 deletions(-) create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_grid_view.mdx create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx create mode 100644 docusaurus/docs/Flutter/stream_chat_flutter/stream_user_grid_view.mdx diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_grid_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_grid_view.mdx new file mode 100644 index 00000000..16bad7dc --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_channel_grid_view.mdx @@ -0,0 +1,74 @@ +--- +id: stream_channel_grid_view +sidebar_position: 4 +title: StreamChannelGridView +--- + +A Widget For Displaying A List Of Channels + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamChannelGridView-class.html) + +### Background + +The `StreamChannelGridView` widget allows displaying a list of channels to a user in a `GridView`. + +:::note +Make sure to check the [StreamChannelListView](./stream_channel_list_view.mdx) documentation to know how to show results in a `ListView`. +::: + +### Basic Example + +Here is a basic example of the `StreamChannelGridView` widget. It consists of the main widget itself, a `StreamChannelListController` to control the list of channels and a callback to handle the tap of a channel. + +```dart +class ChannelGridPage extends StatefulWidget { + const ChannelGridPage({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + + @override + State createState() => _ChannelGridPageState(); +} + +class _ChannelGridPageState extends State { + late final _controller = StreamChannelListController( + client: widget.client, + filter: Filter.in_( + 'members', + [StreamChat.of(context).currentUser!.id], + ), + sort: const [SortOption('last_message_at')], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamChannelGridView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ), + ), + ), + ); +} +``` + +This example by default displays the channels that a user is a part of. Now let's look at customizing +the widget. diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx new file mode 100644 index 00000000..59398e56 --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx @@ -0,0 +1,55 @@ +--- +id: stream_message_search_grid_view +sidebar_position: 8 +title: StreamMessageSearchGridView +--- + +A Widget To Search For Messages Across Channels + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamMessageSearchGridView-class.html) + +### Background + +The `StreamMessageSearchGridView` widget allows displaying a list of searched messages in a `GridView`. + +:::note +Make sure to check the [StreamMessageSearchListView](./stream_message_search_list_view.mdx) documentation to know how to show results in a `ListView`. +::: + +### Basic Example + +```dart +class StreamMessageSearchPage extends StatefulWidget { + const StreamMessageSearchPage({ + Key? key, + required this.client, + }) : super(key: key);` + + final StreamChatClient client; + + @override + State createState() => _StreamMessageSearchState(); +} + +class _StreamMessageSearchState extends State { + late final _controller = StreamMessageSearchListController( + client: widget.client, + limit: 20, + filters: Filter.in_('members', [StreamChat.of(context).user!.id],), + searchQuery: 'your query here', + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + body: StreamMessageSearchListView( + controller: _controller, + ), + ); +} +``` diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx index e08bed07..cf27facf 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_list_view.mdx @@ -53,7 +53,7 @@ class _StreamMessageSearchState extends State { @override Widget build(BuildContext context) => Scaffold( - body: StreamChannelListView( + body: StreamMessageSearchListView( controller: _controller, ), ); diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_grid_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_grid_view.mdx new file mode 100644 index 00000000..d2fb953d --- /dev/null +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_grid_view.mdx @@ -0,0 +1,74 @@ +--- +id: stream_user_grid_view +sidebar_position: 7 +title: StreamUserGridView +--- + +A Widget For Displaying And Selecting Users + +Find the pub.dev documentation [here](https://pub.dev/documentation/stream_chat_flutter/latest/stream_chat_flutter/StreamUserGridView-class.html) + +### Background + +The `StreamUserGridView` widget allows displaying a list of users in a `GridView`. + +:::note +Make sure to check the [StreamUserListView](./stream_user_list_view.mdx) documentation to know how to show results in a `ListView`. +::: + +### Basic Example + +```dart +class UserGridPage extends StatefulWidget { + const UserGridPage({ + Key? key, + required this.client, + }) : super(key: key); + + final StreamChatClient client; + + @override + State createState() => _UserGridPageState(); +} + +class _UserGridPageState extends State { + late final _controller = StreamUserListController( + client: widget.client, + limit: 25, + filter: Filter.and([ + Filter.notEqual('id', StreamChat.of(context).currentUser!.id), + ]), + sort: [ + SortOption( + 'name', + direction: 1, + ), + ], + ); + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) => Scaffold( + body: RefreshIndicator( + onRefresh: _controller.refresh, + child: StreamUserGridView( + controller: _controller, + onChannelTap: (channel) => Navigator.push( + context, + MaterialPageRoute( + builder: (_) => StreamChannel( + channel: channel, + child: const ChannelPage(), + ), + ), + ), + ), + ), + ); +} +``` diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx index 14cf92f9..1a8cbbf8 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_user_list_view.mdx @@ -22,8 +22,6 @@ Make sure to check the [StreamUserListController](./stream_user_list_controller. ### Basic Example -Let's take a look at an example where we use the widget to autocomplete user names: - ```dart class UserListPage extends StatefulWidget { const UserListPage({ From ef1f6cf30cac16c485b3dbb88ce317ad5806fd23 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 15:41:30 +0200 Subject: [PATCH 192/201] fix typo --- .../stream_chat_flutter/stream_message_search_grid_view.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx index 59398e56..d20a62fc 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_search_grid_view.mdx @@ -47,7 +47,7 @@ class _StreamMessageSearchState extends State { @override Widget build(BuildContext context) => Scaffold( - body: StreamMessageSearchListView( + body: StreamMessageSearchGridView( controller: _controller, ), ); From 37ca6f7211041a1c68123a8683cd26535a07d340 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 17:44:44 +0200 Subject: [PATCH 193/201] Update docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx Co-authored-by: Deven Joshi --- .../docs/Flutter/stream_chat_flutter/stream_message_widget.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx index a48f3175..c7c084ab 100644 --- a/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx +++ b/docusaurus/docs/Flutter/stream_chat_flutter/stream_message_widget.mdx @@ -38,7 +38,6 @@ class ChannelPage extends StatelessWidget { ); }, ), - ); } } From 6f6032441c52d63633a552db4af43eabf8ff8c83 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 17:45:06 +0200 Subject: [PATCH 194/201] remove deprecated stuff from older versions --- .../stream_chat/lib/src/client/channel.dart | 18 ----------------- .../stream_chat/lib/src/client/client.dart | 17 ---------------- .../lib/src/message_widget.dart | 14 ------------- .../lib/src/stream_chat.dart | 14 ------------- .../message_input/stream_message_input.dart | 20 +------------------ .../lib/src/stream_chat_core.dart | 14 ------------- 6 files changed, 1 insertion(+), 96 deletions(-) diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index a1945883..29a2d5ad 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1344,14 +1344,6 @@ class Channel { return _client.unmuteChannel(cid!); } - /// Bans the user with given [userID] from the channel. - @Deprecated("Use 'banMember' instead. This method will be removed in v4.0.0") - Future banUser( - String userID, - Map options, - ) => - banMember(userID, options); - /// Bans the member with given [userID] from the channel. Future banMember( String userID, @@ -1366,12 +1358,6 @@ class Channel { return _client.banUser(userID, opts); } - /// Remove the ban for the user with given [userID] in the channel. - @Deprecated( - "Use 'unbanMember' instead. This method will be removed in v4.0.0", - ) - Future unbanUser(String userID) => unbanMember(userID); - /// Remove the ban for the member with given [userID] in the channel. Future unbanMember(String userID) async { _checkInitialized(); @@ -1840,10 +1826,6 @@ class ChannelClientState { })); } - /// Add a [message] to this [channelState]. - @Deprecated('Use updateMessage instead') - void addMessage(Message message) => updateMessage(message); - /// Updates the [message] in the state if it exists. Adds it otherwise. void updateMessage(Message message) { if (message.parentId == null || message.showInChannel == true) { diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index ee805b56..d16f56c5 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -29,7 +29,6 @@ import 'package:stream_chat/src/core/platform_detector/platform_detector.dart'; import 'package:stream_chat/src/core/util/utils.dart'; import 'package:stream_chat/src/db/chat_persistence_client.dart'; import 'package:stream_chat/src/event_type.dart'; -import 'package:stream_chat/src/location.dart'; import 'package:stream_chat/src/ws/connection_status.dart'; import 'package:stream_chat/src/ws/websocket.dart'; import 'package:stream_chat/version.dart'; @@ -66,10 +65,6 @@ class StreamChatClient { this.logLevel = Level.WARNING, this.logHandlerFunction = StreamChatClient.defaultLogHandler, RetryPolicy? retryPolicy, - @Deprecated(''' - Location is now deprecated in favor of the new edge server. Will be removed in v4.0.0. - Read more here: https://getstream.io/blog/chat-edge-infrastructure - ''') Location? location, String? baseURL, Duration connectTimeout = const Duration(seconds: 6), Duration receiveTimeout = const Duration(seconds: 6), @@ -1559,18 +1554,6 @@ class ClientState { /// The current user as a stream Stream get currentUserStream => _currentUserController.stream; - // coverage:ignore-start - - /// The current user - @Deprecated('Use `.currentUser` instead, Will be removed in future releases') - OwnUser? get user => _currentUserController.valueOrNull; - - /// The current user as a stream - @Deprecated( - 'Use `.currentUserStream` instead, Will be removed in future releases', - ) - Stream get userStream => _currentUserController.stream; - // coverage:ignore-end /// The current user diff --git a/packages/stream_chat_flutter/lib/src/message_widget.dart b/packages/stream_chat_flutter/lib/src/message_widget.dart index fd710c8e..beabe77f 100644 --- a/packages/stream_chat_flutter/lib/src/message_widget.dart +++ b/packages/stream_chat_flutter/lib/src/message_widget.dart @@ -101,14 +101,6 @@ class StreamMessageWidget extends StatefulWidget { vertical: 8, ), this.attachmentPadding = EdgeInsets.zero, - @Deprecated(''' - allRead is now deprecated and it will be removed in future releases. - The MessageWidget now listens for read events on its own. - ''') this.allRead = false, - @Deprecated(''' - readList is now deprecated and it will be removed in future releases. - The MessageWidget now listens for read events on its own. - ''') this.readList, this.onQuotedMessageTap, this.customActions = const [], this.onAttachmentTap, @@ -347,9 +339,6 @@ class StreamMessageWidget extends StatefulWidget { /// If true the widget will show the reactions final bool showReactions; - /// - final bool allRead; - /// If true the widget will show the thread reply indicator final bool showThreadReplyIndicator; @@ -365,9 +354,6 @@ class StreamMessageWidget extends StatefulWidget { /// Used in [StreamMessageReactionsModal] and [StreamMessageActionsModal] final bool showReactionPickerIndicator; - /// List of users who read - final List? readList; - /// Callback when show message is tapped final ShowMessageCallback? onShowMessage; diff --git a/packages/stream_chat_flutter/lib/src/stream_chat.dart b/packages/stream_chat_flutter/lib/src/stream_chat.dart index cf18e282..acc829e2 100644 --- a/packages/stream_chat_flutter/lib/src/stream_chat.dart +++ b/packages/stream_chat_flutter/lib/src/stream_chat.dart @@ -132,20 +132,6 @@ class StreamChatState extends State { return defaultTheme.merge(themeData); } - // coverage:ignore-start - - /// The current user - @Deprecated('Use `.currentUser` instead, Will be removed in future releases') - User? get user => widget.client.state.currentUser; - - /// The current user as a stream - @Deprecated( - 'Use `.currentUserStream` instead, Will be removed in future releases', - ) - Stream get userStream => widget.client.state.currentUserStream; - - // coverage:ignore-end - /// The current user User? get currentUser => widget.client.state.currentUser; diff --git a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart index 24eec8fa..786ba22e 100644 --- a/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart +++ b/packages/stream_chat_flutter/lib/src/v4/message_input/stream_message_input.dart @@ -190,8 +190,6 @@ class StreamMessageInput extends StatefulWidget { this.idleSendButton, this.activeSendButton, this.showCommandsButton = true, - @Deprecated('''Use `userMentionsTileBuilder` instead. Will be removed in future release''') - this.mentionsTileBuilder, this.userMentionsTileBuilder, this.maxAttachmentSize = _kDefaultMaxAttachmentSize, this.onError, @@ -271,9 +269,6 @@ class StreamMessageInput extends StatefulWidget { /// Send button widget in an active state final Widget? activeSendButton; - /// Customize the tile for the mentions overlay. - final MentionTileBuilder? mentionsTileBuilder; - /// Customize the tile for the mentions overlay. final UserMentionTileBuilder? userMentionsTileBuilder; @@ -1154,19 +1149,6 @@ class StreamMessageInputState extends State // ignore: cast_nullable_to_non_nullable final renderObject = context.findRenderObject() as RenderBox; - var tileBuilder = widget.userMentionsTileBuilder; - if (tileBuilder == null && widget.mentionsTileBuilder != null) { - tileBuilder = (context, user) { - final member = Member( - user: user, - userId: user.id, - createdAt: user.createdAt, - updatedAt: user.updatedAt, - ); - return widget.mentionsTileBuilder!(context, member); - }; - } - return LayoutBuilder( builder: (context, snapshot) => StreamUserMentionsOverlay( query: query, @@ -1177,7 +1159,7 @@ class StreamMessageInputState extends State renderObject.size.width - 16, min(400, (snapshot.maxHeight - renderObject.size.height - 16).abs()), ), - mentionsTileBuilder: tileBuilder, + mentionsTileBuilder: widget.userMentionsTileBuilder, onMentionUserTap: (user) { _effectiveController.addMentionedUser(user); splits[splits.length - 1] = user.name; diff --git a/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart b/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart index 1f3f753d..82f0a5d6 100644 --- a/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart +++ b/packages/stream_chat_flutter_core/lib/src/stream_chat_core.dart @@ -101,20 +101,6 @@ class StreamChatCoreState extends State return widget.child; } - // coverage:ignore-start - - /// The current user - @Deprecated('Use `.currentUser` instead, Will be removed in future releases') - User? get user => client.state.currentUser; - - /// The current user as a stream - @Deprecated( - 'Use `.currentUserStream` instead, Will be removed in future releases', - ) - Stream get userStream => client.state.currentUserStream; - - // coverage:ignore-end - /// The current user User? get currentUser => client.state.currentUser; From ecfb5aadb7460360318414710874872431b0a117 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 17:50:39 +0200 Subject: [PATCH 195/201] Update docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx Co-authored-by: Deven Joshi --- docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx b/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx index afffe006..3a6235d8 100644 --- a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx +++ b/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx @@ -46,7 +46,7 @@ This section highlights functionality removed. ### Video Compression -The automatic video compression when uploading a video has been removed. You can integrate this yourself by manipulating attachments using a [custom attachment uploader](<[https://getstream.io/chat/docs/flutter-dart/file_uploads/?language=dart](https://getstream.io/chat/docs/flutter-dart/file_uploads/?language=dart)>). +The automatic video compression when uploading a video has been removed. You can integrate this yourself by manipulating attachments using a [custom attachment uploader](https://getstream.io/chat/docs/flutter-dart/file_uploads/?language=dart). ### Slidable Channel List Item From 69b6ae7b559862450e3c06d2199d48f0eddd4028 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 18:10:47 +0200 Subject: [PATCH 196/201] fix test --- packages/stream_chat_flutter/test/src/thread_header_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/test/src/thread_header_test.dart b/packages/stream_chat_flutter/test/src/thread_header_test.dart index 20ce03f0..e347803e 100644 --- a/packages/stream_chat_flutter/test/src/thread_header_test.dart +++ b/packages/stream_chat_flutter/test/src/thread_header_test.dart @@ -63,7 +63,7 @@ void main() { await tester.pumpAndSettle(); expect(find.text('with '), findsOneWidget); - expect(find.byType(ChannelName), findsOneWidget); + expect(find.byType(StreamChannelName), findsOneWidget); expect(find.byType(StreamBackButton), findsOneWidget); expect(find.text('Thread Reply'), findsOneWidget); }, From 61e4c471fb1c1a06b156e23ce2c89f4d37521244 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 21:09:55 +0200 Subject: [PATCH 197/201] fix analysis --- packages/stream_chat_flutter/lib/src/utils.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/lib/src/utils.dart b/packages/stream_chat_flutter/lib/src/utils.dart index 6f68d287..86357803 100644 --- a/packages/stream_chat_flutter/lib/src/utils.dart +++ b/packages/stream_chat_flutter/lib/src/utils.dart @@ -9,7 +9,7 @@ import 'package:url_launcher/url_launcher.dart'; /// Launch URL Future launchURL(BuildContext context, String url) async { try { - await launch(Uri.parse(url).withScheme.toString()); + await launchUrl(Uri.parse(url).withScheme); } catch (e) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(context.translations.launchUrlError)), From 2e54334255dd6dc3fe27742054bfa9d5389cbae3 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Mon, 2 May 2022 21:18:41 +0200 Subject: [PATCH 198/201] update pubspec and changelogs --- packages/stream_chat/CHANGELOG.md | 2 +- packages/stream_chat/lib/version.dart | 2 +- packages/stream_chat/pubspec.yaml | 2 +- packages/stream_chat_flutter/CHANGELOG.md | 2 +- packages/stream_chat_flutter/pubspec.yaml | 4 ++-- packages/stream_chat_flutter_core/CHANGELOG.md | 2 +- packages/stream_chat_flutter_core/pubspec.yaml | 4 ++-- packages/stream_chat_localizations/CHANGELOG.md | 2 +- packages/stream_chat_localizations/pubspec.yaml | 4 ++-- packages/stream_chat_persistence/CHANGELOG.md | 4 ++++ packages/stream_chat_persistence/pubspec.yaml | 4 ++-- 11 files changed, 18 insertions(+), 14 deletions(-) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index 0965cd2e..696bbf2c 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -1,4 +1,4 @@ -## Upcoming +## 4.0.0 ✅ Added diff --git a/packages/stream_chat/lib/version.dart b/packages/stream_chat/lib/version.dart index cc799a9a..46bec2d5 100644 --- a/packages/stream_chat/lib/version.dart +++ b/packages/stream_chat/lib/version.dart @@ -3,4 +3,4 @@ import 'package:stream_chat/src/client/client.dart'; /// Current package version /// Used in [StreamChatClient] to build the `x-stream-client` header // ignore: constant_identifier_names -const PACKAGE_VERSION = '4.0.0-beta.2'; +const PACKAGE_VERSION = '4.0.0'; diff --git a/packages/stream_chat/pubspec.yaml b/packages/stream_chat/pubspec.yaml index 9ba44ec4..8ed38305 100644 --- a/packages/stream_chat/pubspec.yaml +++ b/packages/stream_chat/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat homepage: https://getstream.io/ description: The official Dart client for Stream Chat, a service for building chat applications. -version: 4.0.0-beta.2 +version: 4.0.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index cc865b2e..0fdfd392 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -1,4 +1,4 @@ -## Upcoming +## 4.0.0 ✅ Added diff --git a/packages/stream_chat_flutter/pubspec.yaml b/packages/stream_chat_flutter/pubspec.yaml index fe5a73b4..ac7a6c69 100644 --- a/packages/stream_chat_flutter/pubspec.yaml +++ b/packages/stream_chat_flutter/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK. Build your own chat experience using Dart and Flutter. -version: 4.0.0-beta.2 +version: 4.0.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -36,7 +36,7 @@ dependencies: rxdart: ^0.27.0 share_plus: ^4.0.1 shimmer: ^2.0.0 - stream_chat_flutter_core: ^4.0.0-beta.2 + stream_chat_flutter_core: ^4.0.0 substring_highlight: ^1.0.26 url_launcher: ^6.0.3 video_player: ^2.1.0 diff --git a/packages/stream_chat_flutter_core/CHANGELOG.md b/packages/stream_chat_flutter_core/CHANGELOG.md index 507c5f90..9245efd2 100644 --- a/packages/stream_chat_flutter_core/CHANGELOG.md +++ b/packages/stream_chat_flutter_core/CHANGELOG.md @@ -1,4 +1,4 @@ -## Upcoming +## 4.0.0 - Deprecated `UsersBloc` in favor of `StreamUserListController` to control the user list. - Deprecated `MessageSearchBloc` in favor of `StreamMessageSearchListController` to control the user list. diff --git a/packages/stream_chat_flutter_core/pubspec.yaml b/packages/stream_chat_flutter_core/pubspec.yaml index ad41ad58..dd4ad795 100644 --- a/packages/stream_chat_flutter_core/pubspec.yaml +++ b/packages/stream_chat_flutter_core/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_flutter_core homepage: https://github.com/GetStream/stream-chat-flutter description: Stream Chat official Flutter SDK Core. Build your own chat experience using Dart and Flutter. -version: 4.0.0-beta.2 +version: 4.0.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -17,7 +17,7 @@ dependencies: freezed_annotation: ^1.0.0 meta: ^1.3.0 rxdart: ^0.27.0 - stream_chat: ^4.0.0-beta.2 + stream_chat: ^4.0.0 dev_dependencies: build_runner: ^2.0.1 diff --git a/packages/stream_chat_localizations/CHANGELOG.md b/packages/stream_chat_localizations/CHANGELOG.md index e318cc18..a23bf1a1 100644 --- a/packages/stream_chat_localizations/CHANGELOG.md +++ b/packages/stream_chat_localizations/CHANGELOG.md @@ -1,4 +1,4 @@ -## Upcoming +## 3.0.0 * Added translations for viewLibrary. diff --git a/packages/stream_chat_localizations/pubspec.yaml b/packages/stream_chat_localizations/pubspec.yaml index a47eabbb..d3007663 100644 --- a/packages/stream_chat_localizations/pubspec.yaml +++ b/packages/stream_chat_localizations/pubspec.yaml @@ -1,6 +1,6 @@ name: stream_chat_localizations description: The Official localizations for Stream Chat Flutter, a service for building chat applications -version: 3.0.0-beta.1 +version: 3.0.0 homepage: https://github.com/GetStream/stream-chat-flutter repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -14,7 +14,7 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter - stream_chat_flutter: ^4.0.0-beta.1 + stream_chat_flutter: ^4.0.0 dev_dependencies: dart_code_metrics: ^4.4.0 diff --git a/packages/stream_chat_persistence/CHANGELOG.md b/packages/stream_chat_persistence/CHANGELOG.md index 5e80bd62..6f3482ec 100644 --- a/packages/stream_chat_persistence/CHANGELOG.md +++ b/packages/stream_chat_persistence/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.0.0 + +- Updated `stream_chat` dependency to [`4.0.0`](https://pub.dev/packages/stream_chat/changelog). + ## 4.0.0-beta.0 - Updated `stream_chat` dependency to [`4.0.0-beta.0`](https://pub.dev/packages/stream_chat/changelog). diff --git a/packages/stream_chat_persistence/pubspec.yaml b/packages/stream_chat_persistence/pubspec.yaml index 0d28870e..05872dab 100644 --- a/packages/stream_chat_persistence/pubspec.yaml +++ b/packages/stream_chat_persistence/pubspec.yaml @@ -1,7 +1,7 @@ name: stream_chat_persistence homepage: https://github.com/GetStream/stream-chat-flutter description: Official Stream Chat Persistence library. Build your own chat experience using Dart and Flutter. -version: 4.0.0-beta.0 +version: 4.0.0 repository: https://github.com/GetStream/stream-chat-flutter issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues @@ -19,7 +19,7 @@ dependencies: path: ^1.8.0 path_provider: ^2.0.1 sqlite3_flutter_libs: ^0.5.0 - stream_chat: ^4.0.0-beta.0 + stream_chat: ^4.0.0 dev_dependencies: build_runner: ^2.0.1 From 44834047d6dd45b71e3c6e05180cdca4d029c6e8 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 3 May 2022 08:48:07 +0200 Subject: [PATCH 199/201] fix publishing --- .../test/src/media_list_view_controller_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/stream_chat_flutter/test/src/media_list_view_controller_test.dart b/packages/stream_chat_flutter/test/src/media_list_view_controller_test.dart index 3500d30b..c8dd1d7d 100644 --- a/packages/stream_chat_flutter/test/src/media_list_view_controller_test.dart +++ b/packages/stream_chat_flutter/test/src/media_list_view_controller_test.dart @@ -1,5 +1,5 @@ +import 'package:flutter_test/flutter_test.dart'; import 'package:stream_chat_flutter/src/media_list_view_controller.dart'; -import 'package:test/test.dart'; void main() { test('should update media', () { From bc63a488fb39ba82bdaec18f5fc5e046e6d3dc9f Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 3 May 2022 08:53:12 +0200 Subject: [PATCH 200/201] update readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 061a193d..5d78e7bf 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ This repository contains code for our [Dart](https://dart.dev/) and [Flutter](ht Stream allows developers to rapidly deploy scalable feeds and chat messaging with an industry leading 99.999% uptime SLA guarantee. +**V4 Migration Guide** + +For upgrading from V3 to V4, please refer to the [V4 Migration Guide](https://getstream.io/chat/docs/sdk/flutter/guides/migration_guide_4_0/) + ## Sample apps and demos Our team maintains a dedicated repository for fully-fledged sample applications and demos. Consider checking out [GetStream/flutter-samples](https://github.com/GetStream/flutter-samples) to learn more or get started by looking at our latest [Stream Chat demo](https://github.com/GetStream/flutter-samples/tree/main/packages/stream_chat_v1). From 7850e10b834674b840aa1b6687d293eedd654aa5 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Tue, 3 May 2022 08:58:59 +0200 Subject: [PATCH 201/201] doc(docs): add removed deprecated methods --- .../Flutter/guides/migration_guide_4_0.mdx | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx b/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx index 3a6235d8..28a43ca1 100644 --- a/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx +++ b/docusaurus/docs/Flutter/guides/migration_guide_4_0.mdx @@ -44,6 +44,32 @@ See the sections below on “deprecated classes” for a complete list of change This section highlights functionality removed. +## Removed methods and classes + +In version 4 we removed the following deprecated methods and classes: + +* `Channel.banUser` + +* `Channel.unbanUser` + +* `ClientState.user` + +* `ClientState.userStream` + +* `MessageWidget.allRead` + +* `MessageWidget.readList` + +* `StreamChat.user` + +* `StreamChat.userStream` + +* `StreamChatCore.user` + +* `StreamChatCore.userStream` + +These were marked as deprecated in v3. + ### Video Compression The automatic video compression when uploading a video has been removed. You can integrate this yourself by manipulating attachments using a [custom attachment uploader](https://getstream.io/chat/docs/flutter-dart/file_uploads/?language=dart).

      J30 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ⅅ5s`__@i7lcTZHqP8WhqeS!mUrSX7^CqHeN+3Ra{H{ zQ+_>5sZtA1e_{XD)Pu1Q0HBT>ni>|k$2GVdkhtMqeaGK&lZ9m5_xUC?KJO_oWBK-P z_a=~-TN97J`2a6MBu7BfG{=UTz4n8bCM(`xxz%i!d$NmQBU`h`-stobxM5NM+StG% zt#=+*!@%_A_9}1ydvs3la;gU0CLDatEn<=1;GJ!S<6Wr=s9W0g%!Lj~3i)jSpKla~ zoxhz0p9_e)a)0PIET$dfEkd!p145!0-9SGno;0+nA)YX6dGj`D6iWMXxbujmuN?f= zpB>(lyC`f8}Glu?wG4N-_vd{09pk9THRkTg-eXz_j`7<1u6D57lZC|Q!t zD8W(c(Zdu~4q9`4Wr>gHDUz%6Ded7Fi?@ z^OgTd?GLEvCr51#%n6EWYSP;B*`3+`6wcE*sx9&q*O}amsH8TioUrXUkr@BP*Bn0$ zMI2`WtpD8*5q<-tEl5rk_ml>kHS9MC&zWpR+84M}W;dz|c<}6W#N!iwAZzAT0s5>- ziL|DhQUbf0iGacs%WWH;Fil9BTH>x(!r;lXa@tDevatwN56xtc)m^qhz@qY~e(H>k zjbp3PX&d`4>xNXNO`kAsipv7U`O4;|o08uUc^`Ts2{)a@8qljM95Kc2`4yCZ+Uc zW=1E(4l<|KGNnaBQ=hn2qGgehz)D&Yu|{8OT{8UsJkaL^?9ihB;U(SAUW6VlVXhvp zKK@o**P2}%7#eqswJpM#{-evSWP7|$guWNWKCz(GU{^C)y&NAuvQy-~Lt)#ql(aFu zwC3@!MC021klY+OdCyEXM@q83Nds=ldqadOXSZc03zws$?(ux|qr;V0wvuccf5XC9 zskW)5iiy9cp=H{M^~X`GFGPWEfq*Tw)aG;wG{nMoDnBz!RqFSfJ3m_Tig!Nf%xn0X z2n-41j|Uy4zd&9JNyOU|=da$HSEpjGs_zi~&~oyoQQ5oOHPdawMRw9)Hfp|x+_c%& zkCS&SMjB!})SjdOm%Cc%Le`BtuXCaR!vwYLElULlAf_o1d^Xu#K1PJ3`QLJ>ROn2V zZ4_-!bVd_g<2NO{4icm?4{7=ue&+J{XUM@sN8U59?vwryIA>!$abmd>+V3r!4ilc} zjmqt-)MTG{Ha4!9R}KdF+Em)L@e%jN&DEwi(nLp?Gnl3_ZLh6GcH?(?HT6yQ(Xvv1 z$eW~bl@sckx8lSq&U7-trUPO2^dvp6Zs~28dCDuc|$;3{`G|j#42LZk-~SJ=y;Fo=W?cs`Dy%V~pVw z+)aO?Na#SR*RGBk7$KI=r1WVOj0ap_H}HvsD~0f-Ez<{~M8h;W?Tz==$r2p|7ZkyOTS z(zugX?`?5FfvNI4V^O{Fjr{mG=~42t8XtSudwna{2(tc&WEm5L0Izm`Vm+RgONChk z-qyMPfL;HpJw>kPg{CcrMt6zQmg=LT$!l}MB~j>A0Zfd$Ms<95RhH}>IkSnG^fLqw zwnW&Ty4D1m>`N&o9k^!bzigcXM_AOr_ba^{#obzr(~7RcBqE z*Rp5%&nIg9mF=6X?BANDr`o@jQHS3k$f7ezUGMBXu4?(Ro*{RlCflL3p;YeW-`C-! zKA9KRazAZR>a-jy7SKB>UYdiGIcmQ`Y+JsmZPA2rjIh}ygIpae#vJ0FxlD7Mn#~w+ zrXd!S=2@Mz$C;Xk06;fmp_$ru0QR8JOvE}7>1Tz^oHAMaG8iQ6dKA9H&A<&Teznp- zJN@@P!ZQlIZe}U8CbV`UNnbchHw->c)TE8FoNiRdXXfmaDaYbbVR9XMdiil>|vp+n?LoL z-^^<`weXwzh!FStJehGMg$}&dTJ2{gzo1aqascZeA~=mGcjPc4hGp9NPhpu?omCwI z5^r}XQ_7Aj{p;4JjLG(T=PbRfa9K``#rHr(`-FsG(8i-2&G`E3YcK~hj@`AI7f36{2a!m+6keJ<=g9xs?pt;C<|jv@7jhQ zYPUyK-}Pyz@EV-ALK|;VDUgDuYldFe+&Y^4g;2QlUQZ{7GUh5oY-_nW)pBwuxUGWS z%Hu1a*`&)A0RDa(Cwvqb?OB|FY4|^~pY6z>(q)5=e zRICmLjk>Iol)NdCEqKZ1&6MPdoMm;)H^8eC*gnWKapY*duxPfV>FHmCN7*2Ww<8?W zky27Nk)0VlApr^~QVyJyWJ&F-4XaDMx%zlJ^OPt+RI(VrW7n%pXyL8&&YL%2!gG5* zYRsubBbuo&)tV-r;H0Yx+&nyLKP%2zlH2dw<;wOIGwxw#->n(xzQd3|E5sRMtuV>1 zg()86#vSYAQsE8ut+M-Yx;AA16H^}iQ1QG%L>cQU&tK4fdlQWsd=Bnb{;heugQ{M^Wo|(p z)MYkXl|3rYHwc(_2_M*~>x-O3xEYJdcsIgs3(d1=8BuD3riF25MX0XB zTZ4x;=EWe1k1n&}q|f|uO@*&@YBnuxQnHDWmWinPn)A4&d8x}_16&n`+N-bwf9n3qI<%v_mcDmk`|_PY^77i`mP-XV*y?-3AxYj;mus=2labth9V#`X3!&=pmg8o4P2!I=KheGV<+4ncKu+On$8$(1tP0h#5?u z@Z9^Ik3w^UddniD@VlXA(ZV*<#o8kcgFv4rMUU6Cz9>jQN9Fn_f`y4RNNk_YE_MT=n{(CtRZH#31O5?4RAenW+PO8&k3!WwSzr`Eht zE!v1>nTH{?!q=unw3-SY=vBGmV=%lH(2NMaA}29db%tM$p};!+#4haM#bFQ$D@8cs zZMloImYhYYUTrbfG4@SIz}3Gobn(q)DmP!=JiGCw*Wdo1x`qA|x@*n@3#z4Q2Lc*U z(9;Dzl3kaUU4M4;MOa!oZIGy4LrsmXAT)M9-`x9*En{8d0YQyS#gY^bYnJQd9C;GS zN3xQVUXAcRkmat(YrFowxwRCSi{sAO!s_;`DoZ6j?_J*c$Nu8a9^l@&ee?0z`3@Z} z&c84J_s9P;e+s0RDEMrlpQi%O+!yw{O%(9c|Hhq|K8Mngx zbyD%HKZcqjhosB#ah{&1)~n<%$wrj#h46QIqq{4;wc{;&YuWlW)4)*UY0oNneqvMX zpP5H+lV?v<9-zvU2dR5eCUa;~)j(7)R zJ4tyKd7%05-MEND34nryS!o=dt-t>A{gcmvEn#^Hzf;Zi_3IVG8zSY&D3YQwm_Sy{e)9Nlfj-IG% zD(OUO$!$qzS!xc+FS+`=Le&}?gzZ_7!b(|*%D=`8g;MQ*Rw#e)41>kU*M#j`puumk z{Y@1@$WS3o=#JN(Xr0*XCbY)dG;alnG2WbQy7hl#po?khzNFT0zdzaT6cHuCmb^v? zpR1a$uHUSOzNd(k)wIwlH0V~i#fNos`YLmZ%0tNH&-^0YIUk(>;zC(|iM-ka=rqw| z%DiF{Eb**mDd|+)q!Uhl>5t+&u9j`7-Jw{IwU9GwSp8ua~R-(6HEx;anZmK}*}G*z9$#~XNx|U-A?b0MuG~imhb~9CVv=%1PL}xVM;vF|D)kg zqO5_`Q+orz8Hwls!SBxeM1&+A-Rhw;`(cq}=|s%~ZWA0xX1IPIEVumV5uhaSRjFIC(Yv9z>V;AKhoj_% zw9Rk7VY&%-H|RB;kumt~2M*uMyL@_Ds@`D+X3pzWPsFrlC46;lNnvD3Q6URabjN2Q zomPFql3xE45-Rj5G{*cXXUtSQzF^X?%fgw(Y7qPqksHq<{WC6Pj7=+*m*~tAm+rWg zVY;;mjXCU;KbS+N%^tk$@DY4oQT&-Q<7-Z&+`nynNa8E5NEBYvtW&cUCim>!V49c7_hVq1ReSLx<%`c}OC7FF+!jr>Ccw%^~}| z`+)md=tcNNErt6__&cs+y5qsJsC%e*B#2F64o%PY>rw*=KC*6!sL52s-D>a`QVz<_ zDr$T?@~9_6K{7|MYTG2?9XMRPLirA9;9lVwQS`IORpvbhrne0F*`);dq;7}5=*~Hn zUT`2kZZJ@AFbM3t#r*&-$X2Y64CP{rC0U#9mK&G*`rZt z4tk*k)!@)#IFPJngy-B3tHz!8jES(cnl;FwW{$O%mPmLDb}vh>?mSyqSw8N(BnA0nAo#pT8r~(F{Sk2z1D+EmF}9ggG+LhN(d>+vFDPsKi_@wKrg-r zQo?dCwrAgLB+yQl$m)IF#CF3A9gVjx()sV6@W)snK16wn@(K}sh|kr~Vw~gXMZ9-t zT(SNls_CAntQl`9$OaZavez6es{p+&xvbUWu|AODvDq`fpSDFOyQ^kwWi(ZsiV;U~gF31y& zZI0GnRh@2qfh*PhdR!tq0cNwifnS^6-IwgJ{sR$7+?f;5nU8$z9AA{Opvk>a5H5>j zCPGk_@hH_ukZ!*BtHQwe$1&=RZ!GgXO?l$>o5EDYTT!l$U$F@pcMJ3P$ljA!y-%9TnkSH@D;!ZrwP(cf-Q8yD&FC}stp(;S`ixY94_+Z=?ZQDw3b*!QR~sg704nc7c%q}kP>$IgcG}OxvtH*vkZe%s zX@9m}saiUEZ{TT7s!USno{QTUq@_>Kxsanzp!I17kJ9G5PLFeUi`5Y5e_;_AX1ov+6t4BfZuVjwPD5t~<{`iJ=9$rrXlAwKCj0${4UM}6?spR`NAbuC82X1&uYHb zotpj^^*UD?{>sL)lnF!PtmIzC{<8kq34hoQXf&0%XMVEN)9jZr2;On#!rRTq#!h~A zsO_J<`^cXudn|b*qHT{aS5$~NB*jDI)X9X8Or^#B^ zI-qt*5PYSjX|5)K^>dYncxJlabj{JG7+V;R6tm+MJdZ`TPPI;f+-utrH5)J@+^r^k zrg^tKo^RM0)rdc7`KeBw24E#RDM5nW zAnKX`|K5P(N`P?^e8`So%#A85HU}(N5Ng9aYw6nQYbR6jwXQ^Kg|iaPxDEKF+AH`0eK!Jb!ma1O_ZL_(c9~otdUd4y1fJ;l z9J*b!^9MA5BD143Oqh%e@PavYyr8lKyVG-DAsws7ZD)w+ljOq{Rc9Pq@FRs0`D{;c48a@lZK&DW1W^}W{RMAt+~~(hMER}t>4kaU5`#tZ$3+D!5iuln`ZCklv(L)LhJe;7AV!BPgAW9_UKHS zJ)6-jGM0x?!P-BYD=ml)%)jmo6R8va9Qrv40Wl8O0w*d-qtwoB`Ioz&8)oeZM&XQ5 z*cFV7PnSoq9&_%3exuUkVw=#NmwHdbE}~tSK1gI_xo?Mau9(LC$*in?mxcWx_N7~n z!V>sLd4E>oNiOw>(l4b>6@O7Lb(?7mA+JV!E$Y`1rL~_8X`e^`K87=mPxJsyg?L9c zwAO?b<+XwtsAr#e1s-W@&-71xrpWkF=-PQ{5YBmQl18M`+e;IAfl}T$@tcd&RJYX9 z7yasxaQQLBZc+jzH{FW5BnDt#3h{c*Ph>`SxV>~NV>nK)V?0(_=|Q!!QG25ES1?`@ zw+aUaN`|L64M5!J0m2`!$?05(M|ECB>)(;0+&%oX6bwkGs(#Vo_UL4QU`ugL*<(02 z$J1gD2|;FSE!eXr2Y%kIU~vJgVkmC=JpI(%nk4G}7H2(hU-etO84S z!-CS?-6ElcNO$cL(z#Nyl)L+`-}m?Tp0ji2%zS3?Y6CrP#qt8ZC7AWJ3T`5gN3-mgfJDwI7p?trkzMldu4=92e{mdQ(SP30E>q_G=>9_6f z3zUywr`jg+-Ok9*UW1q&Oy>DD`H9JnQ!sBEN4nq+=N~MIUKXykKv&#In9XD3E z5F0;HbwRiF9$6o)ITh<}iO$HwGT-`c{w|A~hslI}63X?TC9h)s{_U4U7f4PCI7o++ zYg83%`O)VwE2;a~6wJy7jBt}n7b$OBMmIt+K(neBmH7{D5`&o#$xZI)@d(wF#)->6 zIgdN~S}p2=kcOjb5#Hrm4K_F5C6t2lv$ekhSUyTBxiG6pAlE(zMq#-SP-L_)6W}BQ z*lB>S84$yOyw7h{pHtRH%Da*q7%$7Rs6+5o7OJY_mLAxm>)xEmKr+#bZWIZ%c1vW} zBkYmLAMZ}V5g)4T0X#`a6wXev^0W_UJyu`UtCx)D)PcQ}z#juGpYu4Dc(vk}vgEg& zj&)@J{Yf{vhT#<5Y5_tIFXtjQD4mpsP9I*BYD#yTZVM4dWq-{9Gatw|ebZfN#V<=C zo;~xhfhEzw0$Sl5SNun4W>aZs72cU1d-AVq$g!-79}7!-S4SpO?SKT=QH$m-pB__+VC9g73C3w z%{WL;S?-fy+8k;6NcZKFTm`r7C7#T0AKy6^4G7XaPyK}67M%!}A?ElGg8qZd^iv4! z%l6Q@#XvHeCk6f_Is$1zmgyYg(<7KJVwA=&qvf(e@M^`tq{n z282s=b1QhN`XH}PZbS}nra`D&mP~Rs>6O<_nQ4jxiP0X2(u^2U9`RLc;a@DREr>9h-zrwLT(QN1=zbWJPd3j}N4affHc9G{%OD+wOK zfARgXVsujNm@{v$jc>!3K+Uj~7s9=76k57>nOwE@Pkbn6-n&OG{sQpgiF+@p&e$ks z=ngFrtv+SKE;I-40o}a*s zf4Hp|MviU47Uq_QdveXb`~{_HVyy$wOx6$WI+1Z@*Vo`HUXU5sq@n`a(P4LUD4So7 z4a<#O9N1+Rm%0YDL&69+R|5h2j8s#bI`dL`scMVLY~k=9x+h=DqxOf|9pt}uaZMi3 zE`Jf}u9wH<%J@{&N<^NAVYwkbB%CwHN;c4TwX8AbywQk0j^F>Pl7dQ1P4e@8Bdv?FHufi-vpSN%2zN=L>YISQ66-{e5g`z1f&1nP=4JZqQZEzJ=Cv-M$2%;ih>0gcri?d zD$cyt70b=ODouGFnSO|#84PVBs`GEA@S7L^MNx8I7kN9rLbCn0%W}RV#d`I99%bZn zKo_jMLhtEGv-ZU)|06{w`TXjMtmJV(p$bTsyE#v!{>=bz`im8VvmQG~J;(c#u=aIZrv=X#L+lsLiE#wwt_XojR&l zuelJ{7zasba{1;=|@4;^oy&Rkb&&m5$g4Y`O50tIxR>TYgw1a<<&*4)GB5 z7wXkq_YZ(t%v*@B1m1^kwe!VksT=dPdPJH1@c5aDru0HX)gCUX`U=F@FO$3$8Ea*| zdBKVEW*Bw=!@}G& zp`QV~^YNBeMHK;r_n8aMbcy}dY3~vzYwQUr0e2o+0-&gaqgU0qFLsw=cn=LeIUYwx z=|4C5EJ_AgqXg<7LfQs|4D`=kXiH%Qj>;45w~j}JpSxb-{40-Z?1gfSe6RKII-tRv zU#QBdt%wF9BdFrU>QWr-DDowD`<@!^lJiZumXsOgyk+50di2;Uo(@wQ2vC=?o}&GD zKyfb_^h;C_Z8k|XiO0z#?UPE;$3Y2?Qbia_tZAzq{+t$oK+0nERm zwgHkq#f6`WKu6bY9O_2;7|ETl_30M;K_6eJtw4Ev#sN}(Z-0Bk7~2%u{KQMfxSNT5 zGqHDJaa)!wy`Im8#^;E~rrv*Az5oJUwnc6ln?Qfyq6gmyQYuz>onn5T=6)Fgh* zwI9wceixr8uyw+5C)6x^9sCQPD_QnMiZR%>9KM0lvmH>^(RdC@I{JpHV}W}xgT2l~ z_94@&j?PYvtWPYkdzQg%n3cyAev46UbL^t*c`1s!RJ&ZK;55-DbdwW$bL~bmrcgM1 zS&hKbCl}yF-k=u!N-MxJ%fh%23kVF%n^w+TuQv-7| zeZlN4<=oI!OHjGme0Oy{h#GD|Mt4OlRr_7I5qO9g)goCt>Kx3C*jvH~}mN%{~I=lnj?9>v~jUGE17*;KNF1&ID2a=FZ?!GpbpNc1D}6QJ@hQC z1;2I4q=ct&Y<+7f8C>J{bo0bKT1gE&)HT2ow#dicMKNy*c^zsHuNB_+ng!Qm*R`KQbO@tunaG>iX=xa`9v&1$ijydCiul4 zkBkvJftdX5NmSdIs7h56rk7>x$=LSJo+-B@yK{kc$^*{(r9o8N6dAbolKlZEq2A;l z>EvCwHM@MW%)voNKT17`C$^t8b-#oUs=mnZ>-1~;W&x_*%!KCc)I;f(ALcnql|eUy zB==s6sGc~h?0=wgs&;(@Lnpp8KLMXWW!m)DpBipieNIqX>c2OV{^{Lph~;g2A2VkV zD+Y+6Tvs0=-qm@?l{(Rx_>O!j+&{F^7WYa!u3q`o$W4%fTXilCZk()c zD_i#4#}B(t{+%xvAoZcC_C(&a>Z66N+Eg=CO9af)>w&WZfhMO+Qo3jUg3jU$G!p3T z6!sXi+OZU>yOke_8~8WyBrIc~#=sftRh0_>b0qdrt`q;k+(h!kZ%g5QiEM)sQh|@B z6gaI^xz2|vIx2#NJmzgmx5XxD+4AaptDX@;v<;~?rJMoTYbAM>{+vwkdgfOoNA>sT zyDYvt*1?A9;BAs)X@a2qN+x&R$1L4Q(adf2sN^K0oi4m9d;(ZfOgnnlLujE;A7nW4 zwUr=4Ju>6KGRF5G{H<}vIZVvYd zIm*9O&fZDhQE(g7#$sqj{|c_=jZnWYgNM4A1`f*#58y38YNlThMyQ&_*W|kYsUX&D=-AqN%O|)G#Ic7SVEQ-c9ZFj zNeAZ674ILkfVqm;j$dBFCn3C=OCzOq#;Ht;ESiJfYjqiftbec<3SMG+gc3FS`jCgY ziSYcCs(us%eOOC(a@E|f1|!gnS*Tl5R(5a&8d+r~Q3HybOKIQcrqGihwo`DudU1j&=rCeZi1$K0e@&>n8y)=vMPap3p*qK9P=u+aE|O*>3E(_M zo6aYlA>$w#eXXXJPTAWa`l#d49P1b{La`SNUu0QE-lr%e0mZK9EIwLRy~(8yUN@qq z9uac>Y*3Lk+weS|evmusbG@}Wx>cjUto+;L_novZme^S$wmfHg2hc^K2aDm9cVI_? zJcC@;DDPx*fbbyVO&!OANZ4*2DLkhFKZ~!h`0k=eXhz%c=y&oE3IwPQkcmKSJnds~ zSp@)7nt@7bjV#ZQtbm=R=~oTiZEdz_oBL&f@9+Yvsqb)^*4lsKQ@}9U=(j~flx#>1 zzFwV;gid`>DuT3(YRSSKjiK`rzOTsaAnAWoJ-aj(b%*ZJ|e|IDvk3L8)Yz*-hmFpVWWB z^OgI3+{t>d1y~qryVnsNx;zBrTUtzzF6|i4HRDmJ$X(uiVM4WYTj%uls9fnN1ab_F zEP5ju32M~+m=4MJ>nBnIBWVLq%s(A!rm-z$FxdzdPuVSzl<69s|IL?QwRvI{)y;e3 zU()aOKC9jlF3al2(4h1_7W$|kA+K*sMfyT>Z^P~TrTWF=Y-8DzjbX}r<&@OI`c0VM zEK1dE9aYEwQiwF$dwP62t~@eN4`BHT;BC5cHSBoO;SLhR3@$FJ$o;&h zuU&W9vRgyJy5G3uXrRVuI((MCZ{1TbsO&IE#E)Y&4ZycKGp%YL%WMf4=HkVdsJJ!X zw$*#DzV6q@JI!+YDX|}PIGyx@K1+tba>VRKm4I=mWrTPc{KwIRx&7*wlAlss#t;<| zLlb6?88zKAS^!|Q!r$RxxuAzkc7}yXxfSHgX~O#~h*pQgnNIBt4RldgZ*dhiP|i-GV9)7f zGDkF^6>L~c;^CBijQ5X!zVz?6E6pdYs=!zgF#4<;FQPAUSq7I9(t=kiHmrBK17r$B z0sI!U?(O1@Sx$MH4q;+(83~ALD3*I5Mdg56cc+&`l%sT}MtfmyDC%)=khFVU zla?TDc}e(^>%_>SjXJL%k;I-5ze+(;9kX%Px;*fc)7|UBa3ZhS50>odL0r!8dRJSA z+I*LyBQt}1P)U92tMw5i;eDOkP%+v>_^}1-uG9hdTXHbA zYBab;%xmFZ<>W?>7mVwM>xkLnUH0$iTNS-yQ@*B>a!KRckrl{ zKD{$R$-gl9^yWrT@z4RnTbQ?tFSj{1m3ADt;U? z$a@rN`UUSq<|brxPN%U=#f5}W8pcxA7gix3Xu==5B3Jx!5H;ZU3?|bg1wxZq{`+px zTLvfe=Cw%Q`z!HTxuAF0<}-zIf&AKT{M>XS$5X2%C7mY#N@or;zLVQ+v_VltR<&u* zSF@#FX&?zU3vB}qH(~uVUeOvsUcsCwyixXNr*rHgxJ+#B11zU;N4XEY1Py}Vev?q2 zw~|KeyQ5IQUT1Liq?j=(ebiDJrEyEpbPwe1I>C>(2mUP0;-aB84d^dk) zA<;Ih=51;idf8@q6&qIs$-C;&K8lv*OVztcL!bp zxn1RIaVEx;p+u;V%B?jL{O9~Ki07*be~QS`OURpx)DAA2(7xlNuYt9Bdb2MCcERS;FIi?>)> zA3d^hS6rDSV`>rWaH%RbECrZ*#ELVAI6~4z%{E+lbLyQxr@TUKDqMcb0%oe6%Z^-$ zhIRi&*w|&Q>lyV<2$GWv2Bg{5jfCgShhIe1)wa#Gzm=dCI(#s1px|9h@!CiRu)f1= zE;80(W({TlYFz0Xh`5{?DNn!(k?-bzj|mc2#JITBiTj=&F*#!!@Ocm`IOXI^bexZ* zgh*~=x4OZPC>3d%nqM%!ssGw;-Aer4V(0sdR}1F%7w_JAF=^7N08se$iEj5!U1?cw zQ}t%3Oa4OjbWRA)j2b|<_DgP&`O=h$Qzsjc*U06c1!UtWprp23YT&d5r_lgcOq+vj zx*4vyK%F_I@|=j(U?V*bOIn?&h@hg2o6kDx;Vhm`tGL;y&DS%tBL)Mp`&jhBAn@X( z85={+V7O$iQ*^P02U``+eL~tl(sl^d!E*n8LtIhuY^A)khw{1#sej`|V}>mP@>=W8 zTX_`u{x|T<604yi%JH@gw4fncz}5neaIo8TS-kKFcBb<~12^hz?`~p@_@p6?6P^1tdegBt zfj?@JMl-ES(9nw}kFfR^6!x<+MPq%BTPW>3u;L&umK3RyS*wk0AUiL1bE??#WJ~j0 z>e)R6vrARoGWI8iSr#{8kOj@TzpfF26+@_pX7#q{38;)p&JKcpp0Ad$Q~NQOmiL4O zzFv&M9>AFz&?)*VgHNiOTwY$2n6HW?d;u0jl@)Qhfz8Rd>yS?HvaIyxsxtIIrKxeK zOIv-`2w4%}j9&M|kfvj(9*pSmA1!0Ifr5EYE6aGEaxaebTZar0UXvUBb|F}QFk-$T z@=&p1rbCZGI>Njw@y{8@O_tzCxi6yOYJHt)OBdkUaJr)(GH(qof-|CshR7HY23|xy+5Na7N>U@<_s~IC`7QDEz`3n5Chk^gD{hj|Lb36tuy* z`s2kNO)4Vly3tNEY^&jeSL9}@r9ai64kccUL!;^Kx;Fqu&}=MX8+hjbe9a+lwwVBO zMO^<=qjEB4Y6$fmZoNV!EdaAeczI0X?`(aEY{6-_(^lSutA}7>Xv3YtTF?yIl6kTd zq?IbkO-bMAxaE~5QmLIymSVXKHwCHuGvDT_ST|4u`uiK{ab=TA4tMZP0IOF7Bh5S@<$q z7K3f8{RaL-DH-u#>gNm8)YMjqSa%yZa_K51m?RI_6;PfL*GLphb0{`F*?RFYSm+B_ z`=0o*$2Pe@m^4MH^{Th>`xPKMu`pFcq+0!^>6dc0^Wa*C>|dxatzM-7@dx&W)j4|Z z33&)F~wY<@+Hx7}(*1uLI>})q$PSN`fqLX4KUj;gbj~BSSf%t}4e(BD6F51q^@Jb2&NPFz~!Y=fO`d3U1;lz zCiGeFGT80~DzP{RkE%C%J0%31rQBT*gr24H`IG5il!_{^Lj6!bI-T8>UNU)8Dazdx z=asWJ%6Sg-I38WsG9aN0D?{t;;%3m?NnyV1&d$m90EPfomC z0Y}j2a7(2TKHxy4>$UQ>&Z$hp0h3=-AmlXWOu+JkV!)Go$r*(xjNR=x+gTngth%y(fM2XoSNv@?#^6sw%p9cjMYcY z?Ujx?v``5xcj0CV>gR=-?M9(1Lq=dCG?O^z~xML5GhT_GPnv^)2*?3 zl3tt;xbKvjyv6S&+Df>5r@ynQb(!6ae%4!RnU|Ji(vX9fFSY*EK%UaWygN~U8bG@i z1Ap|Lj8SImwv=}+tC^RoPvb!xpnb~M9MLYtRjyh+J_~GM>WLqeWuFeXR~GUa6_GKC z)~297d?i~HxeQL>$5_-ty3svG|K!f=qTzJp{rqU*z~j6wQ_8Bp`R!<|{VtxQBn5*} z?WcY&6u1z-KSv4{Mu^11Xcm>+Er!t?%UKF<@@#qhvKbYf3o{p^ww{ebxxr$ReqlQa4DO{Sl@%UbOio_ag#%Tt0C7l>DOx0`@aF z!bRC+1qNMV3>ejwnjJsnAY}R7`7E|u-{+Og5=*yyi{O=rXusj}{=Z*Orx+v_u4+`> zgFmMRBaBHTh^sZIru^#kpVo%&_juOo4M}Ojv`k+$q1Arg%aCB0{Dq|v3~&@BQxc_e zi8<+;7{+mfy|1<>G(Y~P+rb#bjt#saDI2zaxdXwIk&p2g*Xe+j?+6#4%L$e1)W$!l zo%=q-$U3lLy@=$?{W$GOUSKqOx~mYLIlyJS-)JmOF+ zsp1p^srpPL&02sBB~1PBU~aL{GCB@kd_gN#+=?Lu(hy#_+!V`wcyMbnOVCJ`X>M}WE2ETlFpF>k}-H#%jea4lDtqps1AXZt^>Spk7E!8soS(v~c7wXSPJKdeqGe z&GZvCfx#Sz4+?r-0Qsz^j33v39hgoDkP`Kqc*>$;>kc5k+`G6h6G5IyZwGF*VCEmu~gGxw01{ zzOuWF{1XO=cUkS76FQL{oTbn(He~}J-hiF^MsEUs(!E(|LuWk6>73$n(ZW?Gl~Vs~r3B~H>U=EEvVPK~oxg2Aw* ztJpG8WO-j_d7a{m(;GH;-(Hr$_!tlWx4+S1#lNPksjQaWU z%WUgw5<2->(93+?^{@ZA`wQAJbuvb8f~72@0~)~v?CT)izbkFSC$FW59U>;12v282 zw1@vzGw?y==8QJK$h)wIYKBKOiL-Sb=){y#D z2;6Ela6a3sKWxc-?tFVL8Deq$A&L72-@I*A35u+I>20Qc^0<*K+FZ&Q-2B8WRpq6xi>Qq>Zmb-6q2_RgS4U{ahY z;FaxCy7b%1E){mqvbCXh%`S}-!mmqmC0PN#4ix0cnTa-V!~U8%`nUysU^h5MQ~<2{ zQv;WAzUF*xJ`H#!xK3T{q}uE;$Q!%=<^*%X|HBIZ**dN0$$|yQRI!qR@>{{i7iC^9 zMC#efk6+!21X((&p9ht{U-{Usid>!xsm|!4KhlP?+5l3!Y`R90G;gFMBl0yF4=h|n zJWYOk#}n;D+@<^G$SnEy3ou;^sS0w60;Ogg51cGrD!j=n6dYBhrhN+g6f#8fBCo28AC>u pq8R+_O@z|S%s=Dz^;bPur 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�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 TXio0g-@hj*DkoASWDxj&5-I2Y literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/server_key.png b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/server_key.png new file mode 100644 index 0000000000000000000000000000000000000000..f11d6fb56b17ea7ac18eb1b99af0fbd605181e68 GIT binary patch literal 13442 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 P6#yAYMTr_Q!@&OnF?4ey literal 0 HcmV?d00001 diff --git a/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/stream_chat_user_database.jpg b/docusaurus/flutter_versioned_docs/version-3.x.x/Flutter/assets/stream_chat_user_database.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fcfe73c82c53c4484d7049789f1d9178ae029c74 GIT binary patch literal 55473 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

      -%i&kQ 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%0DlAE-6Ckm4<8=a29># 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�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�qeiTu1y|N{TLy-%K7!C=P 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%0DLaFo16L6m_Q7x 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РVW@hYJs*|ZLmL+;Kwxw7)}}bn2K_-D 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%0DRRvMxNP- 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

9I<%+cGHX2g>g}FkM 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"zHzkPx0-vbBWUQqk2+*_Wi-^JJlz+2iHX8)9E@6 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 z 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ϠnOd<8{Q3|O$Nb+{~L$LqgpjToBCX$c@ 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