Skip to content

Commit 768d4a8

Browse files
committed
feat: implement luigi config communication settings api
1 parent da49e3b commit 768d4a8

File tree

7 files changed

+91
-9
lines changed

7 files changed

+91
-9
lines changed

src/lib/injection-tokens.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
export const LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN =
22
'OPENMFP_LUIGI_STATIC_SETTINGS_CONFIG_SERVICE';
3+
export const LUIGI_COMMUNICATION_CONFIG_SERVICE_INJECTION_TOKEN =
4+
'OPENMFP_LUIGI_COMMUNICATION_CONFIG_SERVICE';

src/lib/portal.module.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ import { NgModule, Type } from '@angular/core';
22
import { HttpClientModule } from '@angular/common/http';
33
import { BrowserModule } from '@angular/platform-browser';
44
import { RouterOutlet } from '@angular/router';
5-
import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from './injection-tokens';
5+
import {
6+
LUIGI_COMMUNICATION_CONFIG_SERVICE_INJECTION_TOKEN,
7+
LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
8+
} from './injection-tokens';
69
import { LogoutComponent } from './logout/logout.component';
710
import { LuigiComponent } from './luigi/luigi.component';
811
import { CallbackComponent } from './callback/callback.component';
@@ -11,11 +14,16 @@ import { PortalComponent } from './portal.component';
1114
import {
1215
StaticSettingsConfigService,
1316
StaticSettingsConfigServiceImpl,
14-
} from './services/luigi-config/static-settings-config.service';
17+
CommunicationConfigService,
18+
CommunicationConfigServiceImpl,
19+
} from './services';
1520

1621
export interface PortalModuleOptions {
1722
/** Service containing and providing the luigi settings configuration **/
1823
staticSettingsConfigService?: Type<StaticSettingsConfigService>;
24+
25+
/** Service containing and providing the luigi communication configuration **/
26+
communicationConfigService?: Type<CommunicationConfigService>;
1927
}
2028

2129
@NgModule({
@@ -30,6 +38,10 @@ export interface PortalModuleOptions {
3038
provide: LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
3139
useClass: StaticSettingsConfigServiceImpl,
3240
},
41+
{
42+
provide: LUIGI_COMMUNICATION_CONFIG_SERVICE_INJECTION_TOKEN,
43+
useClass: CommunicationConfigServiceImpl,
44+
},
3345
],
3446
imports: [PortalRoutingModule, BrowserModule, RouterOutlet, HttpClientModule],
3547
exports: [PortalComponent],
@@ -51,6 +63,12 @@ export class PortalModule {
5163
options.staticSettingsConfigService ||
5264
StaticSettingsConfigServiceImpl,
5365
},
66+
{
67+
provide: LUIGI_COMMUNICATION_CONFIG_SERVICE_INJECTION_TOKEN,
68+
useClass:
69+
options.communicationConfigService ||
70+
CommunicationConfigServiceImpl,
71+
},
5472
],
5573
imports: [
5674
PortalRoutingModule,

src/lib/services/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
export * from './auth.service';
22
export * from './luigi-core.service';
33
export * from './luigi-config/luigi-config.service';
4+
export * from './luigi-config/static-settings-config.service';
5+
export * from './luigi-config/communication-config.service';
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import {
2+
CommunicationConfigService,
3+
CommunicationConfigServiceImpl,
4+
} from './communication-config.service';
5+
6+
describe('CommunicationConfigServiceImpl', () => {
7+
let service: CommunicationConfigService;
8+
9+
beforeEach(() => {
10+
service = new CommunicationConfigServiceImpl();
11+
});
12+
13+
it('should be created', () => {
14+
expect(service).toBeTruthy();
15+
});
16+
17+
describe('getCommunicationConfig', () => {
18+
it('should return undefined', () => {
19+
const result = service.getCommunicationConfig();
20+
expect(result).toBeUndefined();
21+
});
22+
});
23+
});
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
export interface MessagesListeners {
2+
customMessagesListeners: Record<string, any>;
3+
}
4+
5+
export interface CommunicationConfigService {
6+
getCommunicationConfig(): MessagesListeners;
7+
}
8+
9+
export class CommunicationConfigServiceImpl
10+
implements CommunicationConfigService
11+
{
12+
getCommunicationConfig(): MessagesListeners {
13+
return undefined;
14+
}
15+
}

src/lib/services/luigi-config/luigi-config.service.spec.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { CommunicationConfigService } from './communication-config.service';
12
import { LuigiConfigService } from './luigi-config.service';
23
import { EnvConfigService } from '../env-config.service';
34
import { AuthConfigService } from './auth-config.service';
@@ -9,6 +10,7 @@ describe('LuigiConfigService', () => {
910
let envConfigServiceMock: jest.Mocked<EnvConfigService>;
1011
let authConfigServiceMock: jest.Mocked<AuthConfigService>;
1112
let staticSettingsConfigServiceMock: jest.Mocked<StaticSettingsConfigService>;
13+
let communicationConfigServiceMock: jest.Mocked<CommunicationConfigService>;
1214

1315
beforeEach(() => {
1416
envConfigServiceMock = {
@@ -23,10 +25,15 @@ describe('LuigiConfigService', () => {
2325
getInitialStaticSettingsConfig: jest.fn(),
2426
} as any;
2527

28+
communicationConfigServiceMock = {
29+
getCommunicationConfig: jest.fn(),
30+
} as any;
31+
2632
service = new LuigiConfigService(
2733
envConfigServiceMock,
2834
authConfigServiceMock,
29-
staticSettingsConfigServiceMock
35+
staticSettingsConfigServiceMock,
36+
communicationConfigServiceMock
3037
);
3138
});
3239

@@ -49,11 +56,18 @@ describe('LuigiConfigService', () => {
4956
filed: 'filed',
5057
};
5158

59+
const mockCommunicationConfig = {
60+
customMessagesListeners: { '43545': () => {} },
61+
};
62+
5263
envConfigServiceMock.getEnvConfig.mockResolvedValue(mockEnvConfig);
5364
authConfigServiceMock.getAuthConfig.mockReturnValue(mockAuthConfig);
5465
staticSettingsConfigServiceMock.getInitialStaticSettingsConfig.mockReturnValue(
5566
mockStaticSettings
5667
);
68+
communicationConfigServiceMock.getCommunicationConfig.mockReturnValue(
69+
mockCommunicationConfig
70+
);
5771

5872
const config = await service.getLuigiConfiguration();
5973

@@ -70,6 +84,7 @@ describe('LuigiConfigService', () => {
7084
auth: mockAuthConfig,
7185
routing: expect.any(Object),
7286
settings: mockStaticSettings,
87+
communication: mockCommunicationConfig,
7388
});
7489

7590
// Check routing config
@@ -83,9 +98,9 @@ describe('LuigiConfigService', () => {
8398
});
8499
});
85100

86-
describe('getRoutingConfig', () => {
101+
describe('getInitialRoutingConfig', () => {
87102
it('should return the correct routing configuration', () => {
88-
const routingConfig = (service as any).getRoutingConfig();
103+
const routingConfig = (service as any).getInitialRoutingConfig();
89104

90105
expect(routingConfig).toEqual({
91106
useHashRouting: false,

src/lib/services/luigi-config/luigi-config.service.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import { Inject, Injectable } from '@angular/core';
2-
import { LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN } from '../../injection-tokens';
2+
import {
3+
LUIGI_COMMUNICATION_CONFIG_SERVICE_INJECTION_TOKEN,
4+
LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN,
5+
} from '../../injection-tokens';
36
import { ClientEnvironment } from '../../model/env';
47
import { AuthConfigService } from './auth-config.service';
58
import { EnvConfigService } from '../env-config.service';
9+
import { CommunicationConfigService } from './communication-config.service';
610
import { StaticSettingsConfigService } from './static-settings-config.service';
711

812
@Injectable({
@@ -13,7 +17,9 @@ export class LuigiConfigService {
1317
private envConfigService: EnvConfigService,
1418
private authConfigService: AuthConfigService,
1519
@Inject(LUIGI_STATIC_SETTINGS_CONFIG_SERVICE_INJECTION_TOKEN)
16-
private staticSettingsConfigService: StaticSettingsConfigService
20+
private staticSettingsConfigService: StaticSettingsConfigService,
21+
@Inject(LUIGI_COMMUNICATION_CONFIG_SERVICE_INJECTION_TOKEN)
22+
private communicationConfigService: CommunicationConfigService
1723
) {}
1824

1925
public async getLuigiConfiguration() {
@@ -24,13 +30,14 @@ export class LuigiConfigService {
2430
envConfig.oauthServerUrl,
2531
envConfig.clientId
2632
),
27-
routing: this.getRoutingConfig() as any,
33+
routing: this.getInitialRoutingConfig(),
34+
communication: this.communicationConfigService.getCommunicationConfig(),
2835
settings:
2936
this.staticSettingsConfigService.getInitialStaticSettingsConfig(),
3037
};
3138
}
3239

33-
private getRoutingConfig() {
40+
private getInitialRoutingConfig() {
3441
return {
3542
useHashRouting: false,
3643
showModalPathInUrl: false,

0 commit comments

Comments
 (0)