[Glitch] Add timeline read markers API
Port e445a8af64 to glitch-soc
Signed-off-by: Thibaut Girka <thib@sitedethib.com>
			
			
This commit is contained in:
		
				
					committed by
					
						
						Thibaut Girka
					
				
			
			
				
	
			
			
			
						parent
						
							5477726f50
						
					
				
				
					commit
					3665d554c5
				
			
							
								
								
									
										30
									
								
								app/javascript/flavours/glitch/actions/markers.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								app/javascript/flavours/glitch/actions/markers.js
									
									
									
									
									
										Normal 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));
 | 
			
		||||
};
 | 
			
		||||
@@ -12,6 +12,7 @@ import { expandHomeTimeline } from 'flavours/glitch/actions/timelines';
 | 
			
		||||
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';
 | 
			
		||||
@@ -243,7 +244,9 @@ class UI extends React.Component {
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  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.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user