Skip to content

Commit bb243c7

Browse files
fix: load data
1 parent ddb79b5 commit bb243c7

File tree

2 files changed

+24
-18
lines changed

2 files changed

+24
-18
lines changed

src/NMRiumWrapper.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { useCallback, useEffect, useRef } from 'react';
66
import { RootLayout } from 'react-science/ui';
77

88
import events from './events/event.js';
9+
import type { NMRiumData } from './hooks/useLoadSpectra.js';
910
import { useLoadSpectra } from './hooks/useLoadSpectra.js';
1011
import { usePreferences } from './hooks/usePreferences.js';
1112
import { useWhiteList } from './hooks/useWhiteList.js';
@@ -78,7 +79,7 @@ export default function NMRiumWrapper() {
7879
(loadData) => {
7980
switch (loadData.type) {
8081
case 'nmrium':
81-
setData(loadData.data as NmriumData);
82+
setData(loadData.data as unknown as NMRiumData);
8283
break;
8384
case 'file': {
8485
const { data: files, activeTab = '' } = loadData;
@@ -105,7 +106,6 @@ export default function NMRiumWrapper() {
105106
clearActionListener();
106107
};
107108
});
108-
109109
return (
110110
<RootLayout style={styles.container}>
111111
{isFetchAllowedOriginsPending && (
@@ -121,7 +121,7 @@ export default function NMRiumWrapper() {
121121
workspace={workspace}
122122
emptyText={defaultEmptyMessage}
123123
onError={(error) => {
124-
events.trigger('error', error as unknown as Error);
124+
events.trigger('error', error as Error);
125125
}}
126126
customWorkspaces={customWorkspaces}
127127
/>

src/hooks/useLoadSpectra.ts

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
import type {
2-
NmriumData,
3-
ParsingOptions,
4-
ViewState,
5-
} from '@zakodium/nmrium-core';
1+
import type { ParsingOptions, ViewState } from '@zakodium/nmrium-core';
62
import { CURRENT_EXPORT_VERSION } from '@zakodium/nmrium-core';
73
import init from '@zakodium/nmrium-core-plugins';
84
import { FifoLogger } from 'fifo-logger';
95
import { FileCollection } from 'file-collection';
6+
import type { NMRiumState } from 'nmrium';
107
import { useCallback, useMemo, useState } from 'react';
118

129
import events from '../events/event.js';
@@ -43,9 +40,9 @@ const PARSING_OPTIONS: Partial<ParsingOptions> = {
4340
async function loadSpectraFromFiles(files: File[]) {
4441
const fileCollection = await new FileCollection().appendFileList(files);
4542
const {
46-
nmriumState: { data },
43+
nmriumState: { data, version },
4744
} = await core.read(fileCollection, PARSING_OPTIONS);
48-
return data;
45+
return { data, version } as NMRiumData;
4946
}
5047

5148
async function loadSpectraFromURLs(urls: string[]) {
@@ -60,23 +57,31 @@ async function loadSpectraFromURLs(urls: string[]) {
6057
return { relativePath: path, baseURL: refURL.origin };
6158
}, []);
6259

63-
const [{ data }] = await core.readFromWebSource({ entries }, PARSING_OPTIONS);
64-
return data;
60+
const [{ data, version }] = await core.readFromWebSource(
61+
{ entries },
62+
PARSING_OPTIONS,
63+
);
64+
return { data, version } as NMRiumData;
6565
}
6666

6767
type LoadOptions =
6868
| { urls: string[]; activeTab?: string }
6969
| { files: File[]; activeTab?: string };
7070

71+
export type NMRiumData = Pick<NMRiumState, 'data' | 'version'>;
72+
7173
interface UseLoadSpectraResult {
72-
data: { version: number; data: NmriumData };
74+
data: NMRiumData;
7375
load: (options: LoadOptions) => void;
74-
setData: (data: NmriumData) => void;
76+
setData: (data: NMRiumData) => void;
7577
isLoading: boolean;
7678
}
7779

7880
export function useLoadSpectra(): UseLoadSpectraResult {
79-
const [data, setData] = useState<NmriumData>({ spectra: [], molecules: [] });
81+
const [data, setData] = useState<NMRiumData>({
82+
data: { spectra: [], molecules: [] },
83+
version: CURRENT_EXPORT_VERSION,
84+
});
8085
const [activeTab, setActiveTab] = useState<string>();
8186
const [isLoading, setLoading] = useState<boolean>(false);
8287

@@ -86,14 +91,14 @@ export function useLoadSpectra(): UseLoadSpectraResult {
8691
if ('urls' in options) {
8792
if (isArrayOfString(options.urls)) {
8893
const result = await loadSpectraFromURLs(options.urls);
89-
setData(result as NmriumData);
94+
setData(result);
9095
setActiveTab(options?.activeTab);
9196
} else {
9297
throw new Error('The input must be a valid urls array of string[]');
9398
}
9499
} else if ('files' in options) {
95100
const result = await loadSpectraFromFiles(options.files);
96-
setData(result as NmriumData);
101+
setData(result);
97102
setActiveTab(options?.activeTab);
98103
}
99104
} catch (error: unknown) {
@@ -109,8 +114,9 @@ export function useLoadSpectra(): UseLoadSpectraResult {
109114
return useMemo(() => {
110115
let view: DeepPartial<ViewState> = {};
111116
view = { spectra: { activeTab } };
117+
const { version, ...other } = data;
112118
return {
113-
data: { version: CURRENT_EXPORT_VERSION, data, view },
119+
data: { version: version ?? CURRENT_EXPORT_VERSION, ...other, view },
114120
load,
115121
isLoading,
116122
setData,

0 commit comments

Comments
 (0)