Fix height cache (#4909)
parent
081f907f90
commit
60944d5dca
@ -0,0 +1,17 @@ |
||||
export const HEIGHT_CACHE_SET = 'HEIGHT_CACHE_SET'; |
||||
export const HEIGHT_CACHE_CLEAR = 'HEIGHT_CACHE_CLEAR'; |
||||
|
||||
export function setHeight (key, id, height) { |
||||
return { |
||||
type: HEIGHT_CACHE_SET, |
||||
key, |
||||
id, |
||||
height, |
||||
}; |
||||
}; |
||||
|
||||
export function clearHeight () { |
||||
return { |
||||
type: HEIGHT_CACHE_CLEAR, |
||||
}; |
||||
}; |
@ -0,0 +1,17 @@ |
||||
import { connect } from 'react-redux'; |
||||
import IntersectionObserverArticle from '../components/intersection_observer_article'; |
||||
import { setHeight } from '../actions/height_cache'; |
||||
|
||||
const makeMapStateToProps = (state, props) => ({ |
||||
cachedHeight: state.getIn(['height_cache', props.saveHeightKey, props.id]), |
||||
}); |
||||
|
||||
const mapDispatchToProps = (dispatch) => ({ |
||||
|
||||
onHeightChange (key, id, height) { |
||||
dispatch(setHeight(key, id, height)); |
||||
}, |
||||
|
||||
}); |
||||
|
||||
export default connect(makeMapStateToProps, mapDispatchToProps)(IntersectionObserverArticle); |
@ -0,0 +1,23 @@ |
||||
import { Map as ImmutableMap } from 'immutable'; |
||||
import { HEIGHT_CACHE_SET, HEIGHT_CACHE_CLEAR } from '../actions/height_cache'; |
||||
|
||||
const initialState = ImmutableMap(); |
||||
|
||||
const setHeight = (state, key, id, height) => { |
||||
return state.update(key, ImmutableMap(), map => map.set(id, height)); |
||||
}; |
||||
|
||||
const clearHeights = () => { |
||||
return ImmutableMap(); |
||||
}; |
||||
|
||||
export default function statuses(state = initialState, action) { |
||||
switch(action.type) { |
||||
case HEIGHT_CACHE_SET: |
||||
return setHeight(state, action.key, action.id, action.height); |
||||
case HEIGHT_CACHE_CLEAR: |
||||
return clearHeights(); |
||||
default: |
||||
return state; |
||||
} |
||||
}; |
Loading…
Reference in new issue