From 0747cb2b9deec6f0bedc427df036ad5053a9849d Mon Sep 17 00:00:00 2001 From: serdrdoor Date: Tue, 1 Mar 2022 20:15:09 +0300 Subject: [PATCH] add BEP-20 tokens (Binance Smart Chain): DEC and SPS add to Listing: WorldTTT (TTT) add page link for listing projects add to scamAcconts --- app/api/apiConfig.js | 6 + app/assets/asset-symbols/rudex.dec.png | Bin 0 -> 8502 bytes app/assets/asset-symbols/rudex.sps.png | Bin 0 -> 5130 bytes app/assets/asset-symbols/symbols.js | 3 + app/assets/coins-logo/coins.js | 1 + app/assets/coins-logo/ttt.png | Bin 0 -> 13341 bytes app/assets/locales/locale-en.json | 1 + app/assets/locales/locale-ru.json | 1 + app/branding.js | 118 +++-- .../Account/AccountDepositWithdraw.jsx | 422 +++++++++++------- app/components/Account/AccountOverview.jsx | 3 + .../rudex/RuDexGatewayDepositRequest.jsx | 1 + app/components/Listing/CoinCardListing.jsx | 36 +- app/lib/common/RuDexMethods.js | 25 +- app/lib/common/gateways.js | 25 +- app/lib/common/scamAccounts.js | 5 +- package.json | 2 +- 17 files changed, 427 insertions(+), 222 deletions(-) create mode 100644 app/assets/asset-symbols/rudex.dec.png create mode 100644 app/assets/asset-symbols/rudex.sps.png create mode 100644 app/assets/coins-logo/ttt.png diff --git a/app/api/apiConfig.js b/app/api/apiConfig.js index 33e32824c0..a538afbc7e 100644 --- a/app/api/apiConfig.js +++ b/app/api/apiConfig.js @@ -6,6 +6,12 @@ export const rudexAPIs = { NEW_DEPOSIT_ADDRESS: "/simple-api/initiate-trade" }; +export const bep20rudexAPIs = { + BASE: "https://gateway.rudex.org/api/rudex_new_bep20", + COINS_LIST: "/coins", + NEW_DEPOSIT_ADDRESS: "/simple-api/initiate-trade" +}; + export const nodeRegions = [ // region of the node follows roughly https://en.wikipedia.org/wiki/Subregion#/media/File:United_Nations_geographical_subregions.png "Northern Europe", diff --git a/app/assets/asset-symbols/rudex.dec.png b/app/assets/asset-symbols/rudex.dec.png new file mode 100644 index 0000000000000000000000000000000000000000..9dba8ebf5ad42d03188766482fa6c67471c44afa GIT binary patch literal 8502 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 V9_4JyzcPncAbB;pI$6_@{{y@oP&EJm literal 0 HcmV?d00001 diff --git a/app/assets/asset-symbols/rudex.sps.png b/app/assets/asset-symbols/rudex.sps.png new file mode 100644 index 0000000000000000000000000000000000000000..d78ef7dfbbe08fb365431ff9f898f7ca308ebabd GIT binary patch literal 5130 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 literal 0 HcmV?d00001 diff --git a/app/assets/asset-symbols/symbols.js b/app/assets/asset-symbols/symbols.js index 81d03a953d..4979582bc0 100644 --- a/app/assets/asset-symbols/symbols.js +++ b/app/assets/asset-symbols/symbols.js @@ -30,6 +30,9 @@ require("file-loader?name=asset-symbols/[name].png!./rudex.xmr.png"); require("file-loader?name=asset-symbols/[name].png!./rudex.bts.png"); require("file-loader?name=asset-symbols/[name].png!./rudex.trx.png"); +require("file-loader?name=asset-symbols/[name].png!./rudex.dec.png"); +require("file-loader?name=asset-symbols/[name].png!./rudex.sps.png"); + //Delisted require("file-loader?name=asset-symbols/[name].png!./rudex.ppy.png"); require("file-loader?name=asset-symbols/[name].png!./rudex.smoke.png"); diff --git a/app/assets/coins-logo/coins.js b/app/assets/coins-logo/coins.js index 88804e6006..7a6f51106c 100644 --- a/app/assets/coins-logo/coins.js +++ b/app/assets/coins-logo/coins.js @@ -17,5 +17,6 @@ require("file-loader?name=coins-logo/[name].png!./ark.png"); require("file-loader?name=coins-logo/[name].png!./cri.png"); require("file-loader?name=coins-logo/[name].png!./gwn.png"); require("file-loader?name=coins-logo/[name].png!./rat.png"); +require("file-loader?name=coins-logo/[name].png!./ttt.png"); require("file-loader?name=coins-logo/[name].png!./pzm.png"); diff --git a/app/assets/coins-logo/ttt.png b/app/assets/coins-logo/ttt.png new file mode 100644 index 0000000000000000000000000000000000000000..69f2e349061e6dbe6eb6084b30cc62c833993df4 GIT binary patch literal 13341 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 0; @@ -409,16 +415,10 @@ export function getConfigurationAsset() { export function getListingCoins() { return [ //soon: true, (for TON example) - /* { - name: "Monero", - ticker: "XMR", - account: "rudex-monero", - goal: 5000, - votes: 0 - },*/ { name: "Idena", ticker: "DNA", + page: "https://www.idena.io", account: "rudex-idena", goal: 10000, votes: 0 @@ -426,6 +426,7 @@ export function getListingCoins() { { name: "Zcash", ticker: "ZEC", + page: "https://z.cash/", account: "rudex-zec", goal: 2000, votes: 0 @@ -433,6 +434,7 @@ export function getListingCoins() { { name: "ADAMANT Messenger", ticker: "ADM", + page: "https://adamant.im", account: "rudex-adamant", goal: 8000, votes: 0 @@ -440,20 +442,15 @@ export function getListingCoins() { { name: "Hive", ticker: "HIVE", + page: "https://hive.io", account: "rudex-hive", goal: 3000, votes: 0 }, - /* { - name: "Litecoin", - ticker: "LTC", - account: "rudex-litecoin", - goal: 2000, - votes: 0 - },*/ { name: "Minter Network", ticker: "BIP", + page: "https://minter.org", account: "rudex-bip", goal: 7000, votes: 0 @@ -461,6 +458,7 @@ export function getListingCoins() { { name: "Dogecoin", ticker: "DOGE", + page: "https://dogecoin.com", account: "rudex-dogecoin", goal: 2000, votes: 0 @@ -468,26 +466,22 @@ export function getListingCoins() { { name: "Telos", ticker: "TLOS", + page: "https://www.telos.net", account: "rudex-telos", goal: 3000, votes: 0 }, - /* { - name: "Dash", - ticker: "DASH", - account: "rudex-dash", - goal: 2000, - votes: 0 - },*/ { name: "Ark", ticker: "ARK", + page: "https://ark.io", account: "rudex-ark", goal: 3000, votes: 0 }, { name: "Crypto International", + page: "https://cri.network", ticker: "CRI", account: "rudex-cri", goal: 10000, @@ -496,6 +490,7 @@ export function getListingCoins() { { name: "Gowin", ticker: "GWN", + page: "http://www.gwncoin.com", account: "rudex-gwn", goal: 10000, votes: 0 @@ -503,33 +498,70 @@ export function getListingCoins() { { name: "Ratcoin", ticker: "RAT", + page: "https://ratcoin.network", account: "rudex-ratcoin", goal: 10000, votes: 0 - } - - //Disabled - /*{ - name: "Waves", - ticker: "WAVES", - account: "rudex-waves", - goal: 10000, - votes: 0 - }, - { - name: "Neo", - ticker: "NEO", - account: "rudex-neo", - goal: 10000, - votes: 0 }, { - name: "Revain", - ticker: "REV", - account: "rudex-revain", + name: "WorldTTT", + ticker: "TTT", + page: "https://worldttt.com", + account: "rudex-ttt", goal: 10000, votes: 0 - }*/ + } + + //Disabled + /* { + name: "Dash", + ticker: "DASH", + page: "https://www.dash.org", + account: "rudex-dash", + goal: 2000, + votes: 0 + }, + { + name: "Waves", + ticker: "WAVES", + page: "https://waves.exchange", + account: "rudex-waves", + goal: 10000, + votes: 0 + }, + { + name: "Neo", + ticker: "NEO", + page: "https://neo.org", + account: "rudex-neo", + goal: 10000, + votes: 0 + }, + { + name: "Revain", + ticker: "REV", + page: "http://revain.org", + account: "rudex-revain", + goal: 10000, + votes: 0 + },*/ + + //Already Listed + /* { + name: "Litecoin", + ticker: "LTC", + page: "https://litecoin.org", + account: "rudex-litecoin", + goal: 2000, + votes: 0 + }, + { + name: "Monero", + ticker: "XMR", + account: "rudex-monero", + goal: 5000, + votes: 0 + },*/ ]; } diff --git a/app/components/Account/AccountDepositWithdraw.jsx b/app/components/Account/AccountDepositWithdraw.jsx index 1816d4720d..575e1e7e20 100644 --- a/app/components/Account/AccountDepositWithdraw.jsx +++ b/app/components/Account/AccountDepositWithdraw.jsx @@ -39,9 +39,13 @@ class AccountDepositWithdraw extends React.Component { super(); this.state = { rudexService: props.viewSettings.get("rudexService", "gateway"), + rudexServiceBEP20: props.viewSettings.get( + "rudexServiceBEP20", + "gateway" + ), activeService: props.viewSettings.get("activeService", 0), - RudexNotice1Informed: false, - RudexNotice1Informed_BuyCrypto: false + RudexNoticeInformed: false, + RudexNoticeInformed_BuyCrypto: false }; } @@ -62,11 +66,11 @@ class AccountDepositWithdraw extends React.Component { this.props.citadelBackedCoins ) || nextState.rudexService !== this.state.rudexService || + nextState.rudexServiceBEP20 !== this.state.rudexServiceBEP20 || nextState.activeService !== this.state.activeService || - nextState.RudexNotice1Informed !== - this.state.RudexNotice1Informed || - nextState.RudexNotice1Informed_BuyCrypto !== - this.state.RudexNotice1Informed_BuyCrypto || + nextState.RudexNoticeInformed !== this.state.RudexNoticeInformed || + nextState.RudexNoticeInformed_BuyCrypto !== + this.state.RudexNoticeInformed_BuyCrypto || nextProps.currentLocale !== this.props.currentLocale ); } @@ -85,16 +89,16 @@ class AccountDepositWithdraw extends React.Component { }); } - onRudexNotice1Informed() { + onRudexNoticeInformed() { this.setState({ - RudexNotice1Informed: !this.state.RudexNotice1Informed + RudexNoticeInformed: !this.state.RudexNoticeInformed }); } - onRudexNotice1Informed_BuyCrypto() { + onRudexNoticeInformed_BuyCrypto() { this.setState({ - RudexNotice1Informed_BuyCrypto: !this.state - .RudexNotice1Informed_BuyCrypto + RudexNoticeInformed_BuyCrypto: !this.state + .RudexNoticeInformed_BuyCrypto }); } @@ -108,6 +112,16 @@ class AccountDepositWithdraw extends React.Component { }); } + toggleRuDEX_BEP20Service(service) { + this.setState({ + rudexServiceBEP20: service + }); + + SettingsActions.changeViewSetting({ + rudexServiceBEP20: service + }); + } + onSetService(e) { //let index = this.state.services.indexOf(e.target.value); this.setState({ @@ -119,14 +133,15 @@ class AccountDepositWithdraw extends React.Component { }); } - renderServices(rudexGatewayCoins) { + renderServices(rudexGatewayCoins, rudexGatewayCoinsBEP20) { //let services = ["Openledger (OPEN.X)", "BlockTrades (TRADE.X)", "Transwiser", "BitKapital"]; let serList = []; let {account} = this.props; let { rudexService, - RudexNotice1Informed, - RudexNotice1Informed_BuyCrypto + rudexServiceBEP20, + RudexNoticeInformed, + RudexNoticeInformed_BuyCrypto } = this.state; let agreement_ru = @@ -134,140 +149,219 @@ class AccountDepositWithdraw extends React.Component { let agreement_en = "https://rudex.freshdesk.com/support/solutions/articles/35000138245-gateway-service-agreement"; - serList.push({ - name: "RuDEX (RUDEX.X)", - identifier: "RUDEX", - template: ( -
-
- -
+ ) : null} +
+ ) : null} - {rudexService === "gateway" && rudexGatewayCoins.length ? ( -
+ {rudexService === "fiat" ? (
- - -
- + {" "} - -{" "} - -
-
+ content="gateway.rudex.rudex_notice_third_party" + component="a" + target="_blank" + /> -
- {RudexNotice1Informed ? ( - - ) : null} -
- ) : null} +
+ {" "} + -{" "} + +
+ - {rudexService === "fiat" ? ( -
-
- + {RudexNoticeInformed_BuyCrypto ? ( + + ) : null} +
+ ) : null} +
+ ) + }, + + { + name: "Binance Smart Chain (BEP-20 tokens)", + identifier: "RUDEX_BEP20", + template: ( +
+
+ +
-
- +
+ {" "} - -{" "} - -
-
+ content="gateway.rudex.rudex_notice1" + component="a" + target="_blank" + /> -
- {RudexNotice1Informed_BuyCrypto ? ( - - ) : null} - - ) : null} - - ) - }); +
+ {" "} + -{" "} + +
+ + +
+ {RudexNoticeInformed ? ( + + ) : null} + + ) : null} + + ) + } + ); return serList; } @@ -286,7 +380,20 @@ class AccountDepositWithdraw extends React.Component { return 0; }); - let services = this.renderServices(rudexGatewayCoins); + let rudexGatewayCoinsBEP20 = this.props.rudexBackedCoinsBEP20 + .map(coin => { + return coin; + }) + .sort((a, b) => { + if (a.symbol < b.symbol) return -1; + if (a.symbol > b.symbol) return 1; + return 0; + }); + + let services = this.renderServices( + rudexGatewayCoins, + rudexGatewayCoinsBEP20 + ); const serviceNames = []; let options = services.map((services_obj, index) => { @@ -445,6 +552,7 @@ class AccountDepositWithdraw extends React.Component { ); } } + AccountDepositWithdraw = BindToChainState(AccountDepositWithdraw); class DepositStoreWrapper extends React.Component { @@ -470,30 +578,34 @@ export default connect(DepositStoreWrapper, { viewSettings: SettingsStore.getState().viewSettings, currentLocale: SettingsStore.getState().settings.get("locale"), backedCoins: GatewayStore.getState().backedCoins, - openLedgerBackedCoins: GatewayStore.getState().backedCoins.get( - "OPEN", - [] - ), + /* openLedgerBackedCoins: GatewayStore.getState().backedCoins.get( + "OPEN", + [] + ),*/ rudexBackedCoins: GatewayStore.getState().backedCoins.get( "RUDEX", [] ), - bitsparkBackedCoins: GatewayStore.getState().backedCoins.get( - "SPARKDEX", - [] - ), - blockTradesBackedCoins: GatewayStore.getState().backedCoins.get( - "TRADE", - [] - ), - citadelBackedCoins: GatewayStore.getState().backedCoins.get( - "CITADEL", - [] - ), - xbtsxBackedCoins: GatewayStore.getState().backedCoins.get( - "XBTSX", + rudexBackedCoinsBEP20: GatewayStore.getState().backedCoins.get( + "RUDEX_BEP20", [] ), + /* bitsparkBackedCoins: GatewayStore.getState().backedCoins.get( + "SPARKDEX", + [] + ), + blockTradesBackedCoins: GatewayStore.getState().backedCoins.get( + "TRADE", + [] + ), + citadelBackedCoins: GatewayStore.getState().backedCoins.get( + "CITADEL", + [] + ), + xbtsxBackedCoins: GatewayStore.getState().backedCoins.get( + "XBTSX", + [] + ),*/ servicesDown: GatewayStore.getState().down || {} }; } diff --git a/app/components/Account/AccountOverview.jsx b/app/components/Account/AccountOverview.jsx index 1d89758763..fd44259afc 100644 --- a/app/components/Account/AccountOverview.jsx +++ b/app/components/Account/AccountOverview.jsx @@ -55,6 +55,9 @@ class AccountOverview extends React.Component { "RUDEX.BTS", "RUDEX.TRX", + "RUDEX.DEC", + "RUDEX.SPS", + //Delisted "RUDEX.PPY", "RUDEX.SMOKE", diff --git a/app/components/DepositWithdraw/rudex/RuDexGatewayDepositRequest.jsx b/app/components/DepositWithdraw/rudex/RuDexGatewayDepositRequest.jsx index 1c2a7a570b..8454330b20 100644 --- a/app/components/DepositWithdraw/rudex/RuDexGatewayDepositRequest.jsx +++ b/app/components/DepositWithdraw/rudex/RuDexGatewayDepositRequest.jsx @@ -98,6 +98,7 @@ class RuDexGatewayDepositRequest extends React.Component { _getDepositObject() { return { + walletType: this.props.deposit_wallet_type, inputCoinType: this.props.deposit_coin_type, outputCoinType: this.props.receive_coin_type, outputAddress: this.props.account.get("name"), diff --git a/app/components/Listing/CoinCardListing.jsx b/app/components/Listing/CoinCardListing.jsx index 1061b63a83..e4d5cf9f24 100644 --- a/app/components/Listing/CoinCardListing.jsx +++ b/app/components/Listing/CoinCardListing.jsx @@ -9,6 +9,7 @@ import {connect} from "alt-react"; import AccountStore from "../../stores/AccountStore"; import Translate from "react-translate-component"; import {Asset} from "../../lib/common/MarketClasses"; +import {Link} from "react-router-dom"; class CoinCardListing extends React.Component { constructor(props) { @@ -71,6 +72,14 @@ class CoinCardListing extends React.Component { "" )} +
+ +
@@ -154,21 +163,18 @@ class CoinCardListing extends React.Component { } } -CoinCardListing = connect( - CoinCardListing, - { - listenTo() { - return [SettingsStore, AccountStore]; - }, - getProps() { - return { - settings: SettingsStore.getState().settings, - currentAccount: - AccountStore.getState().currentAccount || - AccountStore.getState().passwordAccount - }; - } +CoinCardListing = connect(CoinCardListing, { + listenTo() { + return [SettingsStore, AccountStore]; + }, + getProps() { + return { + settings: SettingsStore.getState().settings, + currentAccount: + AccountStore.getState().currentAccount || + AccountStore.getState().passwordAccount + }; } -); +}); export default CoinCardListing; diff --git a/app/lib/common/RuDexMethods.js b/app/lib/common/RuDexMethods.js index 5e7928089d..cdedf095c2 100644 --- a/app/lib/common/RuDexMethods.js +++ b/app/lib/common/RuDexMethods.js @@ -1,5 +1,5 @@ import ls from "./localStorage"; -import {rudexAPIs} from "api/apiConfig"; +import {rudexAPIs, bep20rudexAPIs} from "api/apiConfig"; const rudexStorage = ls(""); export function fetchCoinList(url = rudexAPIs.BASE + rudexAPIs.COINS_LIST) { @@ -15,13 +15,16 @@ export function fetchCoinList(url = rudexAPIs.BASE + rudexAPIs.COINS_LIST) { } export function requestDepositAddress({ + walletType, inputCoinType, outputCoinType, outputAddress, - url = rudexAPIs.BASE, + //url = rudexAPIs.BASE, + url = rudexAPIs, stateCallback }) { let body = { + walletType, inputCoinType, outputCoinType, outputAddress @@ -29,7 +32,14 @@ export function requestDepositAddress({ let body_string = JSON.stringify(body); - fetch(url + rudexAPIs.NEW_DEPOSIT_ADDRESS, { + console.log("walletType: " + walletType); + + if (walletType === "bsc-tokens") { + url = bep20rudexAPIs; + } + + //fetch(url + rudexAPIs.NEW_DEPOSIT_ADDRESS, { + fetch(url.BASE + url.NEW_DEPOSIT_ADDRESS, { method: "post", headers: new Headers({ Accept: "application/json", @@ -68,12 +78,17 @@ export function requestDepositAddress({ } export function validateAddress({ - url = rudexAPIs.BASE, + //url = rudexAPIs.BASE, + url = rudexAPIs, walletType, newAddress }) { + if (walletType === "bsc-tokens") { + url = bep20rudexAPIs; + } + if (!newAddress) return new Promise(res => res()); - return fetch(url + "/wallets/" + walletType + "/check-address", { + return fetch(url.BASE + "/wallets/" + walletType + "/check-address", { method: "post", headers: new Headers({ Accept: "application/json", diff --git a/app/lib/common/gateways.js b/app/lib/common/gateways.js index bf17fe8d34..01f6f4fd77 100644 --- a/app/lib/common/gateways.js +++ b/app/lib/common/gateways.js @@ -3,7 +3,7 @@ * General API Settings are stored in api/apiConfig and should be imported here */ -import {rudexAPIs} from "api/apiConfig"; +import {rudexAPIs, bep20rudexAPIs} from "api/apiConfig"; import {allowedGateway} from "branding"; import {isGatewayTemporarilyDisabled} from "../chain/onChainConfig"; import SettingsStore from "stores/SettingsStore"; @@ -80,7 +80,7 @@ const _isEnabled = gatewayKey => { export const availableGateways = { RUDEX: { id: "RUDEX", - name: "RuDEX", + name: "COINS (Native Chains)", baseAPI: rudexAPIs, isEnabled: _isEnabled("RUDEX"), isSimple: true, @@ -98,6 +98,27 @@ export const availableGateways = { }, landing: "https://rudex.org/", wallet: "https://market.rudex.org/" + }, + RUDEX_BEP20: { + id: "RUDEX_BEP20", + name: "Binance Smart Chain (BEP-20 tokens)", + baseAPI: bep20rudexAPIs, + isEnabled: _isEnabled("RUDEX_BEP20"), + isSimple: true, + selected: false, + simpleAssetGateway: true, + fixedMemo: { + prepend_default: "dex:", + prepend_btsid: "gphid", + append: "" + }, + addressValidatorMethod: "POST", + options: { + enabled: false, + selected: false + }, + landing: "https://rudex.org/", + wallet: "https://market.rudex.org/" } }; diff --git a/app/lib/common/scamAccounts.js b/app/lib/common/scamAccounts.js index ecb8e24b7e..a1a5477bd1 100644 --- a/app/lib/common/scamAccounts.js +++ b/app/lib/common/scamAccounts.js @@ -58,5 +58,8 @@ export const scamAccountsOther = [ "1.2.3283", "committee-graphene", - "1.2.3716" + "1.2.3716", + + "graphene-bts", + "1.2.3788" ]; diff --git a/package.json b/package.json index 04f07e66d7..b4cdd4dde4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "RuDEX3-light", - "version": "3.3.220119", + "version": "3.3.220301", "description": "Advanced wallet interface for the Graphene financial blockchain.", "homepage": "https://github.com/blckchnd/rudex-ui", "author": "RuDEX Team ",