Rewrite actions/app.ts and reducers/missed_updates.ts with createAction (#24801)
parent
c98b012583
commit
0999cb4601
6 changed files with 45 additions and 42 deletions
@ -1,17 +0,0 @@ |
||||
export const APP_FOCUS = 'APP_FOCUS'; |
||||
export const APP_UNFOCUS = 'APP_UNFOCUS'; |
||||
|
||||
export const focusApp = () => ({ |
||||
type: APP_FOCUS, |
||||
}); |
||||
|
||||
export const unfocusApp = () => ({ |
||||
type: APP_UNFOCUS, |
||||
}); |
||||
|
||||
export const APP_LAYOUT_CHANGE = 'APP_LAYOUT_CHANGE'; |
||||
|
||||
export const changeLayout = layout => ({ |
||||
type: APP_LAYOUT_CHANGE, |
||||
layout, |
||||
}); |
@ -0,0 +1,10 @@ |
||||
import { createAction } from '@reduxjs/toolkit'; |
||||
|
||||
export const focusApp = createAction('APP_FOCUS'); |
||||
export const unfocusApp = createAction('APP_UNFOCUS'); |
||||
|
||||
type ChangeLayoutPayload = { |
||||
layout: 'mobile' | 'single-column' | 'multi-column'; |
||||
}; |
||||
export const changeLayout = |
||||
createAction<ChangeLayoutPayload>('APP_LAYOUT_CHANGE'); |
@ -1,21 +0,0 @@ |
||||
import { Map as ImmutableMap } from 'immutable'; |
||||
import { NOTIFICATIONS_UPDATE } from 'mastodon/actions/notifications'; |
||||
import { APP_FOCUS, APP_UNFOCUS } from 'mastodon/actions/app'; |
||||
|
||||
const initialState = ImmutableMap({ |
||||
focused: true, |
||||
unread: 0, |
||||
}); |
||||
|
||||
export default function missed_updates(state = initialState, action) { |
||||
switch(action.type) { |
||||
case APP_FOCUS: |
||||
return state.set('focused', true).set('unread', 0); |
||||
case APP_UNFOCUS: |
||||
return state.set('focused', false); |
||||
case NOTIFICATIONS_UPDATE: |
||||
return state.get('focused') ? state : state.update('unread', x => x + 1); |
||||
default: |
||||
return state; |
||||
} |
||||
} |
@ -0,0 +1,31 @@ |
||||
import { Record } from 'immutable'; |
||||
import type { Action } from 'redux'; |
||||
import { NOTIFICATIONS_UPDATE } from '../actions/notifications'; |
||||
import { focusApp, unfocusApp } from '../actions/app'; |
||||
|
||||
type MissedUpdatesState = { |
||||
focused: boolean; |
||||
unread: number; |
||||
}; |
||||
const initialState = Record<MissedUpdatesState>({ |
||||
focused: true, |
||||
unread: 0, |
||||
})(); |
||||
|
||||
export default function missed_updates( |
||||
state = initialState, |
||||
action: Action<string>, |
||||
) { |
||||
switch (action.type) { |
||||
case focusApp.type: |
||||
return state.set('focused', true).set('unread', 0); |
||||
case unfocusApp.type: |
||||
return state.set('focused', false); |
||||
case NOTIFICATIONS_UPDATE: |
||||
return state.get('focused') |
||||
? state |
||||
: state.update('unread', (x) => x + 1); |
||||
default: |
||||
return state; |
||||
} |
||||
} |
Loading…
Reference in new issue