From 202af02f8e7d6d456a66e3ddd313cb434efa53a8 Mon Sep 17 00:00:00 2001 From: Sahil Kumar Date: Mon, 7 Feb 2022 15:25:07 +0530 Subject: [PATCH] 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