Newer
Older
import { ADMIN_FORMSERVICE } from '@admin-client/shared';
import { NavigationService } from '@alfa-client/navigation-shared';
import { AbstractFormService, createEmptyStateResource, isLoaded, StateResource } from '@alfa-client/tech-shared';
import { CommonModule } from '@angular/common';
import { Component, inject, Input } from '@angular/core';
import { Resource } from '@ngxp/rest';
import { ButtonWithSpinnerComponent } from '@ods/component';
import { Observable, of, tap } from 'rxjs';
@Component({
selector: 'admin-save-button',
standalone: true,
imports: [CommonModule, ButtonWithSpinnerComponent],
templateUrl: './admin-save-button.component.html',
})
export class AdminSaveButtonComponent {
@Input() successLinkPath: string;
private readonly formService: AbstractFormService<Resource> = inject(ADMIN_FORMSERVICE);
private readonly navigationService: NavigationService = inject(NavigationService);
public stateResource$: Observable<StateResource<Resource>> = of(createEmptyStateResource<Resource>());
this.stateResource$ = this.formService.submit().pipe(
tap((stateResource: StateResource<Resource>) => {
this._navigateOnSuccessfulSubmission(stateResource);
_navigateOnSuccessfulSubmission(stateResource: StateResource<Resource>) {
if (isLoaded(stateResource)) {
this.navigationService.navigate(this.successLinkPath);
}
}