diff options
Diffstat (limited to 'app/javascript/flavours/glitch/reducers/accounts_map.js')
-rw-r--r-- | app/javascript/flavours/glitch/reducers/accounts_map.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/app/javascript/flavours/glitch/reducers/accounts_map.js b/app/javascript/flavours/glitch/reducers/accounts_map.js new file mode 100644 index 000000000..8412ad4d0 --- /dev/null +++ b/app/javascript/flavours/glitch/reducers/accounts_map.js @@ -0,0 +1,20 @@ +import { ACCOUNT_IMPORT, ACCOUNTS_IMPORT } from '../actions/importer'; +import { ACCOUNT_LOOKUP_FAIL } from '../actions/accounts'; +import { Map as ImmutableMap } from 'immutable'; + +export const normalizeForLookup = str => str.toLowerCase(); + +const initialState = ImmutableMap(); + +export default function accountsMap(state = initialState, action) { + switch(action.type) { + case ACCOUNT_LOOKUP_FAIL: + return action.error?.response?.status === 404 ? state.set(normalizeForLookup(action.acct), null) : state; + case ACCOUNT_IMPORT: + return state.set(normalizeForLookup(action.account.acct), action.account.id); + case ACCOUNTS_IMPORT: + return state.withMutations(map => action.accounts.forEach(account => map.set(normalizeForLookup(account.acct), account.id))); + default: + return state; + } +} |