diff options
Diffstat (limited to 'openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js')
-rw-r--r-- | openecomp-ui/src/sdc-app/onboarding/OnboardingReducers.js | 273 |
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; |