36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
import { Component, inject } from '@angular/core';
|
|
import { IStoredTenantId, KeycloakStatusService, TenantsService } from '@iqser/common-ui/lib/tenants';
|
|
|
|
interface ITenant extends IStoredTenantId {
|
|
readonly isCurrent: boolean;
|
|
}
|
|
|
|
@Component({
|
|
selector: 'app-tenants-menu',
|
|
templateUrl: './tenants-menu.component.html',
|
|
styleUrls: ['./tenants-menu.component.scss'],
|
|
})
|
|
export class TenantsMenuComponent {
|
|
readonly tenantsService = inject(TenantsService);
|
|
readonly storedTenants: ITenant[];
|
|
readonly #keycloakStatusService = inject(KeycloakStatusService);
|
|
|
|
constructor() {
|
|
this.storedTenants = this.#getStoredTenants();
|
|
}
|
|
|
|
trackBy(_index: number, item: ITenant) {
|
|
return item.tenantId;
|
|
}
|
|
|
|
async switchTenant(tenantId?: string) {
|
|
await this.#keycloakStatusService.switchTenant(tenantId);
|
|
}
|
|
|
|
#getStoredTenants(): ITenant[] {
|
|
const storedTenants = this.tenantsService.getStoredTenants();
|
|
const sorted = storedTenants.sort((a, b) => a.tenantId.localeCompare(b.tenantId));
|
|
return sorted.map(tenant => ({ ...tenant, isCurrent: tenant.tenantId === this.tenantsService.activeTenantId }));
|
|
}
|
|
}
|