Skip to content

Commit 312247c

Browse files
committed
wip
1 parent 2586a7a commit 312247c

File tree

1 file changed

+48
-43
lines changed

1 file changed

+48
-43
lines changed

ts/smelter-web-client/src/hooks/useSmelter.ts

Lines changed: 48 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useEffect, useState } from 'react';
22
import Smelter from '../smelter/live';
33
import type { SmelterInstanceOptions } from '../manager';
44

5-
export function useSmelter2(options: SmelterInstanceOptions): Smelter | undefined {
5+
export function useSmelter(options: SmelterInstanceOptions): Smelter | undefined {
66
const [smelter, setSmelter] = useState<Smelter>();
77
const [_, setPromiseQueue] = useState<Promise<void>>(Promise.resolve());
88

@@ -30,45 +30,50 @@ export function useSmelter2(options: SmelterInstanceOptions): Smelter | undefine
3030
return smelter;
3131
}
3232

33-
export function useSmelter(options: SmelterInstanceOptions): Smelter | undefined {
34-
const [smelter, setSmelter] = useState<Smelter>();
35-
const [cleanupPromise, setCleanupPromise] = useState<Promise<void>>();
36-
const [instanceOptions, setInstanceOptions] = useState<SmelterInstanceOptions>();
37-
38-
useEffect(() => {
39-
void (async () => {
40-
await cleanupPromise;
41-
setInstanceOptions(options);
42-
})();
43-
44-
}, [options, cleanupPromise]);
45-
46-
useEffect(() => {
47-
if (!instanceOptions) {
48-
return;
49-
}
50-
51-
const smelter = new Smelter(options);
52-
53-
// TODO(noituri): Restart smelter instance
54-
let cancel = false;
55-
const promise = (async () => {
56-
await smelter.init();
57-
await smelter.start();
58-
if (!cancel) {
59-
setSmelter(smelter);
60-
}
61-
})();
62-
63-
return () => {
64-
cancel = true;
65-
setCleanupPromise((prevCleanup) => (async () => {
66-
await prevCleanup;
67-
await promise.catch(() => { });
68-
await smelter.terminate();
69-
})());
70-
}
71-
}, [instanceOptions]);
72-
73-
return smelter;
74-
}
33+
// export function useSmelter(options: SmelterInstanceOptions): Smelter | undefined {
34+
// const [smelter, setSmelter] = useState<Smelter>();
35+
// const [cleanupPromise, setCleanupPromise] = useState<Promise<void>>();
36+
// const [instanceOptions, setInstanceOptions] = useState<SmelterInstanceOptions>();
37+
// const count = useRef(0);
38+
//
39+
// useEffect(() => {
40+
// void (async () => {
41+
// await cleanupPromise;
42+
// setInstanceOptions(options);
43+
// })();
44+
//
45+
// }, [options, cleanupPromise]);
46+
//
47+
// useEffect(() => {
48+
// if (!instanceOptions) {
49+
// return;
50+
// }
51+
//
52+
// const smelter = new Smelter(options);
53+
// count.current++;
54+
// let c = count.current;
55+
//
56+
// // TODO(noituri): Restart smelter instance
57+
// let cancel = false;
58+
// const promise = (async () => {
59+
// console.log('init', c);
60+
// await smelter.init();
61+
// await smelter.start();
62+
// if (!cancel) {
63+
// setSmelter(smelter);
64+
// }
65+
// })();
66+
//
67+
// return () => {
68+
// cancel = true;
69+
// setCleanupPromise((prevCleanup) => (async () => {
70+
// await prevCleanup;
71+
// await promise.catch(() => { });
72+
// await smelter.terminate();
73+
// console.log("cleanup", c);
74+
// })());
75+
// }
76+
// }, [instanceOptions,]);
77+
//
78+
// return smelter;
79+
// }

0 commit comments

Comments
 (0)