1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-10-04 11:17:02 +02:00
unleash.unleash/frontend/src/component/addons/form-addon-container.js
Fredrik Strand Oseberg dbed06f300 Feat/material UI (#250)
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>
2021-03-30 15:14:02 +02:00

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;