|
|
|
@ -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,15 @@ 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); |
|
|
|
} |
|
|
|
const shouldUpdateClients = domain.id && !isEqual(domain.oauth2ClientInfos?.sort(), |
|
|
|
originalDomain.oauth2ClientInfos?.map(info => info.id ? info.id.id : info).sort()); |
|
|
|
delete domain.oauth2ClientInfos; |
|
|
|
return clientsTask.pipe( |
|
|
|
mergeMap(() => this.domainService.saveDomain(domain, domain.id ? [] : clientsIds)), |
|
|
|
|
|
|
|
return this.domainService.saveDomain(domain, domain.id ? null : clientsIds).pipe( |
|
|
|
switchMap(savedDomain => shouldUpdateClients |
|
|
|
? this.domainService.updateOauth2Clients(domain.id.id, clientsIds).pipe(map(() => savedDomain)) |
|
|
|
: of(savedDomain) |
|
|
|
), |
|
|
|
map(savedDomain => { |
|
|
|
(savedDomain as DomainInfo).oauth2ClientInfos = clientsIds; |
|
|
|
return savedDomain; |
|
|
|
@ -112,12 +112,9 @@ export class DomainTableConfigResolver { |
|
|
|
$event.stopPropagation(); |
|
|
|
} |
|
|
|
|
|
|
|
const modifiedDomain: DomainInfo = { |
|
|
|
...domain, |
|
|
|
oauth2Enabled: !domain.oauth2Enabled |
|
|
|
}; |
|
|
|
const { oauth2ClientInfos, oauth2Enabled, ...updatedDomain } = domain; |
|
|
|
|
|
|
|
this.domainService.saveDomain(modifiedDomain, domain.oauth2ClientInfos.map(clientInfo => clientInfo.id.id), |
|
|
|
this.domainService.saveDomain({ ...updatedDomain, oauth2Enabled: !oauth2Enabled }, null, |
|
|
|
{ignoreLoading: true}) |
|
|
|
.subscribe((result) => { |
|
|
|
domain.oauth2Enabled = result.oauth2Enabled; |
|
|
|
@ -130,12 +127,9 @@ export class DomainTableConfigResolver { |
|
|
|
$event.stopPropagation(); |
|
|
|
} |
|
|
|
|
|
|
|
const modifiedDomain: DomainInfo = { |
|
|
|
...domain, |
|
|
|
propagateToEdge: !domain.propagateToEdge |
|
|
|
}; |
|
|
|
const { oauth2ClientInfos, propagateToEdge, ...updatedDomain } = domain; |
|
|
|
|
|
|
|
this.domainService.saveDomain(modifiedDomain, domain.oauth2ClientInfos.map(clientInfo => clientInfo.id.id), |
|
|
|
this.domainService.saveDomain({ ...updatedDomain, propagateToEdge: !propagateToEdge }, null, |
|
|
|
{ignoreLoading: true}) |
|
|
|
.subscribe((result) => { |
|
|
|
domain.propagateToEdge = result.propagateToEdge; |
|
|
|
|