Added domain update request chaining

This commit is contained in:
mpetrov 2025-01-14 15:52:35 +02:00
parent 34bd41ff4e
commit 817b83c7bd

View File

@ -32,7 +32,8 @@ import { DomainComponent } from '@home/pages/admin/oauth2/domains/domain.compone
import { isEqual } from '@core/utils';
import { DomainTableHeaderComponent } from '@home/pages/admin/oauth2/domains/domain-table-header.component';
import { Direction } from '@app/shared/models/page/sort-order';
import { map, mergeMap, Observable, of } from 'rxjs';
import { map, of } from 'rxjs';
import { switchMap } from 'rxjs/operators';
@Injectable()
export class DomainTableConfigResolver {
@ -84,16 +85,16 @@ export class DomainTableConfigResolver {
this.config.loadEntity = id => this.domainService.getDomainInfoById(id.id);
this.config.saveEntity = (domain, originalDomain) => {
const clientsIds = domain.oauth2ClientInfos as Array<string> || [];
let clientsTask: Observable<void>;
if (domain.id && !isEqual(domain.oauth2ClientInfos?.sort(),
originalDomain.oauth2ClientInfos?.map(info => info.id ? info.id.id : info).sort())) {
clientsTask = this.domainService.updateOauth2Clients(domain.id.id, clientsIds);
} else {
clientsTask = of(null);
}
delete domain.oauth2ClientInfos;
return clientsTask.pipe(
mergeMap(() => this.domainService.saveDomain(domain, domain.id ? [] : clientsIds)),
return this.domainService.saveDomain(domain, domain.id ? [] : clientsIds).pipe(
switchMap(savedDomain => {
const shouldUpdateClients = domain.id && !isEqual(domain.oauth2ClientInfos?.sort(),
originalDomain.oauth2ClientInfos?.map(info => info.id ? info.id.id : info).sort());
return shouldUpdateClients
? this.domainService.updateOauth2Clients(domain.id.id, clientsIds).pipe(map(() => savedDomain))
: of(savedDomain);
}),
map(savedDomain => {
(savedDomain as DomainInfo).oauth2ClientInfos = clientsIds;
return savedDomain;