Skip to content

Commit 7e80682

Browse files
author
jagdeep sidhu
committed
quality of life improvements + fastswap integration
1) 50 confirmation issue is ignored by error in web3 2) unlock pali message is caught and displayed to user instead of nothign 3) fast swap integration with backend provider (in config) 4) update syscoinjs-lib on multiple fixes to allocationmint
1 parent 1c9c6ff commit 7e80682

15 files changed

+9011
-4311
lines changed

package-lock.json

Lines changed: 8124 additions & 4261 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
"@metamask/detect-provider": "^1.2.0",
77
"axios": "^0.18.1",
88
"bitcoin-proof": "^2.0.0",
9-
"eth-object": "https://github.com/syscoin/eth-object.git",
10-
"eth-proof": "^2.1.4",
119
"i18next": "^12.0.0",
1210
"i18next-browser-languagedetector": "^2.2.3",
1311
"joi": "^10.2.2",
@@ -24,7 +22,7 @@
2422
"react-textarea-autosize": "^7.1.2",
2523
"react-validation-mixin": "^5.4.0",
2624
"satoshi-bitcoin": "^1.0.5",
27-
"syscoinjs-lib": "^1.0.198",
25+
"syscoinjs-lib": "^1.0.209",
2826
"web3": "^1.5.2"
2927
},
3028
"scripts": {

src/SysethereumDApp.js

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import SysToEthWizardi18n from './wizard/SysToEthWizard';
55
import SysToSysxWizardi18n from './wizard/SysToSysxWizard';
66
import SysxToSysWizardi18n from './wizard/SysxToSysWizard';
77
import EthToSysWizardi18n from './wizard/EthToSysWizard';
8+
import FastSwapWizardi18n from './wizard/FastSwapWizard';
89
import SPTRegistryWizardi18n from './wizard/SPTRegistryWizard';
910
import { I18nextProvider } from "react-i18next";
1011
import i18n from "./wizard/i18n";
@@ -21,6 +22,7 @@ class SysethereumDApp extends Component {
2122
sysToEthDisplay: false,
2223
sysToSysxDisplay: false,
2324
sysxToSysDisplay: false,
25+
fastSwapDisplay: false,
2426
emailName: '',
2527
emailSender: '',
2628
emailMessage: '',
@@ -34,6 +36,7 @@ class SysethereumDApp extends Component {
3436
this.onSysToEth = this.onSysToEth.bind(this);
3537
this.onEthToSys = this.onEthToSys.bind(this);
3638
this.onAssetRegistry = this.onAssetRegistry.bind(this);
39+
this.onFastSwap = this.onFastSwap.bind(this);
3740
this.onHome = this.onHome.bind(this);
3841
this.handleEmailChange = this.handleEmailChange.bind(this);
3942
this.handleEmailSubmit = this.handleEmailSubmit.bind(this);
@@ -73,22 +76,25 @@ class SysethereumDApp extends Component {
7376
}
7477

7578
onSysToSysx() {
76-
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: true, sysxToSysDisplay: false});
79+
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: true, sysxToSysDisplay: false, fastSwapDisplay: false});
7780
}
7881
onSysxToSys() {
79-
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: true});
82+
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: true, fastSwapDisplay: false});
8083
}
8184
onSysToEth() {
82-
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: true, sysToSysxDisplay: false, sysxToSysDisplay: false});
85+
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: true, sysToSysxDisplay: false, sysxToSysDisplay: false, fastSwapDisplay: false});
8386
}
8487
onEthToSys() {
85-
this.setState({ introDisplay: false, ethToSysDisplay: true, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: false});
88+
this.setState({ introDisplay: false, ethToSysDisplay: true, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: false, fastSwapDisplay: false});
8689
}
8790
onAssetRegistry() {
88-
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: true, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: false});
91+
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: true, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: false, fastSwapDisplay: false});
92+
}
93+
onFastSwap() {
94+
this.setState({ introDisplay: false, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: false, fastSwapDisplay: true});
8995
}
9096
onHome() {
91-
this.setState({ introDisplay: true, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: false});
97+
this.setState({ introDisplay: true, ethToSysDisplay: false, assetRegistryDisplay: false, sysToEthDisplay: false, sysToSysxDisplay: false, sysxToSysDisplay: false, fastSwapDisplay: false});
9298
}
9399

94100
handleEmailChange(evt) {
@@ -171,6 +177,7 @@ class SysethereumDApp extends Component {
171177
<div className="right">
172178

173179
<div className="bridge">
180+
174181
<a className="systosysx" href="#" onClick={this.onSysToSysx}>
175182
<div className="mybtn mybtn-two">
176183
<span>SYS ➜ SYSX</span>
@@ -200,7 +207,11 @@ class SysethereumDApp extends Component {
200207
<span>Asset Registry</span>
201208
</div>
202209
</a>
203-
210+
<a className="fastswap" href="#" onClick={this.onFastSwap}>
211+
<div className="mybtn mybtn-two">
212+
<span>FastSwap</span>
213+
</div>
214+
</a>
204215
<object className="animation" type="image/svg+xml" data={bridgeAnim}></object>
205216

206217
</div>
@@ -518,15 +529,38 @@ class SysethereumDApp extends Component {
518529
</a>
519530
</div>
520531

521-
<div className="general">© 2019 Syscoin. All rights reserved</div>
532+
<div className="general">© 2022 Syscoin. All rights reserved</div>
522533

523534
</div>
524535
</div>
525536

526537

527538

528539
</div>
540+
<div className={(this.state.fastSwapDisplay ? "visible" : "hidden")}>
541+
542+
<div id="menu">
543+
<div className="goHome" onClick={this.onHome}></div>
544+
<div className="title">Walk over the Syscoin Bridge</div>
545+
</div>
546+
547+
<div className="wizardTitleCont">
548+
<div className="wizardTitle">
549+
FastSwap
550+
</div>
551+
</div>
552+
553+
554+
<I18nextProvider i18n={i18n}>
555+
<FastSwapWizardi18n />
556+
</I18nextProvider>
529557

558+
<button type="button" className="close closeButton wizardCancel" aria-label="Close" onClick={this.onHome}>
559+
<span className="glyphicon glyphicon-remove" aria-hidden="true"></span> Close
560+
</button>
561+
562+
563+
</div>
530564
<div className={(this.state.ethToSysDisplay ? "visible" : "hidden")}>
531565

532566
<div id="menu">

src/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class CONFIGURATION {
1818
this.SYSXAsset = "123456";
1919
this.TokenUnfreezeFn = '0x8561b3bd1c885cb9cea8df62881a35fe7335336cd5450fd96d14176100c4657d';
2020
this.SysNetwork = sjs.utils.syscoinNetworks.testnet;
21+
this.FastSwapAPI = "http://localhost:8080/api/"
2122
}
2223
}
2324
export default new CONFIGURATION();

src/font/bridge.svg

Lines changed: 1 addition & 1 deletion
Loading

src/wizard/FastSwapWizard.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
2+
3+
import React, { Component } from 'react';
4+
import StepZilla from "react-stepzilla";
5+
import Step1FS from './Step1FastSwap';
6+
import { withNamespaces } from 'react-i18next';
7+
import './css/wizard.css';
8+
import './css/i18n.css';
9+
10+
class FastSwapWizard extends Component {
11+
constructor(props) {
12+
super(props);
13+
this.state = {};
14+
15+
this.sampleStore = {
16+
savedToCloud: false
17+
};
18+
}
19+
20+
componentDidMount() {}
21+
22+
componentWillUnmount() {}
23+
24+
getStore() {
25+
return this.sampleStore;
26+
}
27+
28+
updateStore(update) {
29+
this.sampleStore = {
30+
...this.sampleStore,
31+
...update,
32+
}
33+
}
34+
35+
render() {
36+
37+
const { t, i18n } = this.props;
38+
39+
const steps =
40+
[
41+
{name: t("step1fs"), component: <Step1FS t={t} getStore={() => (this.getStore())} updateStore={(u) => {this.updateStore(u)}} />}
42+
]
43+
44+
return (
45+
<div className='EthToSysWizard'>
46+
<div className='step-progress'>
47+
48+
<div className='languageButtons'>
49+
<div className="dropdown">
50+
<button className="dropbtn"><i className="glyphicon glyphicon-globe"></i><span className="selectedLang">{ i18n.language }</span></button>
51+
<div className="dropdown-content">
52+
<button onClick={() => i18n.changeLanguage("en")}>EN</button>
53+
<button onClick={() => i18n.changeLanguage("es")}>ES</button>
54+
<button onClick={() => i18n.changeLanguage("fr")}>FR</button>
55+
</div>
56+
</div>
57+
</div>
58+
59+
<StepZilla
60+
steps={steps}
61+
preventEnterSubmission={true}
62+
startAtStep={window.sessionStorage.getItem('stepfs') ? parseFloat(window.sessionStorage.getItem('stepfs')) : 0}
63+
/>
64+
</div>
65+
</div>
66+
)
67+
}
68+
}
69+
70+
export default withNamespaces("translations")(FastSwapWizard);

src/wizard/Step1EthToSys.js

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -172,10 +172,6 @@ class Step1ES extends Component {
172172
}
173173

174174

175-
byteToHex(b) {
176-
var hexChar = ["0", "1", "2", "3", "4", "5", "6", "7","8", "9", "A", "B", "C", "D", "E", "F"];
177-
return hexChar[(b >> 4) & 0x0f] + hexChar[b & 0x0f];
178-
}
179175
async getAssetContract(guid, validateNewInput){
180176
if(guid.length > 0){
181177
try {
@@ -223,14 +219,16 @@ class Step1ES extends Component {
223219
error = JSON.parse(error.message.substring(error.message.indexOf("{")));
224220
}
225221
let message = error.message.toString();
226-
if(receipt){
227-
thisObj.setStateFromReceipt(receipt, message, 0, validateNewInput);
228-
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
229-
}
230-
else{
231-
validateNewInput.buttonVal = false;
232-
validateNewInput.buttonValMsg = message;
233-
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
222+
if(message.indexOf("might still be mined") === -1) {
223+
if(receipt){
224+
thisObj.setStateFromReceipt(receipt, message, 0, validateNewInput);
225+
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
226+
}
227+
else{
228+
validateNewInput.buttonVal = false;
229+
validateNewInput.buttonValMsg = message;
230+
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
231+
}
234232
}
235233
})
236234
}
@@ -430,14 +428,16 @@ class Step1ES extends Component {
430428
error = JSON.parse(error.message.substring(error.message.indexOf("{")));
431429
}
432430
let message = error.message? error.message.toString(): "Unknown error";
433-
if(receipt){
434-
thisObj.setStateFromReceipt(receipt, message, 0, validateNewInput);
435-
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
436-
}
437-
else{
438-
validateNewInput.buttonVal = false;
439-
validateNewInput.buttonValMsg = message;
440-
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
431+
if(message.indexOf("might still be mined") === -1) {
432+
if(receipt){
433+
thisObj.setStateFromReceipt(receipt, message, 0, validateNewInput);
434+
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
435+
}
436+
else{
437+
validateNewInput.buttonVal = false;
438+
validateNewInput.buttonValMsg = message;
439+
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
440+
}
441441
}
442442
})
443443
}

0 commit comments

Comments
 (0)