From 0554cac113555b948cdad3d9f14ec6f548c93c01 Mon Sep 17 00:00:00 2001
From: Vivian Lim <vivlim@pm.me>
Date: Wed, 27 Jun 2018 22:43:22 -0700
Subject: [PATCH] Add click-to-show content warnings on posts

---
 src/components/status/status.js  |  6 +++++-
 src/components/status/status.vue | 22 +++++++++++++++++++++-
 2 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/src/components/status/status.js b/src/components/status/status.js
index 87ef90d8..9f88d38c 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -28,7 +28,8 @@ const Status = {
     userExpanded: false,
     preview: null,
     showPreview: false,
-    showingTall: false
+    showingTall: false,
+    showingContentWarningContent: false
   }),
   computed: {
     muteWords () {
@@ -145,6 +146,9 @@ const Status = {
     toggleShowTall () {
       this.showingTall = !this.showingTall
     },
+    toggleContentWarningContent () {
+      this.showingContentWarningContent = !this.showingContentWarningContent
+    },
     replyEnter (id, event) {
       this.showPreview = true
       const targetId = Number(id)
diff --git a/src/components/status/status.vue b/src/components/status/status.vue
index f88c810d..cffa8e26 100644
--- a/src/components/status/status.vue
+++ b/src/components/status/status.vue
@@ -73,7 +73,16 @@
 
           <div :class="{'tall-status': hideTallStatus}" class="status-content-wrapper">
             <a class="tall-status-hider" :class="{ 'tall-status-hider_focused': isFocused }" v-if="hideTallStatus" href="#" @click.prevent="toggleShowTall">Show more</a>
-            <div @click.prevent="linkClicked" class="status-content media-body" v-html="status.statusnet_html"></div>
+            <div v-if="status.summary" @click.prevent="linkClicked" class="status-content media-body">
+              <div class="contentWarningLabel">
+                <span v-html="status.summary"></span>
+                <button v-if="showingContentWarningContent" @click.prevent="toggleContentWarningContent">Hide</button>
+                <button v-else @click.prevent="toggleContentWarningContent">Show</button>
+              </div>
+              <div v-if="showingContentWarningContent" v-html="status.content" class="contentWarnedContent"></div>
+              <div v-else class="hiddenContent" @click.prevent="toggleContentWarningContent">Click to view this post.</div>
+            </div>
+            <div v-else @click.prevent="linkClicked" class="status-content media-body" v-html="status.statusnet_html"></div>
             <a v-if="showingTall" href="#" class="tall-status-unhider" @click.prevent="toggleShowTall">Show less</a>
           </div>
 
@@ -488,4 +497,15 @@ a.unmute {
   }
 }
 
+.hiddenContent {
+  margin: 8px;
+  padding: 32px;
+    background: var(--lightBg, $fallback--lightBg);
+  color: #CCCCCC;
+    border-radius: var(--panelRadius, $fallback--panelRadius);
+}
+.contentWarnedContent {
+  margin: 8px;
+}
+
 </style>