Co-authored-by: Eugen Rochko <eugen@zeonfederated.com> Co-authored-by: Claire <claire.github-309c@sitedethib.com>
		
			
				
	
	
		
			39 lines
		
	
	
		
			993 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			993 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { createReducer } from '@reduxjs/toolkit';
 | |
| 
 | |
| import { submitMarkersAction, fetchMarkers } from 'mastodon/actions/markers';
 | |
| import { compareId } from 'mastodon/compare_id';
 | |
| 
 | |
| const initialState = {
 | |
|   home: '0',
 | |
|   notifications: '0',
 | |
| };
 | |
| 
 | |
| export const markersReducer = createReducer(initialState, (builder) => {
 | |
|   builder.addCase(
 | |
|     submitMarkersAction.fulfilled,
 | |
|     (state, { payload: { home, notifications } }) => {
 | |
|       if (home) state.home = home;
 | |
|       if (notifications) state.notifications = notifications;
 | |
|     },
 | |
|   );
 | |
|   builder.addCase(
 | |
|     fetchMarkers.fulfilled,
 | |
|     (
 | |
|       state,
 | |
|       {
 | |
|         payload: {
 | |
|           markers: { home, notifications },
 | |
|         },
 | |
|       },
 | |
|     ) => {
 | |
|       if (home && compareId(home.last_read_id, state.home) > 0)
 | |
|         state.home = home.last_read_id;
 | |
|       if (
 | |
|         notifications &&
 | |
|         compareId(notifications.last_read_id, state.notifications) > 0
 | |
|       )
 | |
|         state.notifications = notifications.last_read_id;
 | |
|     },
 | |
|   );
 | |
| });
 |