Skip to content

Commit f9059da

Browse files
TASK: Add on remote state for synchronization
1 parent 3b524ee commit f9059da

File tree

3 files changed

+33
-15
lines changed
  • packages
    • neos-ui/src/Containers/PrimaryToolbar/WorkspaceSync
    • neos-ui-redux-store/src/UI/Remote
    • neos-ui-sagas/src/Publish

3 files changed

+33
-15
lines changed

packages/neos-ui-redux-store/src/UI/Remote/index.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ import {NodeContextPath} from '@neos-project/neos-ts-interfaces';
77
export interface State extends Readonly<{
88
isSaving: boolean,
99
isPublishing: boolean,
10-
isDiscarding: boolean
10+
isDiscarding: boolean,
11+
isSyncing: boolean
1112
}> {}
1213

1314
export const defaultState: State = {
1415
isSaving: false,
1516
isPublishing: false,
16-
isDiscarding: false
17+
isDiscarding: false,
18+
isSyncing: false
1719
};
1820

1921
//
@@ -28,6 +30,8 @@ export enum actionTypes {
2830
FINISH_PUBLISHING = '@neos/neos-ui/UI/Remote/FINISH_PUBLISHING',
2931
START_DISCARDING = '@neos/neos-ui/UI/Remote/START_DISCARDING',
3032
FINISH_DISCARDING = '@neos/neos-ui/UI/Remote/FINISH_DISCARDING',
33+
START_SYNCHRONIZATION = '@neos/neos-ui/UI/Remote/START_SYNCHRONIZATION',
34+
FINISH_SYNCHRONIZATION = '@neos/neos-ui/UI/Remote/FINISH_SYNCHRONIZATION',
3135
DOCUMENT_NODE_CREATED = '@neos/neos-ui/UI/Remote/DOCUMENT_NODE_CREATED'
3236
}
3337

@@ -61,6 +65,16 @@ const startDiscarding = () => createAction(actionTypes.START_DISCARDING);
6165
*/
6266
const finishDiscarding = () => createAction(actionTypes.FINISH_DISCARDING);
6367

68+
/**
69+
* Marks an ongoing synchronization process.
70+
*/
71+
const startSynchronization = () => createAction(actionTypes.START_SYNCHRONIZATION);
72+
73+
/**
74+
* Marks that an ongoing synchronization process has finished.
75+
*/
76+
const finishSynchronization = () => createAction(actionTypes.FINISH_SYNCHRONIZATION);
77+
6478
/**
6579
* Marks that an publishing process has been locked.
6680
*/
@@ -88,6 +102,8 @@ export const actions = {
88102
finishPublishing,
89103
startDiscarding,
90104
finishDiscarding,
105+
startSynchronization,
106+
finishSynchronization,
91107
documentNodeCreated
92108
};
93109

@@ -130,6 +146,14 @@ export const reducer = (state: State = defaultState, action: InitAction | Action
130146
draft.isDiscarding = false;
131147
break;
132148
}
149+
case actionTypes.START_SYNCHRONIZATION: {
150+
draft.isSyncing = true;
151+
break;
152+
}
153+
case actionTypes.FINISH_SYNCHRONIZATION: {
154+
draft.isSyncing = false;
155+
break;
156+
}
133157
}
134158
});
135159

packages/neos-ui-sagas/src/Publish/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export function * watchChangeBaseWorkspace() {
4545
export function * watchRebaseWorkspace() {
4646
const {rebaseWorkspace, getWorkspaceInfo} = backend.get().endpoints;
4747
yield takeEvery(actionTypes.CR.Workspaces.REBASE_WORKSPACE, function * change(action) {
48-
yield put(actions.UI.Remote.startSaving());
48+
yield put(actions.UI.Remote.startSynchronization());
4949

5050
try {
5151
const feedback = yield call(rebaseWorkspace, action.payload);
@@ -55,7 +55,7 @@ export function * watchRebaseWorkspace() {
5555
} finally {
5656
const workspaceInfo = yield call(getWorkspaceInfo);
5757
yield put(actions.CR.Workspaces.update(workspaceInfo));
58-
yield put(actions.UI.Remote.finishSaving());
58+
yield put(actions.UI.Remote.finishSynchronization());
5959
}
6060
});
6161
}

packages/neos-ui/src/Containers/PrimaryToolbar/WorkspaceSync/index.js

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ import style from './style.module.css';
1616

1717
@connect(state => ({
1818
isOpen: state?.ui?.SyncWorkspaceModal?.isOpen,
19-
isSaving: state?.ui?.remote?.isSaving,
20-
isPublishing: state?.ui?.remote?.isPublishing,
21-
isDiscarding: state?.ui?.remote?.isDiscarding,
19+
isSyncing: state?.ui?.remote?.isSyncing,
2220
personalWorkspaceStatus: personalWorkspaceRebaseStatusSelector(state)
2321
}), {
2422
openModal: actions.UI.SyncWorkspaceModal.open
@@ -30,9 +28,7 @@ import style from './style.module.css';
3028
export default class WorkspaceSync extends PureComponent {
3129
static propTypes = {
3230
isOpen: PropTypes.bool.isRequired,
33-
isSaving: PropTypes.bool.isRequired,
34-
isPublishing: PropTypes.bool.isRequired,
35-
isDiscarding: PropTypes.bool.isRequired,
31+
isSyncing: PropTypes.bool.isRequired,
3632
openModal: PropTypes.func.isRequired,
3733
personalWorkspaceStatus: PropTypes.string.isRequired,
3834
i18nRegistry: PropTypes.object.isRequired
@@ -42,10 +38,8 @@ export default class WorkspaceSync extends PureComponent {
4238
const {
4339
personalWorkspaceStatus,
4440
openModal,
45-
isSaving,
4641
isOpen,
47-
isPublishing,
48-
isDiscarding,
42+
isSyncing,
4943
i18nRegistry
5044
} = this.props;
5145

@@ -62,12 +56,12 @@ export default class WorkspaceSync extends PureComponent {
6256
id="neos-workspace-rebase"
6357
className={style.rebaseButton}
6458
onClick={openModal}
65-
disabled={isSaving || isOpen || isPublishing || isDiscarding}
59+
disabled={isSyncing || isOpen}
6660
style={personalWorkspaceStatus === WorkspaceStatus.OUTDATED ? 'warn' : 'error'}
6761
hoverStyle={personalWorkspaceStatus === WorkspaceStatus.OUTDATED ? 'warn' : 'error'}
6862
label={buttonLabel}
6963
>
70-
{(isSaving || isPublishing || isDiscarding) ? (
64+
{isSyncing ? (
7165
<Icon icon="spinner" spin={true}/>
7266
) : (
7367
<WorkspaceSyncIcon personalWorkspaceStatus={personalWorkspaceStatus}/>

0 commit comments

Comments
 (0)