[Glitch] Add timeline read markers API
Port e445a8af64908b2bdb721bec74c113e8258a129b to glitch-soc Signed-off-by: Thibaut Girka <thib@sitedethib.com>
This commit is contained in:
		
							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 { 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.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user