From 5688a2b4b8f872163ff6492bb80d12cade4385cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20K=C3=B6hler?= Date: Fri, 18 Apr 2025 12:33:42 -0300 Subject: [PATCH] fix(dicomWebClient): use public getter for activeDataSourceName instead of accessing private property (#4973) --- .../src/utils/dicomWebClient.ts | 4 +- .../core/src/extensions/ExtensionManager.ts | 38 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/extensions/dicom-microscopy/src/utils/dicomWebClient.ts b/extensions/dicom-microscopy/src/utils/dicomWebClient.ts index 42455fe0c..b6a9da9ef 100644 --- a/extensions/dicom-microscopy/src/utils/dicomWebClient.ts +++ b/extensions/dicom-microscopy/src/utils/dicomWebClient.ts @@ -11,7 +11,7 @@ import { StaticWadoClient } from '@ohif/extension-default'; */ export default function getDicomWebClient({ extensionManager, servicesManager }: withAppTypes) { const dataSourceConfig = window.config.dataSources.find( - ds => ds.sourceName === extensionManager.activeDataSource + ds => ds.sourceName === extensionManager.activeDataSourceName ); const { userAuthenticationService } = servicesManager.services; @@ -28,7 +28,7 @@ export default function getDicomWebClient({ extensionManager, servicesManager }: const client = new StaticWadoClient(wadoConfig); client.wadoURL = wadoConfig.url; - if (extensionManager.activeDataSource === 'dicomlocal') { + if (extensionManager.activeDataSourceName === 'dicomlocal') { /** * For local data source, override the retrieveInstanceFrames() method of the * dicomweb-client to retrieve image data from memory cached metadata. diff --git a/platform/core/src/extensions/ExtensionManager.ts b/platform/core/src/extensions/ExtensionManager.ts index 70b86f168..20e67f90a 100644 --- a/platform/core/src/extensions/ExtensionManager.ts +++ b/platform/core/src/extensions/ExtensionManager.ts @@ -87,7 +87,7 @@ export default class ExtensionManager extends PubSubService { }; private dataSourceMap: Record; private dataSourceDefs: Record; - private activeDataSourceName: string; + private _activeDataSourceName: string; constructor({ commandsManager, @@ -115,20 +115,20 @@ export default class ExtensionManager extends PubSubService { this.dataSourceMap = {}; this.dataSourceDefs = {}; this.defaultDataSourceName = appConfig.defaultDataSourceName; - this.activeDataSourceName = appConfig.defaultDataSourceName; + this._activeDataSourceName = appConfig.defaultDataSourceName; this.peerImport = appConfig.peerImport; } public setActiveDataSource(dataSource: string): void { - if (this.activeDataSourceName === dataSource) { + if (this._activeDataSourceName === dataSource) { return; } - this.activeDataSourceName = dataSource; + this._activeDataSourceName = dataSource; this._broadcastEvent( ExtensionManager.EVENTS.ACTIVE_DATA_SOURCE_CHANGED, - this.dataSourceDefs[this.activeDataSourceName] + this.dataSourceDefs[this._activeDataSourceName] ); } @@ -373,7 +373,7 @@ export default class ExtensionManager extends PubSubService { getDataSources = dataSourceName => { if (!dataSourceName) { // Default to the activeDataSource - dataSourceName = this.activeDataSourceName; + dataSourceName = this._activeDataSourceName; } // Note: this currently uses the data source name, which feels weird... @@ -385,7 +385,7 @@ export default class ExtensionManager extends PubSubService { }; getActiveDataSource = () => { - return this.dataSourceMap[this.activeDataSourceName]; + return this.dataSourceMap[this._activeDataSourceName]; }; /** @@ -398,7 +398,7 @@ export default class ExtensionManager extends PubSubService { getDataSourceDefinition = dataSourceName => { if (dataSourceName === undefined) { // Default to the activeDataSource - dataSourceName = this.activeDataSourceName; + dataSourceName = this._activeDataSourceName; } return this.dataSourceDefs[dataSourceName]; @@ -408,7 +408,7 @@ export default class ExtensionManager extends PubSubService { * Gets the data source definition for the active data source. */ getActiveDataSourceDefinition = () => { - return this.getDataSourceDefinition(this.activeDataSourceName); + return this.getDataSourceDefinition(this._activeDataSourceName); }; /** @@ -425,16 +425,18 @@ export default class ExtensionManager extends PubSubService { const inactiveDataSourceNames = Object.keys(this.dataSourceMap).filter(ds => { const configuration = this.dataSourceDefs[ds]?.configuration; const isNotActiveDataSource = - this.dataSourceDefs[ds].sourceName !== this.activeDataSourceName; + this.dataSourceDefs[ds].sourceName !== this._activeDataSourceName; const supportsStowOrWado = configuration?.supportsStow ?? configuration?.wadoRoot; return supportsStowOrWado && isNotActiveDataSource; }); - const allDatasourcesForUI = [this.activeDataSourceName, ...inactiveDataSourceNames].map(ds => ({ - value: ds, - label: ds, - placeHolder: ds, - })); + const allDatasourcesForUI = [this._activeDataSourceName, ...inactiveDataSourceNames].map( + ds => ({ + value: ds, + label: ds, + placeHolder: ds, + }) + ); return allDatasourcesForUI; }; @@ -558,7 +560,7 @@ export default class ExtensionManager extends PubSubService { dataSourceDef.configuration = dataSourceConfiguration; this._createDataSourceInstance(dataSourceDef); - if (this.activeDataSourceName === dataSourceName) { + if (this._activeDataSourceName === dataSourceName) { // When the active data source is changed/set, fire an event to indicate that its configuration has changed. this._broadcastEvent(ExtensionManager.EVENTS.ACTIVE_DATA_SOURCE_CHANGED, dataSourceDef); } @@ -649,6 +651,10 @@ export default class ExtensionManager extends PubSubService { public get appConfig() { return this._appConfig; } + + public get activeDataSourceName() { + return this._activeDataSourceName; + } } /**