parent
							
								
									cf643d0060
								
							
						
					
					
						commit
						e445a8af64
					
				
					 12 changed files with 219 additions and 2 deletions
				
			
		
							
								
								
									
										30
									
								
								app/javascript/mastodon/actions/markers.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								app/javascript/mastodon/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)); | ||||
| }; | ||||
|  | @ -16,6 +16,7 @@ import { expandNotifications } from '../../actions/notifications'; | |||
| import { fetchFilters } from '../../actions/filters'; | ||||
| import { clearHeight } from '../../actions/height_cache'; | ||||
| import { focusApp, unfocusApp } from 'mastodon/actions/app'; | ||||
| import { submitMarkers } from 'mastodon/actions/markers'; | ||||
| import { WrappedSwitch, WrappedRoute } from './util/react_router_helpers'; | ||||
| import UploadArea from './components/upload_area'; | ||||
| import ColumnsAreaContainer from './containers/columns_area_container'; | ||||
|  | @ -241,7 +242,9 @@ class UI extends React.PureComponent { | |||
|   }; | ||||
| 
 | ||||
|   handleBeforeUnload = e => { | ||||
|     const { intl, isComposing, hasComposingText, hasMediaAttachments } = this.props; | ||||
|     const { intl, dispatch, isComposing, hasComposingText, hasMediaAttachments } = this.props; | ||||
| 
 | ||||
|     dispatch(submitMarkers()); | ||||
| 
 | ||||
|     if (isComposing && (hasComposingText || hasMediaAttachments)) { | ||||
|       // Setting returnValue to any string causes confirmation dialog.
 | ||||
|  |  | |||
		Reference in a new issue