about summary refs log tree commit diff
path: root/app/javascript/flavours/glitch/reducers
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2019-03-03 22:18:23 +0100
committerThibaut Girka <thib@sitedethib.com>2019-03-05 21:35:03 +0100
commit8d70a8a19b2d8436a1361b2bdeb42e7949acc7d0 (patch)
tree74d07fd021739ffc493521e90f032f4d11203179 /app/javascript/flavours/glitch/reducers
parent0d19fcc2fb8579a61b87206a9376cf113d82ccf4 (diff)
Add polls
Port front-end parts of 230a012f0090c496fc5cdb011bcc8ed732fd0f5c to glitch-soc
Diffstat (limited to 'app/javascript/flavours/glitch/reducers')
-rw-r--r--app/javascript/flavours/glitch/reducers/index.js2
-rw-r--r--app/javascript/flavours/glitch/reducers/polls.js19
2 files changed, 21 insertions, 0 deletions
diff --git a/app/javascript/flavours/glitch/reducers/index.js b/app/javascript/flavours/glitch/reducers/index.js
index 5b1ec4abc..7b3e0f651 100644
--- a/app/javascript/flavours/glitch/reducers/index.js
+++ b/app/javascript/flavours/glitch/reducers/index.js
@@ -29,6 +29,7 @@ import listEditor from './list_editor';
 import listAdder from './list_adder';
 import filters from './filters';
 import pinnedAccountsEditor from './pinned_accounts_editor';
+import polls from './polls';
 
 const reducers = {
   dropdown_menu,
@@ -61,6 +62,7 @@ const reducers = {
   listAdder,
   filters,
   pinnedAccountsEditor,
+  polls,
 };
 
 export default combineReducers(reducers);
diff --git a/app/javascript/flavours/glitch/reducers/polls.js b/app/javascript/flavours/glitch/reducers/polls.js
new file mode 100644
index 000000000..53d9b1d8c
--- /dev/null
+++ b/app/javascript/flavours/glitch/reducers/polls.js
@@ -0,0 +1,19 @@
+import { POLL_VOTE_SUCCESS, POLL_FETCH_SUCCESS } from 'mastodon/actions/polls';
+import { POLLS_IMPORT } from 'mastodon/actions/importer';
+import { Map as ImmutableMap, fromJS } from 'immutable';
+
+const importPolls = (state, polls) => state.withMutations(map => polls.forEach(poll => map.set(poll.id, fromJS(poll))));
+
+const initialState = ImmutableMap();
+
+export default function polls(state = initialState, action) {
+  switch(action.type) {
+  case POLLS_IMPORT:
+    return importPolls(state, action.polls);
+  case POLL_VOTE_SUCCESS:
+  case POLL_FETCH_SUCCESS:
+    return importPolls(state, [action.poll]);
+  default:
+    return state;
+  }
+}