chore: move controllers from ui to core
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/// A [SafeArea] with an enabled toggle
|
/// A [SafeArea] with an enabled toggle
|
||||||
class SimpleSafeArea extends StatefulWidget {
|
class SimpleSafeArea extends StatelessWidget {
|
||||||
/// Constructor for [SimpleSafeArea]
|
/// Constructor for [SimpleSafeArea]
|
||||||
const SimpleSafeArea({
|
const SimpleSafeArea({
|
||||||
Key? key,
|
Key? key,
|
||||||
@@ -15,17 +15,12 @@ class SimpleSafeArea extends StatefulWidget {
|
|||||||
/// Child widget to wrap
|
/// Child widget to wrap
|
||||||
final Widget child;
|
final Widget child;
|
||||||
|
|
||||||
@override
|
|
||||||
_SimpleSafeAreaState createState() => _SimpleSafeAreaState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _SimpleSafeAreaState extends State<SimpleSafeArea> {
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => SafeArea(
|
Widget build(BuildContext context) => SafeArea(
|
||||||
left: widget.enabled,
|
left: enabled,
|
||||||
top: widget.enabled,
|
top: enabled,
|
||||||
right: widget.enabled,
|
right: enabled,
|
||||||
bottom: widget.enabled,
|
bottom: enabled,
|
||||||
child: widget.child,
|
child: child,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
-3
@@ -1,11 +1,8 @@
|
|||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.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/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_chat_theme.dart';
|
||||||
import 'package:stream_chat_flutter/src/stream_svg_icon.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_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/channel_list_view/stream_channel_list_tile.dart';
|
||||||
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
|
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ export 'src/mention_tile.dart';
|
|||||||
export 'src/message_action.dart';
|
export 'src/message_action.dart';
|
||||||
export 'src/message_input/countdown_button.dart';
|
export 'src/message_input/countdown_button.dart';
|
||||||
export 'src/message_input/message_input.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_attachment_picker.dart';
|
||||||
export 'src/message_input/stream_message_send_button.dart';
|
export 'src/message_input/stream_message_send_button.dart';
|
||||||
export 'src/message_input/stream_message_text_field.dart';
|
export 'src/message_input/stream_message_text_field.dart';
|
||||||
@@ -55,8 +53,6 @@ export 'src/user_mention_tile.dart';
|
|||||||
export 'src/utils.dart';
|
export 'src/utils.dart';
|
||||||
|
|
||||||
// v4
|
// 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_loading_tile.dart';
|
||||||
export 'src/v4/channel_list_view/stream_channel_list_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/channel_list_view/stream_channel_list_view.dart';
|
||||||
|
|||||||
-14
@@ -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');
|
|
||||||
},
|
|
||||||
);
|
|
||||||
}
|
|
||||||
+3
-1
@@ -2,7 +2,9 @@ import 'dart:convert';
|
|||||||
|
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:flutter/material.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].
|
/// A value listenable builder related to a [Message].
|
||||||
///
|
///
|
||||||
+2
-13
@@ -1,6 +1,4 @@
|
|||||||
import 'package:flutter/material.dart';
|
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].
|
/// A function that takes a [BuildContext] and returns a [TextStyle].
|
||||||
typedef TextStyleBuilder = TextStyle? Function(
|
typedef TextStyleBuilder = TextStyle? Function(
|
||||||
@@ -33,17 +31,8 @@ class MessageTextFieldController extends TextEditingController {
|
|||||||
TextStyle? style,
|
TextStyle? style,
|
||||||
required bool withComposing,
|
required bool withComposing,
|
||||||
}) {
|
}) {
|
||||||
final pattern = textPatternStyle ??
|
final pattern = textPatternStyle;
|
||||||
{
|
if (pattern == null || pattern.isEmpty) {
|
||||||
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) {
|
|
||||||
return super.buildTextSpan(
|
return super.buildTextSpan(
|
||||||
context: context,
|
context: context,
|
||||||
style: style,
|
style: style,
|
||||||
+21
-22
@@ -191,22 +191,20 @@ class _$Success<Key, Value> extends Success<Key, Value>
|
|||||||
@override
|
@override
|
||||||
bool operator ==(dynamic other) {
|
bool operator ==(dynamic other) {
|
||||||
return identical(this, other) ||
|
return identical(this, other) ||
|
||||||
(other is Success<Key, Value> &&
|
(other.runtimeType == runtimeType &&
|
||||||
(identical(other.items, items) ||
|
other is Success<Key, Value> &&
|
||||||
const DeepCollectionEquality().equals(other.items, items)) &&
|
const DeepCollectionEquality().equals(other.items, items) &&
|
||||||
(identical(other.nextPageKey, nextPageKey) ||
|
const DeepCollectionEquality()
|
||||||
const DeepCollectionEquality()
|
.equals(other.nextPageKey, nextPageKey) &&
|
||||||
.equals(other.nextPageKey, nextPageKey)) &&
|
const DeepCollectionEquality().equals(other.error, error));
|
||||||
(identical(other.error, error) ||
|
|
||||||
const DeepCollectionEquality().equals(other.error, error)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode =>
|
int get hashCode => Object.hash(
|
||||||
runtimeType.hashCode ^
|
runtimeType,
|
||||||
const DeepCollectionEquality().hash(items) ^
|
const DeepCollectionEquality().hash(items),
|
||||||
const DeepCollectionEquality().hash(nextPageKey) ^
|
const DeepCollectionEquality().hash(nextPageKey),
|
||||||
const DeepCollectionEquality().hash(error);
|
const DeepCollectionEquality().hash(error));
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
@override
|
@override
|
||||||
@@ -296,13 +294,13 @@ abstract class Success<Key, Value> extends PagedValue<Key, Value> {
|
|||||||
const Success._() : super._();
|
const Success._() : super._();
|
||||||
|
|
||||||
/// List with all items loaded so far.
|
/// List with all items loaded so far.
|
||||||
List<Value> get items => throw _privateConstructorUsedError;
|
List<Value> get items;
|
||||||
|
|
||||||
/// The key for the next page to be fetched.
|
/// The key for the next page to be fetched.
|
||||||
Key? get nextPageKey => throw _privateConstructorUsedError;
|
Key? get nextPageKey;
|
||||||
|
|
||||||
/// The current error, if any.
|
/// The current error, if any.
|
||||||
StreamChatError? get error => throw _privateConstructorUsedError;
|
StreamChatError? get error;
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
$SuccessCopyWith<Key, Value, Success<Key, Value>> get copyWith =>
|
$SuccessCopyWith<Key, Value, Success<Key, Value>> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
@@ -347,7 +345,8 @@ class _$Loading<Key, Value> extends Loading<Key, Value>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
bool operator ==(dynamic other) {
|
bool operator ==(dynamic other) {
|
||||||
return identical(this, other) || (other is Loading<Key, Value>);
|
return identical(this, other) ||
|
||||||
|
(other.runtimeType == runtimeType && other is Loading<Key, Value>);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -490,14 +489,14 @@ class _$Error<Key, Value> extends Error<Key, Value>
|
|||||||
@override
|
@override
|
||||||
bool operator ==(dynamic other) {
|
bool operator ==(dynamic other) {
|
||||||
return identical(this, other) ||
|
return identical(this, other) ||
|
||||||
(other is Error<Key, Value> &&
|
(other.runtimeType == runtimeType &&
|
||||||
(identical(other.error, error) ||
|
other is Error<Key, Value> &&
|
||||||
const DeepCollectionEquality().equals(other.error, error)));
|
const DeepCollectionEquality().equals(other.error, error));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
int get hashCode =>
|
int get hashCode =>
|
||||||
runtimeType.hashCode ^ const DeepCollectionEquality().hash(error);
|
Object.hash(runtimeType, const DeepCollectionEquality().hash(error));
|
||||||
|
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
@override
|
@override
|
||||||
@@ -583,7 +582,7 @@ abstract class Error<Key, Value> extends PagedValue<Key, Value> {
|
|||||||
const factory Error(StreamChatError error) = _$Error<Key, Value>;
|
const factory Error(StreamChatError error) = _$Error<Key, Value>;
|
||||||
const Error._() : super._();
|
const Error._() : super._();
|
||||||
|
|
||||||
StreamChatError get error => throw _privateConstructorUsedError;
|
StreamChatError get error;
|
||||||
@JsonKey(ignore: true)
|
@JsonKey(ignore: true)
|
||||||
$ErrorCopyWith<Key, Value, Error<Key, Value>> get copyWith =>
|
$ErrorCopyWith<Key, Value, Error<Key, Value>> get copyWith =>
|
||||||
throw _privateConstructorUsedError;
|
throw _privateConstructorUsedError;
|
||||||
+3
-2
@@ -2,8 +2,9 @@ import 'dart:async';
|
|||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
import 'package:stream_chat/stream_chat.dart' hide Success;
|
import 'package:stream_chat/stream_chat.dart' hide Success;
|
||||||
import 'package:stream_chat_flutter/src/paged_value_notifier.dart';
|
import 'package:stream_chat_flutter_core/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/stream_channel_list_event_handler.dart';
|
||||||
|
|
||||||
/// The default channel page limit to load.
|
/// The default channel page limit to load.
|
||||||
const defaultChannelPagedLimit = 10;
|
const defaultChannelPagedLimit = 10;
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
import 'package:stream_chat/stream_chat.dart' show ChannelState, Event;
|
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
|
/// Contains handlers that are called from [StreamChannelListController] for
|
||||||
/// certain [Event]s.
|
/// certain [Event]s.
|
||||||
@@ -7,10 +7,15 @@ export 'src/better_stream_builder.dart';
|
|||||||
export 'src/channel_list_core.dart' hide ChannelListCoreState;
|
export 'src/channel_list_core.dart' hide ChannelListCoreState;
|
||||||
export 'src/channels_bloc.dart';
|
export 'src/channels_bloc.dart';
|
||||||
export 'src/lazy_load_scroll_view.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_list_core.dart' hide MessageListCoreState;
|
||||||
export 'src/message_search_bloc.dart';
|
export 'src/message_search_bloc.dart';
|
||||||
export 'src/message_search_list_core.dart' hide MessageSearchListCoreState;
|
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.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_chat_core.dart';
|
||||||
export 'src/typedef.dart';
|
export 'src/typedef.dart';
|
||||||
export 'src/user_list_core.dart' hide UserListCoreState;
|
export 'src/user_list_core.dart' hide UserListCoreState;
|
||||||
|
|||||||
@@ -14,14 +14,17 @@ dependencies:
|
|||||||
connectivity_plus: ^2.1.0
|
connectivity_plus: ^2.1.0
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
freezed_annotation: ^1.0.0
|
||||||
meta: ^1.3.0
|
meta: ^1.3.0
|
||||||
rxdart: ^0.27.0
|
rxdart: ^0.27.0
|
||||||
stream_chat: ^3.3.1
|
stream_chat: ^3.3.1
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
build_runner: ^2.0.1
|
||||||
dart_code_metrics: ^4.4.0
|
dart_code_metrics: ^4.4.0
|
||||||
fake_async: ^1.2.0
|
fake_async: ^1.2.0
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
freezed: ^1.0.0
|
||||||
mocktail: ^0.2.0
|
mocktail: ^0.2.0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user