30e895299c
* Add followed_tags route. This at least gets us to the point where the page can actually be rendered, although it doesn't display any hashtags (yet?). Attempting to implement #20763. * Fix minor issues. * I've got the followed tags data partially working But the Hashtag component errors for some reason. Something about the value of the history attribute being invalid. * Fix a mistake in the code * Minor change. * Get the followed hashtags list fully working. Still need to add the Follow/Unfollow buttons, though. * Resolve JS linter issues. * Add pagination logic to followed tags list view. However, it currently loads further pages immediately on page load, so that's not ideal. Need to figure that one out. * Appease the linter. * Apply suggestions from code review Co-authored-by: Claire <claire.github-309c@sitedethib.com> * Fixes and resolve some other feedback. * Use set/update instead of setIn/updateIn. Co-authored-by: Claire <claire.github-309c@sitedethib.com>
43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
import {
|
|
FOLLOWED_HASHTAGS_FETCH_REQUEST,
|
|
FOLLOWED_HASHTAGS_FETCH_SUCCESS,
|
|
FOLLOWED_HASHTAGS_FETCH_FAIL,
|
|
FOLLOWED_HASHTAGS_EXPAND_REQUEST,
|
|
FOLLOWED_HASHTAGS_EXPAND_SUCCESS,
|
|
FOLLOWED_HASHTAGS_EXPAND_FAIL,
|
|
} from 'mastodon/actions/tags';
|
|
import { Map as ImmutableMap, List as ImmutableList, fromJS } from 'immutable';
|
|
|
|
const initialState = ImmutableMap({
|
|
items: ImmutableList(),
|
|
isLoading: false,
|
|
next: null,
|
|
});
|
|
|
|
export default function followed_tags(state = initialState, action) {
|
|
switch(action.type) {
|
|
case FOLLOWED_HASHTAGS_FETCH_REQUEST:
|
|
return state.set('isLoading', true);
|
|
case FOLLOWED_HASHTAGS_FETCH_SUCCESS:
|
|
return state.withMutations(map => {
|
|
map.set('items', fromJS(action.followed_tags));
|
|
map.set('isLoading', false);
|
|
map.set('next', action.next);
|
|
});
|
|
case FOLLOWED_HASHTAGS_FETCH_FAIL:
|
|
return state.set('isLoading', false);
|
|
case FOLLOWED_HASHTAGS_EXPAND_REQUEST:
|
|
return state.set('isLoading', true);
|
|
case FOLLOWED_HASHTAGS_EXPAND_SUCCESS:
|
|
return state.withMutations(map => {
|
|
map.update('items', set => set.concat(fromJS(action.followed_tags)));
|
|
map.set('isLoading', false);
|
|
map.set('next', action.next);
|
|
});
|
|
case FOLLOWED_HASHTAGS_EXPAND_FAIL:
|
|
return state.set('isLoading', false);
|
|
default:
|
|
return state;
|
|
}
|
|
};
|