--- /dev/null
+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));
+};
import { expandNotifications, notificationsSetVisibility } from 'flavours/glitch/actions/notifications';
import { fetchFilters } from 'flavours/glitch/actions/filters';
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 UploadArea from './components/upload_area';
import ColumnsAreaContainer from './containers/columns_area_container';
};
handleBeforeUnload = (e) => {
- const { intl, hasComposingText, hasMediaAttachments } = this.props;
+ const { intl, dispatch, hasComposingText, hasMediaAttachments } = this.props;
+
+ dispatch(submitMarkers());
if (hasComposingText || hasMediaAttachments) {
// Setting returnValue to any string causes confirmation dialog.