mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-09 11:03:05 +00:00
[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:
@@ -78,8 +78,27 @@ describe('MatomoService', () => {
|
|||||||
expect(matomoTracker.forgetConsentGiven).toHaveBeenCalled();
|
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.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(
|
configService.findByPropertyName.withArgs(MATOMO_TRACKER_URL).and.returnValue(
|
||||||
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(),{ values: ['http://example.com'] })),
|
createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(),{ values: ['http://example.com'] })),
|
||||||
);
|
);
|
||||||
|
@@ -10,6 +10,7 @@ import {
|
|||||||
combineLatest,
|
combineLatest,
|
||||||
from as fromPromise,
|
from as fromPromise,
|
||||||
Observable,
|
Observable,
|
||||||
|
of,
|
||||||
switchMap,
|
switchMap,
|
||||||
} from 'rxjs';
|
} from 'rxjs';
|
||||||
import {
|
import {
|
||||||
@@ -114,6 +115,11 @@ export class MatomoService {
|
|||||||
* @returns An Observable that emits the Matomo tracker URL if available.
|
* @returns An Observable that emits the Matomo tracker URL if available.
|
||||||
*/
|
*/
|
||||||
getTrackerUrl$() {
|
getTrackerUrl$() {
|
||||||
|
|
||||||
|
if (isNotEmpty(environment.matomo?.trackerUrl)) {
|
||||||
|
return of(environment.matomo.trackerUrl);
|
||||||
|
}
|
||||||
|
|
||||||
return this.configService.findByPropertyName(MATOMO_TRACKER_URL)
|
return this.configService.findByPropertyName(MATOMO_TRACKER_URL)
|
||||||
.pipe(
|
.pipe(
|
||||||
getFirstCompletedRemoteData(),
|
getFirstCompletedRemoteData(),
|
||||||
|
@@ -24,6 +24,7 @@ import { InfoConfig } from './info-config.interface';
|
|||||||
import { ItemConfig } from './item-config.interface';
|
import { ItemConfig } from './item-config.interface';
|
||||||
import { LangConfig } from './lang-config.interface';
|
import { LangConfig } from './lang-config.interface';
|
||||||
import { MarkdownConfig } from './markdown-config.interface';
|
import { MarkdownConfig } from './markdown-config.interface';
|
||||||
|
import { MatomoConfig } from './matomo-config.interface';
|
||||||
import { MediaViewerConfig } from './media-viewer-config.interface';
|
import { MediaViewerConfig } from './media-viewer-config.interface';
|
||||||
import { INotificationBoardOptions } from './notifications-config.interfaces';
|
import { INotificationBoardOptions } from './notifications-config.interfaces';
|
||||||
import { QualityAssuranceConfig } from './quality-assurance.config';
|
import { QualityAssuranceConfig } from './quality-assurance.config';
|
||||||
@@ -66,6 +67,7 @@ interface AppConfig extends Config {
|
|||||||
search: SearchConfig;
|
search: SearchConfig;
|
||||||
notifyMetrics: AdminNotifyMetricsRow[];
|
notifyMetrics: AdminNotifyMetricsRow[];
|
||||||
liveRegion: LiveRegionConfig;
|
liveRegion: LiveRegionConfig;
|
||||||
|
matomo?: MatomoConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -19,6 +19,7 @@ import { InfoConfig } from './info-config.interface';
|
|||||||
import { ItemConfig } from './item-config.interface';
|
import { ItemConfig } from './item-config.interface';
|
||||||
import { LangConfig } from './lang-config.interface';
|
import { LangConfig } from './lang-config.interface';
|
||||||
import { MarkdownConfig } from './markdown-config.interface';
|
import { MarkdownConfig } from './markdown-config.interface';
|
||||||
|
import { MatomoConfig } from './matomo-config.interface';
|
||||||
import { MediaViewerConfig } from './media-viewer-config.interface';
|
import { MediaViewerConfig } from './media-viewer-config.interface';
|
||||||
import { INotificationBoardOptions } from './notifications-config.interfaces';
|
import { INotificationBoardOptions } from './notifications-config.interfaces';
|
||||||
import { QualityAssuranceConfig } from './quality-assurance.config';
|
import { QualityAssuranceConfig } from './quality-assurance.config';
|
||||||
@@ -600,4 +601,5 @@ export class DefaultAppConfig implements AppConfig {
|
|||||||
isVisible: false,
|
isVisible: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
matomo: MatomoConfig = {};
|
||||||
}
|
}
|
||||||
|
12
src/config/matomo-config.interface.ts
Normal file
12
src/config/matomo-config.interface.ts
Normal 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;
|
||||||
|
}
|
Reference in New Issue
Block a user