[Glitch] Add timeline read markers API

Port e445a8af64 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
main
Eugen Rochko 2019-09-06 13:55:51 +02:00 committed by Thibaut Girka
parent 5477726f50
commit 3665d554c5
2 changed files with 34 additions and 1 deletions

View File

@ -0,0 +1,30 @@
export const submitMarkers = () => (dispatch, getState) => {
const accessToken = getState().getIn(['meta', 'access_token'], '');
const params = {};
const lastHomeId = getState().getIn(['timelines', 'home', 'items', 0]);
const lastNotificationId = getState().getIn(['notifications', 'items', 0, 'id']);
if (lastHomeId) {
params.home = {
last_read_id: lastHomeId,
};
}
if (lastNotificationId) {
params.notifications = {
last_read_id: lastNotificationId,
};
}
if (Object.keys(params).length === 0) {
return;
}
const client = new XMLHttpRequest();
client.open('POST', '/api/v1/markers', false);
client.setRequestHeader('Content-Type', 'application/json');
client.setRequestHeader('Authorization', `Bearer ${accessToken}`);
client.send(JSON.stringify(params));
};

View File

@ -12,6 +12,7 @@ import { expandHomeTimeline } from 'flavours/glitch/actions/timelines';
import { expandNotifications, notificationsSetVisibility } from 'flavours/glitch/actions/notifications'; import { expandNotifications, notificationsSetVisibility } from 'flavours/glitch/actions/notifications';
import { fetchFilters } from 'flavours/glitch/actions/filters'; import { fetchFilters } from 'flavours/glitch/actions/filters';
import { clearHeight } from 'flavours/glitch/actions/height_cache'; import { clearHeight } from 'flavours/glitch/actions/height_cache';
import { submitMarkers } from 'flavours/glitch/actions/markers';
import { WrappedSwitch, WrappedRoute } from 'flavours/glitch/util/react_router_helpers'; import { WrappedSwitch, WrappedRoute } from 'flavours/glitch/util/react_router_helpers';
import UploadArea from './components/upload_area'; import UploadArea from './components/upload_area';
import ColumnsAreaContainer from './containers/columns_area_container'; import ColumnsAreaContainer from './containers/columns_area_container';
@ -243,7 +244,9 @@ class UI extends React.Component {
}; };
handleBeforeUnload = (e) => { handleBeforeUnload = (e) => {
const { intl, hasComposingText, hasMediaAttachments } = this.props; const { intl, dispatch, hasComposingText, hasMediaAttachments } = this.props;
dispatch(submitMarkers());
if (hasComposingText || hasMediaAttachments) { if (hasComposingText || hasMediaAttachments) {
// Setting returnValue to any string causes confirmation dialog. // Setting returnValue to any string causes confirmation dialog.