retrieve custom emoji list via API instead of before page load (#7047)
parent
f1867a7388
commit
b08ab329f4
@ -0,0 +1,37 @@ |
|||||||
|
import api from '../api'; |
||||||
|
|
||||||
|
export const CUSTOM_EMOJIS_FETCH_REQUEST = 'CUSTOM_EMOJIS_FETCH_REQUEST'; |
||||||
|
export const CUSTOM_EMOJIS_FETCH_SUCCESS = 'CUSTOM_EMOJIS_FETCH_SUCCESS'; |
||||||
|
export const CUSTOM_EMOJIS_FETCH_FAIL = 'CUSTOM_EMOJIS_FETCH_FAIL'; |
||||||
|
|
||||||
|
export function fetchCustomEmojis() { |
||||||
|
return (dispatch, getState) => { |
||||||
|
dispatch(fetchCustomEmojisRequest()); |
||||||
|
|
||||||
|
api(getState).get('/api/v1/custom_emojis').then(response => { |
||||||
|
dispatch(fetchCustomEmojisSuccess(response.data)); |
||||||
|
}).catch(error => { |
||||||
|
dispatch(fetchCustomEmojisFail(error)); |
||||||
|
}); |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
|
export function fetchCustomEmojisRequest() { |
||||||
|
return { |
||||||
|
type: CUSTOM_EMOJIS_FETCH_REQUEST, |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
|
export function fetchCustomEmojisSuccess(custom_emojis) { |
||||||
|
return { |
||||||
|
type: CUSTOM_EMOJIS_FETCH_SUCCESS, |
||||||
|
custom_emojis, |
||||||
|
}; |
||||||
|
}; |
||||||
|
|
||||||
|
export function fetchCustomEmojisFail(error) { |
||||||
|
return { |
||||||
|
type: CUSTOM_EMOJIS_FETCH_FAIL, |
||||||
|
error, |
||||||
|
}; |
||||||
|
}; |
@ -1,16 +1,15 @@ |
|||||||
import { List as ImmutableList } from 'immutable'; |
import { List as ImmutableList, fromJS as ConvertToImmutable } from 'immutable'; |
||||||
import { STORE_HYDRATE } from '../actions/store'; |
import { CUSTOM_EMOJIS_FETCH_SUCCESS } from '../actions/custom_emojis'; |
||||||
import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light'; |
import { search as emojiSearch } from '../features/emoji/emoji_mart_search_light'; |
||||||
import { buildCustomEmojis } from '../features/emoji/emoji'; |
import { buildCustomEmojis } from '../features/emoji/emoji'; |
||||||
|
|
||||||
const initialState = ImmutableList(); |
const initialState = ImmutableList([]); |
||||||
|
|
||||||
export default function custom_emojis(state = initialState, action) { |
export default function custom_emojis(state = initialState, action) { |
||||||
switch(action.type) { |
if(action.type === CUSTOM_EMOJIS_FETCH_SUCCESS) { |
||||||
case STORE_HYDRATE: |
state = ConvertToImmutable(action.custom_emojis); |
||||||
emojiSearch('', { custom: buildCustomEmojis(action.state.get('custom_emojis', [])) }); |
emojiSearch('', { custom: buildCustomEmojis(state) }); |
||||||
return action.state.get('custom_emojis'); |
|
||||||
default: |
|
||||||
return state; |
|
||||||
} |
} |
||||||
|
|
||||||
|
return state; |
||||||
}; |
}; |
||||||
|
Loading…
Reference in new issue