From f914b98cf730fdd4374eff2bf0f3de90f09f86e2 Mon Sep 17 00:00:00 2001 From: Florent Poittevin <florent.poittevin@unige.ch> Date: Mon, 8 Jul 2019 11:33:41 +0200 Subject: [PATCH] Add default value for state --- src/app/deposit/deposit.state.ts | 15 ++++----------- src/app/resource.state.ts | 1 + src/app/shared/crud-two-tiers.state.ts | 8 +++++++- src/app/shared/crud.state.ts | 10 +++++++++- src/app/shared/language.state.ts | 8 ++------ src/app/shared/license.state.ts | 8 ++------ ...organizational-unit-submission-policy.state.ts | 7 ++----- src/app/shared/organizational-unit.state.ts | 8 ++------ src/app/shared/preservation-policy.state.ts | 8 ++------ src/app/shared/submission-policy.state.ts | 8 ++------ 10 files changed, 33 insertions(+), 48 deletions(-) diff --git a/src/app/deposit/deposit.state.ts b/src/app/deposit/deposit.state.ts index 4779992f9..1963f56f8 100644 --- a/src/app/deposit/deposit.state.ts +++ b/src/app/deposit/deposit.state.ts @@ -1,11 +1,13 @@ import {HttpEventType} from "@angular/common/http"; +import {ApiService} from "@app/core/http/api.service"; +import {NotificationService} from "@app/core/services/notification.service"; import {DepositAction, depositActionNameSpace} from "@app/deposit/deposit.action"; import {DepositDataFileModel} from "@app/deposit/models/deposit-data-file.model"; import {UploadFileStatusModel} from "@app/deposit/models/upload-file-status.model"; import {DepositsModel} from "@app/generated-api"; import {CrudTwoTiersAction} from "@app/shared/crud-two-tiers.action"; import {CrudNameSpace} from "@app/shared/crud.namespace"; -import {CrudState, CrudStateModel} from "@app/shared/crud.state"; +import {CrudState, CrudStateModel, defaultCrudStateInitValue} from "@app/shared/crud.state"; import {ApiActionEnum} from "@app/shared/enums/api-action.enum"; import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum"; import {PreIngestResourceApiEnum, ResourceApiEnum, SubResourceApiEnum} from "@app/shared/enums/api.enum"; @@ -14,11 +16,8 @@ import {StateEnum} from "@app/shared/enums/state.enum"; import {LanguageAction} from "@app/shared/language.action"; import {LicenseAction} from "@app/shared/license.action"; import {CollectionTypedModel} from "@app/shared/models/collection-typed.model"; -import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; import {PreservationPolicyAction} from "@app/shared/preservation-policy.action"; -import {ApiService} from "@app/core/http/api.service"; import {SubmissionPolicyAction} from "@app/shared/submission-policy.action"; -import {NotificationService} from "@app/core/services/notification.service"; import {CrudHelperUtil} from "@app/shared/utils/crud-helper.util"; import {Action, State, StateContext, Store} from "@ngxs/store"; import {Observable} from "rxjs"; @@ -27,7 +26,6 @@ import {tap} from "rxjs/internal/operators/tap"; import {map} from "rxjs/operators"; export interface DepositStateModel extends CrudStateModel<DepositsModel> { - resourceIsLoading: boolean; listDataFile: DepositDataFileModel[]; isLoadingDataFile: boolean; uploadStatus: UploadFileStatusModel; @@ -36,12 +34,7 @@ export interface DepositStateModel extends CrudStateModel<DepositsModel> { @State<DepositStateModel>({ name: StateEnum.deposit, defaults: { - total: 0, - isLoading: false, - list: [], - current: null, - queryParameters: new QueryParametersModel(), - resourceIsLoading: false, + ...defaultCrudStateInitValue, listDataFile: [], isLoadingDataFile: false, uploadStatus: null, diff --git a/src/app/resource.state.ts b/src/app/resource.state.ts index 156262cc1..a6e932513 100644 --- a/src/app/resource.state.ts +++ b/src/app/resource.state.ts @@ -3,5 +3,6 @@ import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; export interface ResourceStateModel extends BaseStateModel { + total: number; queryParameters: QueryParametersModel; } diff --git a/src/app/shared/crud-two-tiers.state.ts b/src/app/shared/crud-two-tiers.state.ts index dbc49d468..c8d746950 100644 --- a/src/app/shared/crud-two-tiers.state.ts +++ b/src/app/shared/crud-two-tiers.state.ts @@ -9,6 +9,7 @@ import {ResourceApiEnum} from "@app/shared/enums/api.enum"; import {urlSeparator} from "@app/shared/enums/routes.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; import {CollectionTypedModel} from "@app/shared/models/collection-typed.model"; +import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; import {SubResourceUpdateModel} from "@app/shared/models/sub-resource-update.model"; import {CrudHelperUtil} from "@app/shared/utils/crud-helper.util"; import {CrudTwoTiersActionHelper} from "@app/shared/utils/crud-two-tiers-action.helper"; @@ -20,10 +21,15 @@ import {catchError} from "rxjs/internal/operators/catchError"; import {tap} from "rxjs/internal/operators/tap"; export interface CrudTwoTiersStateModel<T> extends ResourceStateModel { - total: number; selected: T[]; } +export const defaultCrudTwoTiersStateInitValue: CrudTwoTiersStateModel<any> = { + total: 0, + isLoading: false, + selected: [], + queryParameters: new QueryParametersModel(), +}; export abstract class CrudTwoTiersState<T> { protected readonly state: StateEnum; protected readonly crudTwoTiersNameSpace: CrudTwoTiersNameSpace; diff --git a/src/app/shared/crud.state.ts b/src/app/shared/crud.state.ts index d4fe2294a..db962337a 100644 --- a/src/app/shared/crud.state.ts +++ b/src/app/shared/crud.state.ts @@ -8,6 +8,7 @@ import {ResourceApiEnum} from "@app/shared/enums/api.enum"; import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; import {CollectionTypedModel} from "@app/shared/models/collection-typed.model"; +import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; import {CrudActionHelper} from "@app/shared/utils/crud-action.helper"; import {CrudHelperUtil} from "@app/shared/utils/crud-helper.util"; import {CrudRouteUtil} from "@app/shared/utils/crud-route.util"; @@ -20,11 +21,18 @@ import {catchError} from "rxjs/internal/operators/catchError"; import {tap} from "rxjs/operators"; export interface CrudStateModel<T> extends ResourceStateModel { - total: number; list: T[]; current: T; } +export const defaultCrudStateInitValue: CrudStateModel<any> = { + total: 0, + isLoading: false, + list: [], + current: null, + queryParameters: new QueryParametersModel(), +}; + export abstract class CrudState<T> { protected readonly state: StateEnum; protected readonly crudNameSpace: CrudNameSpace; diff --git a/src/app/shared/language.state.ts b/src/app/shared/language.state.ts index 7ccaacac3..78ccdd322 100644 --- a/src/app/shared/language.state.ts +++ b/src/app/shared/language.state.ts @@ -1,6 +1,6 @@ import {LanguagesModel} from "@app/generated-api"; import {CrudNameSpace} from "@app/shared/crud.namespace"; -import {CrudState, CrudStateModel} from "@app/shared/crud.state"; +import {CrudState, CrudStateModel, defaultCrudStateInitValue} from "@app/shared/crud.state"; import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum"; import {AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; @@ -16,11 +16,7 @@ export interface LanguageStateModel extends CrudStateModel<LanguagesModel> { @State<LanguageStateModel>({ name: StateEnum.language, defaults: { - total: 0, - isLoading: false, - list: [], - current: null, - queryParameters: new QueryParametersModel(), + ...defaultCrudStateInitValue, }, }) export class LanguageState extends CrudState<LanguagesModel> { diff --git a/src/app/shared/license.state.ts b/src/app/shared/license.state.ts index 1d436f959..f14f63093 100644 --- a/src/app/shared/license.state.ts +++ b/src/app/shared/license.state.ts @@ -1,6 +1,6 @@ import {LicensesModel} from "@app/generated-api"; import {CrudNameSpace} from "@app/shared/crud.namespace"; -import {CrudState, CrudStateModel} from "@app/shared/crud.state"; +import {CrudState, CrudStateModel, defaultCrudStateInitValue} from "@app/shared/crud.state"; import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum"; import {AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; @@ -17,11 +17,7 @@ export interface LicenseStateModel extends CrudStateModel<LicensesModel> { @State<LicenseStateModel>({ name: StateEnum.license, defaults: { - total: 0, - isLoading: false, - list: [], - current: null, - queryParameters: new QueryParametersModel(), + ...defaultCrudStateInitValue, }, }) export class LicenseState extends CrudState<LicensesModel> { diff --git a/src/app/shared/organizational-unit-submission-policy.state.ts b/src/app/shared/organizational-unit-submission-policy.state.ts index b3abfba1d..e549169ed 100644 --- a/src/app/shared/organizational-unit-submission-policy.state.ts +++ b/src/app/shared/organizational-unit-submission-policy.state.ts @@ -2,7 +2,7 @@ import {AppStateModel} from "@app/app.state"; import {ApiService} from "@app/core/http/api.service"; import {NotificationService} from "@app/core/services/notification.service"; import {OrganizationalUnitsModel, SubmissionPoliciesModel} from "@app/generated-api"; -import {CrudTwoTiersState, CrudTwoTiersStateModel} from "@app/shared/crud-two-tiers.state"; +import {CrudTwoTiersState, CrudTwoTiersStateModel, defaultCrudTwoTiersStateInitValue} from "@app/shared/crud-two-tiers.state"; import {CrudTwoTiersNameSpace} from "@app/shared/crud.namespace"; import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum"; import {AccessResourceApiEnum, AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; @@ -23,10 +23,7 @@ export interface OrganizationalUnitSubmissionPolicyStateModel extends CrudTwoTie @State<OrganizationalUnitSubmissionPolicyStateModel>({ name: StateEnum.organizationalUnitSubResourceSubmissionPolicy, defaults: { - total: 0, - isLoading: false, - selected: [], - queryParameters: new QueryParametersModel(), + ...defaultCrudTwoTiersStateInitValue, }, }) export class OrganizationalUnitSubmissionPolicyState extends CrudTwoTiersState<OrganizationalUnitsModel> { diff --git a/src/app/shared/organizational-unit.state.ts b/src/app/shared/organizational-unit.state.ts index 4434ab0a3..2876b16aa 100644 --- a/src/app/shared/organizational-unit.state.ts +++ b/src/app/shared/organizational-unit.state.ts @@ -5,7 +5,7 @@ import {NotificationService} from "@app/core/services/notification.service"; import {DepositStateModel} from "@app/deposit/deposit.state"; import {OrganizationalUnitsModel} from "@app/generated-api"; import {CrudNameSpace} from "@app/shared/crud.namespace"; -import {CrudState, CrudStateModel} from "@app/shared/crud.state"; +import {CrudState, CrudStateModel, defaultCrudStateInitValue} from "@app/shared/crud.state"; import {OverrideCrudAction} from "@app/shared/decorators/crud.decorator"; import {AccessResourceApiEnum, AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; import {ModelAttributeEnum} from "@app/shared/enums/model-attribute.enum"; @@ -33,11 +33,7 @@ export interface OrganizationalUnitStateModel extends CrudStateModel<Organizatio @State<OrganizationalUnitStateModel>({ name: StateEnum.organizationalUnit, defaults: { - total: 0, - isLoading: false, - list: [], - current: null, - queryParameters: new QueryParametersModel(), + ...defaultCrudStateInitValue, }, children: [ OrganizationalUnitSubmissionPolicyState, diff --git a/src/app/shared/preservation-policy.state.ts b/src/app/shared/preservation-policy.state.ts index 7786ef9a1..b1250f579 100644 --- a/src/app/shared/preservation-policy.state.ts +++ b/src/app/shared/preservation-policy.state.ts @@ -1,6 +1,6 @@ import {PreservationPoliciesModel} from "@app/generated-api"; import {CrudNameSpace} from "@app/shared/crud.namespace"; -import {CrudState, CrudStateModel} from "@app/shared/crud.state"; +import {CrudState, CrudStateModel, defaultCrudStateInitValue} from "@app/shared/crud.state"; import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum"; import {AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; @@ -16,11 +16,7 @@ export interface PreservationPolicyStateModel extends CrudStateModel<Preservatio @State<PreservationPolicyStateModel>({ name: StateEnum.preservationPolicy, defaults: { - total: 0, - isLoading: false, - list: [], - current: null, - queryParameters: new QueryParametersModel(), + ...defaultCrudStateInitValue, }, }) export class PreservationPolicyState extends CrudState<PreservationPoliciesModel> { diff --git a/src/app/shared/submission-policy.state.ts b/src/app/shared/submission-policy.state.ts index e7c2c3b03..3bd896a16 100644 --- a/src/app/shared/submission-policy.state.ts +++ b/src/app/shared/submission-policy.state.ts @@ -1,6 +1,6 @@ import {SubmissionPoliciesModel} from "@app/generated-api"; import {CrudNameSpace} from "@app/shared/crud.namespace"; -import {CrudState, CrudStateModel} from "@app/shared/crud.state"; +import {CrudState, CrudStateModel, defaultCrudStateInitValue} from "@app/shared/crud.state"; import {ApiResourceNameEnum} from "@app/shared/enums/api-resource-name.enum"; import {AdminResourceApiEnum, ResourceApiEnum} from "@app/shared/enums/api.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; @@ -16,11 +16,7 @@ export interface SubmissionPolicyStateModel extends CrudStateModel<SubmissionPol @State<SubmissionPolicyStateModel>({ name: StateEnum.submissionPolicy, defaults: { - total: 0, - isLoading: false, - list: [], - current: null, - queryParameters: new QueryParametersModel(), + ...defaultCrudStateInitValue, }, }) export class SubmissionPolicyState extends CrudState<SubmissionPoliciesModel> { -- GitLab