This repository has been archived by the owner on Jul 9, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 465
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1281 from 0xProject/feature/instant/push-to-history
[instant] Close/open Instant on correct history changes. Provide option to disable.
- Loading branch information
Showing
2 changed files
with
281 additions
and
159 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,137 +1,206 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta charset="utf-8" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1" /> | ||
<title>0x Instant Dev Environment</title> | ||
<link rel="stylesheet" href="/external.css" /> | ||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.min.css" /> | ||
<script type="text/javascript" src="/instant.js" charset="utf-8"></script> | ||
<script type="text/javascript" src="https://unpkg.com/[email protected]/Uri.js" charset="utf-8"></script> | ||
<script type="text/javascript" src="https://unpkg.com/[email protected]/bignumber.js" charset="utf-8"></script> | ||
<style> | ||
.flex-center { | ||
display: flex; | ||
justify-content: center; | ||
align-items: center; | ||
height: 100%; | ||
width: 100%; | ||
} | ||
|
||
<head> | ||
<meta charset="utf-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1"> | ||
<title>0x Instant Dev Environment</title> | ||
<link rel="stylesheet" href="/external.css"> | ||
<script type="text/javascript" src="/instant.js" charset="utf-8"></script> | ||
<script type="text/javascript" src="https://unpkg.com/[email protected]/Uri.js" charset="utf-8"></script> | ||
<script type="text/javascript" src="https://unpkg.com/[email protected]/bignumber.js" charset="utf-8"></script> | ||
<style> | ||
#zeroExInstantContainer { | ||
display: flex; | ||
justify-content: center; | ||
align-items: center; | ||
height: 100vh; | ||
} | ||
.flex-center--column { | ||
flex-direction: column; | ||
} | ||
|
||
body { | ||
margin: 0; | ||
background-color: rgba(0, 0, 0, 0.2); | ||
} | ||
</style> | ||
</head> | ||
.button { | ||
margin: 10px; | ||
} | ||
|
||
<body> | ||
<div id="zeroExInstantContainer"></div> | ||
<script> | ||
const removeUndefined = (obj) => { | ||
for (let k in obj) if (obj[k] === undefined) delete obj[k]; | ||
return obj; | ||
} | ||
BigNumber.config({ | ||
EXPONENTIAL_AT: 1000, | ||
DECIMAL_PLACES: 78, | ||
}); | ||
const providedOrders = [ | ||
// Order selling REP | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('200000000000000000000'), | ||
takerAssetAmount: new BigNumber('10000000000000000000'), | ||
makerAssetData: '0xf47261b00000000000000000000000008cb3971b8eb709c14616bd556ff6683019e90d9c', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('1601535600'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber('3101985707338942582579795423923841749956600670712030922928319824580764688653'), | ||
signature: '0x1bd4d5686fea801fe33c68c4944356085e7e6cb553eb7073160abd815609f714e85fb47f44b7ffd0a2a1321ac40d72d55163869d0a50fdb5a402132150fe33a08403', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2' | ||
}, | ||
// Order selling ZRX | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('300000000000000000000'), | ||
takerAssetAmount: new BigNumber('31000000000000000000'), | ||
makerAssetData: '0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('2524636800'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber('64592004666704945574675477805199411288137454783320798602050822322450089238268'), | ||
signature: '0x1c13cacddca8d7d8248e91f412377e68f8f1f9891a59a6c1b2eea9f7b33558c30c4fb86a448e08ab7def40a28fb3a3062dcb33bb3c45302447fce5c4288b7c7f5b03', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2' | ||
}, | ||
// Order selling GNT | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('250000000000000000000'), | ||
takerAssetAmount: new BigNumber('10000000000000000000'), | ||
makerAssetData: '0xf47261b000000000000000000000000031fb614e223706f15d0d3c5f4b08bdf0d5c78623', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('1601535600'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber('40204378562212615907903051460421336779451270522691667164301816101569427926606'), | ||
signature: '0x1c788bf4b93769da1e8f195f52f0f59b4a298ac6da30cf6d05a87ed4be5ee974f61352ed1bc6a0844d0962b8c894c9ca08e452431255958a4e98dd93cbe1fbc73803', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2' | ||
}, | ||
// Order selling MKR | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('200000000000000000000'), | ||
takerAssetAmount: new BigNumber('5000000000000000000'), | ||
makerAssetData: '0xf47261b00000000000000000000000007b6b10caa9e8e9552ba72638ea5b47c25afea1f3', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('1601535600'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber('71338269924068280039932133924198049371838034090153601678083172009862985793828'), | ||
signature: '0x1bb3151d57ee1e8fa697767ce83ee4ba77d1ceb8cc1e79c7d77126b3687517704c50c6b3d9cb42c7e7d4478d574b297dfbd1626c5c18a7bc9c2a792c4c07f0797c03', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2' | ||
body { | ||
margin: 0; | ||
height: 100vh; | ||
background-color: rgba(0, 0, 0, 0.2); | ||
} | ||
]; | ||
const queryParams = new Uri(window.location.search); | ||
const renderOptionsDefaults = { | ||
orderSource: 'https://api.radarrelay.com/0x/v2/', | ||
onClose: () => { console.log('0x Instant Closed') } | ||
} | ||
const orderSourceOverride = queryParams.getQueryParamValue('orderSource'); | ||
const availableAssetDatasString = queryParams.getQueryParamValue('availableAssetDatas'); | ||
const feeRecipientOverride = queryParams.getQueryParamValue('feeRecipient'); | ||
const feePercentageOverride = +queryParams.getQueryParamValue('feePercentage'); | ||
let affiliateInfoOverride; | ||
if (feeRecipientOverride !== undefined && feePercentageOverride !== undefined) { | ||
affiliateInfoOverride = { | ||
feeRecipient: feeRecipientOverride, | ||
feePercentage: feePercentageOverride | ||
}; | ||
} | ||
const renderOptionsOverrides = { | ||
orderSource: orderSourceOverride === 'provided' ? providedOrders : orderSourceOverride, | ||
networkId: +queryParams.getQueryParamValue('networkId') || undefined, | ||
defaultAssetBuyAmount: +queryParams.getQueryParamValue('defaultAssetBuyAmount') || undefined, | ||
availableAssetDatas: availableAssetDatasString ? JSON.parse(availableAssetDatasString) : undefined, | ||
defaultSelectedAssetData: queryParams.getQueryParamValue('defaultSelectedAssetData'), | ||
affiliateInfo: affiliateInfoOverride, | ||
} | ||
const renderOptions = Object.assign({}, renderOptionsDefaults, removeUndefined(renderOptionsOverrides)); | ||
zeroExInstant.render(renderOptions); | ||
</script> | ||
</body> | ||
</style> | ||
</head> | ||
|
||
<body> | ||
<div class="flex-center flex-center--column"> | ||
<div><button class="button is-large" onClick="renderWithUrlDefaults()">Open</button></div> | ||
<div> | ||
<button | ||
class="button is-danger" | ||
onClick="renderWithAssetData('0xf47261b00000000000000000000000001985365e9f78359a9b6ad760e32412f4a445e862')" | ||
> | ||
Buy REP | ||
</button> | ||
<button | ||
class="button is-black" | ||
onClick="renderWithAssetData('0xf47261b0000000000000000000000000e41d2489571d322189246dafa5ebde1f4699f498')" | ||
> | ||
Buy ZRX | ||
</button> | ||
<button | ||
class="button is-info" | ||
onClick="renderWithAssetData('0xf47261b00000000000000000000000006810e776880c02933d47db1b9fc05908e5386b96')" | ||
> | ||
Buy GNO | ||
</button> | ||
</div> | ||
</div> | ||
<div id="zeroExInstantContainer"></div> | ||
<script> | ||
// Simulate history | ||
window.history.pushState({ page: 1 }, '0x Instant'); | ||
window.history.pushState({ page: 2 }, '0x Instant'); | ||
window.history.pushState({ page: 3 }, '0x Instant'); | ||
window.onpopstate = () => console.log("Integrator's onpopstate called"); | ||
|
||
</html> | ||
const removeUndefined = obj => { | ||
for (let k in obj) if (obj[k] === undefined) delete obj[k]; | ||
return obj; | ||
}; | ||
BigNumber.config({ | ||
EXPONENTIAL_AT: 1000, | ||
DECIMAL_PLACES: 78, | ||
}); | ||
const providedOrders = [ | ||
// Order selling REP | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('200000000000000000000'), | ||
takerAssetAmount: new BigNumber('10000000000000000000'), | ||
makerAssetData: '0xf47261b00000000000000000000000008cb3971b8eb709c14616bd556ff6683019e90d9c', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('1601535600'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber('3101985707338942582579795423923841749956600670712030922928319824580764688653'), | ||
signature: | ||
'0x1bd4d5686fea801fe33c68c4944356085e7e6cb553eb7073160abd815609f714e85fb47f44b7ffd0a2a1321ac40d72d55163869d0a50fdb5a402132150fe33a08403', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2', | ||
}, | ||
// Order selling ZRX | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('300000000000000000000'), | ||
takerAssetAmount: new BigNumber('31000000000000000000'), | ||
makerAssetData: '0xf47261b00000000000000000000000002002d3812f58e35f0ea1ffbf80a75a38c32175fa', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('2524636800'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber( | ||
'64592004666704945574675477805199411288137454783320798602050822322450089238268', | ||
), | ||
signature: | ||
'0x1c13cacddca8d7d8248e91f412377e68f8f1f9891a59a6c1b2eea9f7b33558c30c4fb86a448e08ab7def40a28fb3a3062dcb33bb3c45302447fce5c4288b7c7f5b03', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2', | ||
}, | ||
// Order selling GNT | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('250000000000000000000'), | ||
takerAssetAmount: new BigNumber('10000000000000000000'), | ||
makerAssetData: '0xf47261b000000000000000000000000031fb614e223706f15d0d3c5f4b08bdf0d5c78623', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('1601535600'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber( | ||
'40204378562212615907903051460421336779451270522691667164301816101569427926606', | ||
), | ||
signature: | ||
'0x1c788bf4b93769da1e8f195f52f0f59b4a298ac6da30cf6d05a87ed4be5ee974f61352ed1bc6a0844d0962b8c894c9ca08e452431255958a4e98dd93cbe1fbc73803', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2', | ||
}, | ||
// Order selling MKR | ||
{ | ||
senderAddress: '0x0000000000000000000000000000000000000000', | ||
makerAddress: '0x34a745008a643eebc58920eaa29fb1165b4a288e', | ||
takerAddress: '0x0000000000000000000000000000000000000000', | ||
makerFee: new BigNumber('0'), | ||
takerFee: new BigNumber('0'), | ||
makerAssetAmount: new BigNumber('200000000000000000000'), | ||
takerAssetAmount: new BigNumber('5000000000000000000'), | ||
makerAssetData: '0xf47261b00000000000000000000000007b6b10caa9e8e9552ba72638ea5b47c25afea1f3', | ||
takerAssetData: '0xf47261b0000000000000000000000000d0a1e359811322d97991e03f863a0c30c2cf029c', | ||
expirationTimeSeconds: new BigNumber('1601535600'), | ||
feeRecipientAddress: '0x0000000000000000000000000000000000000000', | ||
salt: new BigNumber( | ||
'71338269924068280039932133924198049371838034090153601678083172009862985793828', | ||
), | ||
signature: | ||
'0x1bb3151d57ee1e8fa697767ce83ee4ba77d1ceb8cc1e79c7d77126b3687517704c50c6b3d9cb42c7e7d4478d574b297dfbd1626c5c18a7bc9c2a792c4c07f0797c03', | ||
exchangeAddress: '0x35dd2932454449b14cee11a94d3674a936d5d7b2', | ||
}, | ||
]; | ||
const getRenderOptionsOverridesFromUrl = () => { | ||
const queryParams = new Uri(window.location.search); | ||
const orderSourceOverride = queryParams.getQueryParamValue('orderSource'); | ||
const availableAssetDatasString = queryParams.getQueryParamValue('availableAssetDatas'); | ||
const feeRecipientOverride = queryParams.getQueryParamValue('feeRecipient'); | ||
const feePercentageOverride = +queryParams.getQueryParamValue('feePercentage'); | ||
let affiliateInfoOverride; | ||
if (feeRecipientOverride !== undefined && feePercentageOverride !== undefined) { | ||
affiliateInfoOverride = { | ||
feeRecipient: feeRecipientOverride, | ||
feePercentage: feePercentageOverride, | ||
}; | ||
} | ||
const renderOptionsOverrides = { | ||
orderSource: orderSourceOverride === 'provided' ? providedOrders : orderSourceOverride, | ||
networkId: +queryParams.getQueryParamValue('networkId') || undefined, | ||
defaultAssetBuyAmount: +queryParams.getQueryParamValue('defaultAssetBuyAmount') || undefined, | ||
availableAssetDatas: availableAssetDatasString ? JSON.parse(availableAssetDatasString) : undefined, | ||
defaultSelectedAssetData: queryParams.getQueryParamValue('defaultSelectedAssetData'), | ||
affiliateInfo: affiliateInfoOverride, | ||
shouldDisablePushToHistory: !!queryParams.getQueryParamValue('shouldDisablePushToHistory'), | ||
}; | ||
return renderOptionsOverrides; | ||
}; | ||
const render = renderOptionsOverrides => { | ||
const renderOptionsDefaults = { | ||
orderSource: 'https://api.radarrelay.com/0x/v2/', | ||
onClose: () => { | ||
console.log('0x Instant Closed'); | ||
}, | ||
}; | ||
const renderOptions = Object.assign({}, renderOptionsDefaults, removeUndefined(renderOptionsOverrides)); | ||
zeroExInstant.render(renderOptions); | ||
}; | ||
const renderWithUrlDefaults = (renderOptions = {}) => { | ||
const finalOptions = { | ||
...getRenderOptionsOverridesFromUrl(), | ||
...renderOptions, | ||
}; | ||
render(finalOptions); | ||
}; | ||
renderWithUrlDefaults(); | ||
const renderWithAssetData = assetData => { | ||
renderWithUrlDefaults({ | ||
defaultSelectedAssetData: assetData, | ||
}); | ||
}; | ||
</script> | ||
</body> | ||
</html> |
Oops, something went wrong.