From d175e86901dda5b54f7caad744f78f347332f821 Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Tue, 12 Apr 2022 18:10:19 +0300
Subject: [PATCH 1/4] fix hashtags by explicitly putting attributes

---
 src/components/rich_content/rich_content.jsx | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/components/rich_content/rich_content.jsx b/src/components/rich_content/rich_content.jsx
index 41e287e4..ca075270 100644
--- a/src/components/rich_content/rich_content.jsx
+++ b/src/components/rich_content/rich_content.jsx
@@ -28,6 +28,10 @@ import './rich_content.scss'
  */
 export default {
   name: 'RichContent',
+  components: {
+    MentionsLine,
+    HashtagLink
+  },
   props: {
     // Original html content
     html: {
@@ -86,7 +90,8 @@ export default {
       if (!encounteredTextReverse) {
         lastTags.push(linkData)
       }
-      return <HashtagLink { ...linkData }/>
+      const { url, tag, content } = linkData
+      return <HashtagLink url={url} tag={tag} content={content}/>
     }
 
     const renderMention = (attrs, children) => {

From 0bb69d7fe026181bb6367ced8a921d0c3a0dc6ba Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Tue, 12 Apr 2022 19:04:32 +0300
Subject: [PATCH 2/4] fix tests

---
 test/unit/specs/components/rich_content.spec.js | 2 --
 1 file changed, 2 deletions(-)

diff --git a/test/unit/specs/components/rich_content.spec.js b/test/unit/specs/components/rich_content.spec.js
index a4920867..958fb997 100644
--- a/test/unit/specs/components/rich_content.spec.js
+++ b/test/unit/specs/components/rich_content.spec.js
@@ -308,10 +308,8 @@ describe('RichContent', () => {
       '<a href="http://macrochan.org/images/N/H/NHCMDUXJPPZ6M3Z2CQ6D2EBRSWGE7MZY.jpg" target="_blank">',
       'NHCMDUXJPPZ6M3Z2CQ6D2EBRSWGE7MZY.jpg</a>',
       ' <hashtag-link-stub url="https://shitposter.club/tag/nou" content="#nou" tag="nou">',
-      '#nou',
       '</hashtag-link-stub>',
       ' <hashtag-link-stub url="https://shitposter.club/tag/screencap" content="#screencap" tag="screencap">',
-      '#screencap',
       '</hashtag-link-stub>',
       ' </p>'
     ].join('')

From a4ea0a30bf02893cea783824c4824a5d1d87ff6c Mon Sep 17 00:00:00 2001
From: Tusooa Zhu <tusooa@kazv.moe>
Date: Tue, 19 Apr 2022 20:20:18 -0400
Subject: [PATCH 3/4] Fix incorrect close of a status popover when clicking
 Expand inside it

basically Vue (3 in particular?) will make changes to DOM before this event
listener is called, and if the target is displayed using v-if, it will not
be part of the DOM at that time, and contains() will return false. so it
goes to call hidePopover() which caused this bug.
---
 src/components/status_body/status_body.vue | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/components/status_body/status_body.vue b/src/components/status_body/status_body.vue
index 24d842c2..976fe98c 100644
--- a/src/components/status_body/status_body.vue
+++ b/src/components/status_body/status_body.vue
@@ -15,14 +15,14 @@
           :emoji="status.emojis"
         />
         <button
-          v-if="longSubject && showingLongSubject"
+          v-show="longSubject && showingLongSubject"
           class="button-unstyled -link tall-subject-hider"
           @click.prevent="toggleShowingLongSubject"
         >
           {{ $t("status.hide_full_subject") }}
         </button>
         <button
-          v-else-if="longSubject"
+          v-show="longSubject && !showingLongSubject"
           class="button-unstyled -link tall-subject-hider"
           @click.prevent="toggleShowingLongSubject"
         >
@@ -34,7 +34,7 @@
         class="text-wrapper"
       >
         <button
-          v-if="hideTallStatus"
+          v-show="hideTallStatus"
           class="button-unstyled -link tall-status-hider"
           :class="{ '-focused': focused }"
           @click.prevent="toggleShowMore"
@@ -54,7 +54,7 @@
         />
 
         <button
-          v-if="hideSubjectStatus"
+          v-show="hideSubjectStatus"
           class="button-unstyled -link cw-status-hider"
           @click.prevent="toggleShowMore"
         >
@@ -85,7 +85,7 @@
           />
         </button>
         <button
-          v-if="showingMore && !fullContent"
+          v-show="showingMore && !fullContent"
           class="button-unstyled -link status-unhider"
           @click.prevent="toggleShowMore"
         >

From 895eda3714e9977d931a5e4a0f215c304df021af Mon Sep 17 00:00:00 2001
From: Henry Jameson <me@hjkos.com>
Date: Wed, 20 Apr 2022 20:19:22 +0300
Subject: [PATCH 4/4] fix some chat errors/warnings that sometimes happen

---
 src/components/chat_title/chat_title.vue | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/components/chat_title/chat_title.vue b/src/components/chat_title/chat_title.vue
index a92028e8..f4706caf 100644
--- a/src/components/chat_title/chat_title.vue
+++ b/src/components/chat_title/chat_title.vue
@@ -14,10 +14,11 @@
       />
     </router-link>
     <RichContent
+      v-if="user"
       class="username"
       :title="'@'+user.screen_name_ui"
       :html="htmlTitle"
-      :emoji="user.emoji"
+      :emoji="user.emoji || []"
     />
   </div>
 </template>