UI: fixed oauth2 client lists not updating with values

This commit is contained in:
rusikv 2024-08-21 16:31:07 +03:00
parent dba36a8e5a
commit 3eb7efe0ad
5 changed files with 23 additions and 9 deletions

View File

@ -81,7 +81,7 @@ export class ClientsTableConfigResolver implements Resolve<EntityTableConfig<OAu
this.config.entitiesFetchFunction = pageLink => this.oauth2Service.findTenantOAuth2ClientInfos(pageLink); this.config.entitiesFetchFunction = pageLink => this.oauth2Service.findTenantOAuth2ClientInfos(pageLink);
this.config.loadEntity = id => this.oauth2Service.getOAuth2ClientById(id.id); this.config.loadEntity = id => this.oauth2Service.getOAuth2ClientById(id.id);
this.config.saveEntity = client => { this.config.saveEntity = client => {
return this.oauth2Service.saveOAuth2Client(client as OAuth2Client); return this.oauth2Service.saveOAuth2Client(client);
} }
this.config.deleteEntity = id => this.oauth2Service.deleteOauth2Client(id.id); this.config.deleteEntity = id => this.oauth2Service.deleteOauth2Client(id.id);
} }

View File

@ -23,7 +23,7 @@ import {
EntityTableColumn, EntityTableColumn,
EntityTableConfig EntityTableConfig
} from '@home/models/entity/entities-table-config.models'; } from '@home/models/entity/entities-table-config.models';
import { Domain, DomainInfo } from '@shared/models/oauth2.models'; import { DomainInfo } from '@shared/models/oauth2.models';
import { UtilsService } from '@core/services/utils.service'; import { UtilsService } from '@core/services/utils.service';
import { TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { DatePipe } from '@angular/common'; import { DatePipe } from '@angular/common';
@ -33,6 +33,7 @@ import { DomainComponent } from '@home/pages/admin/oauth2/domains/domain.compone
import { isEqual } from '@core/utils'; import { isEqual } from '@core/utils';
import { DomainTableHeaderComponent } from '@home/pages/admin/oauth2/domains/domain-table-header.component'; import { DomainTableHeaderComponent } from '@home/pages/admin/oauth2/domains/domain-table-header.component';
import { Direction } from '@app/shared/models/page/sort-order'; import { Direction } from '@app/shared/models/page/sort-order';
import { map } from 'rxjs';
@Injectable() @Injectable()
export class DomainTableConfigResolver implements Resolve<EntityTableConfig<DomainInfo>> { export class DomainTableConfigResolver implements Resolve<EntityTableConfig<DomainInfo>> {
@ -88,11 +89,17 @@ export class DomainTableConfigResolver implements Resolve<EntityTableConfig<Doma
this.config.loadEntity = id => this.domainService.getDomainInfoById(id.id); this.config.loadEntity = id => this.domainService.getDomainInfoById(id.id);
this.config.saveEntity = (domain, originalDomain) => { this.config.saveEntity = (domain, originalDomain) => {
const clientsIds = domain.oauth2ClientInfos as Array<string> || []; const clientsIds = domain.oauth2ClientInfos as Array<string> || [];
if (domain.id && !isEqual(domain.oauth2ClientInfos?.sort(), originalDomain.oauth2ClientInfos?.map(info => info.id.id).sort())) { if (domain.id && !isEqual(domain.oauth2ClientInfos?.sort(),
originalDomain.oauth2ClientInfos?.map(info => info.id ? info.id.id : info).sort())) {
this.domainService.updateOauth2Clients(domain.id.id, clientsIds).subscribe(); this.domainService.updateOauth2Clients(domain.id.id, clientsIds).subscribe();
} }
delete domain.oauth2ClientInfos; delete domain.oauth2ClientInfos;
return this.domainService.saveDomain(domain as Domain, domain.id ? [] : clientsIds); return this.domainService.saveDomain(domain, domain.id ? [] : clientsIds).pipe(
map(domain => {
(domain as DomainInfo).oauth2ClientInfos = clientsIds;
return domain;
})
);
} }
this.config.deleteEntity = id => this.domainService.deleteDomain(id.id); this.config.deleteEntity = id => this.domainService.deleteDomain(id.id);
} }

View File

@ -73,9 +73,9 @@ export class DomainComponent extends EntityComponent<DomainInfo> {
this.entityForm.patchValue({ this.entityForm.patchValue({
name: entity.name, name: entity.name,
oauth2Enabled: entity.oauth2Enabled, oauth2Enabled: entity.oauth2Enabled,
oauth2ClientInfos: entity.oauth2ClientInfos?.map(info => info.id.id), oauth2ClientInfos: entity.oauth2ClientInfos?.map(info => info.id ? info.id.id : info),
propagateToEdge: entity.propagateToEdge propagateToEdge: entity.propagateToEdge
}) });
} }
redirectURI(): string { redirectURI(): string {

View File

@ -34,6 +34,7 @@ import { Direction } from '@app/shared/models/page/sort-order';
import { MobileAppService } from '@core/http/mobile-app.service'; import { MobileAppService } from '@core/http/mobile-app.service';
import { MobileAppComponent } from '@home/pages/admin/oauth2/mobile-apps/mobile-app.component'; import { MobileAppComponent } from '@home/pages/admin/oauth2/mobile-apps/mobile-app.component';
import { MobileAppTableHeaderComponent } from '@home/pages/admin/oauth2/mobile-apps/mobile-app-table-header.component'; import { MobileAppTableHeaderComponent } from '@home/pages/admin/oauth2/mobile-apps/mobile-app-table-header.component';
import { map } from 'rxjs';
@Injectable() @Injectable()
export class MobileAppTableConfigResolver implements Resolve<EntityTableConfig<MobileAppInfo>> { export class MobileAppTableConfigResolver implements Resolve<EntityTableConfig<MobileAppInfo>> {
@ -94,11 +95,17 @@ export class MobileAppTableConfigResolver implements Resolve<EntityTableConfig<M
this.config.loadEntity = id => this.mobileAppService.getMobileAppInfoById(id.id); this.config.loadEntity = id => this.mobileAppService.getMobileAppInfoById(id.id);
this.config.saveEntity = (mobileApp, originalMobileApp) => { this.config.saveEntity = (mobileApp, originalMobileApp) => {
const clientsIds = mobileApp.oauth2ClientInfos as Array<string> || []; const clientsIds = mobileApp.oauth2ClientInfos as Array<string> || [];
if (mobileApp.id && !isEqual(mobileApp.oauth2ClientInfos?.sort(), originalMobileApp.oauth2ClientInfos?.map(info => info.id.id).sort())) { if (mobileApp.id && !isEqual(mobileApp.oauth2ClientInfos?.sort(),
originalMobileApp.oauth2ClientInfos?.map(info => info.id ? info.id.id : info).sort())) {
this.mobileAppService.updateOauth2Clients(mobileApp.id.id, clientsIds).subscribe(); this.mobileAppService.updateOauth2Clients(mobileApp.id.id, clientsIds).subscribe();
} }
delete mobileApp.oauth2ClientInfos; delete mobileApp.oauth2ClientInfos;
return this.mobileAppService.saveMobileApp(mobileApp as MobileApp, mobileApp.id ? [] : clientsIds); return this.mobileAppService.saveMobileApp(mobileApp as MobileApp, mobileApp.id ? [] : clientsIds).pipe(
map(mobileApp => {
(mobileApp as MobileAppInfo).oauth2ClientInfos = clientsIds;
return mobileApp;
})
);
} }
this.config.deleteEntity = id => this.mobileAppService.deleteMobileApp(id.id); this.config.deleteEntity = id => this.mobileAppService.deleteMobileApp(id.id);
} }

View File

@ -67,7 +67,7 @@ export class MobileAppComponent extends EntityComponent<MobileAppInfo> {
pkgName: entity.pkgName, pkgName: entity.pkgName,
appSecret: entity.appSecret, appSecret: entity.appSecret,
oauth2Enabled: entity.oauth2Enabled, oauth2Enabled: entity.oauth2Enabled,
oauth2ClientInfos: entity.oauth2ClientInfos?.map(info => info.id.id) oauth2ClientInfos: entity.oauth2ClientInfos?.map(info => info.id ? info.id.id : info)
}) })
} }