stack_wallet/lib/themes/coin_image_provider.dart
2024-01-19 17:44:01 -06:00

125 lines
3.9 KiB
Dart

/*
* This file is part of Stack Wallet.
*
* Copyright (c) 2023 Cypher Stack
* All Rights Reserved.
* The code is distributed under GPLv3 license, see LICENSE file for details.
* Generated by Cypher Stack on 2023-05-26
*
*/
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:stackwallet/models/isar/stack_theme.dart';
import 'package:stackwallet/themes/theme_providers.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
final coinImageProvider = Provider.family<String, Coin>((ref, coin) {
final assets = ref.watch(themeAssetsProvider);
// TODO: handle this differently by adding proper frost assets to themes
if (coin == Coin.bitcoinFrost) {
coin = Coin.bitcoin;
} else if (coin == Coin.bitcoinFrostTestNet) {
coin = Coin.bitcoinTestNet;
}
if (assets is ThemeAssets) {
switch (coin) {
case Coin.bitcoin:
return assets.bitcoinImage;
case Coin.litecoin:
case Coin.litecoinTestNet:
return assets.litecoinImage;
case Coin.bitcoincash:
return assets.bitcoincashImage;
case Coin.dogecoin:
return assets.dogecoinImage;
case Coin.eCash:
return assets.bitcoinImage;
case Coin.epicCash:
return assets.epicCashImage;
case Coin.firo:
return assets.firoImage;
case Coin.monero:
return assets.moneroImage;
case Coin.wownero:
return assets.wowneroImage;
case Coin.namecoin:
return assets.namecoinImage;
case Coin.particl:
return assets.particlImage;
case Coin.bitcoinTestNet:
return assets.bitcoinImage;
case Coin.bitcoincashTestnet:
return assets.bitcoincashImage;
case Coin.firoTestNet:
return assets.firoImage;
case Coin.dogecoinTestNet:
return assets.dogecoinImage;
case Coin.ethereum:
return assets.ethereumImage;
default:
return assets.stackIcon;
}
} else if (assets is ThemeAssetsV2) {
return (assets).coinImages[coin.mainNetVersion]!;
} else {
return (assets as ThemeAssetsV3).coinImages[coin.mainNetVersion]!;
}
});
final coinImageSecondaryProvider = Provider.family<String, Coin>((ref, coin) {
final assets = ref.watch(themeAssetsProvider);
// TODO: handle this differently by adding proper frost assets to themes
if (coin == Coin.bitcoinFrost) {
coin = Coin.bitcoin;
} else if (coin == Coin.bitcoinFrostTestNet) {
coin = Coin.bitcoinTestNet;
}
if (assets is ThemeAssets) {
switch (coin) {
case Coin.bitcoin:
return assets.bitcoinImageSecondary;
case Coin.litecoin:
case Coin.litecoinTestNet:
return assets.litecoinImageSecondary;
case Coin.bitcoincash:
return assets.bitcoincashImageSecondary;
case Coin.dogecoin:
return assets.dogecoinImageSecondary;
case Coin.eCash:
return assets.bitcoinImageSecondary;
case Coin.epicCash:
return assets.epicCashImageSecondary;
case Coin.firo:
return assets.firoImageSecondary;
case Coin.monero:
return assets.moneroImageSecondary;
case Coin.wownero:
return assets.wowneroImageSecondary;
case Coin.namecoin:
return assets.namecoinImageSecondary;
case Coin.particl:
return assets.particlImageSecondary;
case Coin.bitcoinTestNet:
return assets.bitcoinImageSecondary;
case Coin.bitcoincashTestnet:
return assets.bitcoincashImageSecondary;
case Coin.firoTestNet:
return assets.firoImageSecondary;
case Coin.dogecoinTestNet:
return assets.dogecoinImageSecondary;
case Coin.ethereum:
return assets.ethereumImageSecondary;
default:
return assets.stackIcon;
}
} else if (assets is ThemeAssetsV2) {
return (assets).coinSecondaryImages[coin.mainNetVersion]!;
} else {
return (assets as ThemeAssetsV3).coinSecondaryImages[coin.mainNetVersion]!;
}
});