From d41c9a717ca3f52b0a67bbb2b0ab8b0c898bba4b Mon Sep 17 00:00:00 2001
From: lain <lain@soykaf.club>
Date: Sun, 14 Jun 2020 13:16:08 +0200
Subject: [PATCH] Polls: Construct an html field during normalization.

---
 src/components/poll/poll.vue                              | 8 +++++++-
 .../entity_normalizer/entity_normalizer.service.js        | 6 ++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/src/components/poll/poll.vue b/src/components/poll/poll.vue
index 56e91cca50..28f9000684 100644
--- a/src/components/poll/poll.vue
+++ b/src/components/poll/poll.vue
@@ -17,7 +17,7 @@
           <span class="result-percentage">
             {{ percentageForOption(option.votes_count) }}%
           </span>
-          <span>{{ option.title }}</span>
+          <span v-html="option.title_html"></span>
         </div>
         <div
           class="result-fill"
@@ -75,6 +75,12 @@
 @import '../../_variables.scss';
 
 .poll {
+  img.emoji {
+    vertical-align: middle;
+    object-fit: contain;
+    width: 32px;
+    height: 32px;
+  }
   .votes {
     display: flex;
     flex-direction: column;
diff --git a/src/services/entity_normalizer/entity_normalizer.service.js b/src/services/entity_normalizer/entity_normalizer.service.js
index c7ed65a4d4..e93eea5bb7 100644
--- a/src/services/entity_normalizer/entity_normalizer.service.js
+++ b/src/services/entity_normalizer/entity_normalizer.service.js
@@ -258,6 +258,12 @@ export const parseStatus = (data) => {
     output.summary_html = addEmojis(escape(data.spoiler_text), data.emojis)
     output.external_url = data.url
     output.poll = data.poll
+    if (output.poll) {
+      output.poll.options = (output.poll.options || []).map(field => {
+        field.title_html = addEmojis(field.title, data.emojis)
+        return field
+      })
+    }
     output.pinned = data.pinned
     output.muted = data.muted
   } else {
-- 
GitLab