Files
frontend-app-discussions/src/discussions/post-comments/data/selectors.js
Awais Ansari 0844ee6875 Perf: improved discussions MFE's components re-rendering and loading time (#513)
* chore: configure WDYR for react profiling

* perf: reduced post content re-rendering

* perf: post content view and it child optimization

* perf: add memoization in post editor

* perf: add memoization in postCommnetsView

* perf: improved endorsed comment view rendering

* perf: improved re-rendering in reply component

* fix: uncomment questionType commentsView

* fix: removed console errors in postContent area

* perf: reduced postType and postId dependancy

* perf: improved re-rendering in discussionHome

* perf: improved re-rendering of postsList and its child components

* perf: improved re-rendering of legacyTopic and learner sidebar

* fix: postFilterBar filter was not updating

* fix: resolve duplicate comment posts issue

* fix: memory leaking issue in comments view

* fix: duplicate topic posts in inContext sidebar

* perf: add lazy loading

* chore: remove WDYR configuration

* fix: alert banner padding

* chore: update package-lock file

* fix: bind tour API call with buttons
2023-05-08 16:21:29 +05:00

51 lines
1.6 KiB
JavaScript

/* eslint-disable import/prefer-default-export */
import { createSelector } from '@reduxjs/toolkit';
const selectCommentsById = state => state.comments.commentsById;
const mapIdToComment = (ids, comments) => ids.map(id => comments[id]);
export const selectCommentOrResponseById = commentOrResponseId => createSelector(
selectCommentsById,
comments => comments[commentOrResponseId],
);
export const selectThreadComments = (threadId, endorsed = null) => createSelector(
[
state => state.comments.commentsInThreads[threadId]?.[endorsed] || [],
selectCommentsById,
],
mapIdToComment,
);
export const selectCommentResponsesIds = commentId => (
state => state.comments.commentsInComments[commentId] || []
);
export const selectCommentResponses = commentId => createSelector(
[
state => state.comments.commentsInComments[commentId] || [],
selectCommentsById,
],
mapIdToComment,
);
export const selectThreadHasMorePages = (threadId, endorsed = null) => (
state => state.comments.pagination[threadId]?.[endorsed]?.hasMorePages || false
);
export const selectThreadCurrentPage = (threadId, endorsed = null) => (
state => state.comments.pagination[threadId]?.[endorsed]?.currentPage || null
);
export const selectCommentHasMorePages = commentId => (
state => state.comments.responsesPagination[commentId]?.hasMorePages || false
);
export const selectCommentCurrentPage = commentId => (
state => state.comments.responsesPagination[commentId]?.currentPage || null
);
export const selectCommentsStatus = state => state.comments.status;
export const selectCommentSortOrder = state => state.comments.sortOrder;