Skip to content

Commit 87ccc59

Browse files
committed
fix: core initialization
1 parent 3b79775 commit 87ccc59

1 file changed

Lines changed: 20 additions & 23 deletions

File tree

src/core/CoreProvider.tsx

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ import createTransport from './createTransport';
44
import Error from './Error';
55

66
const transport = createTransport();
7-
window.core = transport;
87

98
type Props = {
109
appInfo: object,
1110
children: React.ReactNode,
1211
};
1312

1413
const Core = (props: Props) => {
15-
const [initialized, setInitialized] = useState(false);
14+
const initialized = useRef(false);
15+
const [ready, setReady] = useState(false);
1616
const [error, setError] = useState<Error | null>();
1717

1818
const stateListeners = useRef<CoreStateListener[]>([]);
@@ -32,6 +32,9 @@ const Core = (props: Props) => {
3232
};
3333

3434
useEffect(() => {
35+
if (initialized.current) return;
36+
initialized.current = true;
37+
3538
const onCoreEvent = ({ name, args }: NewStateEvent | CoreEventEvent) => {
3639
switch (name) {
3740
case 'NewState':
@@ -63,37 +66,31 @@ const Core = (props: Props) => {
6366
}
6467
};
6568

66-
if (!window.core) {
67-
transport
68-
.init(props.appInfo)
69-
.then(() => {
70-
window.core = transport;
71-
window.onCoreEvent = onCoreEvent;
72-
setInitialized(true);
73-
setError(null);
74-
})
75-
.catch((e: Error) => {
76-
console.error('Failed to initialize core:', e);
77-
setInitialized(false);
78-
setError(e);
79-
});
80-
}
69+
transport
70+
.init(props.appInfo)
71+
.then(() => {
72+
window.core = transport;
73+
window.onCoreEvent = onCoreEvent;
74+
setReady(true);
75+
setError(null);
76+
})
77+
.catch((e: Error) => {
78+
console.error('Failed to initialize core:', e);
79+
setReady(false);
80+
setError(e);
81+
});
8182

8283
return () => {
8384
stateListeners.current = [];
8485
eventListeners.current = [];
8586
errorListeners.current = [];
86-
setInitialized(false);
87-
setError(null);
88-
window.onCoreEvent = null;
89-
window.core = null;
9087
};
9188
}, []);
9289

9390
return (
9491
<CoreContext.Provider value={{ transport, on, off }}>
95-
{ error && !initialized && <Error /> }
96-
{ initialized && !error && props.children }
92+
{ error && !ready && <Error /> }
93+
{ ready && !error && props.children }
9794
</CoreContext.Provider>
9895
);
9996
};

0 commit comments

Comments
 (0)