Skip to content

Commit 8e75783

Browse files
committed
refactor(community_management): update engagement filter logic
- Remove 'hasComment' property from EngagementsFilter class - Update buildEngagementsFilterMap function to handle different filter conditions - Remove 'hasComment' filter option from the UI
1 parent fbb3c36 commit 8e75783

File tree

3 files changed

+18
-34
lines changed

3 files changed

+18
-34
lines changed

lib/community_management/bloc/community_filter/community_filter_state.dart

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,17 @@ class EngagementsFilter extends Equatable {
44
const EngagementsFilter({
55
this.searchQuery,
66
this.selectedStatus,
7-
this.hasComment = false,
87
});
98

109
final String? searchQuery;
1110
final ModerationStatus? selectedStatus;
12-
final bool hasComment;
1311

1412
bool get isFilterActive =>
1513
(searchQuery != null && searchQuery!.isNotEmpty) ||
16-
selectedStatus != null ||
17-
hasComment;
14+
selectedStatus != null;
1815

1916
@override
20-
List<Object?> get props => [searchQuery, selectedStatus, hasComment];
17+
List<Object?> get props => [searchQuery, selectedStatus];
2118
}
2219

2320
class ReportsFilter extends Equatable {

lib/community_management/bloc/community_management_bloc.dart

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,21 +104,27 @@ class CommunityManagementBloc
104104
}
105105

106106
Map<String, dynamic> buildEngagementsFilterMap(EngagementsFilter filter) {
107-
final filterMap = <String, dynamic>{};
107+
final conditions = <Map<String, dynamic>>[];
108+
108109
if (filter.searchQuery != null && filter.searchQuery!.isNotEmpty) {
109-
filterMap['userId'] = filter.searchQuery;
110+
conditions.add({'userId': filter.searchQuery});
110111
}
112+
111113
if (filter.selectedStatus != null) {
112-
filterMap['comment.status'] = {
113-
r'$in': [filter.selectedStatus!.name],
114-
};
114+
if (filter.selectedStatus == ModerationStatus.resolved) {
115+
conditions.add({'comment.status': ModerationStatus.resolved.name});
116+
} else {
117+
conditions.add({'comment.status': filter.selectedStatus!.name});
118+
}
115119
}
116-
if (filter.hasComment) {
117-
filterMap['comment'] = {
118-
r'$ne': null,
119-
};
120+
121+
if (conditions.isEmpty) {
122+
return {};
123+
} else if (conditions.length == 1) {
124+
return conditions.first;
125+
} else {
126+
return {r'$and': conditions};
120127
}
121-
return filterMap;
122128
}
123129

124130
Map<String, dynamic> buildReportsFilterMap(ReportsFilter filter) {

lib/community_management/widgets/community_filter_dialog/community_filter_dialog.dart

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ class _CommunityFilterDialogState extends State<CommunityFilterDialog> {
169169
EngagementsFilter(
170170
searchQuery: query,
171171
selectedStatus: state.engagementsFilter.selectedStatus,
172-
hasComment: state.engagementsFilter.hasComment,
173172
),
174173
),
175174
);
@@ -259,24 +258,6 @@ class _CommunityFilterDialogState extends State<CommunityFilterDialog> {
259258
EngagementsFilter(
260259
searchQuery: state.engagementsFilter.searchQuery,
261260
selectedStatus: item,
262-
hasComment: state.engagementsFilter.hasComment,
263-
),
264-
),
265-
);
266-
},
267-
),
268-
const Divider(height: AppSpacing.lg * 2),
269-
SwitchListTile(
270-
title: Text(l10n.hasCommentFilterLabel),
271-
subtitle: Text(l10n.hasCommentFilterDescription),
272-
value: state.engagementsFilter.hasComment,
273-
onChanged: (value) {
274-
context.read<CommunityFilterBloc>().add(
275-
EngagementsFilterChanged(
276-
EngagementsFilter(
277-
searchQuery: state.engagementsFilter.searchQuery,
278-
selectedStatus: state.engagementsFilter.selectedStatus,
279-
hasComment: value,
280261
),
281262
),
282263
);

0 commit comments

Comments
 (0)