UNPKG

newpay-wallet-js

Version:

75 lines (63 loc) 3.36 kB
import WalletDb from "../WalletDb.js"; import ls from "./localStorage.js"; const ss = new ls("__bts__"); class BlockTradesDepositAddressCache { constructor() { // increment this to force generating new addresses for all mappings this.current_blocktrades_address_cache_version_string = "2"; //let wallet = WalletDb.getWallet(); //delete wallet.deposit_keys["blocktrades"]; //delete wallet.deposit_keys["openledger"]; //WalletDb._updateWallet(); } getIndexForDepositKeyInExchange(account_name, input_coin_type, output_coin_type) { let args = [this.current_blocktrades_address_cache_version_string, account_name, input_coin_type, output_coin_type]; return args.reduce(function(previous, current) { return previous.concat("[", current, "]"); }, ""); } // returns {"address": address, "memo": memo}, with a null memo if not applicable getCachedInputAddress(exchange_name, account_name, input_coin_type, output_coin_type) { let wallet = WalletDb.getWallet(); wallet = null; const index = this.getIndexForDepositKeyInExchange(account_name, input_coin_type, output_coin_type); if (!wallet) { let deposit_keys = ss.get("deposit_keys", {}); deposit_keys[exchange_name] = deposit_keys[exchange_name] || {}; deposit_keys[exchange_name][index] = deposit_keys[exchange_name][index] || []; let number_of_keys = deposit_keys[exchange_name][index].length; if (number_of_keys) return deposit_keys[exchange_name][index][number_of_keys - 1]; return null; } else { wallet.deposit_keys = wallet.deposit_keys || {}; wallet.deposit_keys[exchange_name] = wallet.deposit_keys[exchange_name] || {}; wallet.deposit_keys[exchange_name][index] = wallet.deposit_keys[exchange_name][index] || []; let number_of_keys = wallet.deposit_keys[exchange_name][index].length; if (number_of_keys) return wallet.deposit_keys[exchange_name][index][number_of_keys - 1]; return null; } } cacheInputAddress(exchange_name, account_name, input_coin_type, output_coin_type, address, memo) { let wallet = WalletDb.getWallet(); wallet = null; const index = this.getIndexForDepositKeyInExchange(account_name, input_coin_type, output_coin_type); if (!wallet) { let deposit_keys = ss.get("deposit_keys", {}); deposit_keys[exchange_name] = deposit_keys[exchange_name] || {}; deposit_keys[exchange_name][index] = deposit_keys[exchange_name][index] || []; deposit_keys[exchange_name][index].push({"address": address, "memo": memo}); ss.set("deposit_keys", deposit_keys); } else { wallet.deposit_keys = wallet.deposit_keys || {}; wallet.deposit_keys[exchange_name] = wallet.deposit_keys[exchange_name] || {}; wallet.deposit_keys[exchange_name][index] = wallet.deposit_keys[exchange_name][index] || []; wallet.deposit_keys[exchange_name][index].push({"address": address, "memo": memo}); WalletDb._updateWallet(); } } }; // BlockTradesDepositAddressCache export default BlockTradesDepositAddressCache;