Skip to content

Commit 81bed0a

Browse files
fix: trigger data-change event when loading data
1 parent 70f4530 commit 81bed0a

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

src/hooks/useLoadSpectra.ts

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type {
22
CoreReadReturn,
3+
NmriumState,
34
ParsingOptions,
45
ViewState,
56
} from '@zakodium/nmrium-core';
@@ -82,22 +83,40 @@ export function useLoadSpectra(): UseLoadSpectraResult {
8283
const load = useCallback(async (options: LoadOptions) => {
8384
setLoading(true);
8485
try {
86+
let loadedResult: CoreReadReturn;
87+
let resolvedActiveTab: string | undefined;
88+
8589
if ('nmrium' in options) {
86-
const nmriumResult = await loadSpectraFromNMRium(options.nmrium);
87-
setResult(nmriumResult);
88-
setActiveTab(
89-
options.activeTab ?? nmriumResult.state.view?.spectra?.activeTab,
90-
);
90+
loadedResult = await loadSpectraFromNMRium(options.nmrium);
91+
resolvedActiveTab =
92+
options.activeTab ?? loadedResult.state.view?.spectra?.activeTab;
9193
} else if ('urls' in options) {
9294
if (!isArrayOfString(options.urls)) {
9395
throw new Error('The input must be a valid urls array of string[]');
9496
}
95-
setResult(await loadSpectraFromURLs(options.urls));
96-
setActiveTab(options.activeTab);
97+
loadedResult = await loadSpectraFromURLs(options.urls);
98+
resolvedActiveTab = options.activeTab;
9799
} else {
98-
setResult(await loadSpectraFromFiles(options.files));
99-
setActiveTab(options.activeTab);
100+
loadedResult = await loadSpectraFromFiles(options.files);
101+
resolvedActiveTab = options.activeTab;
100102
}
103+
104+
setResult(loadedResult);
105+
setActiveTab(resolvedActiveTab);
106+
const state = {
107+
...loadedResult.state,
108+
data: {
109+
spectra: [],
110+
molecules: [],
111+
...loadedResult.state.data,
112+
actionType: 'INITIATE',
113+
},
114+
};
115+
116+
events.trigger('data-change', {
117+
source: 'data',
118+
state: state as NmriumState,
119+
});
101120
} catch (error: unknown) {
102121
events.trigger('error', error as Error);
103122
// eslint-disable-next-line no-console

0 commit comments

Comments
 (0)