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