From 0c423ed77173332681d9e595c5f973ac8b4dfc76 Mon Sep 17 00:00:00 2001
From: xaralis <filip.varecha@fragaria.cz>
Date: Mon, 28 Dec 2020 13:08:35 +0100
Subject: [PATCH] feat: parse announcement content as Markdown

---
 src/components/annoucements/Announcement.jsx     | 9 ++++++++-
 src/components/annoucements/AnnouncementList.jsx | 2 +-
 src/utils.js                                     | 1 +
 typings/cf2021.d.ts                              | 1 +
 4 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/components/annoucements/Announcement.jsx b/src/components/annoucements/Announcement.jsx
index 1cd7e38..1ed1045 100644
--- a/src/components/annoucements/Announcement.jsx
+++ b/src/components/annoucements/Announcement.jsx
@@ -75,6 +75,10 @@ const Announcement = ({
     "announcement",
   ].includes(type);
 
+  const htmlContent = {
+    __html: content,
+  };
+
   return (
     <div className={wrapperClassName} ref={ref}>
       <div className="flex items-center justify-between mb-2">
@@ -117,7 +121,10 @@ const Announcement = ({
           </DropdownMenu>
         )}
       </div>
-      <span className="leading-tight text-sm lg:text-base">{content}</span>
+      <div
+        className="leading-tight text-sm lg:text-base content-block"
+        dangerouslySetInnerHTML={htmlContent}
+      ></div>
     </div>
   );
 };
diff --git a/src/components/annoucements/AnnouncementList.jsx b/src/components/annoucements/AnnouncementList.jsx
index 3e3ba8d..a14a35f 100644
--- a/src/components/annoucements/AnnouncementList.jsx
+++ b/src/components/annoucements/AnnouncementList.jsx
@@ -43,7 +43,7 @@ const AnnouncementList = ({
           key={item.id}
           datetime={item.datetime}
           type={item.type}
-          content={item.content}
+          content={item.contentHtml}
           link={item.link}
           seen={item.seen}
           canRunActions={canRunActions}
diff --git a/src/utils.js b/src/utils.js
index 2ff66b9..b860c96 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -164,6 +164,7 @@ export const parseRawPost = (rawPost) => {
 export const parseRawAnnouncement = (rawAnnouncement) => {
   const announcement = {
     ...pick(rawAnnouncement, ["id", "content", "link"]),
+    contentHtml: markdownConverter.makeHtml(rawAnnouncement.content),
     datetime: parse(
       rawAnnouncement.datetime,
       "yyyy-MM-dd HH:mm:ss",
diff --git a/typings/cf2021.d.ts b/typings/cf2021.d.ts
index 135e0bc..2afcdfe 100644
--- a/typings/cf2021.d.ts
+++ b/typings/cf2021.d.ts
@@ -70,6 +70,7 @@ declare namespace CF2021 {
     datetime: Date;
     type: AnnouncementType;
     content: string;
+    contentHtml: string;
     link?: string;
     relatedPostId: string;
     seen: boolean;
-- 
GitLab