Fix publication update component.

This commit is contained in:
Florian THIERRY
2026-02-03 14:28:50 +01:00
parent c91bb7b720
commit 64aecec4af
2 changed files with 23 additions and 21 deletions

View File

@@ -55,7 +55,7 @@ export class PublicationEditionComponent {
const publicationInEdition = this.publicationInEdition(); const publicationInEdition = this.publicationInEdition();
if (!publicationInEdition || publicationInEdition !== publication) { if (!publicationInEdition || publicationInEdition !== publication) {
this.publicationInEdition.set(publication); this.publicationInEdition.set(publication);
this.#publicationEditionService.init(publicationInEdition); this.#publicationEditionService.init(publication);
} }
}); });
} }

View File

@@ -13,6 +13,7 @@ import {PublicationEditionComponent} from '../../components/publication-edition/
import {Publication} from '../../core/rest-services/publications/model/publication'; import {Publication} from '../../core/rest-services/publications/model/publication';
import {PublicationRestService} from '../../core/rest-services/publications/publication.rest-service'; import {PublicationRestService} from '../../core/rest-services/publications/publication.rest-service';
import {toSignal} from "@angular/core/rxjs-interop"; import {toSignal} from "@angular/core/rxjs-interop";
import {map} from "rxjs";
@Component({ @Component({
selector: 'app-publication-update', selector: 'app-publication-update',
@@ -40,6 +41,10 @@ export class PublicationUpdateComponent {
#isSavingSubject = signal(false); #isSavingSubject = signal(false);
publication = signal<Publication | undefined>(undefined); publication = signal<Publication | undefined>(undefined);
#publicationId$ = this.#activatedRoute.params
.pipe(map(queryParams => queryParams['publicationId']));
#publicationId = toSignal(this.#publicationId$, { initialValue: undefined });
get isLoading(): Signal<boolean> { get isLoading(): Signal<boolean> {
return this.#isLoading.asReadonly(); return this.#isLoading.asReadonly();
} }
@@ -49,29 +54,26 @@ export class PublicationUpdateComponent {
} }
constructor() { constructor() {
const queryParams = toSignal(this.#activatedRoute.queryParamMap);
effect(() => { effect(() => {
let params = queryParams();
this.#isLoading.set(true); this.#isLoading.set(true);
if (params) {
const publicationId = params.get('publicationId'); const publicationId = this.#publicationId();
if (publicationId == undefined) { if (publicationId) {
this.#snackBar.open($localize`A technical error occurred while loading publication data.`, $localize`Close`, {duration: 5000}); this.#publicationRestService.getById(publicationId)
this.#location.back(); .then(publication => {
} else { this.publication.set(publication);
this.#publicationRestService.getById(publicationId) })
.then(publication => { .catch(error => {
this.publication.set(publication); const errorMessage = $localize`A technical error occurred while loading publication data.`;
}) this.#snackBar.open(errorMessage, $localize`Close`, {duration: 5000});
.catch(error => { console.error(errorMessage, error)
const errorMessage = $localize`A technical error occurred while loading publication data.`; })
this.#snackBar.open(errorMessage, $localize`Close`, {duration: 5000}); .finally(() => this.#isLoading.set(false));
console.error(errorMessage, error) } else {
}) this.#snackBar.open($localize`A technical error occurred while loading publication data.`, $localize`Close`, {duration: 5000});
.finally(() => this.#isLoading.set(false)); this.#location.back();
}
} }
}) });
} }
onPublicationSave(publication: Publication): void { onPublicationSave(publication: Publication): void {