commit: aff22bfdb554207ae73b8946310f7328f645be70
parent: 4b357ecf98f373f5ed31c71ecc1a79d23572cd00
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Thu, 3 Nov 2016 11:06:55 +0100
Add own composed status to home without waiting for websocket event
This makes the UI appear less laggy. After all, the status *is* created
right there and then, it's the distribution to home timelines that can take
a while
Diffstat:
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/app/assets/javascripts/components/actions/compose.jsx b/app/assets/javascripts/components/actions/compose.jsx
@@ -1,5 +1,7 @@
import api from '../api'
+import { updateTimeline } from './timelines';
+
export const COMPOSE_CHANGE = 'COMPOSE_CHANGE';
export const COMPOSE_SUBMIT_REQUEST = 'COMPOSE_SUBMIT_REQUEST';
export const COMPOSE_SUBMIT_SUCCESS = 'COMPOSE_SUBMIT_SUCCESS';
@@ -66,9 +68,13 @@ export function submitComposeRequest() {
};
export function submitComposeSuccess(status) {
- return {
- type: COMPOSE_SUBMIT_SUCCESS,
- status: status
+ return (dispatch, getState) => {
+ dispatch({
+ type: COMPOSE_SUBMIT_SUCCESS,
+ status: status
+ });
+
+ dispatch(updateTimeline('home', status));
};
};
diff --git a/app/assets/javascripts/components/reducers/timelines.jsx b/app/assets/javascripts/components/reducers/timelines.jsx
@@ -95,6 +95,10 @@ const updateTimeline = (state, timeline, status, references) => {
state = normalizeStatus(state, status);
state = state.update(timeline, list => {
+ if (list.includes(status.get('id'))) {
+ return list;
+ }
+
const reblogOfId = status.getIn(['reblog', 'id'], null);
if (reblogOfId !== null) {