@@ -30,14 +30,15 @@ contract TransferWithTimeout(pubkey sender, pubkey recipient, int timeout) {
3030 const [ network , setNetwork ] = useState < Network > ( 'chipnet' )
3131 const [ showWallets , setShowWallets ] = useState < boolean | undefined > ( false ) ;
3232 const [ wallets , setWallets ] = useState < Wallet [ ] > ( [ ] )
33+ const [ needRecompile , setNeedRecompile ] = useState < boolean > ( true ) ;
3334
3435 useEffect ( ( ) => {
35- const newCode = localStorage . getItem ( "code" ) ;
36- // If item code exits in local storage
37- if ( newCode !== null && newCode !== undefined ) {
38- setCode ( newCode ) ;
36+ const codeLocalStorage = localStorage . getItem ( "code" ) ;
37+ // If code exits in local storage, set it as new code
38+ if ( codeLocalStorage ) {
39+ setCode ( codeLocalStorage ) ;
3940 try {
40- const artifact = compileString ( newCode ) ;
41+ const artifact = compileString ( codeLocalStorage ) ;
4142 setArtifact ( artifact ) ;
4243 } catch ( e : any ) {
4344 alert ( e . message ) ;
@@ -46,6 +47,13 @@ contract TransferWithTimeout(pubkey sender, pubkey recipient, int timeout) {
4647 }
4748 } , [ ] )
4849
50+ useEffect ( ( ) => {
51+ if ( ! artifact ) return
52+ const previousCode = localStorage . getItem ( "code" ) ;
53+ const changedCashScriptCode = previousCode != code ;
54+ setNeedRecompile ( changedCashScriptCode ) ;
55+ } , [ code , needRecompile , artifact ] )
56+
4957 function compile ( ) {
5058 try {
5159 localStorage . setItem ( "code" , code ) ;
@@ -54,6 +62,7 @@ contract TransferWithTimeout(pubkey sender, pubkey recipient, int timeout) {
5462 } catch ( e : any ) {
5563 alert ( e . message ) ;
5664 console . error ( e . message ) ;
65+ setArtifact ( undefined ) ;
5766 }
5867 }
5968
@@ -63,7 +72,7 @@ contract TransferWithTimeout(pubkey sender, pubkey recipient, int timeout) {
6372 paddingTop : '0px' ,
6473 height : 'calc(100vh - 120px'
6574 } } >
66- < Editor code = { code } setCode = { setCode } compile = { compile } />
75+ < Editor code = { code } setCode = { setCode } compile = { compile } needRecompile = { needRecompile } />
6776 < WalletInfo style = { ! showWallets ?{ display :'none' } :{ } } network = { network } setShowWallets = { setShowWallets } wallets = { wallets } setWallets = { setWallets } />
6877 < ContractInfo style = { showWallets ?{ display :'none' } :{ } } artifact = { artifact } network = { network } setNetwork = { setNetwork } setShowWallets = { setShowWallets } wallets = { wallets } />
6978 </ RowFlex >
0 commit comments