summaryrefslogtreecommitdiffstats
path: root/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js')
-rw-r--r--openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js273
1 files changed, 151 insertions, 122 deletions
diff --git a/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js b/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js
index 16c0e61491..9abae2d1c1 100644
--- a/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js
+++ b/openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js
@@ -13,130 +13,159 @@
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
-import {actionTypes, enums} from './OnboardingConstants.js';
-import {actionTypes as permissionActionTypes} from './permissions/PermissionsConstants.js';
-import {actionTypes as licenseModelCreateActionTypes} from './licenseModel/creation/LicenseModelCreationConstants.js';
-import {actionTypes as softwareProductCreateActionTypes} from './softwareProduct/creation/SoftwareProductCreationConstants.js';
-import {actionTypes as versionCreateActionTypes} from './versionsPage/creation/VersionsPageCreationConstants.js';
-import {SyncStates} from 'sdc-app/common/merge/MergeEditorConstants.js';
-
-import {catalogItemStatuses} from './onboard/onboardingCatalog/OnboardingCatalogConstants.js';
+import { actionTypes, enums } from './OnboardingConstants.js';
+import { actionTypes as permissionActionTypes } from './permissions/PermissionsConstants.js';
+import { actionTypes as licenseModelCreateActionTypes } from './licenseModel/creation/LicenseModelCreationConstants.js';
+import { actionTypes as softwareProductCreateActionTypes } from './softwareProduct/creation/SoftwareProductCreationConstants.js';
+import { actionTypes as versionCreateActionTypes } from './versionsPage/creation/VersionsPageCreationConstants.js';
+import { SyncStates } from 'sdc-app/common/merge/MergeEditorConstants.js';
+
+import { catalogItemStatuses } from './onboard/onboardingCatalog/OnboardingCatalogConstants.js';
import Configuration from 'sdc-app/config/Configuration.js';
-const checkReadOnly = ({isCollaborator = true, inMerge = false, isCertified = false, isArchived = false}) => !isCollaborator || inMerge || isCertified || isArchived;
-
-const currentScreen = (state = {
- forceBreadCrumbsUpdate: false,
- screen: enums.SCREEN.ONBOARDING_CATALOG,
- itemPermission: {},
- props: {}
-}, action) => {
-
- switch (action.type) {
-
- case actionTypes.SET_CURRENT_SCREEN: {
- let itemPermission = {...state.itemPermission};
- let {currentScreen} = action;
- itemPermission.isArchived = currentScreen.props.status === catalogItemStatuses.ARCHIVED;
-
- if (currentScreen.props.version) {
- let {status} = currentScreen.props.version;
- itemPermission.isCertified = itemPermission.isCertified && status === catalogItemStatuses.CERTIFIED;
- }
-
- let isReadOnlyMode = checkReadOnly(itemPermission);
- let props = {...currentScreen.props, isReadOnlyMode};
-
- return {
- ...state,
- ...currentScreen,
- itemPermission,
- props
- };
- }
-
- case actionTypes.UPDATE_CURRENT_SCREEN_PROPS:
- return {
- ...state,
- props: {
- ...state.props,
- ...action.props,
- isReadOnlyMode: checkReadOnly(state.itemPermission)
- }
- };
-
- case actionTypes.SET_CURRENT_SCREEN_VERSION:
- return {
- ...state,
- props: {
- ...state.props,
- version: action.version,
- isReadOnlyMode: checkReadOnly({...state.itemPermission,itemStatus: state.props.status})
- }
- };
-
- case licenseModelCreateActionTypes.LICENSE_MODEL_CREATED:
- case softwareProductCreateActionTypes.SOFTWARE_PRODUCT_CREATED:
- case versionCreateActionTypes.VERSION_CREATED:
- return {
- ...state,
- itemPermission: {
- isCollaborator: true,
- inMerge: false,
- isCertified: false
- },
- props: {
- ...state.props,
- isReadOnlyMode: false
- }
- };
-
- case permissionActionTypes.ITEM_USERS_LOADED: {
- let userId = Configuration.get('UserID');
- let isCollaborator = false;
-
- if (userId === action.owner.userId) {
- isCollaborator = true;
- } else {
- isCollaborator = action.contributors.reduce(
- (foundUser, contributor) => foundUser || contributor.userId === userId, false
- );
- }
-
- let itemPermission = {...state.itemPermission, isCollaborator};
- let isReadOnlyMode = checkReadOnly(itemPermission);
- let props = {...state.props, isReadOnlyMode};
-
- return {
- ...state,
- itemPermission,
- props
- };
- }
-
- case actionTypes.UPDATE_ITEM_STATUS: {
- const {itemState: {synchronizationState, dirty}, itemStatus, updatedVersion, archivedStatus} = action;
- const inMerge = synchronizationState === SyncStates.MERGE;
- const isOutOfSync = synchronizationState === SyncStates.OUT_OF_SYNC;
- const isUpToDate = synchronizationState === SyncStates.UP_TO_DATE;
- const isCertified = itemStatus === catalogItemStatuses.CERTIFIED;
- const isArchived = archivedStatus === catalogItemStatuses.ARCHIVED;
- const itemPermission = {...state.itemPermission, inMerge, isDirty: dirty, isOutOfSync, isUpToDate, isCertified, isArchived};
- const isReadOnlyMode = checkReadOnly(itemPermission);
- const props = {...state.props, isReadOnlyMode, version: {...state.props.version, ...updatedVersion}};
-
- return {
- ...state,
- itemPermission,
- props
- };
- }
-
- default:
- return state;
-
- }
-
+const checkReadOnly = ({
+ isCollaborator = true,
+ inMerge = false,
+ isCertified = false,
+ isArchived = false
+}) => !isCollaborator || inMerge || isCertified || isArchived;
+
+const currentScreen = (
+ state = {
+ forceBreadCrumbsUpdate: false,
+ screen: enums.SCREEN.ONBOARDING_CATALOG,
+ itemPermission: {},
+ props: {}
+ },
+ action
+) => {
+ switch (action.type) {
+ case actionTypes.SET_CURRENT_SCREEN: {
+ let itemPermission = { ...state.itemPermission };
+ let { currentScreen } = action;
+ itemPermission.isArchived =
+ currentScreen.props.status === catalogItemStatuses.ARCHIVED;
+
+ if (currentScreen.props.version) {
+ let { status } = currentScreen.props.version;
+ itemPermission.isCertified =
+ itemPermission.isCertified &&
+ status === catalogItemStatuses.CERTIFIED;
+ }
+
+ let isReadOnlyMode = checkReadOnly(itemPermission);
+ let props = { ...currentScreen.props, isReadOnlyMode };
+
+ return {
+ ...state,
+ ...currentScreen,
+ itemPermission,
+ props
+ };
+ }
+
+ case actionTypes.UPDATE_CURRENT_SCREEN_PROPS:
+ return {
+ ...state,
+ props: {
+ ...state.props,
+ ...action.props,
+ isReadOnlyMode: checkReadOnly(state.itemPermission)
+ }
+ };
+
+ case actionTypes.SET_CURRENT_SCREEN_VERSION:
+ return {
+ ...state,
+ props: {
+ ...state.props,
+ version: action.version,
+ isReadOnlyMode: checkReadOnly({
+ ...state.itemPermission,
+ itemStatus: state.props.status
+ })
+ }
+ };
+
+ case licenseModelCreateActionTypes.LICENSE_MODEL_CREATED:
+ case softwareProductCreateActionTypes.SOFTWARE_PRODUCT_CREATED:
+ case versionCreateActionTypes.VERSION_CREATED:
+ return {
+ ...state,
+ itemPermission: {
+ isCollaborator: true,
+ inMerge: false,
+ isCertified: false
+ },
+ props: {
+ ...state.props,
+ isReadOnlyMode: false
+ }
+ };
+
+ case permissionActionTypes.ITEM_USERS_LOADED: {
+ let userId = Configuration.get('UserID');
+ let isCollaborator = false;
+
+ if (userId === action.owner.userId) {
+ isCollaborator = true;
+ } else {
+ isCollaborator = action.contributors.reduce(
+ (foundUser, contributor) =>
+ foundUser || contributor.userId === userId,
+ false
+ );
+ }
+
+ let itemPermission = { ...state.itemPermission, isCollaborator };
+ let isReadOnlyMode = checkReadOnly(itemPermission);
+ let props = { ...state.props, isReadOnlyMode };
+
+ return {
+ ...state,
+ itemPermission,
+ props
+ };
+ }
+
+ case actionTypes.UPDATE_ITEM_STATUS: {
+ const {
+ itemState: { synchronizationState, dirty },
+ itemStatus,
+ updatedVersion,
+ archivedStatus
+ } = action;
+ const inMerge = synchronizationState === SyncStates.MERGE;
+ const isOutOfSync = synchronizationState === SyncStates.OUT_OF_SYNC;
+ const isUpToDate = synchronizationState === SyncStates.UP_TO_DATE;
+ const isCertified = itemStatus === catalogItemStatuses.CERTIFIED;
+ const isArchived = archivedStatus === catalogItemStatuses.ARCHIVED;
+ const itemPermission = {
+ ...state.itemPermission,
+ inMerge,
+ isDirty: dirty,
+ isOutOfSync,
+ isUpToDate,
+ isCertified,
+ isArchived
+ };
+ const isReadOnlyMode = checkReadOnly(itemPermission);
+ const props = {
+ ...state.props,
+ isReadOnlyMode,
+ version: { ...state.props.version, ...updatedVersion }
+ };
+
+ return {
+ ...state,
+ itemPermission,
+ props
+ };
+ }
+
+ default:
+ return state;
+ }
};
export default currentScreen;