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
|
## Upcoming
|
||||||
|
|
||||||
|
🐞 Fixed
|
||||||
|
|
||||||
- [#1269](https://github.com/GetStream/stream-chat-flutter/issues/1269)
|
- [#1269](https://github.com/GetStream/stream-chat-flutter/issues/1269)
|
||||||
Fix `ChannelListEventHandler` castError at PagedValue.asSuccess.
|
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
|
## 4.4.1
|
||||||
|
|
||||||
- Updated `stream_chat` dependency to [`4.4.1`](https://pub.dev/packages/stream_chat/changelog).
|
- 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.limit = defaultChannelPagedLimit,
|
||||||
this.messageLimit,
|
this.messageLimit,
|
||||||
this.memberLimit,
|
this.memberLimit,
|
||||||
}) : _eventHandler = eventHandler ?? StreamChannelListEventHandler(),
|
}) : _activeFilter = filter,
|
||||||
|
_activeSort = sort,
|
||||||
|
_eventHandler = eventHandler ?? StreamChannelListEventHandler(),
|
||||||
super(const PagedValue.loading());
|
super(const PagedValue.loading());
|
||||||
|
|
||||||
/// Creates a [StreamChannelListController] from the passed [value].
|
/// Creates a [StreamChannelListController] from the passed [value].
|
||||||
@@ -64,7 +66,9 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
|||||||
this.limit = defaultChannelPagedLimit,
|
this.limit = defaultChannelPagedLimit,
|
||||||
this.messageLimit,
|
this.messageLimit,
|
||||||
this.memberLimit,
|
this.memberLimit,
|
||||||
}) : _eventHandler = eventHandler ?? StreamChannelListEventHandler();
|
}) : _activeFilter = filter,
|
||||||
|
_activeSort = sort,
|
||||||
|
_eventHandler = eventHandler ?? StreamChannelListEventHandler();
|
||||||
|
|
||||||
/// The client to use for the channels list.
|
/// The client to use for the channels list.
|
||||||
final StreamChatClient client;
|
final StreamChatClient client;
|
||||||
@@ -78,6 +82,7 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
|||||||
///
|
///
|
||||||
/// You can also filter other built-in channel fields.
|
/// You can also filter other built-in channel fields.
|
||||||
final Filter? filter;
|
final Filter? filter;
|
||||||
|
Filter? _activeFilter;
|
||||||
|
|
||||||
/// The sorting used for the channels matching the filters.
|
/// 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.
|
/// Direction can be ascending or descending.
|
||||||
final List<SortOption<ChannelModel>>? sort;
|
final List<SortOption<ChannelModel>>? sort;
|
||||||
|
List<SortOption<ChannelModel>>? _activeSort;
|
||||||
|
|
||||||
/// If true you’ll receive user presence updates via the websocket events
|
/// If true you’ll receive user presence updates via the websocket events
|
||||||
final bool presence;
|
final bool presence;
|
||||||
@@ -103,6 +109,18 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
|||||||
/// Number of members to fetch in each channel.
|
/// Number of members to fetch in each channel.
|
||||||
final int? memberLimit;
|
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
|
@override
|
||||||
Future<void> doInitialLoad() async {
|
Future<void> doInitialLoad() async {
|
||||||
final limit = min(
|
final limit = min(
|
||||||
@@ -111,8 +129,8 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
|||||||
);
|
);
|
||||||
try {
|
try {
|
||||||
await for (final channels in client.queryChannels(
|
await for (final channels in client.queryChannels(
|
||||||
filter: filter,
|
filter: _activeFilter,
|
||||||
sort: sort,
|
sort: _activeSort,
|
||||||
memberLimit: memberLimit,
|
memberLimit: memberLimit,
|
||||||
messageLimit: messageLimit,
|
messageLimit: messageLimit,
|
||||||
presence: presence,
|
presence: presence,
|
||||||
@@ -140,8 +158,8 @@ class StreamChannelListController extends PagedValueNotifier<int, Channel> {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
await for (final channels in client.queryChannels(
|
await for (final channels in client.queryChannels(
|
||||||
filter: filter,
|
filter: _activeFilter,
|
||||||
sort: sort,
|
sort: _activeSort,
|
||||||
memberLimit: memberLimit,
|
memberLimit: memberLimit,
|
||||||
messageLimit: messageLimit,
|
messageLimit: messageLimit,
|
||||||
presence: presence,
|
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
|
/// Replaces the previously loaded channels with [channels] and updates
|
||||||
/// the nextPageKey.
|
/// the nextPageKey.
|
||||||
set channels(List<Channel> channels) {
|
set channels(List<Channel> channels) {
|
||||||
|
|||||||
Reference in New Issue
Block a user