From 03c76d7a6e5c5529e39f245dd350c0bc8abbd128 Mon Sep 17 00:00:00 2001 From: Dominik Guzei Date: Tue, 26 Mar 2019 16:25:49 +0100 Subject: indicate any server interaction with spinners and infoboxes --- src/features/workspaces/api.js | 2 +- .../workspaces/components/CreateWorkspaceForm.js | 7 ++- .../workspaces/components/EditWorkspaceForm.js | 59 +++++++++------------- .../workspaces/components/WorkspacesDashboard.js | 38 ++++++++++++-- .../workspaces/containers/EditWorkspaceScreen.js | 5 +- .../workspaces/containers/WorkspacesScreen.js | 9 +++- src/i18n/locales/defaultMessages.json | 35 +++++++++---- src/i18n/locales/en-US.json | 5 +- .../workspaces/components/CreateWorkspaceForm.json | 2 +- .../workspaces/components/EditWorkspaceForm.json | 20 ++++---- .../workspaces/components/WorkspacesDashboard.json | 13 +++++ 11 files changed, 127 insertions(+), 68 deletions(-) (limited to 'src') diff --git a/src/features/workspaces/api.js b/src/features/workspaces/api.js index 3da265e5e..0ec20c9ea 100644 --- a/src/features/workspaces/api.js +++ b/src/features/workspaces/api.js @@ -36,7 +36,7 @@ export const workspaceApi = { const result = await sendAuthRequest(url, { method: 'DELETE' }); debug('deleteWorkspace RESULT', result); if (!result.ok) throw result; - return (await result.json()).deleted; + return true; }, updateWorkspace: async (workspace) => { diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js index 83f6e07f7..8b5039246 100644 --- a/src/features/workspaces/components/CreateWorkspaceForm.js +++ b/src/features/workspaces/components/CreateWorkspaceForm.js @@ -10,7 +10,7 @@ import { required } from '../../../helpers/validation-helpers'; const messages = defineMessages({ submitButton: { id: 'settings.workspace.add.form.submitButton', - defaultMessage: '!!!Save workspace', + defaultMessage: '!!!Create workspace', }, name: { id: 'settings.workspace.add.form.name', @@ -40,6 +40,7 @@ class CreateWorkspaceForm extends Component { static propTypes = { classes: PropTypes.object.isRequired, + isSubmitting: PropTypes.bool.isRequired, onSubmit: PropTypes.func.isRequired, }; @@ -69,7 +70,7 @@ class CreateWorkspaceForm extends Component { render() { const { intl } = this.context; - const { classes } = this.props; + const { classes, isSubmitting } = this.props; const { form } = this; return (
@@ -84,6 +85,8 @@ class CreateWorkspaceForm extends Component { type="submit" label={intl.formatMessage(messages.submitButton)} onClick={this.submitForm.bind(this, form)} + busy={isSubmitting} + buttonType={isSubmitting ? 'secondary' : 'primary'} />
); diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js index 48090f608..a9fd4d21c 100644 --- a/src/features/workspaces/components/EditWorkspaceForm.js +++ b/src/features/workspaces/components/EditWorkspaceForm.js @@ -11,6 +11,7 @@ import Service from '../../../models/Service'; import Form from '../../../lib/Form'; import { required } from '../../../helpers/validation-helpers'; import ServiceListItem from './ServiceListItem'; +import Request from '../../../stores/lib/Request'; const messages = defineMessages({ buttonDelete: { @@ -52,12 +53,12 @@ class EditWorkspaceForm extends Component { static propTypes = { classes: PropTypes.object.isRequired, - isDeleting: PropTypes.bool.isRequired, - isSaving: PropTypes.bool.isRequired, onDelete: PropTypes.func.isRequired, onSave: PropTypes.func.isRequired, services: PropTypes.arrayOf(PropTypes.instanceOf(Service)).isRequired, workspace: PropTypes.instanceOf(Workspace).isRequired, + updateWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, + deleteWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, }; form = this.prepareWorkspaceForm(this.props.workspace); @@ -112,14 +113,16 @@ class EditWorkspaceForm extends Component { const { intl } = this.context; const { classes, - isDeleting, - isSaving, onDelete, workspace, services, + deleteWorkspaceRequest, + updateWorkspaceRequest, } = this.props; const { form } = this; const workspaceServices = form.$('services').value; + const isDeleting = deleteWorkspaceRequest.isExecuting; + const isSaving = updateWorkspaceRequest.isExecuting; return (
@@ -151,38 +154,24 @@ class EditWorkspaceForm extends Component {
{/* ===== Delete Button ===== */} - {isDeleting ? ( -
); diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 3db38aff4..b31581a5b 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js @@ -32,6 +32,10 @@ const messages = defineMessages({ id: 'settings.workspaces.updatedInfo', defaultMessage: '!!!Your changes have been saved', }, + deletedInfo: { + id: 'settings.workspaces.deletedInfo', + defaultMessage: '!!!Workspace has been deleted', + }, }); const styles = () => ({ @@ -49,6 +53,8 @@ class WorkspacesDashboard extends Component { static propTypes = { classes: PropTypes.object.isRequired, getUserWorkspacesRequest: PropTypes.instanceOf(Request).isRequired, + createWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, + deleteWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, updateWorkspaceRequest: PropTypes.instanceOf(Request).isRequired, onCreateWorkspaceSubmit: PropTypes.func.isRequired, onWorkspaceClick: PropTypes.func.isRequired, @@ -63,38 +69,63 @@ class WorkspacesDashboard extends Component { const { classes, getUserWorkspacesRequest, + createWorkspaceRequest, + deleteWorkspaceRequest, updateWorkspaceRequest, onCreateWorkspaceSubmit, onWorkspaceClick, workspaces, } = this.props; const { intl } = this.context; + console.log(deleteWorkspaceRequest.result); return (

{intl.formatMessage(messages.headline)}

+ + {/* ===== Workspace updated info ===== */} {updateWorkspaceRequest.wasExecuted && updateWorkspaceRequest.result && ( {intl.formatMessage(messages.updatedInfo)} )} + + {/* ===== Workspace deleted info ===== */} + {deleteWorkspaceRequest.wasExecuted && deleteWorkspaceRequest.result && ( + + + {intl.formatMessage(messages.deletedInfo)} + + + )} + + {/* ===== Create workspace form ===== */}
- +
+ {getUserWorkspacesRequest.isExecuting ? ( ) : ( + {/* ===== Workspace could not be loaded error ===== */} {getUserWorkspacesRequest.error ? ( ) : ( + {/* ===== Workspaces list ===== */} {workspaces.map(workspace => ( ); diff --git a/src/features/workspaces/containers/WorkspacesScreen.js b/src/features/workspaces/containers/WorkspacesScreen.js index 3f41de0c2..2ab565fa1 100644 --- a/src/features/workspaces/containers/WorkspacesScreen.js +++ b/src/features/workspaces/containers/WorkspacesScreen.js @@ -4,7 +4,12 @@ import PropTypes from 'prop-types'; import WorkspacesDashboard from '../components/WorkspacesDashboard'; import ErrorBoundary from '../../../components/util/ErrorBoundary'; import { workspaceStore } from '../index'; -import { getUserWorkspacesRequest, updateWorkspaceRequest } from '../api'; +import { + createWorkspaceRequest, + deleteWorkspaceRequest, + getUserWorkspacesRequest, + updateWorkspaceRequest, +} from '../api'; @inject('actions') @observer class WorkspacesScreen extends Component { @@ -23,6 +28,8 @@ class WorkspacesScreen extends Component { actions.workspaces.create(data)} onWorkspaceClick={w => actions.workspaces.edit({ workspace: w })} diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 891ad38d4..4b6a8eca9 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json @@ -3222,7 +3222,7 @@ { "descriptors": [ { - "defaultMessage": "!!!Save workspace", + "defaultMessage": "!!!Create workspace", "end": { "column": 3, "line": 14 @@ -3256,65 +3256,65 @@ "defaultMessage": "!!!Delete workspace", "end": { "column": 3, - "line": 19 + "line": 20 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.buttonDelete", "start": { "column": 16, - "line": 16 + "line": 17 } }, { "defaultMessage": "!!!Save workspace", "end": { "column": 3, - "line": 23 + "line": 24 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.buttonSave", "start": { "column": 14, - "line": 20 + "line": 21 } }, { "defaultMessage": "!!!Name", "end": { "column": 3, - "line": 27 + "line": 28 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.name", "start": { "column": 8, - "line": 24 + "line": 25 } }, { "defaultMessage": "!!!Your workspaces", "end": { "column": 3, - "line": 31 + "line": 32 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.yourWorkspaces", "start": { "column": 18, - "line": 28 + "line": 29 } }, { "defaultMessage": "!!!Services in this Workspace", "end": { "column": 3, - "line": 35 + "line": 36 }, "file": "src/features/workspaces/components/EditWorkspaceForm.js", "id": "settings.workspace.form.servicesInWorkspaceHeadline", "start": { "column": 31, - "line": 32 + "line": 33 } } ], @@ -3448,6 +3448,19 @@ "column": 15, "line": 31 } + }, + { + "defaultMessage": "!!!Workspace has been deleted", + "end": { + "column": 3, + "line": 38 + }, + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "id": "settings.workspaces.deletedInfo", + "start": { + "column": 15, + "line": 35 + } } ], "path": "src/features/workspaces/components/WorkspacesDashboard.json" diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index ad179bc1d..5f7254317 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json @@ -243,16 +243,17 @@ "settings.user.form.lastname": "Last Name", "settings.user.form.newPassword": "New password", "settings.workspace.add.form.name": "Name", - "settings.workspace.add.form.submitButton": "Save workspace", + "settings.workspace.add.form.submitButton": "Create workspace", "settings.workspace.form.buttonDelete": "Delete workspace", "settings.workspace.form.buttonSave": "Save workspace", "settings.workspace.form.name": "Name", "settings.workspace.form.servicesInWorkspaceHeadline": "Services in this Workspace", "settings.workspace.form.yourWorkspaces": "Your workspaces", + "settings.workspaces.deletedInfo": "Workspace has been deleted", "settings.workspaces.headline": "Your workspaces", "settings.workspaces.noWorkspacesAdded": "You haven't added any workspaces yet.", "settings.workspaces.tryReloadWorkspaces": "Try again", - "settings.workspaces.updatedInfo": "!!!Your changes have been saved", + "settings.workspaces.updatedInfo": "Your changes have been saved", "settings.workspaces.workspacesRequestFailed": "Could not load your workspaces", "sidebar.addNewService": "Add new service", "sidebar.closeWorkspaceDrawer": "Close workspace drawer", diff --git a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json index 1d5063a97..7cc1a374f 100644 --- a/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json +++ b/src/i18n/messages/src/features/workspaces/components/CreateWorkspaceForm.json @@ -1,7 +1,7 @@ [ { "id": "settings.workspace.add.form.submitButton", - "defaultMessage": "!!!Save workspace", + "defaultMessage": "!!!Create workspace", "file": "src/features/workspaces/components/CreateWorkspaceForm.js", "start": { "line": 11, diff --git a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json index 467f49cda..8a26bf45a 100644 --- a/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json +++ b/src/i18n/messages/src/features/workspaces/components/EditWorkspaceForm.json @@ -4,11 +4,11 @@ "defaultMessage": "!!!Delete workspace", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 16, + "line": 17, "column": 16 }, "end": { - "line": 19, + "line": 20, "column": 3 } }, @@ -17,11 +17,11 @@ "defaultMessage": "!!!Save workspace", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 20, + "line": 21, "column": 14 }, "end": { - "line": 23, + "line": 24, "column": 3 } }, @@ -30,11 +30,11 @@ "defaultMessage": "!!!Name", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 24, + "line": 25, "column": 8 }, "end": { - "line": 27, + "line": 28, "column": 3 } }, @@ -43,11 +43,11 @@ "defaultMessage": "!!!Your workspaces", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 28, + "line": 29, "column": 18 }, "end": { - "line": 31, + "line": 32, "column": 3 } }, @@ -56,11 +56,11 @@ "defaultMessage": "!!!Services in this Workspace", "file": "src/features/workspaces/components/EditWorkspaceForm.js", "start": { - "line": 32, + "line": 33, "column": 31 }, "end": { - "line": 35, + "line": 36, "column": 3 } } diff --git a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json index d68899d9b..a957358c8 100644 --- a/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json +++ b/src/i18n/messages/src/features/workspaces/components/WorkspacesDashboard.json @@ -63,5 +63,18 @@ "line": 34, "column": 3 } + }, + { + "id": "settings.workspaces.deletedInfo", + "defaultMessage": "!!!Workspace has been deleted", + "file": "src/features/workspaces/components/WorkspacesDashboard.js", + "start": { + "line": 35, + "column": 15 + }, + "end": { + "line": 38, + "column": 3 + } } ] \ No newline at end of file -- cgit v1.2.3-54-g00ecf