cake_wallet/cw_zano/lib/model/zano_asset.dart
2024-08-07 12:32:47 +00:00

105 lines
3.3 KiB
Dart

import 'package:cw_core/crypto_currency.dart';
import 'package:cw_core/hive_type_ids.dart';
import 'package:cw_zano/zano_formatter.dart';
import 'package:hive/hive.dart';
part 'zano_asset.g.dart';
@HiveType(typeId: ZanoAsset.typeId)
class ZanoAsset extends CryptoCurrency with HiveObjectMixin {
@HiveField(0)
final String fullName;
@HiveField(1)
final String ticker;
@HiveField(2)
final String assetId;
@HiveField(3)
final int decimalPoint;
@HiveField(4, defaultValue: true)
bool _enabled;
@HiveField(5)
final String? iconPath;
// @HiveField(6)
// final String? tag;
@HiveField(6)
final String owner;
@HiveField(7)
final String metaInfo;
@HiveField(8)
final BigInt currentSupply;
@HiveField(9)
final bool hiddenSupply;
@HiveField(10)
final BigInt totalMaxSupply;
@HiveField(11)
final bool isInGlobalWhitelist;
bool get enabled => _enabled;
set enabled(bool value) => _enabled = value;
ZanoAsset({
this.fullName = '',
this.ticker = '',
required this.assetId,
this.decimalPoint = ZanoFormatter.defaultDecimalPoint,
bool enabled = true,
this.iconPath,
this.owner = defaultOwner,
this.metaInfo = '',
required this.currentSupply,
this.hiddenSupply = false,
required this.totalMaxSupply,
this.isInGlobalWhitelist = false,
}) : _enabled = enabled,
super(
name: fullName,
title: ticker.toUpperCase(),
fullName: fullName,
tag: 'ZANO',
iconPath: iconPath,
decimals: decimalPoint,
);
ZanoAsset.copyWith(ZanoAsset other, {String? icon, String? assetId, bool enabled = true})
: this.fullName = other.fullName,
this.ticker = other.ticker,
this.assetId = assetId ?? other.assetId,
this.decimalPoint = other.decimalPoint,
this._enabled = enabled && other.enabled,
this.iconPath = icon,
this.currentSupply = other.currentSupply,
this.hiddenSupply = other.hiddenSupply,
this.metaInfo = other.metaInfo,
this.owner = other.owner,
this.totalMaxSupply = other.totalMaxSupply,
this.isInGlobalWhitelist = other.isInGlobalWhitelist,
super(
name: other.name,
title: other.ticker.toUpperCase(),
fullName: other.name,
tag: 'ZANO',
iconPath: icon,
decimals: other.decimalPoint,
enabled: enabled,
);
factory ZanoAsset.fromJson(Map<String, dynamic> json, {bool isInGlobalWhitelist = false}) => ZanoAsset(
assetId: json['asset_id'] as String? ?? '',
currentSupply: ZanoFormatter.bigIntFromDynamic(json['current_supply']),
decimalPoint: json['decimal_point'] as int? ?? ZanoFormatter.defaultDecimalPoint,
fullName: json['full_name'] as String? ?? '',
hiddenSupply: json['hidden_supply'] as bool? ?? false,
metaInfo: json['meta_info'] as String? ?? '',
owner: json['owner'] as String? ?? '',
ticker: json['ticker'] as String? ?? '',
totalMaxSupply: ZanoFormatter.bigIntFromDynamic(json['total_max_supply']),
isInGlobalWhitelist: isInGlobalWhitelist,
);
static const typeId = ZANO_ASSET_TYPE_ID;
static const zanoAssetsBoxName = 'zanoAssetsBox';
static const defaultOwner = '0000000000000000000000000000000000000000000000000000000000000000';
}