feat(core): Add ChannelListController.filter and ChannelListController.sort setters.
Signed-off-by: xsahil03x <[email protected]>
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
## Upcoming
|
||||
|
||||
🐞 Fixed
|
||||
|
||||
- [#1269](https://github.com/GetStream/stream-chat-flutter/issues/1269)
|
||||
Fix `ChannelListEventHandler` castError at PagedValue.asSuccess.
|
||||
|
||||
✅ Added
|
||||
|
||||
- Added setters to update `ChannelListController.filter` and `ChannelListController.sort` properties
|
||||
in order to support runtime changes.
|
||||
|
||||
## 4.4.1
|
||||
|
||||
- Updated `stream_chat` dependency to [`4.4.1`](https://pub.dev/packages/stream_chat/changelog).
|
||||
|
||||
@@ -50,7 +50,9 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
this.limit = defaultChannelPagedLimit,
|
||||
this.messageLimit,
|
||||
this.memberLimit,
|
||||
}) : _eventHandler = eventHandler ?? StreamChannelListEventHandler(),
|
||||
}) : _activeFilter = filter,
|
||||
_activeSort = sort,
|
||||
_eventHandler = eventHandler ?? StreamChannelListEventHandler(),
|
||||
super(const PagedValue.loading());
|
||||
|
||||
/// Creates a [StreamChannelListController] from the passed [value].
|
||||
@@ -64,7 +66,9 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
this.limit = defaultChannelPagedLimit,
|
||||
this.messageLimit,
|
||||
this.memberLimit,
|
||||
}) : _eventHandler = eventHandler ?? StreamChannelListEventHandler();
|
||||
}) : _activeFilter = filter,
|
||||
_activeSort = sort,
|
||||
_eventHandler = eventHandler ?? StreamChannelListEventHandler();
|
||||
|
||||
/// The client to use for the channels list.
|
||||
final StreamChatClient client;
|
||||
@@ -78,6 +82,7 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
///
|
||||
/// You can also filter other built-in channel fields.
|
||||
final Filter? filter;
|
||||
Filter? _activeFilter;
|
||||
|
||||
/// The sorting used for the channels matching the filters.
|
||||
///
|
||||
@@ -89,6 +94,7 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
///
|
||||
/// Direction can be ascending or descending.
|
||||
final List<SortOption<ChannelModel>>? sort;
|
||||
List<SortOption<ChannelModel>>? _activeSort;
|
||||
|
||||
/// If true you’ll receive user presence updates via the websocket events
|
||||
final bool presence;
|
||||
@@ -103,6 +109,18 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
/// Number of members to fetch in each channel.
|
||||
final int? memberLimit;
|
||||
|
||||
/// Allows for the change of filters used for channel 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 sort used for channel queries.
|
||||
///
|
||||
/// Use this if you need to support runtime sort changes,
|
||||
/// through custom sort UI.
|
||||
set sort(List<SortOption<ChannelModel>>? value) => _activeSort = value;
|
||||
|
||||
@override
|
||||
Future<void> doInitialLoad() async {
|
||||
final limit = min(
|
||||
@@ -111,8 +129,8 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
);
|
||||
try {
|
||||
await for (final channels in client.queryChannels(
|
||||
filter: filter,
|
||||
sort: sort,
|
||||
filter: _activeFilter,
|
||||
sort: _activeSort,
|
||||
memberLimit: memberLimit,
|
||||
messageLimit: messageLimit,
|
||||
presence: presence,
|
||||
@@ -140,8 +158,8 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
|
||||
try {
|
||||
await for (final channels in client.queryChannels(
|
||||
filter: filter,
|
||||
sort: sort,
|
||||
filter: _activeFilter,
|
||||
sort: _activeSort,
|
||||
memberLimit: memberLimit,
|
||||
messageLimit: messageLimit,
|
||||
presence: presence,
|
||||
@@ -163,6 +181,15 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> refresh({bool resetValue = true}) {
|
||||
if (resetValue) {
|
||||
_activeFilter = filter;
|
||||
_activeSort = sort;
|
||||
}
|
||||
return super.refresh(resetValue: resetValue);
|
||||
}
|
||||
|
||||
/// Replaces the previously loaded channels with [channels] and updates
|
||||
/// the nextPageKey.
|
||||
set channels(List<Channel> channels) {
|
||||
|
||||
Reference in New Issue
Block a user