Skip to content

Commit fcf08f5

Browse files
author
jagdeep sidhu
committed
Merge branch 'testnet'
2 parents 1bbeb96 + 1a28f6e commit fcf08f5

17 files changed

+9072
-4319
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.199",
25+
"syscoinjs-lib": "^1.0.212",
2826
"web3": "^1.5.2"
2927
},
3028
"scripts": {

src/SysethereumDApp.js

Lines changed: 47 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.onEasySwap = this.onEasySwap.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+
onEasySwap() {
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,12 @@ class SysethereumDApp extends Component {
171177
<div className="right">
172178

173179
<div className="bridge">
180+
<a className="systosysx" href="#" onClick={this.onSysToSysx}>
181+
<div className="mybtn mybtn-two">
182+
<span>SYS ➜ SYSX</span>
183+
</div>
184+
</a>
185+
174186
<a className="systosysx" href="#" onClick={this.onSysToSysx}>
175187
<div className="mybtn mybtn-two">
176188
<span>SYS ➜ SYSX</span>
@@ -200,7 +212,11 @@ class SysethereumDApp extends Component {
200212
<span>Asset Registry</span>
201213
</div>
202214
</a>
203-
215+
<a className="fastswap" href="#" onClick={this.onEasySwap}>
216+
<div className="mybtn mybtn-two">
217+
<span>EasySwap</span>
218+
</div>
219+
</a>
204220
<object className="animation" type="image/svg+xml" data={bridgeAnim}></object>
205221

206222
</div>
@@ -518,15 +534,38 @@ class SysethereumDApp extends Component {
518534
</a>
519535
</div>
520536

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

523539
</div>
524540
</div>
525541

526542

527543

544+
</div>
545+
<div className={(this.state.fastSwapDisplay ? "visible" : "hidden")}>
546+
547+
<div id="menu">
548+
<div className="goHome" onClick={this.onHome}></div>
549+
<div className="title">Walk over the Syscoin Bridge</div>
528550
</div>
529551

552+
<div className="wizardTitleCont">
553+
<div className="wizardTitle">
554+
EasySwap
555+
</div>
556+
</div>
557+
558+
559+
<I18nextProvider i18n={i18n}>
560+
<FastSwapWizardi18n />
561+
</I18nextProvider>
562+
563+
<button type="button" className="close closeButton wizardCancel" aria-label="Close" onClick={this.onHome}>
564+
<span className="glyphicon glyphicon-remove" aria-hidden="true"></span> Close
565+
</button>
566+
567+
568+
</div>
530569
<div className={(this.state.ethToSysDisplay ? "visible" : "hidden")}>
531570

532571
<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.mainnet;
21+
this.EasySwapAPI = "http://localhost:8080/api/"
2122
}
2223
}
2324
export default new CONFIGURATION();

src/font/bridge.svg

Lines changed: 1 addition & 1 deletion
Loading

src/pali.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
class PALICONNECT {
3+
constructor() {
4+
this.connect()
5+
}
6+
async connect() {
7+
if (window.ConnectionsController) {
8+
var connectedAccount
9+
try {
10+
connectedAccount = await window.ConnectionsController.getConnectedAccount()
11+
.catch(function(rejected){
12+
console.log("paliConnect error: " + rejected)
13+
});
14+
if(!connectedAccount) {
15+
await window.ConnectionsController.connectWallet()
16+
.catch(function(rejected){
17+
console.log("paliConnect error: " + rejected)
18+
});
19+
}
20+
} catch(e) {
21+
console.log("paliConnect error: " + e)
22+
}
23+
}
24+
25+
}
26+
}
27+
export default new PALICONNECT();

src/wizard/.Step1FastSwap.js.swp

16 KB
Binary file not shown.

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: 38 additions & 21 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
}
@@ -386,9 +384,26 @@ class Step1ES extends Component {
386384
this.setState(Object.assign(userInput, validateNewInput, this._validationErrors(validateNewInput)));
387385
let syscoinERC20Manager = new web3.eth.Contract(erc20Managerabi, CONFIGURATION.ERC20Manager);
388386
let contractBase = new web3.eth.Contract(assetabi, userInput.sysxContract);
389-
let fromAccount = userInput.sysxFromAccount;
387+
if (!web3.utils.isAddress(userInput.sysxFromAccount)) {
388+
validateNewInput.buttonVal = false;
389+
validateNewInput.buttonValMsg = this.props.t("step1InvalidNEVM");
390+
this.setState({working: false});
391+
this.setState(Object.assign(userInput, validateNewInput, this._validationErrors(validateNewInput)));
392+
return;
393+
}
394+
let fromAccount = userInput.sysxFromAccount;
390395
let assetGUID = userInput.toSysAssetGUID;
391396
let syscoinWitnessAddress = userInput.syscoinWitnessAddress;
397+
try {
398+
sjs.utils.bitcoinjs.address.toOutputScript(syscoinWitnessAddress, CONFIGURATION.SysNetwork)
399+
} catch (e) {
400+
console.log('e ' + e.message, " address " + syscoinWitnessAddress)
401+
validateNewInput.buttonVal = false;
402+
validateNewInput.buttonValMsg = this.props.t("step1FSInvalidDestination");
403+
this.setState(Object.assign(userInput, validateNewInput, this._validationErrors(validateNewInput)));
404+
this.setState({working: false});
405+
return;
406+
}
392407
let allowance = web3.utils.toBN(0);
393408
if (assetGUID !== CONFIGURATION.SYSXAsset) {
394409
allowance = await contractBase.methods.allowance(fromAccount, CONFIGURATION.ERC20Manager).call();
@@ -430,14 +445,16 @@ class Step1ES extends Component {
430445
error = JSON.parse(error.message.substring(error.message.indexOf("{")));
431446
}
432447
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)));
448+
if(message.indexOf("might still be mined") === -1) {
449+
if(receipt){
450+
thisObj.setStateFromReceipt(receipt, message, 0, validateNewInput);
451+
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
452+
}
453+
else{
454+
validateNewInput.buttonVal = false;
455+
validateNewInput.buttonValMsg = message;
456+
thisObj.setState(Object.assign(userInput, validateNewInput, thisObj._validationErrors(validateNewInput)));
457+
}
441458
}
442459
})
443460
}

0 commit comments

Comments
 (0)