Files
frontend-app-discussions/src/discussions/topics/utils.js
Bilal Qamar 70f6541585 build: edx namespace packages upgrade & resolved respective eslint issue (#508)
* refactor: updated frontend-build, frontend-platform, header & footer packages

* fix: resolved eslint issues post frontend-build upgrade

* refactor: resolved eslint issues

* refactor: pinned frontend-build & changed suggested function definitions
2023-05-24 11:55:28 +05:00

35 lines
1.1 KiB
JavaScript

import { DiscussionProvider } from '../../data/constants';
export default function countFilteredTopics(topicsSelector, provider) {
let count = 0;
const query = topicsSelector?.filter?.trim().toLowerCase();
// Counting non-courseware topics
const nonCoursewareTopicsList = topicsSelector.nonCoursewareIds?.map(
id => topicsSelector.topics[id],
).filter(item => (query
? item.name.toLowerCase().includes(query)
: true
));
count += nonCoursewareTopicsList?.length ?? 0;
// Counting legacy topics
if (provider === DiscussionProvider.LEGACY) {
const categories = topicsSelector?.categoryIds;
const filteredTopics = categories?.map(categoryId => {
const topics = topicsSelector.topicsInCategory[categoryId]?.map(
id => topicsSelector.topics[id],
) || [];
const matchesFilter = query ? categoryId?.toLowerCase().includes(query) : true;
return topics.filter(
topic => (
query
? (topic.name.toLowerCase()
.includes(query) || matchesFilter)
: true
),
);
});
count += [].concat(...filteredTopics).length;
}
return count;
}