mirror of
https://github.com/Unleash/unleash.git
synced 2025-10-04 11:17:02 +02:00
Co-authored-by: Ivar Conradi Østhus <ivarconr@gmail.com> Co-authored-by: Christopher Kolstad <chriswk@getunleash.ai> Co-authored-by: Christopher Kolstad <git@chriswk.no>
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
import { connect } from 'react-redux';
|
|
import FormComponent from './form-addon-component';
|
|
import { updateAddon, createAddon, fetchAddons } from '../../store/addons/actions';
|
|
import cloneDeep from 'lodash.clonedeep';
|
|
|
|
// Required for to fill the initial form.
|
|
const DEFAULT_DATA = {
|
|
provider: '',
|
|
description: '',
|
|
enabled: true,
|
|
parameters: {},
|
|
events: [],
|
|
};
|
|
|
|
const mapStateToProps = (state, params) => {
|
|
const defaultAddon = cloneDeep(DEFAULT_DATA);
|
|
const editMode = !!params.addonId;
|
|
const addons = state.addons.get('addons').toJS();
|
|
const providers = state.addons.get('providers').toJS();
|
|
|
|
let addon;
|
|
let provider;
|
|
|
|
if (editMode) {
|
|
addon = addons.find(addon => addon.id === +params.addonId) || defaultAddon;
|
|
provider = addon ? providers.find(provider => provider.name === addon.provider) : undefined;
|
|
} else {
|
|
provider = providers.find(provider => provider.name === params.provider);
|
|
addon = { ...defaultAddon, provider: provider ? provider.name : '' };
|
|
}
|
|
|
|
return {
|
|
provider,
|
|
addon,
|
|
editMode,
|
|
};
|
|
};
|
|
|
|
const mapDispatchToProps = (dispatch, ownProps) => {
|
|
const { addonId, history } = ownProps;
|
|
const submit = addonId ? updateAddon : createAddon;
|
|
|
|
return {
|
|
submit: async addonConfig => {
|
|
await submit(addonConfig)(dispatch);
|
|
history.push('/addons');
|
|
},
|
|
fetch: () => fetchAddons()(dispatch),
|
|
cancel: () => history.push('/addons'),
|
|
};
|
|
};
|
|
|
|
const FormAddContainer = connect(mapStateToProps, mapDispatchToProps)(FormComponent);
|
|
|
|
export default FormAddContainer;
|