feat(my-joy-beta): confirm some mutations
This commit is contained in:
parent
929fcf0ab4
commit
4593980883
@ -158,7 +158,7 @@ export default compose(
|
|||||||
proceeded: proceeded || affinityRules.length,
|
proceeded: proceeded || affinityRules.length,
|
||||||
addOpen,
|
addOpen,
|
||||||
affinityRules,
|
affinityRules,
|
||||||
rule,
|
rule
|
||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
connect(null, (dispatch, { affinityRules = [], history }) => ({
|
connect(null, (dispatch, { affinityRules = [], history }) => ({
|
||||||
|
@ -138,12 +138,11 @@ export default compose(
|
|||||||
const pkg = get(form, 'create-instance-package.values.package', '');
|
const pkg = get(form, 'create-instance-package.values.package', '');
|
||||||
const networks = get(form, 'CREATE-INSTANCE-NETWORKS.values', {});
|
const networks = get(form, 'CREATE-INSTANCE-NETWORKS.values', {});
|
||||||
|
|
||||||
const enabled = (
|
const enabled =
|
||||||
name.length &&
|
name.length &&
|
||||||
image.length &&
|
image.length &&
|
||||||
pkg.length &&
|
pkg.length &&
|
||||||
Values(networks).filter(Boolean).length
|
Values(networks).filter(Boolean).length;
|
||||||
);
|
|
||||||
|
|
||||||
if (!enabled) {
|
if (!enabled) {
|
||||||
return {
|
return {
|
||||||
@ -160,7 +159,11 @@ export default compose(
|
|||||||
const userScript = get(values, 'create-instance-user-script', {});
|
const userScript = get(values, 'create-instance-user-script', {});
|
||||||
const tags = receivedTags.map(a => omit(a, 'expanded'));
|
const tags = receivedTags.map(a => omit(a, 'expanded'));
|
||||||
|
|
||||||
const firewall_enabled = get(form, 'CREATE-INSTANCE-FIREWALL.values.enabled', false);
|
const firewall_enabled = get(
|
||||||
|
form,
|
||||||
|
'CREATE-INSTANCE-FIREWALL.values.enabled',
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
tags.push({
|
tags.push({
|
||||||
name: 'triton.cns.disable',
|
name: 'triton.cns.disable',
|
||||||
|
@ -127,12 +127,19 @@ export default compose(
|
|||||||
({ values, form }, { networks }) => {
|
({ values, form }, { networks }) => {
|
||||||
const selected = get(form, `${FORM_NAME}.values`, {});
|
const selected = get(form, `${FORM_NAME}.values`, {});
|
||||||
const empty = id => !includes(Object.keys(selected), id);
|
const empty = id => !includes(Object.keys(selected), id);
|
||||||
const proceeded = get(values, 'create-instance-networks-proceeded', false);
|
|
||||||
const _public = find(networks, ['name', 'Joyent-SDC-Public']);
|
const _public = find(networks, ['name', 'Joyent-SDC-Public']);
|
||||||
|
|
||||||
const initialValues = _public ? {
|
const proceeded = get(
|
||||||
[_public.id]: true
|
values,
|
||||||
} : {};
|
'create-instance-networks-proceeded',
|
||||||
|
false
|
||||||
|
);
|
||||||
|
|
||||||
|
const initialValues = _public
|
||||||
|
? {
|
||||||
|
[_public.id]: true
|
||||||
|
}
|
||||||
|
: {};
|
||||||
|
|
||||||
const _networks = networks.map(({ id, name, ...network }) => {
|
const _networks = networks.map(({ id, name, ...network }) => {
|
||||||
if (empty(id) && name === 'Joyent-SDC-Public') {
|
if (empty(id) && name === 'Joyent-SDC-Public') {
|
||||||
|
@ -11,6 +11,7 @@ import intercept from 'apr-intercept';
|
|||||||
import find from 'lodash.find';
|
import find from 'lodash.find';
|
||||||
import reverse from 'lodash.reverse';
|
import reverse from 'lodash.reverse';
|
||||||
import sort from 'lodash.sortby';
|
import sort from 'lodash.sortby';
|
||||||
|
import includes from 'lodash.includes';
|
||||||
import remcalc from 'remcalc';
|
import remcalc from 'remcalc';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -30,6 +31,7 @@ import RemoveInstance from '@graphql/remove-instance.gql';
|
|||||||
import ToolbarForm from '@components/instances/toolbar';
|
import ToolbarForm from '@components/instances/toolbar';
|
||||||
import Index from '@state/gen-index';
|
import Index from '@state/gen-index';
|
||||||
import parseError from '@state/parse-error';
|
import parseError from '@state/parse-error';
|
||||||
|
import Confirm from '@state/confirm';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
default as InstanceList,
|
default as InstanceList,
|
||||||
@ -312,6 +314,19 @@ export default compose(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleAction: async ({ selected, name }) => {
|
handleAction: async ({ selected, name }) => {
|
||||||
|
// eslint-disable-next-line no-alert
|
||||||
|
if (
|
||||||
|
!await Confirm(
|
||||||
|
`Do you want to ${name} ${
|
||||||
|
selected.length === 1
|
||||||
|
? `"${selected[0].name}"`
|
||||||
|
: `${selected.length} snapshots`
|
||||||
|
}`
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const action = ownProps[name];
|
const action = ownProps[name];
|
||||||
const gerund = `${name}ing`;
|
const gerund = `${name}ing`;
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ import UpdateMetadata from '@graphql/update-metadata.gql';
|
|||||||
import DeleteMetadata from '@graphql/delete-metadata.gql';
|
import DeleteMetadata from '@graphql/delete-metadata.gql';
|
||||||
import parseError from '@state/parse-error';
|
import parseError from '@state/parse-error';
|
||||||
import ToolbarForm from '@components/instances/toolbar';
|
import ToolbarForm from '@components/instances/toolbar';
|
||||||
|
import Confirm from '@state/confirm';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AddForm as MetadataAddForm,
|
AddForm as MetadataAddForm,
|
||||||
@ -275,6 +276,15 @@ export default compose(
|
|||||||
return refetch();
|
return refetch();
|
||||||
},
|
},
|
||||||
handleRemove: async form => {
|
handleRemove: async form => {
|
||||||
|
const name = get(
|
||||||
|
find(metadata, ['form', form]),
|
||||||
|
'initialValues.name'
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!await Confirm(`Do you want to remove "${name}"?`)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
dispatch([
|
dispatch([
|
||||||
set({ name: `${form}-removing`, value: true }),
|
set({ name: `${form}-removing`, value: true }),
|
||||||
startSubmit(form)
|
startSubmit(form)
|
||||||
@ -285,20 +295,17 @@ export default compose(
|
|||||||
deleteMetadata({
|
deleteMetadata({
|
||||||
variables: {
|
variables: {
|
||||||
id: instance.id,
|
id: instance.id,
|
||||||
name: get(find(metadata, ['form', form]), 'initialValues.name')
|
name
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
if (err) {
|
const flipSubmitFalse = stopSubmit(form, {
|
||||||
// show mutation error
|
_error: err && parseError(err)
|
||||||
throw new SubmissionError({
|
});
|
||||||
_error: parseError(err)
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
dispatch([
|
dispatch([
|
||||||
stopSubmit(form),
|
flipSubmitFalse,
|
||||||
set({ name: `${form}-removing`, value: false })
|
set({ name: `${form}-removing`, value: false })
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ import ToolbarForm from '@components/instances/toolbar';
|
|||||||
import SnapshotsListActions from '@components/instances/footer';
|
import SnapshotsListActions from '@components/instances/footer';
|
||||||
import parseError from '@state/parse-error';
|
import parseError from '@state/parse-error';
|
||||||
import GenIndex from '@state/gen-index';
|
import GenIndex from '@state/gen-index';
|
||||||
|
import Confirm from '@state/confirm';
|
||||||
|
|
||||||
const MENU_FORM_NAME = 'snapshot-list-menu';
|
const MENU_FORM_NAME = 'snapshot-list-menu';
|
||||||
const TABLE_FORM_NAME = 'snapshot-list-table';
|
const TABLE_FORM_NAME = 'snapshot-list-table';
|
||||||
@ -322,6 +323,19 @@ export default compose(
|
|||||||
},
|
},
|
||||||
|
|
||||||
handleAction: async ({ name, selected = [] }) => {
|
handleAction: async ({ name, selected = [] }) => {
|
||||||
|
// eslint-disable-next-line no-alert
|
||||||
|
if (
|
||||||
|
!await Confirm(
|
||||||
|
`Do you want to ${name} ${
|
||||||
|
selected.length === 1
|
||||||
|
? `"${selected[0].name}"`
|
||||||
|
: `${selected.length} snapshots`
|
||||||
|
}`
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const action = ownProps[name];
|
const action = ownProps[name];
|
||||||
const gerund = `${name}ing`;
|
const gerund = `${name}ing`;
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ import UpdateTags from '@graphql/update-tags.gql';
|
|||||||
import DeleteTag from '@graphql/delete-tag.gql';
|
import DeleteTag from '@graphql/delete-tag.gql';
|
||||||
import Index from '@state/gen-index';
|
import Index from '@state/gen-index';
|
||||||
import parseError from '@state/parse-error';
|
import parseError from '@state/parse-error';
|
||||||
|
import Confirm from '@state/confirm';
|
||||||
|
|
||||||
const MENU_FORM_NAME = 'instance-tags-list-menu';
|
const MENU_FORM_NAME = 'instance-tags-list-menu';
|
||||||
const ADD_FORM_NAME = 'instance-tags-add-new';
|
const ADD_FORM_NAME = 'instance-tags-add-new';
|
||||||
@ -253,6 +254,11 @@ export default compose(
|
|||||||
return refetch();
|
return refetch();
|
||||||
},
|
},
|
||||||
handleRemove: async (form, { name }) => {
|
handleRemove: async (form, { name }) => {
|
||||||
|
// eslint-disable-next-line no-alert
|
||||||
|
if (!await Confirm(`Do you want to remove "${name}"?`)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const { instance, deleteTag, refetch } = ownProps;
|
const { instance, deleteTag, refetch } = ownProps;
|
||||||
|
|
||||||
dispatch([
|
dispatch([
|
||||||
|
5
packages/my-joy-beta/src/state/confirm.js
Normal file
5
packages/my-joy-beta/src/state/confirm.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
export default msg =>
|
||||||
|
new Promise(resolve => {
|
||||||
|
// eslint-disable-next-line no-alert
|
||||||
|
resolve(window.confirm(msg));
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user