about summary refs log tree commit diff
path: root/app/javascript/mastodon/reducers/statuses.js
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2018-03-11 09:52:59 +0100
committerGitHub <noreply@github.com>2018-03-11 09:52:59 +0100
commitb6003afcdb1b89eb967a2b211e3b4e26aed9ac9d (patch)
tree68723a2a3423bfaaeeb801f17e86a10be6680c73 /app/javascript/mastodon/reducers/statuses.js
parentf5ee2d469bb2ff398571694a95a16c8e819153c9 (diff)
Add show more/less toggle for entire threads in web UI (#6733)
Fix #1258
Diffstat (limited to 'app/javascript/mastodon/reducers/statuses.js')
-rw-r--r--app/javascript/mastodon/reducers/statuses.js15
1 files changed, 13 insertions, 2 deletions
diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js
index cc0d4dacd..5a47e7272 100644
--- a/app/javascript/mastodon/reducers/statuses.js
+++ b/app/javascript/mastodon/reducers/statuses.js
@@ -15,6 +15,8 @@ import {
   CONTEXT_FETCH_SUCCESS,
   STATUS_MUTE_SUCCESS,
   STATUS_UNMUTE_SUCCESS,
+  STATUS_REVEAL,
+  STATUS_HIDE,
 } from '../actions/statuses';
 import {
   TIMELINE_REFRESH_SUCCESS,
@@ -62,8 +64,9 @@ const normalizeStatus = (state, status) => {
   }, {});
 
   normalStatus.search_index = domParser.parseFromString(searchContent, 'text/html').documentElement.textContent;
-  normalStatus.contentHtml = emojify(normalStatus.content, emojiMap);
-  normalStatus.spoilerHtml = emojify(escapeTextContentForBrowser(normalStatus.spoiler_text || ''), emojiMap);
+  normalStatus.contentHtml  = emojify(normalStatus.content, emojiMap);
+  normalStatus.spoilerHtml  = emojify(escapeTextContentForBrowser(normalStatus.spoiler_text || ''), emojiMap);
+  normalStatus.hidden       = normalStatus.sensitive;
 
   return state.update(status.id, ImmutableMap(), map => map.mergeDeep(fromJS(normalStatus)));
 };
@@ -111,6 +114,14 @@ export default function statuses(state = initialState, action) {
     return state.setIn([action.id, 'muted'], true);
   case STATUS_UNMUTE_SUCCESS:
     return state.setIn([action.id, 'muted'], false);
+  case STATUS_REVEAL:
+    return state.withMutations(map => {
+      action.ids.forEach(id => map.setIn([id, 'hidden'], false));
+    });
+  case STATUS_HIDE:
+    return state.withMutations(map => {
+      action.ids.forEach(id => map.setIn([id, 'hidden'], true));
+    });
   case TIMELINE_REFRESH_SUCCESS:
   case TIMELINE_EXPAND_SUCCESS:
   case CONTEXT_FETCH_SUCCESS: