bigbuffet-rw/app/soapbox/reducers/soapbox.js

53 lines
1.4 KiB
JavaScript
Raw Normal View History

2020-08-23 10:48:45 -07:00
import { ADMIN_CONFIG_UPDATE_SUCCESS } from '../actions/admin';
import {
SOAPBOX_CONFIG_REQUEST_SUCCESS,
SOAPBOX_CONFIG_REQUEST_FAIL,
} from '../actions/soapbox';
import { PRELOAD_IMPORT } from 'soapbox/actions/preload';
2020-12-29 21:25:07 -08:00
import { Map as ImmutableMap, fromJS } from 'immutable';
import { ConfigDB } from 'soapbox/utils/config_db';
const initialState = ImmutableMap();
2020-09-02 19:47:46 -07:00
const fallbackState = ImmutableMap({
brandColor: '#0482d8', // Azure
});
2020-12-29 21:25:07 -08:00
const updateFromAdmin = (state, configs) => {
try {
return ConfigDB.find(configs, ':pleroma', ':frontend_configurations')
.get('value')
.find(value => value.getIn(['tuple', 0]) === ':soapbox_fe')
.getIn(['tuple', 1]);
} catch {
return state;
}
2020-08-23 10:48:45 -07:00
};
const preloadImport = (state, action) => {
const path = '/api/pleroma/frontend_configurations';
const feData = action.data[path];
if (feData) {
const soapbox = feData.soapbox_fe;
return soapbox ? fallbackState.mergeDeep(fromJS(soapbox)) : fallbackState;
} else {
return state;
}
};
export default function soapbox(state = initialState, action) {
switch(action.type) {
case PRELOAD_IMPORT:
return preloadImport(state, action);
case SOAPBOX_CONFIG_REQUEST_SUCCESS:
return fromJS(action.soapboxConfig);
case SOAPBOX_CONFIG_REQUEST_FAIL:
2020-09-03 09:10:03 -07:00
return fallbackState.mergeDeep(state);
2020-08-23 10:48:45 -07:00
case ADMIN_CONFIG_UPDATE_SUCCESS:
2020-12-29 21:25:07 -08:00
return updateFromAdmin(state, fromJS(action.configs));
default:
return state;
}
};