@@ -2,7 +2,7 @@ import { useEffect, useState } from 'react';
22import Smelter from '../smelter/live' ;
33import 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