Files
2025-10-12 13:42:02 +02:00

42 lines
1.3 KiB
JavaScript

import { Map as ImmutableMap, List as ImmutableList, fromJS } from "immutable";
import {
SERVER_FETCH_REQUEST,
SERVER_FETCH_SUCCESS,
SERVER_FETCH_FAIL,
SERVER_DOMAIN_BLOCKS_FETCH_REQUEST,
SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS,
SERVER_DOMAIN_BLOCKS_FETCH_FAIL,
} from "mastodon/actions/server";
const initialState = ImmutableMap({
server: ImmutableMap({
isLoading: false,
}),
domainBlocks: ImmutableMap({
isLoading: false,
isAvailable: true,
items: ImmutableList(),
}),
});
export default function server(state = initialState, action) {
switch (action.type) {
case SERVER_FETCH_REQUEST:
return state.setIn(["server", "isLoading"], true);
case SERVER_FETCH_SUCCESS:
return state.set("server", fromJS(action.server)).setIn(["server", "isLoading"], false);
case SERVER_FETCH_FAIL:
return state.setIn(["server", "isLoading"], false);
case SERVER_DOMAIN_BLOCKS_FETCH_REQUEST:
return state.setIn(["domainBlocks", "isLoading"], true);
case SERVER_DOMAIN_BLOCKS_FETCH_SUCCESS:
return state.setIn(["domainBlocks", "items"], fromJS(action.blocks)).setIn(["domainBlocks", "isLoading"], false).setIn(["domainBlocks", "isAvailable"], action.isAvailable);
case SERVER_DOMAIN_BLOCKS_FETCH_FAIL:
return state.setIn(["domainBlocks", "isLoading"], false);
default:
return state;
}
}