improve evm ui (#3129)
* improve evm ui * fix model generation * add db schema * bugfixes * scrollable fav token modal * make combined balance the default * add crypto_full_icons to pubspec * optimize transaction duplication check * fix format issue * add chain icons to swap tiles * decrease asset tile font weight * show chain icon in swap currency selector * move chain icon for tokens * new trade history row * ui fix * fix padding on modal * remove vec
@@ -12,6 +12,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
|
||||
required this.decimals,
|
||||
this.fullName,
|
||||
this.iconPath,
|
||||
this.iconSvgPath,
|
||||
this.flatIconPath,
|
||||
this.tag,
|
||||
this.chainIconPath,
|
||||
@@ -23,6 +24,7 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
|
||||
final String? tag;
|
||||
final String? fullName;
|
||||
final String? iconPath;
|
||||
final String? iconSvgPath;
|
||||
final String? flatIconPath;
|
||||
final String? chainIconPath;
|
||||
@override
|
||||
@@ -149,20 +151,20 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
|
||||
static const zcashCurrencies = [ zec, zaddr, tzec ];
|
||||
|
||||
// title, tag (if applicable), fullName (if unique), raw, name, iconPath
|
||||
static const xmr = CryptoCurrency(title: 'XMR', fullName: 'Monero', raw: 0, name: 'xmr', iconPath: 'assets/images/crypto/monero.webp', decimals: 12,flatIconPath: "assets/new-ui/balance_card_icons/monero.svg");
|
||||
static const xmr = CryptoCurrency(title: 'XMR', fullName: 'Monero', raw: 0, name: 'xmr', iconPath: 'assets/images/crypto/monero.webp', iconSvgPath: "assets/new-ui/crypto_full_icons/monero.svg", decimals: 12,flatIconPath: "assets/new-ui/balance_card_icons/monero.svg");
|
||||
static const ada = CryptoCurrency(title: 'ADA', fullName: 'Cardano', raw: 1, name: 'ada', iconPath: 'assets/images/ada_icon.png', decimals: 6);
|
||||
static const bch = CryptoCurrency(title: 'BCH', fullName: 'Bitcoin Cash', raw: 2, name: 'bch', iconPath: 'assets/images/crypto/bitcoin-cash.webp', decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/bitcoin_cash.svg");
|
||||
static const bnb = CryptoCurrency(title: 'BNB', tag: 'BSC', fullName: 'BNB', raw: 3, name: 'bnb', iconPath: 'assets/images/crypto/BNB.webp', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/bnb.svg", chainIconPath: "assets/new-ui/chain_badges/bnb smart chain.svg");
|
||||
static const btc = CryptoCurrency(title: 'BTC', fullName: 'Bitcoin', raw: 4, name: 'btc', iconPath: 'assets/images/crypto/bitcoin.webp', decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/bitcoin.svg");
|
||||
static const dai = CryptoCurrency(title: 'DAI', tag: 'ETH', fullName: 'Dai', raw: 5, name: 'dai', iconPath: 'assets/images/crypto/dai.webp', decimals: 18);
|
||||
static const bch = CryptoCurrency(title: 'BCH', fullName: 'Bitcoin Cash', raw: 2, name: 'bch', iconPath: 'assets/images/crypto/bitcoin-cash.webp', iconSvgPath: "assets/new-ui/crypto_full_icons/bitcoin-cash.svg",decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/bitcoin_cash.svg");
|
||||
static const bnb = CryptoCurrency(title: 'BNB', tag: 'BSC', fullName: 'BNB', raw: 3, name: 'bnb', iconPath: 'assets/images/crypto/BNB.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/bnb.svg", decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/bnb.svg", chainIconPath: "assets/new-ui/chain_badges/bnb smart chain.svg");
|
||||
static const btc = CryptoCurrency(title: 'BTC', fullName: 'Bitcoin', raw: 4, name: 'btc', iconPath: 'assets/images/crypto/bitcoin.webp', iconSvgPath: "assets/new-ui/crypto_full_icons/bitcoin.svg",decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/bitcoin.svg");
|
||||
static const dai = CryptoCurrency(title: 'DAI', tag: 'ETH', fullName: 'Dai', raw: 5, name: 'dai', iconPath: 'assets/images/crypto/dai.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/dai.svg", decimals: 18);
|
||||
static const dash = CryptoCurrency(title: 'DASH', fullName: 'Dash', raw: 6, name: 'dash', iconPath: 'assets/images/dash_icon.png', decimals: 8);
|
||||
static const eos = CryptoCurrency(title: 'EOS', fullName: 'EOS', raw: 7, name: 'eos', iconPath: 'assets/images/eos_icon.png', decimals: 4);
|
||||
static const eth = CryptoCurrency(title: 'ETH', fullName: 'Ethereum', raw: 8, name: 'eth', iconPath: 'assets/images/crypto/ethereum.webp', decimals: 18,flatIconPath: "assets/new-ui/balance_card_icons/ethereum.svg", chainIconPath: "assets/new-ui/chain_badges/ethereum.svg");
|
||||
static const ltc = CryptoCurrency(title: 'LTC', fullName: 'Litecoin', raw: 9, name: 'ltc', iconPath: 'assets/images/crypto/litecoin.webp', decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/litecoin.svg", chainIconPath: "assets/new-ui/chain_badges/mweb.svg");
|
||||
static const nano = CryptoCurrency(title: 'XNO', fullName: 'Nano', raw: 10, name: 'xno', iconPath: 'assets/images/crypto/nano.webp', decimals: 30,flatIconPath: "assets/new-ui/balance_card_icons/nano.svg");
|
||||
static const trx = CryptoCurrency(title: 'TRX', fullName: 'TRON', raw: 11, name: 'trx', iconPath: 'assets/images/crypto/tron.webp', decimals: 6,flatIconPath: "assets/new-ui/balance_card_icons/tron.svg", chainIconPath: "assets/new-ui/chain_badges/tron.svg");
|
||||
static const usdt = CryptoCurrency(title: 'USDT', tag: 'OMNI', fullName: 'Tether', raw: 12, name: 'usdt', iconPath: 'assets/images/crypto/tether.webp', decimals: 6);
|
||||
static const usdterc20 = CryptoCurrency(title: 'USDT', tag: 'ETH', fullName: 'Tether', raw: 13, name: 'usdterc20', iconPath: 'assets/images/crypto/tether.webp', decimals: 6);
|
||||
static const ltc = CryptoCurrency(title: 'LTC', fullName: 'Litecoin', raw: 9, name: 'ltc', iconPath: 'assets/images/crypto/litecoin.webp', iconSvgPath: "assets/new-ui/crypto_full_icons/litecoin.svg",decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/litecoin.svg", chainIconPath: "assets/new-ui/chain_badges/mweb.svg");
|
||||
static const nano = CryptoCurrency(title: 'XNO', fullName: 'Nano', raw: 10, name: 'xno', iconPath: 'assets/images/crypto/nano.webp', iconSvgPath: "assets/new-ui/crypto_full_icons/nano.svg",decimals: 30,flatIconPath: "assets/new-ui/balance_card_icons/nano.svg");
|
||||
static const trx = CryptoCurrency(title: 'TRX', fullName: 'TRON', raw: 11, name: 'trx', iconPath: 'assets/images/crypto/tron.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/tron.svg", decimals: 6,flatIconPath: "assets/new-ui/balance_card_icons/tron.svg", chainIconPath: "assets/new-ui/chain_badges/tron.svg");
|
||||
static const usdt = CryptoCurrency(title: 'USDT', tag: 'OMNI', fullName: 'Tether', raw: 12, name: 'usdt', iconPath: 'assets/images/crypto/tether.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdt.svg", decimals: 6);
|
||||
static const usdterc20 = CryptoCurrency(title: 'USDT', tag: 'ETH', fullName: 'Tether', raw: 13, name: 'usdterc20', iconPath: 'assets/images/crypto/tether.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdt.svg", decimals: 6);
|
||||
static const xlm = CryptoCurrency(title: 'XLM', fullName: 'Stellar', raw: 14, name: 'xlm', iconPath: 'assets/images/xlm_icon.png', decimals: 7);
|
||||
static const xrp = CryptoCurrency(title: 'XRP', fullName: 'Ripple', raw: 15, name: 'xrp', iconPath: 'assets/images/xrp_icon.png', decimals: 6);
|
||||
static const xhv = CryptoCurrency(title: 'XHV', fullName: 'Haven Protocol', raw: 16, name: 'xhv', iconPath: 'assets/images/xhv_logo.png', decimals: 12);
|
||||
@@ -182,42 +184,42 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
|
||||
static const xusd = CryptoCurrency(title: 'XUSD', tag: 'XHV', raw: 29, name: 'xusd', decimals: 12);
|
||||
|
||||
static const ape = CryptoCurrency(title: 'APE', tag: 'ETH', fullName: 'ApeCoin', raw: 30, name: 'ape', iconPath: 'assets/images/ape_icon.png', decimals: 18);
|
||||
static const avaxc = CryptoCurrency(title: 'AVAX', tag: 'AVAXC', fullName: 'Avalanche', raw: 31, name: 'avaxc', iconPath: 'assets/images/avaxc_icon.png', decimals: 9);
|
||||
static const avaxc = CryptoCurrency(title: 'AVAX', tag: 'AVAXC', fullName: 'Avalanche', raw: 31, name: 'avaxc', iconPath: 'assets/images/avaxc_icon.png',iconSvgPath: "assets/new-ui/crypto_full_icons/avax.svg", decimals: 9);
|
||||
static const btt = CryptoCurrency(title: 'BTT', tag: 'ETH', fullName: 'BitTorrent', raw: 32, name: 'btt', iconPath: 'assets/images/btt_icon.png', decimals: 18);
|
||||
static const bttc = CryptoCurrency(title: 'BTTC', tag: 'TRX', fullName: 'BitTorrent-NEW', raw: 33, name: 'bttc', iconPath: 'assets/images/btt_icon.png', decimals: 18);
|
||||
static const doge = CryptoCurrency(title: 'DOGE', fullName: 'Dogecoin', raw: 34, name: 'doge', iconPath: 'assets/images/crypto/dogecoin.webp', decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/dogecoin.svg");
|
||||
static const doge = CryptoCurrency(title: 'DOGE', fullName: 'Dogecoin', raw: 34, name: 'doge', iconPath: 'assets/images/crypto/dogecoin.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/dogecoin.svg", decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/dogecoin.svg");
|
||||
static const firo = CryptoCurrency(title: 'FIRO', raw: 35, name: 'firo', iconPath: 'assets/images/firo_icon.png', decimals: 8);
|
||||
static const usdttrc20 = CryptoCurrency(title: 'USDT', tag: 'TRX', fullName: 'Tether', raw: 36, name: 'usdttrc20', iconPath: 'assets/images/crypto/tether.webp', decimals: 6);
|
||||
static const usdttrc20 = CryptoCurrency(title: 'USDT', tag: 'TRX', fullName: 'Tether', raw: 36, name: 'usdttrc20', iconPath: 'assets/images/crypto/tether.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdt.svg", decimals: 6);
|
||||
static const hbar = CryptoCurrency(title: 'HBAR', fullName: 'Hedera', raw: 37, name: 'hbar', iconPath: 'assets/images/hbar_icon.png', decimals: 8);
|
||||
static const sc = CryptoCurrency(title: 'SC', fullName: 'Siacoin', raw: 38, name: 'sc', iconPath: 'assets/images/sc_icon.png', decimals: 16);
|
||||
static const sol = CryptoCurrency(title: 'SOL', fullName: 'Solana', raw: 39, name: 'sol', iconPath: 'assets/images/crypto/solana.webp', decimals: 9,flatIconPath: "assets/new-ui/balance_card_icons/solana.svg", chainIconPath: "assets/new-ui/chain_badges/solana.svg");
|
||||
static const usdc = CryptoCurrency(title: 'USDC', tag: 'ETH', fullName: 'USDC', raw: 40, name: 'usdc', iconPath: 'assets/images/crypto/usdc.webp', decimals: 6);
|
||||
static const usdcsol = CryptoCurrency(title: 'USDC', tag: 'SOL', fullName: 'USDC Coin', raw: 41, name: 'usdcsol', iconPath: 'assets/images/crypto/usdc.webp', decimals: 6);
|
||||
static const sol = CryptoCurrency(title: 'SOL', fullName: 'Solana', raw: 39, name: 'sol', iconPath: 'assets/images/crypto/solana.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/solana.svg", decimals: 9,flatIconPath: "assets/new-ui/balance_card_icons/solana.svg", chainIconPath: "assets/new-ui/chain_badges/solana.svg");
|
||||
static const usdc = CryptoCurrency(title: 'USDC', tag: 'ETH', fullName: 'USDC', raw: 40, name: 'usdc', iconPath: 'assets/images/crypto/usdc.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdc.svg", decimals: 6);
|
||||
static const usdcsol = CryptoCurrency(title: 'USDC', tag: 'SOL', fullName: 'USDC Coin', raw: 41, name: 'usdcsol', iconPath: 'assets/images/crypto/usdc.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdc.svg", decimals: 6);
|
||||
static const zaddr = CryptoCurrency(title: 'ZZEC', tag: 'ZEC', fullName: 'Shielded Zcash', raw: 42, name: 'zaddr', iconPath: 'assets/images/zec_icon.png', decimals: 8);
|
||||
static const tzec = CryptoCurrency(title: 'tZEC', tag: 'ZEC', fullName: 'Transparent Zcash', raw: 43, name: 'zec', iconPath: 'assets/images/zec_icon.png', decimals: 8);
|
||||
static const zen = CryptoCurrency(title: 'ZEN', fullName: 'Horizen', raw: 44, name: 'zen', iconPath: 'assets/images/zen_icon.png', decimals: 8);
|
||||
static const xvg = CryptoCurrency(title: 'XVG', fullName: 'Verge', raw: 45, name: 'xvg', iconPath: 'assets/images/xvg_icon.png', decimals: 8);
|
||||
|
||||
static const usdcpoly = CryptoCurrency(title: 'USDC', tag: 'POL', fullName: 'USDC', raw: 46, name: 'usdcpoly', iconPath: 'assets/images/crypto/usdc.webp', decimals: 6);
|
||||
static const dcr = CryptoCurrency(title: 'DCR', fullName: 'Decred', raw: 47, name: 'dcr', iconPath: 'assets/images/crypto/decred.webp', decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/decred.svg");
|
||||
static const usdcpoly = CryptoCurrency(title: 'USDC', tag: 'POL', fullName: 'USDC', raw: 46, name: 'usdcpoly', iconPath: 'assets/images/crypto/usdc.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdc.svg", decimals: 6);
|
||||
static const dcr = CryptoCurrency(title: 'DCR', fullName: 'Decred', raw: 47, name: 'dcr', iconPath: 'assets/images/crypto/decred.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/decred.svg", decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/decred.svg");
|
||||
static const kmd = CryptoCurrency(title: 'KMD', fullName: 'Komodo', raw: 48, name: 'kmd', iconPath: 'assets/images/kmd_icon.png', decimals: 8);
|
||||
static const mana = CryptoCurrency(title: 'MANA', tag: 'ETH', fullName: 'Decentraland', raw: 49, name: 'mana', iconPath: 'assets/images/mana_icon.png', decimals: 18);
|
||||
static const maticpoly = CryptoCurrency(title: 'POL', tag: 'POL', fullName: 'Polygon', raw: 50, name: 'maticpoly', iconPath: 'assets/images/crypto/polygon.webp', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/polygon.svg", chainIconPath: "assets/new-ui/chain_badges/polygon.svg");
|
||||
static const matic = CryptoCurrency(title: 'MATIC', tag: 'ETH', fullName: 'Polygon', raw: 51, name: 'matic', iconPath: 'assets/images/crypto/polygon.webp', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/polygon.svg");
|
||||
static const maticpoly = CryptoCurrency(title: 'POL', tag: 'POL', fullName: 'Polygon', raw: 50, name: 'maticpoly', iconPath: 'assets/images/crypto/polygon.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/polygon.svg", decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/polygon.svg", chainIconPath: "assets/new-ui/chain_badges/polygon.svg");
|
||||
static const matic = CryptoCurrency(title: 'MATIC', tag: 'ETH', fullName: 'Polygon', raw: 51, name: 'matic', iconPath: 'assets/images/crypto/polygon.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/polygon.svg", decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/polygon.svg");
|
||||
static const mkr = CryptoCurrency(title: 'MKR', tag: 'ETH', fullName: 'Maker', raw: 52, name: 'mkr', iconPath: 'assets/images/mkr_icon.png', decimals: 18);
|
||||
static const near = CryptoCurrency(title: 'NEAR', fullName: 'NEAR Protocol', raw: 53, name: 'near', iconPath: 'assets/images/near_icon.png', decimals: 24);
|
||||
static const oxt = CryptoCurrency(title: 'OXT', tag: 'ETH', fullName: 'Orchid', raw: 54, name: 'oxt', iconPath: 'assets/images/oxt_icon.png', decimals: 18);
|
||||
static const paxg = CryptoCurrency(title: 'PAXG', tag: 'ETH', fullName: 'Pax Gold', raw: 55, name: 'paxg', iconPath: 'assets/images/paxg.webp', decimals: 18);
|
||||
static const paxg = CryptoCurrency(title: 'PAXG', tag: 'ETH', fullName: 'Pax Gold', raw: 55, name: 'paxg', iconPath: 'assets/images/paxg.webp', iconSvgPath: "assets/new-ui/crypto_full_icons/paxg.svg",decimals: 18);
|
||||
static const pivx = CryptoCurrency(title: 'PIVX', raw: 56, name: 'pivx', iconPath: 'assets/images/pivx_icon.png', decimals: 8);
|
||||
static const rune = CryptoCurrency(title: 'RUNE', fullName: 'Thorchain', raw: 57, name: 'rune', iconPath: 'assets/images/rune_icon.png', decimals: 18);
|
||||
static const rvn = CryptoCurrency(title: 'RVN', fullName: 'Ravencoin', raw: 58, name: 'rvn', iconPath: 'assets/images/rvn_icon.png', decimals: 8);
|
||||
static const scrt = CryptoCurrency(title: 'SCRT', fullName: 'Secret Network', raw: 59, name: 'scrt', iconPath: 'assets/images/scrt_icon.png', decimals: 6);
|
||||
static const uni = CryptoCurrency(title: 'UNI', tag: 'ETH', fullName: 'Uniswap', raw: 60, name: 'uni', iconPath: 'assets/images/uni_icon.png', decimals: 18);
|
||||
static const stx = CryptoCurrency(title: 'STX', fullName: 'Stacks', raw: 61, name: 'stx', iconPath: 'assets/images/stx_icon.png', decimals: 8);
|
||||
static const btcln = CryptoCurrency(title: 'BTC', tag: 'LN', fullName: 'Bitcoin Lightning Network', raw: 62, name: 'btcln', iconPath: 'assets/images/crypto/lightning.webp', decimals: 8);
|
||||
static const btcln = CryptoCurrency(title: 'BTC', tag: 'LN', fullName: 'Bitcoin Lightning Network', raw: 62, name: 'btcln', iconPath: 'assets/images/crypto/lightning.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/lightning.svg", chainIconPath: "assets/new-ui/chain_badges/lightning.svg", decimals: 8);
|
||||
static const shib = CryptoCurrency(title: 'SHIB', tag: 'ETH', fullName: 'Shiba Inu', raw: 63, name: 'shib', iconPath: 'assets/images/shib_icon.png', decimals: 18);
|
||||
static const aave = CryptoCurrency(title: 'AAVE', tag: 'ETH', fullName: 'Aave', raw: 64, name: 'aave', iconPath: 'assets/images/aave_icon.png', decimals: 18);
|
||||
static const arb = CryptoCurrency(title: 'ARB', fullName: 'Arbitrum', raw: 65, name: 'arb', iconPath: 'assets/images/crypto/arbitrum.webp', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/arbitrum.svg", chainIconPath: "assets/new-ui/chain_badges/arbitrum.svg");
|
||||
static const arb = CryptoCurrency(title: 'ARB', fullName: 'Arbitrum', raw: 65, name: 'arb', iconPath: 'assets/images/crypto/arbitrum.webp', iconSvgPath: "assets/new-ui/crypto_full_icons/arbitrum.svg", decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/arbitrum.svg", chainIconPath: "assets/new-ui/chain_badges/arbitrum.svg");
|
||||
static const bat = CryptoCurrency(title: 'BAT', tag: 'ETH', fullName: 'Basic Attention Token', raw: 66, name: 'bat', iconPath: 'assets/images/bat_icon.png', decimals: 18);
|
||||
static const comp = CryptoCurrency(title: 'COMP', tag: 'ETH', fullName: 'Compound', raw: 67, name: 'comp', iconPath: 'assets/images/comp_icon.png', decimals: 18);
|
||||
static const cro = CryptoCurrency(title: 'CRO', tag: 'ETH', fullName: 'Crypto.com Cronos', raw: 68, name: 'cro', iconPath: 'assets/images/cro_icon.png', decimals: 8);
|
||||
@@ -233,36 +235,36 @@ class CryptoCurrency extends EnumerableItem<int> with Serializable<int> implemen
|
||||
static const pepe = CryptoCurrency(title: 'PEPE', tag: 'ETH', fullName: 'Pepe', raw: 78, name: 'pepe', iconPath: 'assets/images/pepe_icon.png', decimals: 18);
|
||||
static const storj = CryptoCurrency(title: 'STORJ', tag: 'ETH', fullName: 'Storj', raw: 79, name: 'storj', iconPath: 'assets/images/storj_icon.png', decimals: 8);
|
||||
static const tusd = CryptoCurrency(title: 'TUSD', tag: 'ETH', fullName: 'TrueUSD', raw: 80, name: 'tusd', iconPath: 'assets/images/tusd_icon.png', decimals: 18);
|
||||
static const wbtc = CryptoCurrency(title: 'WBTC', tag: 'ETH', fullName: 'Wrapped Bitcoin', raw: 81, name: 'wbtc', iconPath: 'assets/images/crypto/wbtc.webp', decimals: 8);
|
||||
static const weth = CryptoCurrency(title: 'WETH', tag: 'ETH', fullName: 'Wrapped Ethereum', raw: 82, name: 'weth', iconPath: 'assets/images/crypto/ethereum.webp', decimals: 18);
|
||||
static const wbtc = CryptoCurrency(title: 'WBTC', tag: 'ETH', fullName: 'Wrapped Bitcoin', raw: 81, name: 'wbtc', iconPath: 'assets/images/crypto/wbtc.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/wbtc.svg", decimals: 8);
|
||||
static const weth = CryptoCurrency(title: 'WETH', tag: 'ETH', fullName: 'Wrapped Ethereum', raw: 82, name: 'weth', iconPath: 'assets/images/crypto/ethereum.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/ethereum.svg", decimals: 18);
|
||||
static const zrx = CryptoCurrency(title: 'ZRX', tag: 'ETH', fullName: '0x Protocol', raw: 83, name: 'zrx', iconPath: 'assets/images/zrx_icon.png', decimals: 18);
|
||||
static const dydx = CryptoCurrency(title: 'DYDX', tag: 'ETH', fullName: 'dYdX', raw: 84, name: 'dydx', iconPath: 'assets/images/dydx_icon.png', decimals: 18);
|
||||
static const steth = CryptoCurrency(title: 'STETH', tag: 'ETH', fullName: 'Lido Staked Ethereum', raw: 85, name: 'steth', iconPath: 'assets/images/crypto/ethereum.webp', decimals: 18);
|
||||
static const steth = CryptoCurrency(title: 'STETH', tag: 'ETH', fullName: 'Lido Staked Ethereum', raw: 85, name: 'steth', iconPath: 'assets/images/crypto/ethereum.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/ethereum.svg", decimals: 18);
|
||||
static const banano = CryptoCurrency(title: 'BAN', fullName: 'Banano', raw: 86, name: 'banano', iconPath: 'assets/images/nano_icon.png', decimals: 29,flatIconPath: "assets/new-ui/balance_card_icons/nano.svg");
|
||||
static const usdtPoly = CryptoCurrency(title: 'USDT', tag: 'POL', fullName: 'Tether (PoS)', raw: 87, name: 'usdtpoly', iconPath: 'assets/images/crypto/tether.webp', decimals: 6);
|
||||
static const usdcEPoly = CryptoCurrency(title: 'USDC.E', tag: 'POL', fullName: 'USDC (PoS)', raw: 88, name: 'usdcepoly', iconPath: 'assets/images/crypto/usdc.webp', decimals: 6);
|
||||
static const usdtPoly = CryptoCurrency(title: 'USDT', tag: 'POL', fullName: 'Tether (PoS)', raw: 87, name: 'usdtpoly', iconPath: 'assets/images/crypto/tether.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdt.svg", decimals: 6);
|
||||
static const usdcEPoly = CryptoCurrency(title: 'USDC.E', tag: 'POL', fullName: 'USDC (PoS)', raw: 88, name: 'usdcepoly', iconPath: 'assets/images/crypto/usdc.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdc.svg", decimals: 6);
|
||||
static const kaspa = CryptoCurrency(title: 'KAS', fullName: 'Kaspa', raw: 89, name: 'kas', iconPath: 'assets/images/kaspa_icon.png', decimals: 8);
|
||||
static const digibyte = CryptoCurrency(title: 'DGB', fullName: 'DigiByte', raw: 90, name: 'dgb', iconPath: 'assets/images/digibyte.png', decimals: 8);
|
||||
static const usdtSol = CryptoCurrency(title: 'USDT', tag: 'SOL', fullName: 'Tether', raw: 91, name: 'usdtsol', iconPath: 'assets/images/crypto/tether.webp', decimals: 6);
|
||||
static const usdcTrc20 = CryptoCurrency(title: 'USDC', tag: 'TRX', fullName: 'USDC Coin', raw: 92, name: 'usdctrc20', iconPath: 'assets/images/crypto/usdc.webp', decimals: 6);
|
||||
static const usdtSol = CryptoCurrency(title: 'USDT', tag: 'SOL', fullName: 'Tether', raw: 91, name: 'usdtsol', iconPath: 'assets/images/crypto/tether.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdt.svg", decimals: 6);
|
||||
static const usdcTrc20 = CryptoCurrency(title: 'USDC', tag: 'TRX', fullName: 'USDC Coin', raw: 92, name: 'usdctrc20', iconPath: 'assets/images/crypto/usdc.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdc.svg", decimals: 6);
|
||||
static const tbtc = CryptoCurrency(title: 'tBTC', fullName: 'Testnet Bitcoin', raw: 93, name: 'tbtc', iconPath: 'assets/images/tbtc.png', decimals: 8);
|
||||
static const wow = CryptoCurrency(title: 'WOW', fullName: 'Wownero', raw: 94, name: 'wow', iconPath: 'assets/images/crypto/wownero.webp', decimals: 11);
|
||||
static const ton = CryptoCurrency(title: 'TON', fullName: 'Toncoin', raw: 95, name: 'ton', iconPath: 'assets/images/ton_icon.png', decimals: 8);
|
||||
static const zano = CryptoCurrency(title: 'ZANO', tag: 'ZANO', fullName: 'Zano', raw: 96, name: 'zano', iconPath: 'assets/images/crypto/zano.webp', decimals: 12,flatIconPath: "assets/new-ui/balance_card_icons/zano.svg", chainIconPath: "assets/new-ui/chain_badges/zano.svg");
|
||||
static const ton = CryptoCurrency(title: 'TON', fullName: 'Toncoin', raw: 95, name: 'ton', iconPath: 'assets/images/ton_icon.png', iconSvgPath: "assets/new-ui/crypto_full_icons/ton.svg",decimals: 8);
|
||||
static const zano = CryptoCurrency(title: 'ZANO', tag: 'ZANO', fullName: 'Zano', raw: 96, name: 'zano', iconPath: 'assets/images/crypto/zano.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/zano.svg", decimals: 12,flatIconPath: "assets/new-ui/balance_card_icons/zano.svg", chainIconPath: "assets/new-ui/chain_badges/zano.svg");
|
||||
static const flip = CryptoCurrency(title: 'FLIP', tag: 'ETH', fullName: 'Chainflip', raw: 97, name: 'flip', iconPath: 'assets/images/flip_icon.png', decimals: 18);
|
||||
static const deuro = CryptoCurrency(title: 'DEURO', tag: 'ETH', fullName: 'Decentralized Euro', raw: 98, name: 'deuro', iconPath: 'assets/images/deuro_icon.png', decimals: 18);
|
||||
static const usdtbsc = CryptoCurrency(title: 'USDT', tag: 'BSC', fullName: 'USDT Binance coin', raw: 99, name: 'usdtbsc', iconPath: 'assets/images/crypto/tether.webp', decimals: 18);
|
||||
static const deuro = CryptoCurrency(title: 'DEURO', tag: 'ETH', fullName: 'Decentralized Euro', raw: 98, name: 'deuro', iconPath: 'assets/images/deuro_icon.png', iconSvgPath: "assets/new-ui/crypto_full_icons/deuro.svg",decimals: 18);
|
||||
static const usdtbsc = CryptoCurrency(title: 'USDT', tag: 'BSC', fullName: 'USDT Binance coin', raw: 99, name: 'usdtbsc', iconPath: 'assets/images/crypto/tether.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdt.svg", decimals: 18);
|
||||
static const ndeps = CryptoCurrency(title: 'NDEPS', tag: 'ETH', fullName: 'Native Decentralized Euro Protocol Share', raw: 100, name: 'ndeps', iconPath: 'assets/images/ndeps_icon.png', decimals: 18);
|
||||
static const deps = CryptoCurrency(title: 'DEPS', tag: 'ETH', fullName: 'Decentralized Euro Protocol Share', raw: 101, name: 'deps', iconPath: 'assets/images/deps_icon.png', decimals: 18);
|
||||
static const kbtc = CryptoCurrency(title: 'KBTC', tag: 'ETH', fullName: 'Kraken Wrapped Bitcoin', raw: 102, name: 'kbtc', iconPath: 'assets/images/kbtc_icon.png', decimals: 8);
|
||||
static const cbbtc = CryptoCurrency(title: 'CBBTC', tag: 'ETH', fullName: 'Coinbase Wrapped BTC', raw: 103, name: 'cbbtc', iconPath: 'assets/images/cbbtc_icon.png', decimals: 8);
|
||||
static const baseEth = CryptoCurrency(title: 'ETH', tag: 'BASE', fullName: 'Ethereum', raw: 104, name: 'baseth', iconPath: 'assets/images/crypto/ethereum.webp', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/base.svg", chainIconPath: "assets/new-ui/chain_badges/base.svg");
|
||||
static const usde = CryptoCurrency(title: 'USDE', tag: 'BASE', fullName: 'Ethena USDE', raw: 105, name: 'usde', iconPath: 'assets/images/crypto/ethena-usde-logo.png', decimals: 18);
|
||||
static const arbEth = CryptoCurrency(title: 'ETH', tag: 'ARB', fullName: 'Ethereum', raw: 106, name: 'arbeth', iconPath: 'assets/images/crypto/ethereum.webp', decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/arbitrum.svg");
|
||||
static const zec = CryptoCurrency(title: 'ZEC', fullName: 'Zcash', raw: 107, name: 'zec', iconPath: 'assets/images/zec_icon.png', decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/zcash.svg");
|
||||
static const usdcArb = CryptoCurrency(title: 'USDC', tag: 'ARB', fullName: 'USDC Coin', raw: 108, name: 'usdcarb', iconPath: 'assets/images/crypto/usdc.webp', decimals: 6);
|
||||
static const usdtArb = CryptoCurrency(title: 'USDT', tag: 'ARB', fullName: 'USDT Tether', raw: 109, name: 'usdtarb', iconPath: 'assets/images/crypto/tether.webp', decimals: 6);
|
||||
static const ltcmweb = CryptoCurrency(title: 'LTC', fullName: 'Litecoin MWeb', raw: 110, name: 'ltcmweb', iconPath: 'assets/images/crypto/litecoin.webp', decimals: 8);
|
||||
static const baseEth = CryptoCurrency(title: 'ETH', tag: 'BASE', fullName: 'Ethereum', raw: 104, name: 'baseth', iconPath: 'assets/images/crypto/ethereum.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/ethereum.svg", decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/base.svg", chainIconPath: "assets/new-ui/chain_badges/base.svg");
|
||||
static const usde = CryptoCurrency(title: 'USDE', tag: 'BASE', fullName: 'Ethena USDE', raw: 105, name: 'usde', iconPath: 'assets/images/crypto/ethena-usde-logo.png',iconSvgPath: "assets/new-ui/crypto_full_icons/usde.svg", decimals: 18);
|
||||
static const arbEth = CryptoCurrency(title: 'ETH', tag: 'ARB', fullName: 'Ethereum', raw: 106, name: 'arbeth', iconPath: 'assets/images/crypto/ethereum.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/ethereum.svg", decimals: 18, flatIconPath: "assets/new-ui/balance_card_icons/arbitrum.svg");
|
||||
static const zec = CryptoCurrency(title: 'ZEC', fullName: 'Zcash', raw: 107, name: 'zec', iconPath: 'assets/images/zec_icon.png',iconSvgPath: "assets/new-ui/crypto_full_icons/zcash.svg", decimals: 8,flatIconPath: "assets/new-ui/balance_card_icons/zcash.svg");
|
||||
static const usdcArb = CryptoCurrency(title: 'USDC', tag: 'ARB', fullName: 'USDC Coin', raw: 108, name: 'usdcarb', iconPath: 'assets/images/crypto/usdc.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdc.svg", decimals: 6);
|
||||
static const usdtArb = CryptoCurrency(title: 'USDT', tag: 'ARB', fullName: 'USDT Tether', raw: 109, name: 'usdtarb', iconPath: 'assets/images/crypto/tether.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/usdt.svg", decimals: 6);
|
||||
static const ltcmweb = CryptoCurrency(title: 'LTC', fullName: 'Litecoin MWeb', raw: 110, name: 'ltcmweb', iconPath: 'assets/images/crypto/litecoin.webp',iconSvgPath: "assets/new-ui/crypto_full_icons/litecoin.svg", decimals: 8);
|
||||
|
||||
static final Map<int, CryptoCurrency> _rawCurrencyMap =
|
||||
[...all, ...havenCurrencies, ...zcashCurrencies].fold<Map<int, CryptoCurrency>>(<int, CryptoCurrency>{}, (acc, item) {
|
||||
|
||||
@@ -39,7 +39,7 @@ Future<void> initDb({String? pathOverride}) async {
|
||||
}
|
||||
}
|
||||
await db?.close();
|
||||
db = await openDatabase(dbFile.path, version: 3,
|
||||
db = await openDatabase(dbFile.path, version: 4,
|
||||
onUpgrade: (Database db, int oldVersion, int newVersion) async {
|
||||
printV("migrating: $oldVersion, $newVersion");
|
||||
if (oldVersion <= 1) {
|
||||
@@ -81,6 +81,13 @@ CREATE TABLE IF NOT EXISTS BalanceCardStyleSettings (
|
||||
definition: 'INTEGER DEFAULT 0',
|
||||
);
|
||||
}
|
||||
if (oldVersion <= 3) {
|
||||
await _addColumnIfNotExists(db, table: "WalletInfo", column: "showCombinedBalance", definition: "BOOLEAN DEFAULT TRUE");
|
||||
// null - primary token (eth, sol etc)
|
||||
// not null - address of fav token
|
||||
// if address doesn't correspond to a valid token, fallback to primary token
|
||||
await _addColumnIfNotExists(db, table: "WalletInfo", column: "favoriteTokenAddress", definition: "TEXT DEFAULT NULL");
|
||||
}
|
||||
},
|
||||
onCreate: (Database db, int version) async {
|
||||
await db.execute(
|
||||
@@ -107,7 +114,9 @@ CREATE TABLE WalletInfo (
|
||||
hashedWalletIdentifier TEXT,
|
||||
isNonSeedWallet INTEGER DEFAULT (0) NOT NULL,
|
||||
sortOrder INTEGER DEFAULT (0) NOT NULL,
|
||||
receiveInfoboxDismissed BOOLEAN DEFAULT FALSE
|
||||
receiveInfoboxDismissed BOOLEAN DEFAULT FALSE,
|
||||
showCombinedBalance BOOLEAN DEFAULT TRUE,
|
||||
favoriteTokenAddress TEXT DEFAULT NULL
|
||||
);
|
||||
''');
|
||||
|
||||
|
||||
@@ -347,8 +347,9 @@ class WalletInfo {
|
||||
this.isNonSeedWallet,
|
||||
this.sortOrder,
|
||||
this.addressPageType,
|
||||
this.receiveInfoboxDismissed
|
||||
|
||||
this.receiveInfoboxDismissed,
|
||||
this.showCombinedBalance,
|
||||
this.favoriteTokenAddress
|
||||
) : _yatLastUsedAddressController = StreamController<String>.broadcast();
|
||||
|
||||
factory WalletInfo.external({
|
||||
@@ -371,6 +372,8 @@ class WalletInfo {
|
||||
bool? isNonSeedWallet,
|
||||
int? sortOrder,
|
||||
bool? receiveInfoboxDismissed,
|
||||
bool? showCombinedBalance,
|
||||
String? favoriteTokenAddress
|
||||
}) {
|
||||
return WalletInfo(
|
||||
0,
|
||||
@@ -393,7 +396,9 @@ class WalletInfo {
|
||||
isNonSeedWallet ?? false,
|
||||
sortOrder ?? 0,
|
||||
null,
|
||||
receiveInfoboxDismissed ?? false
|
||||
receiveInfoboxDismissed ?? false,
|
||||
showCombinedBalance ?? true,
|
||||
favoriteTokenAddress
|
||||
);
|
||||
}
|
||||
|
||||
@@ -413,6 +418,8 @@ class WalletInfo {
|
||||
String path;
|
||||
String address;
|
||||
bool receiveInfoboxDismissed;
|
||||
bool showCombinedBalance;
|
||||
String? favoriteTokenAddress;
|
||||
|
||||
Future<Map<String, String>> getAddresses() async {
|
||||
final list = await WalletInfoAddressMap.selectList(internalId);
|
||||
@@ -578,7 +585,8 @@ class WalletInfo {
|
||||
"sortOrder": sortOrder,
|
||||
"addressPageType": addressPageType,
|
||||
"receiveInfoboxDismissed": receiveInfoboxDismissed ? 1 : 0,
|
||||
|
||||
"showCombinedBalance": showCombinedBalance ? 1 : 0,
|
||||
"favoriteTokenAddress": favoriteTokenAddress
|
||||
};
|
||||
|
||||
factory WalletInfo.fromJson(Map<String, dynamic> json) {
|
||||
@@ -606,6 +614,8 @@ class WalletInfo {
|
||||
json['sortOrder'] as int? ?? 0,
|
||||
json['addressPageType'] as String? ?? null,
|
||||
json['receiveInfoboxDismissed'] != 0,
|
||||
json["showCombinedBalance"] != 0,
|
||||
json["favoriteTokenAddress"] as String? ?? null
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -271,7 +271,9 @@ class WalletInfo extends HiveObject {
|
||||
isNonSeedWallet,
|
||||
0,
|
||||
addressPageType,
|
||||
false
|
||||
false,
|
||||
true,
|
||||
null
|
||||
);
|
||||
final wiId = await walletInfo.save();
|
||||
for (final address in usedAddresses ?? <String>[]) {
|
||||
|
||||
@@ -854,6 +854,9 @@ class SwapAmountBoxState extends State<SwapAmountBox> {
|
||||
.getCryptoSymbol(_selectedCurrency as CryptoCurrency)
|
||||
: _selectedCurrency.name.toUpperCase();
|
||||
|
||||
|
||||
final chainIconPath = (_selectedCurrency is CryptoCurrency) ? _getCurrencyChainIconPath(_selectedCurrency as CryptoCurrency) : null;
|
||||
|
||||
return Column(
|
||||
spacing: 12,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
@@ -939,16 +942,38 @@ class SwapAmountBoxState extends State<SwapAmountBox> {
|
||||
currencyToShow,
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
SizedBox(width:10),
|
||||
RotatedBox(
|
||||
quarterTurns: 2,
|
||||
child: CakeImageWidget(imageUrl:
|
||||
"assets/new-ui/dropdown_arrow.svg",
|
||||
width: 4,
|
||||
height: 4,
|
||||
colorFilter: ColorFilter.mode(
|
||||
Theme.of(context).colorScheme.primary, BlendMode.srcIn),
|
||||
)),
|
||||
if (chainIconPath != null && chainIconPath.isNotEmpty) ...[
|
||||
SizedBox(width: 4),
|
||||
CakeImageWidget(
|
||||
imageUrl: chainIconPath,
|
||||
width: 12,
|
||||
height: 12,
|
||||
colorFilter: ColorFilter.mode(
|
||||
Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
BlendMode.srcIn),
|
||||
),
|
||||
SizedBox(width: 6)
|
||||
] else
|
||||
SizedBox(width: 10),
|
||||
Container(
|
||||
width:16,height:16,
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(9999999999),
|
||||
color: Theme.of(context).colorScheme.surfaceContainerHigh
|
||||
),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: RotatedBox(
|
||||
quarterTurns: 2,
|
||||
child: CakeImageWidget(imageUrl:
|
||||
"assets/new-ui/dropdown_arrow.svg",
|
||||
width: 4,
|
||||
height: 4,
|
||||
colorFilter: ColorFilter.mode(
|
||||
Theme.of(context).colorScheme.primary, BlendMode.srcIn),
|
||||
)),
|
||||
),
|
||||
),
|
||||
SizedBox(width:4),
|
||||
],
|
||||
),
|
||||
@@ -1255,4 +1280,20 @@ class SwapAmountBoxState extends State<SwapAmountBox> {
|
||||
if (s.length <= head + tail + 3) return s;
|
||||
return s.substring(0, head) + '...' + s.substring(s.length - tail);
|
||||
}
|
||||
|
||||
String? _getCurrencyChainIconPath(CryptoCurrency curr) {
|
||||
try{
|
||||
|
||||
if(curr.chainIconPath != null) return curr.chainIconPath!;
|
||||
|
||||
|
||||
if(curr.tag != null) {
|
||||
final currencyFromTag = CryptoCurrency.fromString(curr.tag!);
|
||||
if(currencyFromTag.chainIconPath != null) {
|
||||
return currencyFromTag.chainIconPath!;
|
||||
}
|
||||
}
|
||||
}catch(_){}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:cw_core/unspent_coin_type.dart';
|
||||
import 'package:cw_core/wallet_base.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
|
||||
|
||||
enum AssetDetailsModalModes { normal, ltcTransparent, ltcPrivate }
|
||||
@@ -60,6 +59,7 @@ class AssetDetailsModal extends StatelessWidget {
|
||||
title: "",
|
||||
trailingIcon: Icon(Icons.close),
|
||||
onTrailingPressed: Navigator.of(context).pop,
|
||||
padding: EdgeInsets.only(top:12,right:18),
|
||||
),
|
||||
SafeArea(
|
||||
child: Column(
|
||||
@@ -89,25 +89,25 @@ class AssetDetailsModal extends StatelessWidget {
|
||||
fontSize: 28, color: Theme.of(context).colorScheme.onPrimary),
|
||||
)),
|
||||
),
|
||||
if (chainIconPath.isNotEmpty)
|
||||
Align(
|
||||
alignment: Alignment.bottomRight,
|
||||
child: Container(
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedSuperellipseBorder(
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
side: BorderSide(color: Colors.black)),
|
||||
color: Colors.white),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(4.0),
|
||||
child: CakeImageWidget(imageUrl:
|
||||
chainIconPath,
|
||||
width: 18,
|
||||
height: 18,
|
||||
colorFilter:
|
||||
ColorFilter.mode(Colors.black, BlendMode.srcIn),
|
||||
),
|
||||
)))
|
||||
// if (chainIconPath.isNotEmpty)
|
||||
// Align(
|
||||
// alignment: Alignment.bottomRight,
|
||||
// child: Container(
|
||||
// decoration: ShapeDecoration(
|
||||
// shape: RoundedSuperellipseBorder(
|
||||
// borderRadius: BorderRadius.circular(8),
|
||||
// side: BorderSide(color: Colors.black)),
|
||||
// color: Colors.white),
|
||||
// child: Padding(
|
||||
// padding: const EdgeInsets.all(4.0),
|
||||
// child: CakeImageWidget(imageUrl:
|
||||
// chainIconPath,
|
||||
// width: 18,
|
||||
// height: 18,
|
||||
// colorFilter:
|
||||
// ColorFilter.mode(Colors.black, BlendMode.srcIn),
|
||||
// ),
|
||||
// )))
|
||||
],
|
||||
),
|
||||
),
|
||||
@@ -125,14 +125,16 @@ class AssetDetailsModal extends StatelessWidget {
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Theme.of(context).colorScheme.onSurface),
|
||||
),
|
||||
if(asset != null)
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).colorScheme.surfaceContainerHigh,
|
||||
color: Theme.of(context).colorScheme.surfaceContainer,
|
||||
borderRadius: BorderRadius.circular(999999999)),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 4),
|
||||
|
||||
child: Text(
|
||||
chainTitle,
|
||||
asset?.title??"",
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant),
|
||||
),
|
||||
@@ -141,11 +143,22 @@ class AssetDetailsModal extends StatelessWidget {
|
||||
],
|
||||
),
|
||||
if (subtitle.isNotEmpty)
|
||||
Text(
|
||||
subtitle,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
spacing: 4,
|
||||
children: [
|
||||
if(chainIconPath.isNotEmpty)
|
||||
CakeImageWidget(
|
||||
imageUrl: chainIconPath,
|
||||
width:16,height:16,colorFilter: ColorFilter.mode(Theme.of(context).colorScheme.onSurfaceVariant,BlendMode.srcIn),
|
||||
),
|
||||
Text(
|
||||
subtitle,
|
||||
style: TextStyle(
|
||||
fontSize: 16,
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
@@ -17,7 +17,7 @@ class AssetTile extends StatelessWidget {
|
||||
this.title,
|
||||
this.trailingText,
|
||||
this.modalMode = AssetDetailsModalModes.normal,
|
||||
required this.wallet, required this.showSwap});
|
||||
required this.wallet, required this.showSwap, required this.isFirst, required this.isLast});
|
||||
|
||||
final BalanceRecord balance;
|
||||
final bool showSecondary;
|
||||
@@ -27,6 +27,8 @@ class AssetTile extends StatelessWidget {
|
||||
final String? trailingText;
|
||||
final AssetDetailsModalModes modalMode;
|
||||
final WalletBase wallet;
|
||||
final bool isFirst;
|
||||
final bool isLast;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -42,8 +44,8 @@ class AssetTile extends StatelessWidget {
|
||||
showSwap: showSwap,
|
||||
asset: balance.asset,
|
||||
title: title ?? balance.asset.fullName ?? balance.asset.name,
|
||||
chainTitle: _getChainTitle(),
|
||||
subtitle: trailingText ?? "",
|
||||
chainTitle: "",
|
||||
subtitle: trailingText ?? _getChainTitle(),
|
||||
amount: showSecondary ? balance.secondAvailableBalance : balance.availableBalance,
|
||||
currencyTitle: balance.asset.title,
|
||||
fiatAmount: showSecondary
|
||||
@@ -57,23 +59,15 @@ class AssetTile extends StatelessWidget {
|
||||
});
|
||||
},
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 18.0, vertical: 6.0),
|
||||
padding: const EdgeInsets.symmetric(horizontal: 18.0),
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
height: 80,
|
||||
height: 72,
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
colors: [
|
||||
Theme.of(context).colorScheme.surfaceContainerHigh,
|
||||
Theme.of(context).colorScheme.surfaceContainer,
|
||||
],
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
),
|
||||
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||
border: Border.all(
|
||||
color: Theme.of(context).colorScheme.surfaceContainerHighest,
|
||||
width: 1,
|
||||
color: Theme.of(context).colorScheme.surfaceContainer,
|
||||
borderRadius: BorderRadius.vertical(
|
||||
top: isFirst ? Radius.circular(18) : Radius.zero,
|
||||
bottom: isLast ? Radius.circular(18) : Radius.zero,
|
||||
),
|
||||
),
|
||||
child: Padding(
|
||||
@@ -87,16 +81,16 @@ class AssetTile extends StatelessWidget {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Container(
|
||||
width: 45,
|
||||
height: 45,
|
||||
width: 36,
|
||||
height: 36,
|
||||
child: Stack(
|
||||
children: [
|
||||
if((iconPath).isNotEmpty)
|
||||
CakeImageWidget(imageUrl: iconPath)
|
||||
else
|
||||
Container(
|
||||
width: 45,
|
||||
height: 45,
|
||||
width: 36,
|
||||
height: 36,
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).colorScheme.primary,
|
||||
borderRadius: BorderRadius.circular(99999)),
|
||||
@@ -107,27 +101,27 @@ class AssetTile extends StatelessWidget {
|
||||
fontSize: 20, color: Theme.of(context).colorScheme.onPrimary),
|
||||
)),
|
||||
),
|
||||
if (chainIconPath.isNotEmpty)
|
||||
Align(
|
||||
alignment: Alignment.bottomRight,
|
||||
child: Container(
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedSuperellipseBorder(
|
||||
borderRadius: BorderRadius.circular(5),side: BorderSide(color: Colors.black)),
|
||||
color: Colors.white),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(2.0),
|
||||
child: CakeImageWidget(
|
||||
imageUrl: chainIconPath,
|
||||
width: 12,
|
||||
height: 12,
|
||||
colorFilter:
|
||||
ColorFilter.mode(Colors.black, BlendMode.srcIn),
|
||||
),
|
||||
)))
|
||||
// if (chainIconPath.isNotEmpty)
|
||||
// Align(
|
||||
// alignment: Alignment.bottomRight,
|
||||
// child: Container(
|
||||
// decoration: ShapeDecoration(
|
||||
// shape: RoundedSuperellipseBorder(
|
||||
// borderRadius: BorderRadius.circular(5),side: BorderSide(color: Colors.black)),
|
||||
// color: Colors.white),
|
||||
// child: Padding(
|
||||
// padding: const EdgeInsets.all(2.0),
|
||||
// child: CakeImageWidget(
|
||||
// imageUrl: chainIconPath,
|
||||
// width: 12,
|
||||
// height: 12,
|
||||
// colorFilter:
|
||||
// ColorFilter.mode(Colors.black, BlendMode.srcIn),
|
||||
// ),
|
||||
// )))
|
||||
],
|
||||
)),
|
||||
SizedBox(width: 8.0),
|
||||
SizedBox(width: 12.0),
|
||||
Expanded(
|
||||
child: Column(
|
||||
spacing: 4.0,
|
||||
@@ -139,7 +133,7 @@ class AssetTile extends StatelessWidget {
|
||||
children: [
|
||||
Text(
|
||||
title ?? balance.asset.fullName ?? balance.asset.name,
|
||||
style: TextStyle(fontWeight: FontWeight.bold),
|
||||
style: TextStyle(fontWeight: FontWeight.w500),
|
||||
),
|
||||
if(trailingText != null)
|
||||
Text(
|
||||
@@ -184,9 +178,9 @@ class AssetTile extends StatelessWidget {
|
||||
|
||||
String _getChainTitle() {
|
||||
try {
|
||||
return CryptoCurrency.fromString(wallet.currency.tag ??wallet.currency.title).title;
|
||||
return CryptoCurrency.fromString(wallet.currency.tag ??wallet.currency.title).fullName ?? "";
|
||||
} catch(e) {
|
||||
return wallet.currency.title;
|
||||
return wallet.currency.fullName ?? "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,11 +21,22 @@ class AssetsSection extends StatelessWidget {
|
||||
child: Observer(
|
||||
builder: (context) {
|
||||
final hasMweb = dashboardViewModel.hasMweb && dashboardViewModel.mwebEnabled;
|
||||
return ListView.builder(
|
||||
return ListView.separated(
|
||||
shrinkWrap: true,
|
||||
padding: EdgeInsets.zero,
|
||||
padding: EdgeInsets.symmetric(vertical: 18),
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
itemCount: dashboardViewModel.balanceViewModel.formattedBalances.length + (hasMweb ? 1 : 0),
|
||||
separatorBuilder: (context, index) => Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 18.0),
|
||||
child: Container(
|
||||
color: Theme.of(context).colorScheme.surfaceContainer,
|
||||
height:1,
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8.0),
|
||||
child: Container(color: Theme.of(context).colorScheme.surfaceContainerHigh,),
|
||||
),
|
||||
),
|
||||
),
|
||||
itemBuilder: (context, index) {
|
||||
return Observer(builder: (context) {
|
||||
if (hasMweb) {
|
||||
@@ -39,6 +50,8 @@ class AssetsSection extends StatelessWidget {
|
||||
modalMode: index > 0
|
||||
? AssetDetailsModalModes.ltcPrivate
|
||||
: AssetDetailsModalModes.ltcTransparent,
|
||||
isFirst: index == 0,
|
||||
isLast: index != 0,
|
||||
title: index > 0 ? "Litecoin Private" : null,
|
||||
);
|
||||
}
|
||||
@@ -48,6 +61,8 @@ class AssetsSection extends StatelessWidget {
|
||||
showSwap: dashboardViewModel.isEnabledSwapAction,
|
||||
balance: balance,
|
||||
wallet: dashboardViewModel.wallet,
|
||||
isFirst: index == 0,
|
||||
isLast: index == dashboardViewModel.balanceViewModel.formattedBalances.length-1,
|
||||
chainIconPath: _getChainIconPath(),
|
||||
);
|
||||
});
|
||||
|
||||
@@ -69,6 +69,8 @@ class HistorySection extends StatelessWidget {
|
||||
CryptoCurrency? asset;
|
||||
if (transaction.additionalInfo["isLightning"] == true)
|
||||
asset = CryptoCurrency.btcln;
|
||||
else
|
||||
asset = item.assetOfTransaction;
|
||||
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
@@ -80,6 +82,8 @@ class HistorySection extends StatelessWidget {
|
||||
date: DateFormat('HH:mm').format(transaction.date),
|
||||
amount: item.formattedCryptoAmount,
|
||||
amountFiat: item.formattedFiatAmount,
|
||||
hasTokens: item.hasTokens,
|
||||
chainIconPath: _getChainIconPath(),
|
||||
roundedBottom: roundedBottom,
|
||||
roundedTop: roundedTop,
|
||||
bottomSeparator: !roundedBottom,
|
||||
@@ -101,6 +105,7 @@ class HistorySection extends StatelessWidget {
|
||||
child: HistoryTradeTile(
|
||||
from: tradeFrom!,
|
||||
to: tradeTo!,
|
||||
provider: trade.provider,
|
||||
date: DateFormat('HH:mm').format(item.trade.createdAt!),
|
||||
amount: trade.amountFormatted(),
|
||||
receiveAmount: trade.receiveAmountFormatted(),
|
||||
@@ -171,4 +176,12 @@ class HistorySection extends StatelessWidget {
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
String _getChainIconPath() {
|
||||
try {
|
||||
return CryptoCurrency.fromString(dashboardViewModel.wallet.currency.tag ??dashboardViewModel.wallet.currency.title).chainIconPath!;
|
||||
} catch(e) {
|
||||
return dashboardViewModel.wallet.currency.chainIconPath ?? "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ class HistoryTile extends StatelessWidget {
|
||||
required this.direction,
|
||||
required this.pending,
|
||||
required this.bottomSeparator,
|
||||
required this.hasTokens,
|
||||
this.chainIconPath,
|
||||
this.asset,
|
||||
});
|
||||
|
||||
@@ -27,6 +29,8 @@ class HistoryTile extends StatelessWidget {
|
||||
final bool roundedTop;
|
||||
final bool roundedBottom;
|
||||
final bool bottomSeparator;
|
||||
final bool hasTokens;
|
||||
final String? chainIconPath;
|
||||
final TransactionDirection direction;
|
||||
final bool pending;
|
||||
final CryptoCurrency? asset;
|
||||
@@ -93,6 +97,33 @@ class HistoryTile extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
if(hasTokens) {
|
||||
return Stack(children: [
|
||||
Opacity(
|
||||
opacity: pending ? 0.5 : 1,
|
||||
child: CakeImageWidget(imageUrl: asset?.iconSvgPath ?? asset?.iconPath ??"", width: 34,
|
||||
height: 34,),
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.bottomRight,
|
||||
child: Container(
|
||||
decoration: ShapeDecoration(
|
||||
shape: RoundedSuperellipseBorder(
|
||||
borderRadius: BorderRadius.circular(5),side: BorderSide(color: Colors.black)),
|
||||
color: Colors.white),
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(2.0),
|
||||
child: CakeImageWidget(
|
||||
imageUrl: chainIconPath,
|
||||
width: 12,
|
||||
height: 12,
|
||||
colorFilter:
|
||||
ColorFilter.mode(Colors.black, BlendMode.srcIn),
|
||||
),
|
||||
)))
|
||||
],);
|
||||
}
|
||||
|
||||
return CakeImageWidget(imageUrl:_getDirectionIcon(),
|
||||
colorFilter: ColorFilter.mode(
|
||||
direction == TransactionDirection.outgoing
|
||||
|
||||
@@ -4,22 +4,32 @@ import 'package:flutter/material.dart';
|
||||
class HistoryTileBase extends StatelessWidget {
|
||||
const HistoryTileBase({
|
||||
super.key,
|
||||
required this.title,
|
||||
this.title,
|
||||
this.titleWidget,
|
||||
required this.date,
|
||||
required this.amount,
|
||||
this.amount,
|
||||
required this.leadingIcon,
|
||||
required this.amountFiat,
|
||||
this.amountFiat,
|
||||
required this.roundedTop,
|
||||
required this.roundedBottom,
|
||||
required this.bottomSeparator,
|
||||
this.primaryTextColor,
|
||||
this.asset,
|
||||
});
|
||||
this.amountWidget,
|
||||
this.amountFiatWidget,
|
||||
}) : assert((title != null || titleWidget != null) && (title == null || titleWidget == null)),
|
||||
assert(
|
||||
(amountWidget != null || amount != null) && (amountWidget == null || amount == null)),
|
||||
assert((amountFiatWidget != null || amountFiat != null) &&
|
||||
(amountFiatWidget == null || amountFiat == null));
|
||||
|
||||
final String title;
|
||||
final String? title;
|
||||
final Widget? titleWidget;
|
||||
final String date;
|
||||
final String amount;
|
||||
final String amountFiat;
|
||||
final String? amount;
|
||||
final Widget? amountWidget;
|
||||
final String? amountFiat;
|
||||
final Widget? amountFiatWidget;
|
||||
final Widget leadingIcon;
|
||||
final bool roundedTop;
|
||||
final bool roundedBottom;
|
||||
@@ -105,8 +115,10 @@ class HistoryTileBase extends StatelessWidget {
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(title,
|
||||
style: TextStyle(color: Theme.of(context).colorScheme.onSurface)),
|
||||
if(title != null)
|
||||
Text(title!,
|
||||
style: TextStyle(color: Theme.of(context).colorScheme.onSurface))
|
||||
else if(titleWidget != null) titleWidget!,
|
||||
Text(date,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant)),
|
||||
@@ -115,12 +127,20 @@ class HistoryTileBase extends StatelessWidget {
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
Text(amount,
|
||||
style: TextStyle(
|
||||
color: primaryTextColor ??
|
||||
Theme.of(context).colorScheme.onSurface)),
|
||||
Text(amountFiat, style: TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant)),
|
||||
],
|
||||
if (amount != null)
|
||||
Text(amount!,
|
||||
style: TextStyle(
|
||||
color: primaryTextColor ??
|
||||
Theme.of(context).colorScheme.onSurface))
|
||||
else if (amountWidget != null)
|
||||
amountWidget!,
|
||||
if (amountFiat != null)
|
||||
Text(amountFiat!,
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant))
|
||||
else if (amountFiatWidget != null)
|
||||
amountFiatWidget!
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import 'package:cake_wallet/exchange/exchange_provider_description.dart';
|
||||
import 'package:cake_wallet/exchange/trade_state.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/coins_page/assets_history/history_tile_base.dart';
|
||||
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
|
||||
import 'package:cw_core/crypto_amount_format.dart';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
@@ -14,10 +17,12 @@ class HistoryTradeTile extends StatelessWidget {
|
||||
required this.bottomSeparator,
|
||||
required this.from,
|
||||
required this.to,
|
||||
required this.swapState});
|
||||
required this.swapState,
|
||||
required this.provider});
|
||||
|
||||
final CryptoCurrency from;
|
||||
final CryptoCurrency to;
|
||||
final ExchangeProviderDescription provider;
|
||||
final String date;
|
||||
final String amount;
|
||||
final String receiveAmount;
|
||||
@@ -34,7 +39,7 @@ class HistoryTradeTile extends StatelessWidget {
|
||||
width: 50,
|
||||
child: Stack(
|
||||
children: [
|
||||
Image.asset(_getIconPath(from),
|
||||
CakeImageWidget(imageUrl: _getIconPath(from),
|
||||
width: currencyIconSize, height: currencyIconSize),
|
||||
Positioned(
|
||||
top: currencyIconSize / 2,
|
||||
@@ -45,7 +50,7 @@ class HistoryTradeTile extends StatelessWidget {
|
||||
width: 2,
|
||||
color: Theme.of(context).colorScheme.surfaceContainer),
|
||||
shape: BoxShape.circle),
|
||||
child: Image.asset(_getIconPath(to),
|
||||
child: CakeImageWidget(imageUrl: _getIconPath(to),
|
||||
width: currencyIconSize, height: currencyIconSize))),
|
||||
],
|
||||
),
|
||||
@@ -56,12 +61,55 @@ class HistoryTradeTile extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
final fromChainIcon = _getChainIcon(from);
|
||||
final toChainIcon = _getChainIcon(to);
|
||||
|
||||
return HistoryTileBase(
|
||||
title:
|
||||
"${from.toString()}${from == CryptoCurrency.btcln ? "-LN" : ""} → ${to.toString()}${to == CryptoCurrency.btcln ? "-LN" : ""}",
|
||||
// title:
|
||||
// "${from.toString()}${from == CryptoCurrency.btcln ? "-LN" : ""} → ${to.toString()}${to == CryptoCurrency.btcln ? "-LN" : ""}",
|
||||
titleWidget: Row(
|
||||
spacing: 4,
|
||||
children: [
|
||||
Text(swapState.title),
|
||||
CakeImageWidget(imageUrl: provider.image, width: 14, height: 14)
|
||||
],
|
||||
),
|
||||
date: date,
|
||||
amount: amount,
|
||||
amountFiat: receiveAmount,
|
||||
amountFiatWidget: Row(
|
||||
spacing: 4,
|
||||
children: [
|
||||
Text("-", style: TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant)),
|
||||
Text(amount.withMaxDecimals(8),
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.onSurfaceVariant,
|
||||
fontWeight: FontWeight.w500)),
|
||||
Text(from.title, style: TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant)),
|
||||
if (fromChainIcon.isNotEmpty)
|
||||
CakeImageWidget(
|
||||
imageUrl: fromChainIcon,
|
||||
width: 12,
|
||||
height: 12,
|
||||
colorFilter:
|
||||
ColorFilter.mode(Theme.of(context).colorScheme.onSurfaceVariant, BlendMode.srcIn),
|
||||
)
|
||||
],
|
||||
),
|
||||
amountWidget: Row(
|
||||
spacing: 4,
|
||||
children: [
|
||||
Text(
|
||||
"+",
|
||||
),
|
||||
Text(
|
||||
receiveAmount.withMaxDecimals(8),
|
||||
style: TextStyle(fontWeight: FontWeight.w500),
|
||||
),
|
||||
Text(
|
||||
to.title,
|
||||
),
|
||||
if (toChainIcon.isNotEmpty) CakeImageWidget(imageUrl: toChainIcon, width: 12, height: 12)
|
||||
],
|
||||
),
|
||||
leadingIcon: _getLeadingStack(context),
|
||||
roundedTop: roundedTop,
|
||||
roundedBottom: roundedBottom,
|
||||
@@ -93,4 +141,21 @@ class HistoryTradeTile extends StatelessWidget {
|
||||
//TODO approporiate fallback
|
||||
return "";
|
||||
}
|
||||
|
||||
String _getChainIcon(CryptoCurrency currency) {
|
||||
try {
|
||||
if (currency.chainIconPath != null) {
|
||||
return currency.chainIconPath!;
|
||||
}
|
||||
|
||||
if ((currency.tag ?? "").isNotEmpty) {
|
||||
final currencyFromTag = CryptoCurrency.fromString(currency.tag!);
|
||||
if (currencyFromTag.chainIconPath != null) {
|
||||
return currencyFromTag.chainIconPath!;
|
||||
}
|
||||
}
|
||||
} catch (_) {}
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
|
||||
import 'package:cw_core/card_design.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -25,11 +26,13 @@ class BalanceCard extends StatelessWidget {
|
||||
this.balance = "",
|
||||
this.fiatBalance = "",
|
||||
this.assetName = "",
|
||||
this.fiatCurrencyTitle = "",
|
||||
this.designSwitchDuration = const Duration(),
|
||||
this.actions = const [],
|
||||
this.capitalizeAssetName = true,
|
||||
this.onCustomizeTapped,
|
||||
this.accountIndex
|
||||
this.accountIndex,
|
||||
this.fiatFirst = false
|
||||
});
|
||||
|
||||
final double width;
|
||||
@@ -39,6 +42,8 @@ class BalanceCard extends StatelessWidget {
|
||||
final String accountName;
|
||||
final String balance;
|
||||
final String fiatBalance;
|
||||
final String fiatCurrencyTitle;
|
||||
final bool fiatFirst;
|
||||
final int? accountIndex;
|
||||
final bool capitalizeAssetName;
|
||||
final String assetName;
|
||||
@@ -53,14 +58,21 @@ class BalanceCard extends StatelessWidget {
|
||||
final Duration textFadeDuration = Duration(milliseconds: 80);
|
||||
final double iconWidth = width * 0.15;
|
||||
|
||||
final name = fiatFirst ? fiatCurrencyTitle : assetName;
|
||||
final resolvedAssetName = capitalizeAssetName ? name.toUpperCase() : name.toLowerCase();
|
||||
|
||||
final leadText = fiatFirst ? S.of(context).wallet_balance : accountName;
|
||||
|
||||
final bool showText = accountBalance.isNotEmpty ||
|
||||
accountName.isNotEmpty ||
|
||||
leadText.isNotEmpty ||
|
||||
balance.isNotEmpty ||
|
||||
fiatBalance.isNotEmpty ||
|
||||
assetName.isNotEmpty;
|
||||
resolvedAssetName.isNotEmpty;
|
||||
|
||||
final height = width * 0.62;
|
||||
|
||||
|
||||
|
||||
return AnimatedContainer(
|
||||
duration: designSwitchDuration,
|
||||
width: width,
|
||||
@@ -105,7 +117,7 @@ class BalanceCard extends StatelessWidget {
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
children: [
|
||||
if(accountName.isNotEmpty || accountBalance.isNotEmpty)
|
||||
if(leadText.isNotEmpty || accountBalance.isNotEmpty)
|
||||
Row(
|
||||
mainAxisSize: MainAxisSize.max,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
@@ -127,8 +139,8 @@ class BalanceCard extends StatelessWidget {
|
||||
AnimatedDefaultTextStyle(
|
||||
duration: designSwitchDuration,
|
||||
style: Theme.of(context).textTheme.titleMedium!.copyWith(
|
||||
fontWeight: FontWeight.w500, color: design.colors.textColor),
|
||||
child: Text(accountName),
|
||||
fontWeight: FontWeight.w500, color: design.colors.textColor.withAlpha(leadText == accountName ? 255 : 128)),
|
||||
child: Text(leadText),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -157,7 +169,7 @@ class BalanceCard extends StatelessWidget {
|
||||
);
|
||||
},
|
||||
child: Row(
|
||||
key: ValueKey("$balance ${assetName.toUpperCase()}"),
|
||||
key: ValueKey("$balance ${resolvedAssetName.toUpperCase()}"),
|
||||
spacing: 8.0,
|
||||
children: [
|
||||
AnimatedDefaultTextStyle(
|
||||
@@ -165,14 +177,14 @@ class BalanceCard extends StatelessWidget {
|
||||
style: DefaultTextStyle.of(context)
|
||||
.style
|
||||
.copyWith(color: design.colors.textColor, fontSize: 28, fontWeight: FontWeight.w500, letterSpacing: -0.4),
|
||||
child: Text(balance),
|
||||
child: Text(fiatFirst ? fiatBalance : balance),
|
||||
),
|
||||
AnimatedDefaultTextStyle(
|
||||
duration: designSwitchDuration,
|
||||
style: DefaultTextStyle.of(context)
|
||||
.style
|
||||
.copyWith(color: design.colors.textColorSecondary, fontSize: 28, fontWeight: FontWeight.w400, letterSpacing: -0.4),
|
||||
child: Text(capitalizeAssetName ? assetName.toUpperCase() : assetName.toLowerCase()),
|
||||
child: Text(resolvedAssetName),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -196,8 +208,8 @@ class BalanceCard extends StatelessWidget {
|
||||
);
|
||||
},
|
||||
child: Text(
|
||||
key: ValueKey(fiatBalance),
|
||||
fiatBalance,
|
||||
key: ValueKey(fiatFirst ? balance : fiatBalance),
|
||||
fiatFirst ? "$assetName $balance" : "$fiatCurrencyTitle $fiatBalance",
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -115,8 +115,7 @@ class _CardsViewState extends State<CardsView> {
|
||||
|
||||
// The second balance should always be the lightning balance
|
||||
// printV(widget.dashboardViewModel.balanceViewModel.formattedBalances.first.availableBalance);
|
||||
final walletBalanceRecord = widget.dashboardViewModel.balanceViewModel.formattedBalances
|
||||
.elementAtOrNull(widget.lightningMode ? 1 : 0);
|
||||
final walletBalanceRecord = widget.dashboardViewModel.balanceViewModel.getMainBalanceRecord(widget.lightningMode);
|
||||
|
||||
late final String walletBalance;
|
||||
late final String walletFiatBalance;
|
||||
@@ -128,11 +127,16 @@ class _CardsViewState extends State<CardsView> {
|
||||
walletBalance = walletBalanceRecord?.combinedAvailableBalance ?? "0";
|
||||
walletFiatBalance = walletBalanceRecord?.combinedFiatAvailableBalance ?? "0.00";
|
||||
}
|
||||
} else {
|
||||
} else if(widget.dashboardViewModel.balanceViewModel.showCombinedBalance){
|
||||
walletBalance = "";
|
||||
walletFiatBalance = widget.dashboardViewModel.balanceViewModel.combinedFiatBalance;
|
||||
|
||||
}else {
|
||||
walletBalance = walletBalanceRecord?.availableBalance ?? "0";
|
||||
walletFiatBalance = walletBalanceRecord?.fiatAvailableBalance ?? "${widget.dashboardViewModel.appStore.settingsStore.fiatCurrency.title} 0.00";
|
||||
walletFiatBalance = walletBalanceRecord?.fiatAvailableBalanceRaw ?? "0.00";
|
||||
}
|
||||
|
||||
|
||||
// the card designs is empty if widget gets built before it loads.
|
||||
// should get populated before user sees anything
|
||||
final CardDesign cardDesign;
|
||||
@@ -154,6 +158,8 @@ class _CardsViewState extends State<CardsView> {
|
||||
accountBalance = account.balance ?? "0.00";
|
||||
}
|
||||
|
||||
final assetName = widget.dashboardViewModel.balanceViewModel.showCombinedBalance ? "" : walletBalanceRecord?.formattedAssetTitle ?? assetTitleFallback;
|
||||
|
||||
final List<BalanceCardAction> actions = widget.lightningMode
|
||||
? [
|
||||
BalanceCardAction(
|
||||
@@ -183,9 +189,11 @@ class _CardsViewState extends State<CardsView> {
|
||||
accountName: accountName,
|
||||
accountBalance: accountBalance,
|
||||
designSwitchDuration: Duration(milliseconds: 150),
|
||||
assetName: walletBalanceRecord?.formattedAssetTitle ?? assetTitleFallback,
|
||||
assetName: assetName,
|
||||
capitalizeAssetName: _shouldCapitalizeAssetName(),
|
||||
balance: walletBalance,
|
||||
fiatCurrencyTitle: walletBalanceRecord?.fiatCurrencyTicker ?? widget.dashboardViewModel.settingsStore.fiatCurrency.title,
|
||||
fiatFirst: widget.dashboardViewModel.balanceViewModel.showCombinedBalance,
|
||||
fiatBalance: walletFiatBalance,
|
||||
selected: _selectedIndex == visualIndex,
|
||||
onCustomizeTapped: _selectedIndex == visualIndex ? widget.onCustomizeTapped : null,
|
||||
|
||||
@@ -12,6 +12,7 @@ class ModalTopBar extends StatelessWidget {
|
||||
this.onTrailingPressed=nothing,
|
||||
this.leadingIcon,
|
||||
this.trailingIcon,
|
||||
this.padding,
|
||||
this.leadingWidget,
|
||||
this.trailingWidget}) {
|
||||
if(leadingIcon != null && leadingWidget != null) {
|
||||
@@ -27,6 +28,7 @@ class ModalTopBar extends StatelessWidget {
|
||||
final VoidCallback onLeadingPressed;
|
||||
final VoidCallback onTrailingPressed;
|
||||
final Widget? leadingIcon;
|
||||
final EdgeInsets? padding;
|
||||
final Widget? trailingIcon;
|
||||
final Widget? leadingWidget;
|
||||
final Widget? trailingWidget;
|
||||
@@ -36,7 +38,7 @@ class ModalTopBar extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(18),
|
||||
padding: padding??EdgeInsets.all(18),
|
||||
child: Stack(
|
||||
alignment: Alignment.topCenter,
|
||||
children: [
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_regular_row.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/new-ui/widgets/receive_page/receive_top_bar.dart';
|
||||
import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class FavoriteTokenModal extends StatelessWidget {
|
||||
const FavoriteTokenModal({super.key, required this.tokens});
|
||||
|
||||
final List<CryptoCurrency> tokens;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(18))
|
||||
),
|
||||
child: SafeArea(
|
||||
child: Column(
|
||||
children: [
|
||||
ModalTopBar(
|
||||
title: S.of(context).favorite_token,
|
||||
leadingIcon: Icon(Icons.close),
|
||||
onLeadingPressed: Navigator.of(context).pop,
|
||||
),
|
||||
Expanded(
|
||||
child: Column(
|
||||
children: [
|
||||
Text(
|
||||
S.of(context).favorite_token_desc,
|
||||
style: TextStyle(color: Theme.of(context).colorScheme.onSurfaceVariant),
|
||||
),
|
||||
Expanded(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: SingleChildScrollView(
|
||||
child: NewListSections(
|
||||
sections: {
|
||||
"": tokens
|
||||
.map((item) => ListItemRegularRow(
|
||||
keyValue: item.title,
|
||||
label: "${item.fullName} (${item.title})",
|
||||
iconPath: item.iconPath,
|
||||
onTap: () => Navigator.of(context).pop(item)))
|
||||
.toList()
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,23 @@
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:cake_wallet/core/address_validator.dart';
|
||||
import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_regular_row.dart';
|
||||
import 'package:cake_wallet/entities/new_ui_entities/list_item/list_item_toggle.dart';
|
||||
import 'package:cake_wallet/entities/sort_balance_types.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/new-ui/pages/settings_page.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/src/screens/dashboard/favorite_token_modal.dart';
|
||||
import 'package:cake_wallet/src/screens/settings/widgets/settings_cell_with_arrow.dart';
|
||||
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
||||
import 'package:cake_wallet/src/widgets/cake_image_widget.dart';
|
||||
import 'package:cake_wallet/src/screens/settings/widgets/settings_picker_cell.dart';
|
||||
import 'package:cake_wallet/src/screens/settings/widgets/settings_switcher_cell.dart';
|
||||
import 'package:cake_wallet/src/widgets/new_list_row/new_list_section.dart';
|
||||
import 'package:cake_wallet/src/widgets/picker.dart';
|
||||
import 'package:cake_wallet/utils/show_pop_up.dart';
|
||||
import 'package:cw_core/crypto_currency.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:cake_wallet/view_model/dashboard/home_settings_view_model.dart';
|
||||
@@ -28,24 +37,79 @@ class HomeSettingsPage extends BasePage {
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
Observer(
|
||||
builder: (_) => SettingsPickerCell<SortBalanceBy>(
|
||||
title: S.current.sort_by,
|
||||
items: SortBalanceBy.values,
|
||||
selectedItem: _homeSettingsViewModel.sortBalanceBy,
|
||||
onItemSelected: _homeSettingsViewModel.setSortBalanceBy,
|
||||
),
|
||||
),
|
||||
// Observer(
|
||||
// builder: (_) => SettingsPickerCell<SortBalanceBy>(
|
||||
// title: S.current.sort_by,
|
||||
// items: SortBalanceBy.values,
|
||||
// selectedItem: _homeSettingsViewModel.sortBalanceBy,
|
||||
// onItemSelected: _homeSettingsViewModel.setSortBalanceBy,
|
||||
// ),
|
||||
// ),
|
||||
// Divider(color: Theme.of(context).colorScheme.outlineVariant),
|
||||
// Observer(
|
||||
// builder: (_) => SettingsSwitcherCell(
|
||||
// title: S.of(context).pin_at_top(_homeSettingsViewModel.nativeToken.title),
|
||||
// value: _homeSettingsViewModel.pinNativeToken,
|
||||
// title: S.of(context).show_combined_balance,
|
||||
// value: _homeSettingsViewModel.showCombinedBalance,
|
||||
// onValueChange: (_, bool value) {
|
||||
// _homeSettingsViewModel.setPinNativeToken(value);
|
||||
// _homeSettingsViewModel.setShowCombinedBalance(value);
|
||||
// },
|
||||
// ),
|
||||
// ),
|
||||
// Observer(
|
||||
// builder: (_) => _homeSettingsViewModel.showCombinedBalance
|
||||
// ? SizedBox.shrink()
|
||||
// : SettingsCellWithArrow(
|
||||
// title: S.of(context).favorite_token,
|
||||
// handler: (context) async {
|
||||
//
|
||||
// },
|
||||
// )),
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(12.0),
|
||||
child: Observer(
|
||||
builder: (_) => NewListSections(sections: {
|
||||
"": [
|
||||
ListItemRegularRow(
|
||||
keyValue: "sort balance by",
|
||||
label: S.of(context).sort_by,
|
||||
trailingText: _homeSettingsViewModel.sortBalanceBy.toString(),
|
||||
onTap: () {
|
||||
showPopUp<void>(
|
||||
context: context,
|
||||
builder: (context) => Picker(
|
||||
items: SortBalanceBy.values,
|
||||
selectedAtIndex:
|
||||
SortBalanceBy.values.indexOf(_homeSettingsViewModel.sortBalanceBy),
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
onItemSelected: _homeSettingsViewModel.setSortBalanceBy,
|
||||
isSeparated: false,
|
||||
),
|
||||
);
|
||||
}),
|
||||
ListItemToggle(
|
||||
keyValue: "show combined",
|
||||
label: S.of(context).show_combined_balance,
|
||||
value: _homeSettingsViewModel.showCombinedBalance,
|
||||
onChanged: (val) => _homeSettingsViewModel.setShowCombinedBalance(val)),
|
||||
if (!_homeSettingsViewModel.showCombinedBalance)
|
||||
ListItemRegularRow(
|
||||
keyValue: "fav token",
|
||||
label: S.of(context).favorite_token,
|
||||
trailingText: _homeSettingsViewModel.favoriteToken.title,
|
||||
showArrow: true,
|
||||
onTap: () async {
|
||||
final res = await showModalBottomSheet(
|
||||
context: context,
|
||||
builder: (context) =>
|
||||
FavoriteTokenModal(tokens: _homeSettingsViewModel.enabledTokens));
|
||||
if (res != null && res is CryptoCurrency) {
|
||||
_homeSettingsViewModel.setFavoriteToken(res);
|
||||
}
|
||||
})
|
||||
]
|
||||
}),
|
||||
),
|
||||
),
|
||||
Divider(color: Theme.of(context).colorScheme.outlineVariant),
|
||||
const SizedBox(height: 20),
|
||||
Row(
|
||||
|
||||
@@ -152,6 +152,7 @@ class TokenUtilities {
|
||||
required WalletType walletType,
|
||||
required String address,
|
||||
}) async {
|
||||
if(address.isEmpty) return null;
|
||||
final lower = address.toLowerCase();
|
||||
switch (walletType) {
|
||||
case WalletType.ethereum:
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:cake_wallet/bitcoin/bitcoin.dart';
|
||||
import 'package:cake_wallet/core/utilities.dart';
|
||||
import 'package:cake_wallet/entities/balance_display_mode.dart';
|
||||
import 'package:cake_wallet/entities/calculate_fiat_amount.dart';
|
||||
import 'package:cake_wallet/entities/fiat_api_mode.dart';
|
||||
@@ -6,8 +7,12 @@ import 'package:cake_wallet/entities/sort_balance_types.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
import 'package:cake_wallet/reactions/wallet_connect.dart';
|
||||
import 'package:cake_wallet/evm/evm.dart';
|
||||
import 'package:cake_wallet/solana/solana.dart';
|
||||
import 'package:cake_wallet/tron/tron.dart';
|
||||
import 'package:cake_wallet/zano/zano.dart';
|
||||
import 'package:cw_core/crypto_amount_format.dart';
|
||||
import 'package:cw_core/transaction_history.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
import 'package:cw_core/wallet_base.dart';
|
||||
import 'package:cake_wallet/store/app_store.dart';
|
||||
import 'package:cake_wallet/store/dashboard/fiat_conversion_store.dart';
|
||||
@@ -57,11 +62,16 @@ class BalanceRecord {
|
||||
.toString().withMaxDecimals(8);
|
||||
|
||||
String get combinedFiatAvailableBalance =>
|
||||
fiatAvailableBalance.split(" ").first +
|
||||
fiatCurrencyTicker +
|
||||
" " +
|
||||
((double.tryParse(fiatAvailableBalance.split(" ").last) ?? 0) +
|
||||
(double.tryParse(fiatSecondAvailableBalance.split(" ").last) ?? 0))
|
||||
.toString().withMaxDecimals(8);
|
||||
((double.tryParse(fiatAvailableBalanceRaw) ?? 0) +
|
||||
(double.tryParse(fiatSecondAvailableBalanceRaw) ?? 0))
|
||||
.toString()
|
||||
.withMaxDecimals(8);
|
||||
|
||||
String get fiatAvailableBalanceRaw => fiatAvailableBalance.split(" ").last;
|
||||
String get fiatSecondAvailableBalanceRaw => fiatSecondAvailableBalance.split(" ").last;
|
||||
String get fiatCurrencyTicker => fiatAvailableBalance.split(" ").first;
|
||||
}
|
||||
|
||||
class BalanceViewModel = BalanceViewModelBase with _$BalanceViewModel;
|
||||
@@ -410,6 +420,58 @@ abstract class BalanceViewModelBase with Store {
|
||||
return balance;
|
||||
}
|
||||
|
||||
BalanceRecord? getMainBalanceRecord(bool lightningMode) {
|
||||
if (lightningMode) {
|
||||
return formattedBalances.elementAtOrNull(1);
|
||||
}
|
||||
|
||||
if (wallet.walletInfo.favoriteTokenAddress != null) {
|
||||
return formattedBalances.firstWhereOrNull((item) => (getTokenAddressBasedOnWallet(item.asset) ==
|
||||
wallet.walletInfo.favoriteTokenAddress)) ??
|
||||
formattedBalances.elementAt(0);
|
||||
}
|
||||
|
||||
return formattedBalances.elementAt(0);
|
||||
}
|
||||
|
||||
String? getTokenAddressBasedOnWallet(CryptoCurrency asset) {
|
||||
if (wallet.type == WalletType.tron) {
|
||||
return tron!.getTokenAddress(asset);
|
||||
}
|
||||
|
||||
if (wallet.type == WalletType.solana) {
|
||||
return solana!.getTokenAddress(asset);
|
||||
}
|
||||
|
||||
if (isEVMCompatibleChain(wallet.type) && asset is Erc20Token) {
|
||||
return evm!.getTokenAddress(asset);
|
||||
}
|
||||
|
||||
if (wallet.type == WalletType.zano) {
|
||||
return zano!.getZanoAssetAddress(asset);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@computed
|
||||
bool get showCombinedBalance {
|
||||
if(wallet.type == WalletType.bitcoin) return false;
|
||||
if(balances.values.length == 1) return false;
|
||||
|
||||
return wallet.walletInfo.showCombinedBalance;
|
||||
}
|
||||
|
||||
@computed
|
||||
String get combinedFiatBalance {
|
||||
double ret = 0.0;
|
||||
for(final record in balances.values) {
|
||||
ret += double.tryParse(record.fiatAvailableBalanceRaw) ?? 0;
|
||||
}
|
||||
return ret.toStringAsFixed(2);
|
||||
}
|
||||
|
||||
|
||||
Balance _currencyBalance(CryptoCurrency cryptoCurrency) {
|
||||
final balance = wallet.balance[cryptoCurrency];
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import 'package:cake_wallet/store/dashboard/order_filter_store.dart';
|
||||
import 'package:cake_wallet/utils/device_info.dart';
|
||||
import 'package:cake_wallet/utils/show_pop_up.dart';
|
||||
import 'package:cake_wallet/zcash/zcash.dart';
|
||||
import 'package:cw_core/transaction_direction.dart';
|
||||
import 'package:cw_core/utils/proxy_wrapper.dart';
|
||||
import 'package:cake_wallet/utils/tor.dart';
|
||||
import 'package:cake_wallet/wownero/wownero.dart' as wow;
|
||||
@@ -481,18 +482,29 @@ abstract class DashboardViewModelBase with Store {
|
||||
}
|
||||
// printV("Transaction disposer callback (relevantTxs: ${relevantTxs.length} current: ${transactions.length})");
|
||||
|
||||
String _txIdentityString(String txHash, TransactionDirection direction) => '${txHash}_$direction';
|
||||
|
||||
final existingKeys = transactions
|
||||
.map((item) => _txIdentityString(item.transaction.txHash, item.transaction.direction))
|
||||
.toSet();
|
||||
|
||||
final newTransactions = relevantTxs
|
||||
.where((tx) => !existingKeys.contains(_txIdentityString(tx.txHash, tx.direction)))
|
||||
.map((tx) => TransactionListItem(
|
||||
transaction: tx,
|
||||
balanceViewModel: balanceViewModel,
|
||||
appStore: appStore,
|
||||
key: ValueKey('${wallet.type.name}_transaction_history_item_${tx.id}_key'),
|
||||
))
|
||||
.where((item) => !transactions.contains(item));
|
||||
.toList();
|
||||
|
||||
transactions.removeWhere((item) => newTransactions.any((tx) =>
|
||||
tx.transaction.txHash == item.transaction.txHash &&
|
||||
tx.transaction.direction == item.transaction.direction));
|
||||
final newKeys = newTransactions
|
||||
.map((item) => _txIdentityString(item.transaction.txHash, item.transaction.direction))
|
||||
.toSet();
|
||||
|
||||
transactions.removeWhere(
|
||||
(item) => newKeys.contains(_txIdentityString(item.transaction.txHash, item.transaction.direction)),
|
||||
);
|
||||
|
||||
transactions.addAll(newTransactions);
|
||||
// transactions.clear();
|
||||
|
||||
@@ -9,6 +9,7 @@ import 'package:cake_wallet/reactions/wallet_connect.dart';
|
||||
import 'package:cake_wallet/solana/solana.dart';
|
||||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:cake_wallet/tron/tron.dart';
|
||||
import 'package:cake_wallet/utils/token_utilities.dart';
|
||||
import 'package:cw_core/utils/proxy_wrapper.dart';
|
||||
import 'package:cake_wallet/view_model/dashboard/balance_view_model.dart';
|
||||
import 'package:cake_wallet/zano/zano.dart';
|
||||
@@ -29,10 +30,14 @@ abstract class HomeSettingsViewModelBase with Store {
|
||||
: tokens = ObservableSet<CryptoCurrency>(),
|
||||
isAddingToken = false,
|
||||
isDeletingToken = false,
|
||||
isValidatingContractAddress = false {
|
||||
isValidatingContractAddress = false,
|
||||
showCombinedBalance = _balanceViewModel.wallet.walletInfo.showCombinedBalance,
|
||||
favoriteToken = _balanceViewModel.wallet.currency {
|
||||
_updateTokensList();
|
||||
_updateLocalFavoriteToken();
|
||||
|
||||
// React to wallet changes
|
||||
|
||||
// React to wallet changes
|
||||
reaction((_) => _balanceViewModel.wallet, (_) {
|
||||
_updateTokensList();
|
||||
});
|
||||
@@ -55,6 +60,9 @@ abstract class HomeSettingsViewModelBase with Store {
|
||||
|
||||
final ObservableSet<CryptoCurrency> tokens;
|
||||
|
||||
@computed
|
||||
List<CryptoCurrency> get enabledTokens => [_balanceViewModel.wallet.currency, ...tokens.where((item)=>item.enabled).toList()];
|
||||
|
||||
WalletType get walletType => _balanceViewModel.wallet.type;
|
||||
|
||||
@observable
|
||||
@@ -491,6 +499,45 @@ abstract class HomeSettingsViewModelBase with Store {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// FIXME these two observables cause duplicated state and are needed because mobx. remove them as part of the refactor and replace with proper getters
|
||||
@observable
|
||||
bool showCombinedBalance;
|
||||
|
||||
@observable
|
||||
CryptoCurrency favoriteToken;
|
||||
|
||||
@action
|
||||
void setShowCombinedBalance(bool value) {
|
||||
_balanceViewModel.wallet.walletInfo.showCombinedBalance = value;
|
||||
showCombinedBalance = value;
|
||||
_balanceViewModel.wallet.updateBalance();
|
||||
_balanceViewModel.wallet.walletInfo.save();
|
||||
}
|
||||
|
||||
@action
|
||||
Future<void> setFavoriteToken(CryptoCurrency token) async {
|
||||
final String? address;
|
||||
|
||||
if(token == _balanceViewModel.wallet.currency) {
|
||||
address = null;
|
||||
} else {
|
||||
address = getTokenAddressBasedOnWallet(token);
|
||||
}
|
||||
|
||||
_balanceViewModel.wallet.walletInfo.favoriteTokenAddress = address;
|
||||
_balanceViewModel.wallet.walletInfo.save();
|
||||
_updateLocalFavoriteToken();
|
||||
}
|
||||
|
||||
@action
|
||||
Future<void> _updateLocalFavoriteToken() async {
|
||||
favoriteToken = await TokenUtilities.findTokenByAddress(
|
||||
walletType: _balanceViewModel.wallet.type, address: _balanceViewModel.wallet.walletInfo.favoriteTokenAddress ?? "") ??
|
||||
_balanceViewModel.wallet.currency;
|
||||
}
|
||||
|
||||
|
||||
@action
|
||||
void _refreshTokensList() {
|
||||
final _tokens = Set.of(tokens);
|
||||
|
||||
@@ -282,6 +282,7 @@ flutter:
|
||||
- assets/new-ui/navbar/
|
||||
- assets/new-ui/changelog/icons/
|
||||
- assets/new-ui/changelog/text/
|
||||
- assets/new-ui/crypto_full_icons/
|
||||
|
||||
fonts:
|
||||
- family: Lato
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 8C0 6.14006 0 5.21008 0.204445 4.44709C0.759248 2.37653 2.37653 0.759248 4.44709 0.204445C5.21008 0 6.14006 0 8 0C9.85994 0 10.7899 0 11.5529 0.204445C13.6235 0.759248 15.2408 2.37653 15.7956 4.44709C16 5.21008 16 6.14006 16 8C16 9.85994 16 10.7899 15.7956 11.5529C15.2408 13.6235 13.6235 15.2408 11.5529 15.7956C10.7899 16 9.85994 16 8 16C6.14006 16 5.21008 16 4.44709 15.7956C2.37653 15.2408 0.759248 13.6235 0.204445 11.5529C0 10.7899 0 9.85994 0 8Z" fill="#D9D9D9"/>
|
||||
<path d="M0 8C0 6.14006 0 5.21008 0.204445 4.44709C0.759248 2.37653 2.37653 0.759248 4.44709 0.204445C5.21008 0 6.14006 0 8 0C9.85994 0 10.7899 0 11.5529 0.204445C13.6235 0.759248 15.2408 2.37653 15.7956 4.44709C16 5.21008 16 6.14006 16 8C16 9.85994 16 10.7899 15.7956 11.5529C15.2408 13.6235 13.6235 15.2408 11.5529 15.7956C10.7899 16 9.85994 16 8 16C6.14006 16 5.21008 16 4.44709 15.7956C2.37653 15.2408 0.759248 13.6235 0.204445 11.5529C0 10.7899 0 9.85994 0 8Z" fill="white"/>
|
||||
<path d="M15 8C15 6.07594 14.9918 5.30979 14.8301 4.70605C14.3677 2.98059 13.0194 1.63226 11.2939 1.16992C10.6902 1.00821 9.92406 1 8 1C6.07594 1 5.30979 1.00821 4.70605 1.16992C2.98059 1.63226 1.63226 2.98059 1.16992 4.70605C1.00821 5.30979 1 6.07594 1 8C1 9.92406 1.00821 10.6902 1.16992 11.2939C1.63226 13.0194 2.98059 14.3677 4.70605 14.8301C5.30979 14.9918 6.07594 15 8 15V16C6.37233 16 5.45681 16.0003 4.74219 15.8633L4.44727 15.7959C2.37671 15.2411 0.758904 13.6233 0.204102 11.5527C-0.000275508 10.7898 5.57269e-09 9.85974 5.57269e-09 8C5.57269e-09 6.37233 -0.000297695 5.45681 0.136719 4.74219L0.204102 4.44727C0.724253 2.50603 2.17853 0.962665 4.06445 0.320312L4.44727 0.204102C5.21022 -0.000275508 6.14026 1.99185e-09 8 1.99185e-09C9.85974 1.99185e-09 10.7898 -0.000275508 11.5527 0.204102C13.6233 0.758904 15.2411 2.37671 15.7959 4.44727C16.0003 5.21022 16 6.14026 16 8C16 9.85974 16.0003 10.7898 15.7959 11.5527L15.6797 11.9355C15.0373 13.8215 13.494 15.2757 11.5527 15.7959L11.2578 15.8633C10.5432 16.0003 9.62767 16 8 16V15C9.92406 15 10.6902 14.9918 11.2939 14.8301C13.0194 14.3677 14.3677 13.0194 14.8301 11.2939C14.9918 10.6902 15 9.92406 15 8Z" fill="#233461"/>
|
||||
<path d="M4.06861 8.26516L10.101 3.06699C10.3639 2.89866 10.6144 3.06699 10.454 3.35578L8.52875 7.14211H11.9621C11.9621 7.14211 12.5076 7.14211 11.9621 7.59133L6.02594 12.8216C5.60881 13.1745 5.32002 12.982 5.60881 12.4365L7.46987 8.74647H4.06861C4.06861 8.74647 3.52313 8.74647 4.06861 8.26516Z" fill="black"/>
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" version="1.1" id="svg1">
|
||||
<path
|
||||
d="M 1.3839781,8.4197603 11.467869,0.19079399 c 0.43947,-0.26647492 0.858212,0 0.590083,0.45716921 L 8.8396574,6.6419154 h 5.7392716 c 0,0 0.911871,0 0,0.711138 L 4.6558988,15.632836 C 3.9586141,16.191494 3.4758656,15.886757 3.9586141,15.023203 L 7.0696077,9.1816986 H 1.3839781 c 0,0 -0.91183777,0 0,-0.7619383 z"
|
||||
fill="white" id="path1" style="stroke-width:1.62673" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 489 B |
|
After Width: | Height: | Size: 8.2 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><path fill="url(#a)" d="M246.258 155.241C229.561 222.205 161.73 262.959 94.75 246.26 27.798 229.565-12.96 161.737 3.744 94.776 20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.731 84.53 91.033 151.5"/><path fill="url(#b)" d="M246.258 155.241C229.561 222.205 161.73 262.959 94.75 246.26 27.798 229.565-12.96 161.737 3.744 94.776 20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.731 84.53 91.033 151.5"/><path fill="url(#c)" d="M3.744 94.776C20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.73 84.531 91.034 151.5l-.401 1.565c-17.22 65.513-83.595 105.392-149.538 89.835l-1.57-.381C27.798 229.565-12.96 161.737 3.744 94.776M154.015 8.592C89.735-7.435 24.618 31.692 8.596 95.985v.002C-7.44 160.268 31.687 225.38 95.96 241.408c64.301 16.032 129.418-23.091 145.448-87.376 16.029-64.29-23.096-129.413-87.392-145.44"/><path fill="url(#d)" d="M3.744 94.776C20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.73 84.531 91.034 151.5l-.401 1.565c-17.22 65.513-83.595 105.392-149.538 89.835l-1.57-.381C27.798 229.565-12.96 161.737 3.744 94.776M154.015 8.592C89.735-7.435 24.618 31.692 8.596 95.985v.002C-7.44 160.268 31.687 225.38 95.96 241.408c64.301 16.032 129.418-23.091 145.448-87.376 16.029-64.29-23.096-129.413-87.392-145.44"/><path fill="url(#e)" d="M3.744 94.776C20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.73 84.531 91.034 151.5l-.401 1.565c-17.22 65.513-83.595 105.392-149.538 89.835l-1.57-.381C27.798 229.565-12.96 161.737 3.744 94.776M154.015 8.592C89.735-7.435 24.618 31.692 8.596 95.985v.002C-7.44 160.268 31.687 225.38 95.96 241.408c64.301 16.032 129.418-23.091 145.448-87.376 16.029-64.29-23.096-129.413-87.392-145.44"/><path fill="url(#f)" d="M166.971 130.302c2.239-3.877 7.835-3.877 10.074 0l23.899 41.395c2.238 3.877-.56 8.724-5.037 8.724h-47.798c-4.477 0-7.275-4.847-5.037-8.724z"/><path fill="url(#g)" d="M124.012 55.89c2.239-3.877 7.834-3.877 10.073 0l19.966 34.584a12.46 12.46 0 0 1 0 12.462l-41.138 71.253a12.46 12.46 0 0 1-10.792 6.231H62.187c-4.476 0-7.274-4.847-5.036-8.724z"/><path fill="url(#h)" d="M162.971 124.302c2.239-3.877 7.835-3.877 10.074 0l23.899 41.395c2.238 3.877-.56 8.724-5.037 8.724h-47.798c-4.477 0-7.275-4.847-5.037-8.724z"/><path fill="url(#i)" d="M120.012 49.89c2.239-3.877 7.834-3.877 10.073 0l19.966 34.584a12.46 12.46 0 0 1 0 12.462l-41.138 71.253a12.46 12.46 0 0 1-10.792 6.231H58.187c-4.476 0-7.274-4.847-5.036-8.724z"/><path stroke="#fff" stroke-width="2" d="M163.838 124.802c1.853-3.21 6.487-3.21 8.341 0l23.899 41.395c1.854 3.21-.463 7.224-4.171 7.224h-47.798c-3.707 0-6.024-4.013-4.171-7.224zM120.879 50.39c1.854-3.21 6.486-3.21 8.34 0l19.967 34.584a11.46 11.46 0 0 1 0 11.462l-41.139 71.252a11.46 11.46 0 0 1-9.926 5.732H58.188c-3.707 0-6.024-4.013-4.17-7.224z"/><defs><linearGradient id="a" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#ff394a"/><stop offset="1" stop-color="#da2131"/></linearGradient><linearGradient id="b" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#ff394a"/><stop offset="1" stop-color="#c91121"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#ff6e7a"/><stop offset="1" stop-color="#f92c3d"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#ff8284" stop-opacity="0"/><stop offset="1" stop-color="#ff8284"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#ffd9dc"/><stop offset=".15" stop-color="#ffb5bb" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="129.048" x2="129.048" y1="52.982" y2="180.421" gradientUnits="userSpaceOnUse"><stop stop-color="#d81626"/><stop offset="1" stop-color="#da1122"/></linearGradient><linearGradient id="g" x1="129.048" x2="129.048" y1="52.982" y2="180.421" gradientUnits="userSpaceOnUse"><stop stop-color="#d81626"/><stop offset="1" stop-color="#da1122"/></linearGradient><linearGradient id="h" x1="125.048" x2="125.048" y1="46.982" y2="174.421" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#ffc5ca"/></linearGradient><linearGradient id="i" x1="125.048" x2="125.048" y1="46.982" y2="174.421" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#ffc5ca"/></linearGradient></defs></svg>
|
||||
|
After Width: | Height: | Size: 4.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><path fill="url(#a)" d="M250 125c0 69.036-55.964 125-125 125S0 194.036 0 125 55.964 0 125 0s125 55.964 125 125"/><path fill="url(#b)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#c)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#d)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="#0037ad" d="M124.857 211.875c45.353 0 82.12-36.703 82.12-81.977s-36.767-81.976-82.12-81.976c-43.029 0-78.328 33.036-81.834 75.085h108.543v13.782H43.023c3.506 42.05 38.805 75.086 81.834 75.086"/><path fill="url(#e)" d="M124.857 207.078c45.353 0 82.12-36.703 82.12-81.976 0-45.275-36.767-81.977-82.12-81.977-43.029 0-78.328 33.036-81.834 75.085h108.543v13.782H43.023c3.506 42.05 38.805 75.086 81.834 75.086"/><path fill="url(#f)" d="M151.566 131.992v-13.781H43.023c3.506-42.05 38.805-75.086 81.833-75.086 45.354 0 82.121 36.702 82.121 81.977 0 45.273-36.767 81.976-82.121 81.976v-2c44.253 0 80.121-35.81 80.121-79.976 0-44.167-35.868-79.977-80.121-79.977-41.24 0-75.2 31.104-79.628 71.086h108.338v17.781H45.227c4.43 39.983 38.39 71.086 79.629 71.086v2c-43.028 0-78.327-33.036-81.833-75.086z"/><defs><linearGradient id="a" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#0052ff"/><stop offset="1" stop-color="#003cb9"/></linearGradient><linearGradient id="b" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#2c70ff"/><stop offset="1" stop-color="#005fdb"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#4a84ff" stop-opacity="0"/><stop offset="1" stop-color="#4a84ff"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#578eff"/><stop offset=".15" stop-color="#578eff" stop-opacity="0"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="43.125" y2="207.078" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#a7c3ff"/></linearGradient><linearGradient id="f" x1="125" x2="125" y1="43.125" y2="207.078" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#fff"/></linearGradient></defs></svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><g clip-path="url(#a)"><path fill="url(#b)" d="M125 0c69.042 0 125 55.97 125 125 0 69.042-55.958 125-125 125C55.97 250 0 194.036 0 125 0 55.97 55.97 0 125 0"/><path fill="url(#c)" d="M125 0c69.042 0 125 55.97 125 125 0 69.042-55.958 125-125 125C55.97 250 0 194.036 0 125 0 55.97 55.97 0 125 0"/><path fill="url(#d)" d="M245 125C245 58.73 191.28 5 125 5 58.73 5 5 58.73 5 125c0 66.275 53.73 120 120 120v5C55.97 250 0 194.036 0 125 0 55.97 55.97 0 125 0c69.042 0 125 55.97 125 125 0 69.042-55.958 125-125 125v-5c66.281 0 120-53.719 120-120"/><path fill="url(#e)" d="M245 125C245 58.73 191.28 5 125 5 58.73 5 5 58.73 5 125c0 66.275 53.73 120 120 120v5C55.97 250 0 194.036 0 125 0 55.97 55.97 0 125 0c69.042 0 125 55.97 125 125 0 69.042-55.958 125-125 125v-5c66.281 0 120-53.719 120-120"/><path fill="url(#f)" d="M245 125C245 58.73 191.28 5 125 5 58.73 5 5 58.73 5 125c0 66.275 53.73 120 120 120v5C55.97 250 0 194.036 0 125 0 55.97 55.97 0 125 0c69.042 0 125 55.97 125 125 0 69.042-55.958 125-125 125v-5c66.281 0 120-53.719 120-120"/><path fill="url(#g)" fill-rule="evenodd" d="M70.474 65.05h51.727c31.463 0 55.313 16.912 64.186 41.521H202.5v14.874h-12.72q.375 3.526.376 7.177v.365a68 68 0 0 1-.475 8.069H202.5v14.873h-16.42c-9.106 24.266-32.771 41.017-63.879 41.017H70.474v-41.017H52.5v-14.873h17.974v-15.611H52.5v-14.874h17.974zm14.461 86.879v27.674h37.266c22.996 0 40.082-11.083 48.035-27.674zm89.731-14.873H84.935v-15.611h89.754c.333 2.456.502 4.974.502 7.542v.366c0 2.627-.177 5.198-.525 7.703m-52.465-58.684c23.102 0 40.239 11.376 48.144 28.199h-85.41v-28.2z" clip-rule="evenodd"/><path fill="url(#h)" fill-rule="evenodd" d="M70.474 61.3h51.727c31.463 0 55.313 16.912 64.186 41.521H202.5v14.874h-12.72q.375 3.526.376 7.177v.365a68 68 0 0 1-.475 8.069H202.5v14.873h-16.42c-9.106 24.266-32.771 41.017-63.879 41.017H70.474v-41.017H52.5v-14.873h17.974v-15.611H52.5v-14.874h17.974zm14.461 86.879v27.674h37.266c22.996 0 40.082-11.083 48.035-27.674zm89.731-14.873H84.935v-15.611h89.754c.333 2.456.502 4.974.502 7.542v.366c0 2.627-.177 5.198-.525 7.703m-52.465-58.684c23.102 0 40.239 11.376 48.144 28.199h-85.41v-28.2z" clip-rule="evenodd"/><path fill="#fff" d="M122.201 61.3c31.463 0 55.313 16.912 64.186 41.52H202.5v14.874h-12.72q.376 3.527.376 7.178v.365a68 68 0 0 1-.475 8.069H202.5v14.874h-16.42c-9.106 24.265-32.771 41.015-63.879 41.015H70.475V148.18H52.5v-14.874h17.975v-15.612H52.5V102.82h17.975V61.3zm-50.476 42.77H53.75v12.374h17.975v18.112H53.75v12.374h17.975v41.015H122.2c30.633 0 53.802-16.469 62.709-40.205l.304-.81h16.036v-12.374h-12.978l.167-1.399c.309-2.587.467-5.23.467-7.92v-.365q0-3.585-.369-7.046l-.146-1.382h12.859V104.07h-15.741l-.298-.825c-8.676-24.063-32.019-40.694-63.01-40.694H71.725zm99.638 44.65c-8.182 17.067-25.735 28.383-49.162 28.384H83.685V146.93h88.537zm-86.428 27.134H122.2c22.996-.001 40.081-11.084 48.034-27.674h-85.3zm90.993-58.328c.34 2.514.513 5.088.513 7.711v.366c0 2.683-.181 5.312-.538 7.875l-.149 1.078h-92.07v-18.112h92.097zm-90.993.168v15.612h89.731c.348-2.505.525-5.076.525-7.703v-.366c0-2.568-.17-5.086-.503-7.543zM122.2 73.372c23.545 0 41.147 11.62 49.276 28.917l.836 1.781H83.685V73.372zm-37.266 1.25v28.198h85.41c-7.906-16.822-25.042-28.198-48.144-28.198z"/></g><defs><linearGradient id="b" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#f5ac37"/><stop offset="1" stop-color="#f08000"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".725" stop-color="#a24001" stop-opacity="0"/><stop offset="1" stop-color="#a24001" stop-opacity=".3"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#ffd16e"/><stop offset="1" stop-color="#ffa455"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#ffb777" stop-opacity="0"/><stop offset="1" stop-color="#ffb777"/></linearGradient><linearGradient id="f" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#ffe5bc"/><stop offset=".15" stop-color="#ffe5bc" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="127.5" x2="127.5" y1="65.051" y2="192.946" gradientUnits="userSpaceOnUse"><stop stop-color="#f1890b"/><stop offset="1" stop-color="#d87600"/></linearGradient><linearGradient id="h" x1="127.5" x2="127.5" y1="61.301" y2="189.196" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#ffe2b4"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h250v250H0z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><g clip-path="url(#a)"><circle cx="125" cy="125" r="125" fill="url(#b)"/><circle cx="125" cy="125" r="125" fill="url(#c)"/><circle cx="125" cy="125" r="125" fill="url(#d)"/><path fill="url(#e)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#f)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#g)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#h)" fill-rule="evenodd" d="M121.493 61.4c9.193 0 70.069-1.907 70.069 68.685 0 71.761-63.651 66.427-63.651 66.427h-45.27v-60.183H66.685v-14.742H82.64V61.401zM108.14 86.375v35.211h28.098v14.743H108.14v35.208h18.735c4.815 0 39.52.543 39.466-40.965-.054-41.507-33.66-44.197-40.341-44.197z" clip-rule="evenodd"/><path fill="url(#i)" fill-rule="evenodd" d="M121.493 57.4c9.193 0 70.069-1.907 70.069 68.685 0 71.761-63.651 66.427-63.651 66.427h-45.27v-60.183H66.685v-14.742H82.64V57.401zM108.14 82.375v35.211h28.098v14.743H108.14v35.208h18.735c4.815 0 39.52.543 39.466-40.965-.054-41.507-33.66-44.197-40.341-44.197z" clip-rule="evenodd"/><path fill="#fff" d="M121.493 57.4c9.193 0 70.069-1.907 70.069 68.685 0 71.761-63.651 66.427-63.651 66.427h-45.27v-60.183H66.685v-14.742H82.64V57.401zm0 2H84.641v60.187H68.684v10.742h15.958v60.183h43.353l.083.007h-.001l.004.001.025.002.119.007q.163.012.494.028c.439.02 1.094.041 1.933.044 1.68.005 4.095-.064 6.997-.366 5.816-.606 13.533-2.139 21.222-5.829 7.674-3.682 15.314-9.508 21.048-18.724 5.735-9.218 9.643-21.958 9.643-39.597 0-17.355-3.739-30.101-9.37-39.483-5.628-9.379-13.221-15.518-21.126-19.55-15.887-8.101-32.944-7.652-37.573-7.652M126 80.375c3.516 0 14.026.694 23.727 6.845 9.85 6.246 18.586 17.948 18.614 39.349.014 10.66-2.206 18.767-5.733 24.911-3.529 6.149-8.303 10.218-13.217 12.896-8.537 4.653-17.521 5.115-21.254 5.157l-1.262.004H106.14v-39.208h28.098v-10.743H106.14v-39.21zm-17.86 37.211h28.098v14.743H108.14v35.208h18.735c4.815 0 39.52.543 39.466-40.965-.054-41.507-33.66-44.197-40.341-44.197h-17.86z"/></g><defs><linearGradient id="b" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#ffe991"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#c2a633"/><stop offset="1" stop-color="#9a6a00"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".725" stop-color="#825101" stop-opacity="0"/><stop offset="1" stop-color="#825101" stop-opacity=".5"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#e9cb57"/><stop offset="1" stop-color="#bd8202"/></linearGradient><linearGradient id="f" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#d08e00" stop-opacity=".125"/><stop offset="1" stop-color="#d08e00"/></linearGradient><linearGradient id="g" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#ffe379"/><stop offset=".15" stop-color="#ffe379" stop-opacity="0"/></linearGradient><linearGradient id="h" x1="129.123" x2="129.123" y1="61.395" y2="196.601" gradientUnits="userSpaceOnUse"><stop stop-color="#bd8400"/><stop offset="1" stop-color="#8e6500"/></linearGradient><linearGradient id="i" x1="129.123" x2="129.123" y1="57.395" y2="192.601" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#ffeca3"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h250v250H0z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><path fill="url(#a)" d="M250 125c0 69.036-55.964 125-125 125S0 194.036 0 125 55.964 0 125 0s125 55.964 125 125"/><path fill="url(#b)" d="M250 125c0 69.036-55.964 125-125 125S0 194.036 0 125 55.964 0 125 0s125 55.964 125 125"/><path fill="url(#c)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#d)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#e)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#f)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#g)" d="m124.961 220.624-55-77.449 55 32.449 55-32.551z"/><path fill="url(#h)" d="m179.961 132.563-55 32.449-55-32.449 55-91.327z"/><path fill="url(#i)" d="M124.961 169.624v45l55-77.551z"/><path fill="url(#j)" d="m69.96 137.175 55.001 77.449v-45z"/><path fill="url(#k)" d="m179.961 126.563-55-91.327v123.776z"/><path fill="url(#l)" d="m124.961 35.236-55 91.327 55 32.449z"/><path fill="url(#m)" d="M124.961 214.625v-.001l-55-77.449 55 32.449 55-32.551zm1.018-43.28a2 2 0 0 1-2.035.002l-46.922-27.684 47.938 67.505 47.935-67.59zm53.982-44.782-55 32.449v.001l-55-32.45 55-91.327zm-107.246-.698 52.245 30.824 52.246-30.824-52.245-86.753z"/><path fill="url(#n)" d="M124.961 214.625v-.001l-55-77.449 55 32.449 55-32.551zm1.018-43.28a2 2 0 0 1-2.035.002l-46.922-27.684 47.938 67.505 47.935-67.59zm53.982-44.782-55 32.449v.001l-55-32.45 55-91.327zm-107.246-.698 52.245 30.824 52.246-30.824-52.245-86.753z"/><defs><linearGradient id="a" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#5970ff"/><stop offset="1" stop-color="#3d1bff"/></linearGradient><linearGradient id="b" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".725" stop-color="#301cb7" stop-opacity="0"/><stop offset="1" stop-color="#301cb7" stop-opacity=".5"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#798bff"/><stop offset="1" stop-color="#001ee2"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#798bff"/><stop offset="1" stop-color="#5a41ff"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#8774ff" stop-opacity="0"/><stop offset="1" stop-color="#8774ff"/></linearGradient><linearGradient id="f" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#a9b5ff"/><stop offset=".15" stop-color="#a9b5ff" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="124.961" x2="124.961" y1="41.236" y2="220.624" gradientUnits="userSpaceOnUse"><stop offset=".246" stop-color="#3f39f9"/><stop offset="1" stop-color="#3122d3"/></linearGradient><linearGradient id="h" x1="124.961" x2="124.961" y1="41.236" y2="220.624" gradientUnits="userSpaceOnUse"><stop offset=".246" stop-color="#3f39f9"/><stop offset="1" stop-color="#3122d3"/></linearGradient><linearGradient id="i" x1="152.461" x2="152.461" y1="137.073" y2="214.624" gradientUnits="userSpaceOnUse"><stop stop-color="#98a6ff"/><stop offset="1" stop-color="#526aff"/></linearGradient><linearGradient id="j" x1="97.461" x2="97.461" y1="137.175" y2="214.624" gradientUnits="userSpaceOnUse"><stop stop-color="#b8c2ff"/><stop offset="1" stop-color="#8b9bff"/></linearGradient><linearGradient id="k" x1="152.461" x2="152.461" y1="35.236" y2="159.012" gradientUnits="userSpaceOnUse"><stop stop-color="#b4bfff"/><stop offset="1" stop-color="#6278fe"/></linearGradient><linearGradient id="l" x1="97.461" x2="97.461" y1="35.236" y2="159.012" gradientUnits="userSpaceOnUse"><stop stop-color="#f4f5ff"/><stop offset="1" stop-color="#aeb9ff"/></linearGradient><linearGradient id="m" x1="124.961" x2="124.961" y1="35.236" y2="214.625" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset=".547" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="n" x1="124.961" x2="124.961" y1="35.236" y2="214.625" gradientUnits="userSpaceOnUse"><stop offset=".752" stop-color="#fff" stop-opacity="0"/><stop offset="1" stop-color="#fff" stop-opacity=".5"/></linearGradient></defs></svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><path fill="url(#a)" d="M249.998 124.999C249.998 194.035 194.035 250 125 250 55.964 250 0 194.035 0 124.999 0 55.964 55.964 0 125 0c69.034 0 124.998 55.964 124.998 124.999"/><path fill="url(#b)" d="M249.998 124.999C249.998 194.035 194.035 250 125 250 55.964 250 0 194.035 0 124.999 0 55.964 55.964 0 125 0c69.034 0 124.998 55.964 124.998 124.999"/><path fill="url(#c)" d="M244.998 124.999C244.998 58.725 191.273 5 125 5 58.726 5 5 58.725 5 124.999 5 191.274 58.726 245 125 245v5l-1.615-.011C55.093 249.124 0 193.496 0 124.999 0 55.964 55.964 0 125 0c69.034 0 124.998 55.964 124.998 124.999C249.998 194.035 194.035 250 125 250v-5c66.274 0 119.998-53.726 119.998-120.001"/><path fill="url(#d)" d="M244.998 124.999C244.998 58.725 191.273 5 125 5 58.726 5 5 58.725 5 124.999 5 191.274 58.726 245 125 245v5l-1.615-.011C55.093 249.124 0 193.496 0 124.999 0 55.964 55.964 0 125 0c69.034 0 124.998 55.964 124.998 124.999C249.998 194.035 194.035 250 125 250v-5c66.274 0 119.998-53.726 119.998-120.001"/><path fill="url(#e)" d="M244.998 124.999C244.998 58.725 191.273 5 125 5 58.726 5 5 58.725 5 124.999 5 191.274 58.726 245 125 245v5l-1.615-.011C55.093 249.124 0 193.496 0 124.999 0 55.964 55.964 0 125 0c69.034 0 124.998 55.964 124.998 124.999C249.998 194.035 194.035 250 125 250v-5c66.274 0 119.998-53.726 119.998-120.001"/><path fill="url(#f)" d="m119.689 164.393 8.119-30.572 19.222-7.023 4.781-17.967-.163-.446-18.922 6.913 13.634-51.334h-38.664l-17.829 66.992-14.886 5.438-4.918 18.523 14.874-5.434-10.508 39.482h102.9l6.596-24.572z"/><path fill="url(#g)" d="m117.689 158.393 8.119-30.572 19.222-7.023 4.781-17.967-.163-.446-18.922 6.913 13.634-51.334h-38.664l-17.829 66.992-14.886 5.438-4.918 18.523 14.874-5.434-10.508 39.482h102.9l6.596-24.572z"/><path fill="#fff" d="m144.359 57.964-13.632 51.334 18.921-6.913.164.446-4.782 17.967-19.222 7.022-8.12 30.573h64.237l-6.597 24.572h-102.9l10.508-39.482-14.874 5.434 4.92-18.523 14.885-5.438 17.829-66.992zm-54.827 68.513-14.885 5.437-3.668 13.807 14.878-5.434-10.826 40.678h98.763l5.523-20.572h-64.229l9.055-34.093 19.222-7.025 3.675-13.808-19.231 7.026 13.95-52.53h-34.526z"/><defs><linearGradient id="a" x1="124.999" x2="124.999" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#1c60ca"/><stop offset="1" stop-color="#002394"/></linearGradient><linearGradient id="b" x1="124.999" x2="124.999" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".725" stop-color="#000e6c" stop-opacity="0"/><stop offset="1" stop-color="#000e6c" stop-opacity=".3"/></linearGradient><linearGradient id="c" x1="124.999" x2="124.999" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#2974ed"/><stop offset="1" stop-color="#0031c9"/></linearGradient><linearGradient id="d" x1="124.999" x2="124.999" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#0059ad" stop-opacity="0"/><stop offset="1" stop-color="#0059ad"/></linearGradient><linearGradient id="e" x1="124.999" x2="124.999" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#5294ff"/><stop offset=".15" stop-color="#5294ff" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="126.994" x2="126.994" y1="63.964" y2="188.965" gradientUnits="userSpaceOnUse"><stop stop-color="#063aba"/><stop offset="1" stop-color="#002a9c"/></linearGradient><linearGradient id="g" x1="124.994" x2="124.994" y1="57.964" y2="182.965" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#c7dcff"/></linearGradient></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><g clip-path="url(#a)"><path fill="url(#b)" d="M125 250c69.036 0 125-55.964 125-125S194.036 0 125 0 0 55.964 0 125s55.964 125 125 125"/><path fill="#ce2901" d="M206.251 170.49h35.212a124.7 124.7 0 0 1-13.543 25.47h-48.779v-66.18l-54.14 54.14-54.14-54.14v66.18H22.082a124.7 124.7 0 0 1-13.547-25.48h35.216V65.31l81.25 81.251 81.25-81.251z"/><path stroke="url(#c)" stroke-width="5" d="M125 2.5c67.655 0 122.5 54.845 122.5 122.5S192.655 247.5 125 247.5 2.5 192.655 2.5 125 57.345 2.5 125 2.5Z"/><path stroke="url(#d)" stroke-width="5" d="M125 2.5c67.655 0 122.5 54.845 122.5 122.5S192.655 247.5 125 247.5 2.5 192.655 2.5 125 57.345 2.5 125 2.5Z"/><path stroke="url(#e)" stroke-width="5" d="M125 2.5c67.655 0 122.5 54.845 122.5 122.5S192.655 247.5 125 247.5 2.5 192.655 2.5 125 57.345 2.5 125 2.5Z"/><path fill="url(#f)" d="M205.251 165.489h36.982a123.8 123.8 0 0 1-10.979 23.471h-51.113v-67.595l-55.14 55.14-55.14-55.14v67.595H18.758a123 123 0 0 1-10.99-23.481H44.75V61.724l80.25 80.25 80.25-80.25z"/><path stroke="url(#g)" stroke-width="2" d="M205.251 165.489h36.982a123.8 123.8 0 0 1-10.979 23.471h-51.113v-67.595l-55.14 55.14-55.14-55.14v67.595H18.758a123 123 0 0 1-10.99-23.481H44.75V61.724l80.25 80.25 80.25-80.25z"/><path stroke="url(#h)" stroke-width="2" d="M205.251 165.489h36.982a123.8 123.8 0 0 1-10.979 23.471h-51.113v-67.595l-55.14 55.14-55.14-55.14v67.595H18.758a123 123 0 0 1-10.99-23.481H44.75V61.724l80.25 80.25 80.25-80.25z"/><path fill="url(#i)" fill-opacity=".3" d="M206.251 164.481V59.311l-81.25 81.25-81.25-81.25v105.17H6.371c2.99 8.99 6.97 17.53 11.82 25.48h52.67v-66.18l54.14 54.14 54.14-54.14v66.18h52.68c4.84-7.95 8.82-16.49 11.81-25.47h-37.38z"/><path fill="url(#j)" fill-opacity=".3" d="M206.251 164.481V59.311l-81.25 81.25-81.25-81.25v105.17H6.371c2.99 8.99 6.97 17.53 11.82 25.48h52.67v-66.18l54.14 54.14 54.14-54.14v66.18h52.68c4.84-7.95 8.82-16.49 11.81-25.47h-37.38z"/></g><defs><linearGradient id="b" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#f60"/><stop offset=".663" stop-color="#ea3e00"/><stop offset="1" stop-color="#b51500"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#ff9a59"/><stop offset="1" stop-color="#f23400"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#ff7752" stop-opacity="0"/><stop offset="1" stop-color="#ff7752"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#ffbe94"/><stop offset=".15" stop-color="#ffbe94" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="125.001" x2="125.001" y1="59.31" y2="189.96" gradientUnits="userSpaceOnUse"><stop offset=".313" stop-color="#fff"/><stop offset=".75" stop-color="#ffc7b2"/></linearGradient><linearGradient id="g" x1="125.154" x2="125.154" y1="59.291" y2="189.96" gradientUnits="userSpaceOnUse"><stop offset=".629" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="h" x1="125.154" x2="125.154" y1="59.291" y2="189.96" gradientUnits="userSpaceOnUse"><stop offset=".93" stop-color="#fff" stop-opacity="0"/><stop offset="1" stop-color="#fff"/></linearGradient><linearGradient id="i" x1="243.631" x2="80.419" y1="125.158" y2="272.169" gradientUnits="userSpaceOnUse"><stop offset=".734" stop-color="#cd2700" stop-opacity="0"/><stop offset=".954" stop-color="#cd2700"/></linearGradient><linearGradient id="j" x1="243.631" x2="80.419" y1="189.96" y2="42.95" gradientUnits="userSpaceOnUse"><stop offset=".048" stop-color="#cd2700"/><stop offset=".265" stop-color="#cd2700" stop-opacity="0"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h250v250H0z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><g clip-path="url(#a)"><path fill="url(#b)" d="M125 250c69.036 0 125-55.964 125-125S194.036 0 125 0 0 55.964 0 125s55.964 125 125 125"/><path fill="url(#c)" d="M125 250c69.036 0 125-55.964 125-125S194.036 0 125 0 0 55.964 0 125s55.964 125 125 125"/><path fill="url(#d)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#e)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#f)" d="M245 125C245 58.726 191.274 5 125 5S5 58.726 5 125s53.726 120 120 120v5C55.964 250 0 194.036 0 125S55.964 0 125 0s125 55.964 125 125-55.964 125-125 125v-5c66.274 0 120-53.726 120-120"/><path fill="url(#g)" fill-rule="evenodd" d="m125.449 117.517 42.91-65.78h11.629l-45.384 70.026h37.809v8.883h-38l11.294 17.768h26.71v8.884h-21.063l32.188 50.637h-12.156l-32.508-50.637H111.42l-33.005 50.637H66.359l32.65-50.637H77.89l.003-8.884h26.843l11.456-17.768H77.894v-8.883h37.916L71.036 51.736H83.43zm-8.239 30.897h15.965l-7.922-12.34z" clip-rule="evenodd"/><path fill="url(#h)" fill-rule="evenodd" d="m125.449 113.517 42.91-65.78h11.629l-45.384 70.026h37.809v8.883h-38l11.294 17.768h26.71v8.884h-21.063l32.188 50.637h-12.156l-32.508-50.637H111.42l-33.005 50.637H66.359l32.65-50.637H77.89l.003-8.884h26.843l11.456-17.768H77.894v-8.883h37.916L71.036 47.736H83.43zm-8.239 30.897h15.965l-7.922-12.34z" clip-rule="evenodd"/><path fill="#fff" d="m125.449 113.517 42.91-65.78h11.629l-45.384 70.026h37.809v8.883h-38l11.294 17.768h26.71v8.884h-21.063l32.188 50.637h-12.156l-32.508-50.637H111.42l-33.005 50.637H66.359l32.65-50.637H77.89l.003-8.884h26.843l11.456-17.768H77.894v-8.883h37.916L71.036 47.736H83.43zm-5.987 6.246H79.894v4.883h39.968l-14.035 21.768H79.894l-.002 4.884h22.786l-32.65 50.637h7.303l33.005-50.637h29.635l32.507 50.637h7.423l-32.188-50.637h22.704v-4.884h-25.809l-13.837-21.768h39.642v-4.883h-39.489l45.385-70.027h-6.867l-44.01 67.468-43.099-67.468h-7.644zm17.373 26.651H113.52l11.746-18.022zm-19.625-2h15.965l-7.922-12.34z"/></g><defs><linearGradient id="b" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#209ce9"/><stop offset="1" stop-color="#007ac5"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".725" stop-color="#003f88" stop-opacity="0"/><stop offset="1" stop-color="#003f88" stop-opacity=".5"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#5ec1ff"/><stop offset="1" stop-color="#009eff"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#3ab4ff" stop-opacity="0"/><stop offset="1" stop-color="#3ab4ff"/></linearGradient><linearGradient id="f" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#98d8ff"/><stop offset=".15" stop-color="#98d8ff" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="124.951" x2="124.951" y1="51.736" y2="207.935" gradientUnits="userSpaceOnUse"><stop stop-color="#0e86d2"/><stop offset="1" stop-color="#0069ae"/></linearGradient><linearGradient id="h" x1="124.951" x2="124.951" y1="47.736" y2="203.935" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#a4dcff"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h250v250H0z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 6.1 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><g clip-path="url(#a)"><path fill="url(#b)" d="M125 250c69.271 0 125-55.729 125-125S194.271 0 125 0 0 55.729 0 125s55.729 125 125 125"/><path fill="url(#c)" d="M125 250c69.271 0 125-55.729 125-125S194.271 0 125 0 0 55.729 0 125s55.729 125 125 125"/><path fill="url(#d)" d="M245 125C245 58.49 191.51 5 125 5S5 58.49 5 125s53.49 120 120 120v5C55.729 250 0 194.271 0 125S55.729 0 125 0s125 55.729 125 125-55.729 125-125 125v-5c66.51 0 120-53.49 120-120"/><path fill="url(#e)" d="M245 125C245 58.49 191.51 5 125 5S5 58.49 5 125s53.49 120 120 120v5C55.729 250 0 194.271 0 125S55.729 0 125 0s125 55.729 125 125-55.729 125-125 125v-5c66.51 0 120-53.49 120-120"/><path fill="url(#f)" d="M245 125C245 58.49 191.51 5 125 5S5 58.49 5 125s53.49 120 120 120v5C55.729 250 0 194.271 0 125S55.729 0 125 0s125 55.729 125 125-55.729 125-125 125v-5c66.51 0 120-53.49 120-120"/><path fill="url(#g)" d="m161.448 63.5-42.085 24.17v75.437l-23.22 13.461-23.363-13.472v-26.932l23.363-13.341 15.022 8.712v-21.791l-15.153-8.602-42.074 24.443v48.352l42.216 24.312 42.074-24.312V98.511l23.362-13.472 23.352 13.472v26.812l-23.352 13.592-15.153-8.789v21.682l15.011 8.657 42.49-24.17V87.67z"/><path fill="url(#h)" d="m157.448 57.5-42.085 24.17v75.437l-23.22 13.461-23.363-13.472v-26.932l23.363-13.341 15.022 8.712v-21.791l-15.153-8.602-42.074 24.443v48.352l42.216 24.312 42.074-24.312V92.511l23.362-13.472 23.352 13.472v26.812l-23.352 13.592-15.153-8.789v21.682l15.011 8.657 42.49-24.17V81.67z"/><path fill="#fff" d="M199.938 81.67v48.625l-42.49 24.17-15.01-8.657v-21.681l15.152 8.788 23.351-13.592V92.511L157.59 79.039l-23.362 13.472v75.426l-42.075 24.312-42.216-24.312v-48.352l42.075-24.443 15.153 8.602v21.79l-15.022-8.711-23.363 13.341v26.932l23.363 13.471 23.22-13.461V81.67l42.085-24.17zm-16.997 38.804-25.349 14.754-13.154-7.63v17.054l13.017 7.508 40.483-23.029V82.833l-40.485-23.03-40.09 23.024v75.432l-25.217 14.619-25.366-14.626v-29.249l25.37-14.487 13.015 7.546v-17.154l-13.142-7.46-40.085 23.288v46.043l40.213 23.16 40.077-23.157V91.356L157.59 76.73l25.351 14.625z"/></g><defs><linearGradient id="b" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#7158ff"/><stop offset="1" stop-color="#4a2aff"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".725" stop-color="#3115cd" stop-opacity="0"/><stop offset="1" stop-color="#3115cd" stop-opacity=".5"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#8570ff"/><stop offset="1" stop-color="#4a4dff"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#7072ff" stop-opacity="0"/><stop offset="1" stop-color="#7072ff"/></linearGradient><linearGradient id="f" x1="125" x2="125" y1="0" y2="250" gradientUnits="userSpaceOnUse"><stop stop-color="#a392ff"/><stop offset=".15" stop-color="#a392ff" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="128.938" x2="128.938" y1="63.5" y2="198.249" gradientUnits="userSpaceOnUse"><stop stop-color="#5132ff"/><stop offset="1" stop-color="#4c2cff"/></linearGradient><linearGradient id="h" x1="124.938" x2="124.938" y1="57.5" y2="192.249" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#b9adff"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h250v250H0z"/></clipPath></defs></svg>
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 10 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="250" height="250" fill="none" viewBox="0 0 250 250"><path fill="url(#a)" d="M246.258 155.241C229.561 222.205 161.73 262.959 94.75 246.26 27.798 229.565-12.96 161.737 3.744 94.776 20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.731 84.53 91.033 151.5"/><path fill="url(#b)" d="M246.258 155.241C229.561 222.205 161.73 262.959 94.75 246.26 27.798 229.565-12.96 161.737 3.744 94.776 20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.731 84.53 91.033 151.5"/><path fill="url(#c)" d="M3.744 94.776C20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.73 84.531 91.034 151.5l-.401 1.565c-17.22 65.513-83.595 105.392-149.538 89.835l-1.57-.381C27.798 229.565-12.96 161.737 3.744 94.776M154.015 8.592C89.735-7.435 24.618 31.692 8.596 95.985v.002C-7.44 160.268 31.687 225.38 95.96 241.408c64.301 16.032 129.418-23.091 145.448-87.376 16.029-64.29-23.096-129.413-87.392-145.44"/><path fill="url(#d)" d="M3.744 94.776C20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.73 84.531 91.034 151.5l-.401 1.565c-17.22 65.513-83.595 105.392-149.538 89.835l-1.57-.381C27.798 229.565-12.96 161.737 3.744 94.776M154.015 8.592C89.735-7.435 24.618 31.692 8.596 95.985v.002C-7.44 160.268 31.687 225.38 95.96 241.408c64.301 16.032 129.418-23.091 145.448-87.376 16.029-64.29-23.096-129.413-87.392-145.44"/><path fill="url(#e)" d="M3.744 94.776C20.434 27.803 88.265-12.954 155.225 3.74c66.976 16.695 107.73 84.531 91.034 151.5l-.401 1.565c-17.22 65.513-83.595 105.392-149.538 89.835l-1.57-.381C27.798 229.565-12.96 161.737 3.744 94.776M154.015 8.592C89.735-7.435 24.618 31.692 8.596 95.985v.002C-7.44 160.268 31.687 225.38 95.96 241.408c64.301 16.032 129.418-23.091 145.448-87.376 16.029-64.29-23.096-129.413-87.392-145.44"/><path fill="url(#f)" d="M170.534 75.672H83.47c-16.029 0-26.138 17.258-18.124 31.237l53.733 93.121c3.506 6.102 12.294 6.102 15.8 0l53.733-93.121c8.059-13.934-2.095-31.237-18.124-31.237zm-51.501 96.445-11.703-22.632-28.232-50.499c-1.867-3.233.456-7.377 4.326-7.377h35.609v80.553zm55.827-73.176-28.232 50.544-11.703 22.632V91.564h35.609c3.916 0 6.193 4.144 4.326 7.377"/><path fill="url(#g)" d="M170.534 75.672H83.47c-16.029 0-26.138 17.258-18.124 31.237l53.733 93.121c3.506 6.102 12.294 6.102 15.8 0l53.733-93.121c8.059-13.934-2.095-31.237-18.124-31.237zm-51.501 96.445-11.703-22.632-28.232-50.499c-1.867-3.233.456-7.377 4.326-7.377h35.609v80.553zm55.827-73.176-28.232 50.544-11.703 22.632V91.564h35.609c3.916 0 6.193 4.144 4.326 7.377"/><path fill="url(#h)" d="M170.534 70.672H83.47c-16.029 0-26.138 17.258-18.124 31.237l53.733 93.121c3.506 6.102 12.294 6.102 15.8 0l53.733-93.121c8.059-13.934-2.095-31.237-18.124-31.237zm-51.501 96.445-11.703-22.632-28.232-50.499c-1.867-3.233.456-7.377 4.326-7.377h35.609v80.553zm55.827-73.176-28.232 50.544-11.703 22.632V86.564h35.609c3.916 0 6.193 4.144 4.326 7.377"/><path stroke="#fff" stroke-width="2" d="M83.47 71.672h87.018c15.27 0 24.926 16.479 17.258 29.736l-.001.001-53.731 93.121-.001.001c-3.122 5.433-10.946 5.433-14.068 0l-.001-.001-53.731-93.121h-.001c-7.626-13.307 1.993-29.737 17.258-29.737Zm-.046 13.937c-4.636 0-7.437 4.967-5.198 8.865l28.231 50.499 11.688 22.603.799-.414h1.089V85.609zm50.501 81.507 1.888.46 11.688-22.603 28.231-50.544-.001-.001c2.235-3.89-.508-8.864-5.197-8.864h-36.609z"/><defs><linearGradient id="a" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#0199ea"/><stop offset="1" stop-color="#07c"/></linearGradient><linearGradient id="b" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#00a6ff"/><stop offset="1" stop-color="#0073d7"/></linearGradient><linearGradient id="c" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#2db6ff"/><stop offset="1" stop-color="#0195e6"/></linearGradient><linearGradient id="d" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop offset=".85" stop-color="#2db3ff" stop-opacity="0"/><stop offset="1" stop-color="#2db3ff"/></linearGradient><linearGradient id="e" x1="125" x2="125" y1="0" y2="250.003" gradientUnits="userSpaceOnUse"><stop stop-color="#c0e9ff"/><stop offset=".15" stop-color="#c0e9ff" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="126.988" x2="126.988" y1="75.672" y2="204.606" gradientUnits="userSpaceOnUse"><stop stop-color="#017cd0"/><stop offset="1" stop-color="#0065aa"/></linearGradient><linearGradient id="g" x1="126.988" x2="126.988" y1="75.672" y2="204.606" gradientUnits="userSpaceOnUse"><stop stop-color="#0081d7"/><stop offset="1" stop-color="#0069bf"/></linearGradient><linearGradient id="h" x1="126.988" x2="126.988" y1="70.672" y2="199.606" gradientUnits="userSpaceOnUse"><stop stop-color="#fff"/><stop offset="1" stop-color="#b4e5ff"/></linearGradient></defs></svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 6.7 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
@@ -465,6 +465,8 @@
|
||||
"extracted_address_content": "You will be sending funds to\n${recipient_name}",
|
||||
"failed_authentication": "Failed authentication. ${state_error}",
|
||||
"faq": "FAQ",
|
||||
"favorite_token": "Favorite token",
|
||||
"favorite_token_desc": "The favorite token's balance will show on the balance card.",
|
||||
"features": "Features",
|
||||
"fee": "Fee",
|
||||
"fee_less_than_min": "Selected Fee is less than the minimum, please increase the fees to be able to send the transaction",
|
||||
@@ -1023,6 +1025,7 @@
|
||||
"show_balance": "Long Press to Show Balance",
|
||||
"show_balance_send_page": "Tap to reveal",
|
||||
"show_balance_toast": "Long press to hide or show balance",
|
||||
"show_combined_balance": "Show combined balance",
|
||||
"show_details": "Show Details",
|
||||
"show_hidden_addresses": "Show hidden addresses",
|
||||
"show_keys": "Show seed/keys",
|
||||
@@ -1292,6 +1295,7 @@
|
||||
"waitFewSecondForTxUpdate": "Kindly wait for a few seconds for transaction to reflect in transactions history",
|
||||
"wallet": "Wallet",
|
||||
"wallet_accounts": "Wallet Accounts",
|
||||
"wallet_balance": "Wallet Balance",
|
||||
"wallet_group": "Wallet Group",
|
||||
"wallet_group_description_existing_seed": "You’ve chosen to use an existing seed for this wallet. You may verify the seed again if you need to confirm or write it down.",
|
||||
"wallet_group_description_four": "to create a wallet with an entirely new seed.",
|
||||
|
||||