Skip to content

Commit 359eddb

Browse files
authored
Merge pull request #19 from CashScript/recompile
disable compile button when code hasn't changed, reset contract on recompile
2 parents d750170 + facaf68 commit 359eddb

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

src/components/Editor.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ import { ColumnFlex } from './shared'
66
interface Props {
77
code: string
88
setCode: (value: string) => void
9-
compile: () => void
9+
compile: () => void,
10+
needRecompile: boolean
1011
}
1112

12-
const Editor: React.FC<Props> = ({ code, setCode, compile }) => {
13+
const Editor: React.FC<Props> = ({ code, setCode, compile, needRecompile }) => {
1314
const [isEditorReady, setIsEditorReady] = useState(false)
1415

1516
function handleEditorDidMount() {
@@ -30,7 +31,7 @@ const Editor: React.FC<Props> = ({ code, setCode, compile }) => {
3031
/>
3132
<Button
3233
variant="secondary"
33-
disabled={!isEditorReady}
34+
disabled={!isEditorReady || !needRecompile}
3435
onClick={() => compile()}
3536
style={{
3637
margin: '20px auto',

src/components/Main.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)