From 8d643d1a55eea7afcf16b4ab27b24a455d32d2af Mon Sep 17 00:00:00 2001 From: Victor Guedes Date: Mon, 7 Mar 2022 14:22:56 -0300 Subject: [PATCH] refactor: improve comments filtering --- .../comments/src/ui/Comments/Comments.js | 21 +++++-------------- .../src/ui/Comments/CommentsFilter.js | 17 ++++++++++++++- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/plugins-structure/packages/comments/src/ui/Comments/Comments.js b/plugins-structure/packages/comments/src/ui/Comments/Comments.js index 1f6c18f3f..7f626eae5 100644 --- a/plugins-structure/packages/comments/src/ui/Comments/Comments.js +++ b/plugins-structure/packages/comments/src/ui/Comments/Comments.js @@ -3,7 +3,7 @@ import PropTypes from "prop-types"; import { CommentsFilter, CommentsList } from "./"; import { Card, H2 } from "pi-ui"; import styles from "./styles.module.css"; -import { getThreadSchema, sortByNew, sortByOld, sortByTop } from "./utils"; +import { getThreadSchema } from "./utils"; export const Comments = ({ comments, @@ -20,21 +20,10 @@ export const Comments = ({ function handleToggleFlatMode() { setFlat(!isFlat); } - // sort handler - function handleSortComments(op) { - let newCommentsList; - switch (op) { - case "new": - newCommentsList = sortByNew(comments); - break; - case "old": - newCommentsList = sortByOld(comments); - break; - default: - newCommentsList = sortByTop(comments); - break; - } - setSortedComments(newCommentsList); + + function handleSortComments(sortFn) { + const newSortedComments = sortFn(comments); + setSortedComments(newSortedComments); } // Update schema for every filter change diff --git a/plugins-structure/packages/comments/src/ui/Comments/CommentsFilter.js b/plugins-structure/packages/comments/src/ui/Comments/CommentsFilter.js index 9c9a73f7d..5b8979b0d 100644 --- a/plugins-structure/packages/comments/src/ui/Comments/CommentsFilter.js +++ b/plugins-structure/packages/comments/src/ui/Comments/CommentsFilter.js @@ -2,6 +2,7 @@ import React, { useState } from "react"; import { Select, Text, classNames } from "pi-ui"; import PropTypes from "prop-types"; import styles from "./styles.module.css"; +import { sortByNew, sortByOld, sortByTop } from "./utils"; const options = [ { @@ -20,10 +21,24 @@ const options = [ export const CommentsFilter = ({ onSort, onToggleFlatMode, isFlat }) => { const [selected, setSelected] = useState(options[0]); + function handleFilterChanges(option) { setSelected(option); - onSort(option.value); + let sortFn; + switch (option.value) { + case "new": + sortFn = sortByNew; + break; + case "old": + sortFn = sortByOld; + break; + default: + sortFn = sortByTop; + break; + } + onSort(sortFn); } + return (