From 6b041e88ec5357a7f71a0b4b52b0d09186cc287b Mon Sep 17 00:00:00 2001 From: Florent Poittevin <florent.poittevin@unige.ch> Date: Tue, 25 Jun 2019 09:19:22 +0200 Subject: [PATCH] Get shared resource only when needed --- src/app/app.component.ts | 2 -- src/app/deposit/deposit.action.ts | 21 +++++++++++++++++++ src/app/deposit/deposit.state.ts | 23 +++++++++++++++++++++ src/app/deposit/views/create/create.view.ts | 6 ++++-- src/app/deposit/views/detail/detail.view.ts | 2 ++ src/app/deposit/views/edit/edit.view.ts | 2 ++ 6 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/app/app.component.ts b/src/app/app.component.ts index d5cf845df..2bb65000b 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -41,8 +41,6 @@ export class AppComponent extends BaseDirective implements OnInit { } ngOnInit(): void { - // TO FIX Should be in app.state init action but it's not detected in shared state... - this.store.dispatch(new GetAllResources()); } useLanguage(language: LanguagesEnum): void { diff --git a/src/app/deposit/deposit.action.ts b/src/app/deposit/deposit.action.ts index 115ebfe99..f6f13e14c 100644 --- a/src/app/deposit/deposit.action.ts +++ b/src/app/deposit/deposit.action.ts @@ -24,6 +24,27 @@ import {StringUtil} from "@app/shared/utils/string.util"; const state = StateEnum.deposit; +export class DepositLoadResource { + static readonly type = StringUtil.format("[{0}] Load resource", state); + + constructor() { + } +} + +export class DepositLoadResourceSuccess { + static readonly type = StringUtil.format("[{0}] Load resource Success", state); + + constructor() { + } +} + +export class DepositLoadResourceFail { + static readonly type = StringUtil.format("[{0}] Load resource Fail", state); + + constructor() { + } +} + export class DepositChangeQueryParameters extends ChangeQueryParametersCrud { static readonly type = StringUtil.format(ChangeQueryParametersCrud.abstractType, state); diff --git a/src/app/deposit/deposit.state.ts b/src/app/deposit/deposit.state.ts index e1cbca23f..c8b4501d0 100644 --- a/src/app/deposit/deposit.state.ts +++ b/src/app/deposit/deposit.state.ts @@ -12,6 +12,8 @@ import { DepositGetById, DepositGetByIdFail, DepositGetByIdSuccess, + DepositLoadResource, + DepositLoadResourceSuccess, DepositUpdate, DepositUpdateFail, DepositUpdateSuccess, @@ -20,13 +22,18 @@ import {DepositsModel} from "@app/generated-api"; import {CrudState, CrudStateModel} from "@app/shared/crud.state"; import {PreIngestResourceApiEnum} from "@app/shared/enums/api.enum"; import {StateEnum} from "@app/shared/enums/state.enum"; +import {LanguageGetAll} from "@app/shared/language.action"; +import {LicenseGetAll} from "@app/shared/license.action"; import {CollectionTypedModel} from "@app/shared/models/collection-typed.model"; import {QueryParametersModel} from "@app/shared/models/query-parameters.model"; +import {PreservationPolicyGetAll} from "@app/shared/preservation-policy.action"; import {ApiService} from "@app/shared/services/api.service"; +import {SubmissionPolicyGetAll} from "@app/shared/submission-policy.action"; import {Action, State, StateContext} from "@ngxs/store"; import {Observable} from "rxjs"; export interface DepositStateModel extends CrudStateModel<DepositsModel> { + resourceIsLoading: boolean; } @State<DepositStateModel>({ @@ -37,6 +44,7 @@ export interface DepositStateModel extends CrudStateModel<DepositsModel> { list: [], current: null, queryParameters: new QueryParametersModel(), + resourceIsLoading: false, }, }) export class DepositState extends CrudState<DepositsModel> { @@ -49,6 +57,21 @@ export class DepositState extends CrudState<DepositsModel> { this.urlResource = PreIngestResourceApiEnum.deposits; } + @Action(DepositLoadResource) + loadResource(ctx: StateContext<DepositStateModel>, action: DepositLoadResource): void { + ctx.patchState({ + isLoading: true, + }); + + ctx.dispatch([ + new LanguageGetAll(), + new LicenseGetAll(), + new PreservationPolicyGetAll(), + new SubmissionPolicyGetAll(), + new DepositLoadResourceSuccess(), + ]); + } + @Action(DepositChangeQueryParameters) changeQueryParameters(ctx: StateContext<DepositStateModel>, action: DepositChangeQueryParameters): void { super.changeQueryParameters(ctx, action); diff --git a/src/app/deposit/views/create/create.view.ts b/src/app/deposit/views/create/create.view.ts index 7f1776314..93c7bf28a 100644 --- a/src/app/deposit/views/create/create.view.ts +++ b/src/app/deposit/views/create/create.view.ts @@ -1,12 +1,13 @@ import {ChangeDetectionStrategy, Component, OnInit} from "@angular/core"; +import {DepositLoadResource} from "@app/deposit/deposit.action"; import {DepositStateModel} from "@app/deposit/deposit.state"; import {DepositsModel, LanguagesModel, LicensesModel, PreservationPoliciesModel, SubmissionPoliciesModel} from "@app/generated-api"; -import {OrgUnitGetAll} from "@app/shared/organizational-unit.action"; import {OrganizationalUnitModule} from "@app/organizational-unit/organizational-unit.module"; -import {OrganizationalUnitStateModel} from "@app/shared/organizational-unit.state"; import {StateEnum} from "@app/shared/enums/state.enum"; import {LanguageStateModel} from "@app/shared/language.state"; import {LicenseStateModel} from "@app/shared/license.state"; +import {OrgUnitGetAll} from "@app/shared/organizational-unit.action"; +import {OrganizationalUnitStateModel} from "@app/shared/organizational-unit.state"; import {PreservationPolicyStateModel} from "@app/shared/preservation-policy.state"; import {SharedStateModel} from "@app/shared/shared.state"; import {SubmissionPolicyStateModel} from "@app/shared/submission-policy.state"; @@ -33,5 +34,6 @@ export class CreateView extends AbstractCreateView<DepositsModel, DepositStateMo ngOnInit() { this.store.dispatch(new OrgUnitGetAll()); + this.store.dispatch(new DepositLoadResource()); } } diff --git a/src/app/deposit/views/detail/detail.view.ts b/src/app/deposit/views/detail/detail.view.ts index 6714dc959..cbc71d25d 100644 --- a/src/app/deposit/views/detail/detail.view.ts +++ b/src/app/deposit/views/detail/detail.view.ts @@ -1,6 +1,7 @@ import {ChangeDetectionStrategy, Component, OnInit} from "@angular/core"; import {MatDialog} from "@angular/material"; import {ActivatedRoute} from "@angular/router"; +import {DepositLoadResource} from "@app/deposit/deposit.action"; import {DepositStateModel} from "@app/deposit/deposit.state"; import { DepositsModel, @@ -50,5 +51,6 @@ export class DetailView extends AbstractDetailView<DepositsModel, DepositStateMo ngOnInit() { super.ngOnInit(); this.store.dispatch(new OrgUnitGetAll()); + this.store.dispatch(new DepositLoadResource()); } } diff --git a/src/app/deposit/views/edit/edit.view.ts b/src/app/deposit/views/edit/edit.view.ts index f9e570d41..ae89c4db0 100644 --- a/src/app/deposit/views/edit/edit.view.ts +++ b/src/app/deposit/views/edit/edit.view.ts @@ -1,5 +1,6 @@ import {ChangeDetectionStrategy, Component, OnInit} from "@angular/core"; import {ActivatedRoute} from "@angular/router"; +import {DepositLoadResource} from "@app/deposit/deposit.action"; import {DepositStateModel} from "@app/deposit/deposit.state"; import {DepositsModel, LanguagesModel, LicensesModel, PreservationPoliciesModel, SubmissionPoliciesModel} from "@app/generated-api"; import {OrgUnitGetAll} from "@app/shared/organizational-unit.action"; @@ -36,5 +37,6 @@ export class EditView extends AbstractEditView<DepositsModel, DepositStateModel> ngOnInit() { super.ngOnInit(); this.store.dispatch(new OrgUnitGetAll()); + this.store.dispatch(new DepositLoadResource()); } } -- GitLab