mirror of https://github.com/mastodon/mastodon
				
				
				
			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