From d923cfa522c19ff7b533e64d4e00438196000246 Mon Sep 17 00:00:00 2001
From: Pavlos Smith <57727226+iByteABit256@users.noreply.github.com>
Date: Fri, 4 Aug 2023 23:32:07 +0300
Subject: [PATCH] Lemmy 2515 controversial posts and comments (#1727)

* Added buttons to be able to sort posts and comments by controversy rank

* Added buttons to be able to sort posts and comments by controversy rank

* lost changes

* Hiding controversial sort if downvotes disabled (unfinished)

* Finished hiding sort option correctly

* Removed newline

* Removed hiding logic for now, this should be included in a future PR

* woodpecker re-run

* woodpecker re-run

* woodpecker re-run

* Update lemmy js-client version

---------

Co-authored-by: Dessalines <dessalines@users.noreply.github.com>
Co-authored-by: SleeplessOne1917 <abias1122@gmail.com>
---
 package.json                                     |  2 +-
 .../components/common/comment-sort-select.tsx    |  3 +++
 src/shared/components/common/sort-select.tsx     |  3 +++
 src/shared/components/post/post.tsx              | 16 ++++++++++++++++
 4 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/package.json b/package.json
index 27b9cb4..8e3694b 100644
--- a/package.json
+++ b/package.json
@@ -67,7 +67,7 @@
     "inferno-router": "^8.2.2",
     "inferno-server": "^8.2.2",
     "jwt-decode": "^3.1.2",
-    "lemmy-js-client": "0.18.1",
+    "lemmy-js-client": "0.19.0-rc.1",
     "lodash.isequal": "^4.5.0",
     "markdown-it": "^13.0.1",
     "markdown-it-container": "^3.0.0",
diff --git a/src/shared/components/common/comment-sort-select.tsx b/src/shared/components/common/comment-sort-select.tsx
index ad4eebf..f911558 100644
--- a/src/shared/components/common/comment-sort-select.tsx
+++ b/src/shared/components/common/comment-sort-select.tsx
@@ -48,6 +48,9 @@ export class CommentSortSelect extends Component<
             {I18NextService.i18n.t("sort_type")}
           </option>
           <option value={"Hot"}>{I18NextService.i18n.t("hot")}</option>,
+          <option value={"Controversial"}>
+            {I18NextService.i18n.t("controversial")}
+          </option>
           <option value={"Top"}>{I18NextService.i18n.t("top")}</option>,
           <option value={"New"}>{I18NextService.i18n.t("new")}</option>
           <option value={"Old"}>{I18NextService.i18n.t("old")}</option>
diff --git a/src/shared/components/common/sort-select.tsx b/src/shared/components/common/sort-select.tsx
index 088f45e..fe9ba4d 100644
--- a/src/shared/components/common/sort-select.tsx
+++ b/src/shared/components/common/sort-select.tsx
@@ -54,6 +54,9 @@ export class SortSelect extends Component<SortSelectProps, SortSelectState> {
               {I18NextService.i18n.t("active")}
             </option>,
           ]}
+          <option value={"Controversial"}>
+            {I18NextService.i18n.t("controversial")}
+          </option>
           <option value={"New"}>{I18NextService.i18n.t("new")}</option>
           <option value={"Old"}>{I18NextService.i18n.t("old")}</option>
           {!this.props.hideMostComments && [
diff --git a/src/shared/components/post/post.tsx b/src/shared/components/post/post.tsx
index 0401228..49e7348 100644
--- a/src/shared/components/post/post.tsx
+++ b/src/shared/components/post/post.tsx
@@ -478,6 +478,22 @@ export class Post extends Component<any, PostState> {
           >
             {I18NextService.i18n.t("top")}
           </label>
+          <input
+            id={`${radioId}-controversial`}
+            type="radio"
+            className="btn-check"
+            value={"Controversial"}
+            checked={this.state.commentSort === "Controversial"}
+            onChange={linkEvent(this, this.handleCommentSortChange)}
+          />
+          <label
+            htmlFor={`${radioId}-controversial`}
+            className={classNames("btn btn-outline-secondary pointer", {
+              active: this.state.commentSort === "Controversial",
+            })}
+          >
+            {I18NextService.i18n.t("controversial")}
+          </label>
           <input
             id={`${radioId}-new`}
             type="radio"
-- 
2.44.1