Fix subscriptions

This commit is contained in:
Giuseppe Digilio
2018-12-27 16:12:08 +01:00
parent 5598af35ee
commit 5bbea16265
2 changed files with 26 additions and 28 deletions

View File

@@ -11,6 +11,7 @@ import { NotificationsService } from '../../shared/notifications/notifications.s
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { SubmissionObject } from '../../core/submission/models/submission-object.model'; import { SubmissionObject } from '../../core/submission/models/submission-object.model';
import { Collection } from '../../core/shared/collection.model'; import { Collection } from '../../core/shared/collection.model';
import { flatMap, tap } from 'rxjs/operators';
@Component({ @Component({
selector: 'ds-submission-edit', selector: 'ds-submission-edit',
@@ -40,28 +41,24 @@ export class SubmissionEditComponent implements OnDestroy, OnInit {
} }
ngOnInit() { ngOnInit() {
this.subs.push(this.route.paramMap this.subs.push(this.route.paramMap.pipe(
.subscribe((params: ParamMap) => { tap((params: ParamMap) => this.submissionId = params.get('id')),
this.submissionId = params.get('id'); flatMap((params: ParamMap) => this.submissionService.retrieveSubmission(params.get('id')))
this.subs.push( ).subscribe((submissionObject: SubmissionObject) => {
this.submissionService.retrieveSubmission(this.submissionId) // NOTE new submission is retrieved on the browser side only
.subscribe((submissionObject: SubmissionObject) => { if (isNotNull(submissionObject)) {
// NOTE new submission is retrieved on the browser side only if (isEmpty(submissionObject)) {
if (isNotNull(submissionObject)) { this.notificationsService.info(null, this.translate.get('submission.general.cannot_submit'));
if (isEmpty(submissionObject)) { this.router.navigate(['/mydspace']);
this.notificationsService.info(null, this.translate.get('submission.general.cannot_submit')); } else {
this.router.navigate(['/mydspace']); this.collectionId = (submissionObject.collection as Collection).id;
} else { this.selfUrl = submissionObject.self;
this.collectionId = (submissionObject.collection as Collection).id; this.sections = submissionObject.sections;
this.selfUrl = submissionObject.self; this.submissionDefinition = (submissionObject.submissionDefinition as SubmissionDefinitionsModel);
this.sections = submissionObject.sections; this.changeDetectorRef.detectChanges();
this.submissionDefinition = (submissionObject.submissionDefinition as SubmissionDefinitionsModel); }
this.changeDetectorRef.detectChanges(); }
} }));
}
})
)
}));
} }
/** /**

View File

@@ -1,11 +1,13 @@
import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';
import { Observable, of as observableOf } from 'rxjs'; import { Observable, of as observableOf } from 'rxjs';
import { map } from 'rxjs/operators';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { SubmissionRestService } from '../../submission-rest.service'; import { SubmissionRestService } from '../../submission-rest.service';
import { SubmissionService } from '../../submission.service'; import { SubmissionService } from '../../submission.service';
import { SubmissionScopeType } from '../../../core/submission/submission-scope-type'; import { SubmissionScopeType } from '../../../core/submission/submission-scope-type';
import { isNotEmpty } from '../../../shared/empty.util';
@Component({ @Component({
selector: 'ds-submission-form-footer', selector: 'ds-submission-form-footer',
@@ -19,7 +21,7 @@ export class SubmissionFormFooterComponent implements OnChanges {
public processingDepositStatus: Observable<boolean>; public processingDepositStatus: Observable<boolean>;
public processingSaveStatus: Observable<boolean>; public processingSaveStatus: Observable<boolean>;
public showDepositAndDiscard: Observable<boolean>; public showDepositAndDiscard: Observable<boolean>;
private submissionIsInvalid = true; private submissionIsInvalid: Observable<boolean> = observableOf(true);
constructor(private modalService: NgbModal, constructor(private modalService: NgbModal,
private restService: SubmissionRestService, private restService: SubmissionRestService,
@@ -27,11 +29,10 @@ export class SubmissionFormFooterComponent implements OnChanges {
} }
ngOnChanges(changes: SimpleChanges) { ngOnChanges(changes: SimpleChanges) {
if (!!this.submissionId) { if (isNotEmpty(this.submissionId)) {
this.submissionService.getSubmissionStatus(this.submissionId) this.submissionIsInvalid = this.submissionService.getSubmissionStatus(this.submissionId).pipe(
.subscribe((isValid) => { map((isValid: boolean) => isValid === false)
this.submissionIsInvalid = isValid === false; );
});
this.processingSaveStatus = this.submissionService.getSubmissionSaveProcessingStatus(this.submissionId); this.processingSaveStatus = this.submissionService.getSubmissionSaveProcessingStatus(this.submissionId);
this.processingDepositStatus = this.submissionService.getSubmissionDepositProcessingStatus(this.submissionId); this.processingDepositStatus = this.submissionService.getSubmissionDepositProcessingStatus(this.submissionId);