Skip to content

Commit 69472b2

Browse files
[CST-18964] Restored matomo trackerUrl optional setting.
feat: - This configuration would be only used on the angular side, if not specified will use the backend default.
1 parent ab9cbea commit 69472b2

5 files changed

Lines changed: 42 additions & 1 deletion

File tree

src/app/statistics/matomo.service.spec.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,27 @@ describe('MatomoService', () => {
7878
expect(matomoTracker.forgetConsentGiven).toHaveBeenCalled();
7979
});
8080

81-
it('should initialize tracker with correct parameters in production', () => {
81+
it('should initialize tracker with values from angular configuration', () => {
8282
environment.production = true;
83+
environment.matomo = { trackerUrl: 'http://localhost:80801' };
84+
configService.findByPropertyName.withArgs(MATOMO_TRACKER_URL).and.returnValue(
85+
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(),{ values: ['http://matomo'] })),
86+
);
87+
configService.findByPropertyName.withArgs(MATOMO_SITE_ID).and.returnValue(
88+
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(), { values: ['1'] })));
89+
orejimeService.getSavedPreferences.and.returnValue(of({ matomo: true }));
90+
service.init();
91+
92+
expect(matomoTracker.setConsentGiven).toHaveBeenCalled();
93+
expect(matomoInitializer.initializeTracker).toHaveBeenCalledWith({
94+
siteId: '1',
95+
trackerUrl: 'http://localhost:80801',
96+
});
97+
});
98+
99+
it('should initialize tracker with REST configuration correct parameters in production', () => {
100+
environment.production = true;
101+
environment.matomo = { trackerUrl: '' };
83102
configService.findByPropertyName.withArgs(MATOMO_TRACKER_URL).and.returnValue(
84103
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(),{ values: ['http://example.com'] })),
85104
);

src/app/statistics/matomo.service.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
combineLatest,
1111
from as fromPromise,
1212
Observable,
13+
of,
1314
switchMap,
1415
} from 'rxjs';
1516
import {
@@ -114,6 +115,11 @@ export class MatomoService {
114115
* @returns An Observable that emits the Matomo tracker URL if available.
115116
*/
116117
getTrackerUrl$() {
118+
119+
if (isNotEmpty(environment.matomo?.trackerUrl)) {
120+
return of(environment.matomo.trackerUrl);
121+
}
122+
117123
return this.configService.findByPropertyName(MATOMO_TRACKER_URL)
118124
.pipe(
119125
getFirstCompletedRemoteData(),

src/config/app-config.interface.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { InfoConfig } from './info-config.interface';
2424
import { ItemConfig } from './item-config.interface';
2525
import { LangConfig } from './lang-config.interface';
2626
import { MarkdownConfig } from './markdown-config.interface';
27+
import { MatomoConfig } from './matomo-config.interface';
2728
import { MediaViewerConfig } from './media-viewer-config.interface';
2829
import { INotificationBoardOptions } from './notifications-config.interfaces';
2930
import { QualityAssuranceConfig } from './quality-assurance.config';
@@ -66,6 +67,7 @@ interface AppConfig extends Config {
6667
search: SearchConfig;
6768
notifyMetrics: AdminNotifyMetricsRow[];
6869
liveRegion: LiveRegionConfig;
70+
matomo?: MatomoConfig;
6971
}
7072

7173
/**

src/config/default-app-config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { InfoConfig } from './info-config.interface';
1919
import { ItemConfig } from './item-config.interface';
2020
import { LangConfig } from './lang-config.interface';
2121
import { MarkdownConfig } from './markdown-config.interface';
22+
import { MatomoConfig } from './matomo-config.interface';
2223
import { MediaViewerConfig } from './media-viewer-config.interface';
2324
import { INotificationBoardOptions } from './notifications-config.interfaces';
2425
import { QualityAssuranceConfig } from './quality-assurance.config';
@@ -600,4 +601,5 @@ export class DefaultAppConfig implements AppConfig {
600601
isVisible: false,
601602
};
602603

604+
matomo: MatomoConfig = {};
603605
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { Config } from './config.interface';
2+
3+
/**
4+
* Configuration interface for Matomo tracking
5+
*/
6+
export interface MatomoConfig extends Config {
7+
/**
8+
* This tracker url will be used instead of the one configured on REST side (matomo.tracker.url)
9+
* only if set inside the config.*.yml configuration file
10+
*/
11+
trackerUrl?: string;
12+
}

0 commit comments

Comments
 (0)