[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.
This commit is contained in:
Vincenzo Mecca
2025-03-28 11:50:53 +01:00
parent ab9cbea7c3
commit 69472b27c7
5 changed files with 42 additions and 1 deletions

View File

@@ -78,8 +78,27 @@ describe('MatomoService', () => {
expect(matomoTracker.forgetConsentGiven).toHaveBeenCalled();
});
it('should initialize tracker with correct parameters in production', () => {
it('should initialize tracker with values from angular configuration', () => {
environment.production = true;
environment.matomo = { trackerUrl: 'http://localhost:80801' };
configService.findByPropertyName.withArgs(MATOMO_TRACKER_URL).and.returnValue(
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(),{ values: ['http://matomo'] })),
);
configService.findByPropertyName.withArgs(MATOMO_SITE_ID).and.returnValue(
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(), { values: ['1'] })));
orejimeService.getSavedPreferences.and.returnValue(of({ matomo: true }));
service.init();
expect(matomoTracker.setConsentGiven).toHaveBeenCalled();
expect(matomoInitializer.initializeTracker).toHaveBeenCalledWith({
siteId: '1',
trackerUrl: 'http://localhost:80801',
});
});
it('should initialize tracker with REST configuration correct parameters in production', () => {
environment.production = true;
environment.matomo = { trackerUrl: '' };
configService.findByPropertyName.withArgs(MATOMO_TRACKER_URL).and.returnValue(
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(),{ values: ['http://example.com'] })),
);

View File

@@ -10,6 +10,7 @@ import {
combineLatest,
from as fromPromise,
Observable,
of,
switchMap,
} from 'rxjs';
import {
@@ -114,6 +115,11 @@ export class MatomoService {
* @returns An Observable that emits the Matomo tracker URL if available.
*/
getTrackerUrl$() {
if (isNotEmpty(environment.matomo?.trackerUrl)) {
return of(environment.matomo.trackerUrl);
}
return this.configService.findByPropertyName(MATOMO_TRACKER_URL)
.pipe(
getFirstCompletedRemoteData(),

View File

@@ -24,6 +24,7 @@ import { InfoConfig } from './info-config.interface';
import { ItemConfig } from './item-config.interface';
import { LangConfig } from './lang-config.interface';
import { MarkdownConfig } from './markdown-config.interface';
import { MatomoConfig } from './matomo-config.interface';
import { MediaViewerConfig } from './media-viewer-config.interface';
import { INotificationBoardOptions } from './notifications-config.interfaces';
import { QualityAssuranceConfig } from './quality-assurance.config';
@@ -66,6 +67,7 @@ interface AppConfig extends Config {
search: SearchConfig;
notifyMetrics: AdminNotifyMetricsRow[];
liveRegion: LiveRegionConfig;
matomo?: MatomoConfig;
}
/**

View File

@@ -19,6 +19,7 @@ import { InfoConfig } from './info-config.interface';
import { ItemConfig } from './item-config.interface';
import { LangConfig } from './lang-config.interface';
import { MarkdownConfig } from './markdown-config.interface';
import { MatomoConfig } from './matomo-config.interface';
import { MediaViewerConfig } from './media-viewer-config.interface';
import { INotificationBoardOptions } from './notifications-config.interfaces';
import { QualityAssuranceConfig } from './quality-assurance.config';
@@ -600,4 +601,5 @@ export class DefaultAppConfig implements AppConfig {
isVisible: false,
};
matomo: MatomoConfig = {};
}

View File

@@ -0,0 +1,12 @@
import { Config } from './config.interface';
/**
* Configuration interface for Matomo tracking
*/
export interface MatomoConfig extends Config {
/**
* This tracker url will be used instead of the one configured on REST side (matomo.tracker.url)
* only if set inside the config.*.yml configuration file
*/
trackerUrl?: string;
}