CakeWallet/cw_solana/lib/solana_transaction_info.dart
David Adegoke 1b5be705f6
Solana Wallet New Implementation (#2011)
* Feat: Implement Solana wallet using on_chain

* v4.23.0 release candidate (#1974)

* v4.23.0 release candidate

* - Fix restoring zano from QR
- Fix Zano confirmations count
- Fix birdpay
- Fix balance display

* Fix Zano assets showing amount before they are added

* - handle fetching token data while the API is busy
- potential fix for duplicate transactions

* fix receive confirmations, maybe

* revert onChangeWallet cleanup

* Fix confirmations not updating

* improve zano wallet opening, fix CI commands and messages on slack (#1979)

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

* Cache wallet when creating/restoring as well

* - hardcode Trocador Maximum limit for Zano temporarily
- Configure Cake Zano node to use SSL

* reformatting [skip ci]

* revert to non-ssl

* update build numbers [skip ci]

* disable zano for desktop [skip ci]

---------

Co-authored-by: cyan <cyjan@mrcyjanek.net>

* CW-711 passphrase for XMR/WOWcreation (#1992)

* add monero passphrase
add wownero passphrase
add passphrase to seed screen

* obscure passphrase by default
disable passphrase create for zano

* Update lib/view_model/wallet_keys_view_model.dart [skip ci]

* Update lib/src/screens/wallet_keys/wallet_keys_page.dart [skip ci]

* Update lib/view_model/advanced_privacy_settings_view_model.dart

* dynamic passphrase icon

* fix polyseed not being encrypted by passphrase

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>

* show Zano keys properly in the keys tab (#2004)

* fix: Switch private key hex encoding

* Modified existing implementation to use older version of packages

* fix: Fetch direct transaction history amounts instead of decimals, and add Create Account Instructions to Transaction History List

* fix: Remove Create Account entries in Transaction History and disable activating token accounts of selected tokens

* feat: Add passphrase support to Solana

* fix: Issues with transaction amount and dissappearing transaction history items (very annoying bug)

* fix: Issue with flipping transactions and incorrect transaction status

* PR Review fixes

---------

Co-authored-by: Omar Hatem <omarh.ismail1@gmail.com>
Co-authored-by: cyan <cyjan@mrcyjanek.net>
2025-03-14 16:42:17 +02:00

77 lines
2.1 KiB
Dart

import 'package:cw_core/format_amount.dart';
import 'package:cw_core/transaction_direction.dart';
import 'package:cw_core/transaction_info.dart';
class SolanaTransactionInfo extends TransactionInfo {
SolanaTransactionInfo({
required this.id,
required this.blockTime,
required this.to,
required this.from,
required this.direction,
required this.solAmount,
this.tokenSymbol = "SOL",
required this.isPending,
required this.txFee,
}) : amount = solAmount.toInt();
final String id;
final String? to;
final String? from;
final int amount;
final bool isPending;
final double solAmount;
final String tokenSymbol;
final DateTime blockTime;
final double txFee;
final TransactionDirection direction;
String? _fiatAmount;
@override
DateTime get date => blockTime;
@override
String amountFormatted() {
String stringBalance = solAmount.toString();
if (stringBalance.toString().length >= 12) {
stringBalance = stringBalance.substring(0, 12);
}
return '$stringBalance $tokenSymbol';
}
@override
String fiatAmount() => _fiatAmount ?? '';
@override
void changeFiatAmount(String amount) => _fiatAmount = formatAmount(amount);
@override
String feeFormatted() => '${txFee.toString()} SOL';
factory SolanaTransactionInfo.fromJson(Map<String, dynamic> data) {
return SolanaTransactionInfo(
id: data['id'] as String,
solAmount: data['solAmount'],
direction: parseTransactionDirectionFromInt(data['direction'] as int),
blockTime: DateTime.fromMillisecondsSinceEpoch(data['blockTime'] as int),
isPending: data['isPending'] as bool,
tokenSymbol: data['tokenSymbol'] as String,
to: data['to'],
from: data['from'],
txFee: data['txFee'],
);
}
Map<String, dynamic> toJson() => {
'id': id,
'solAmount': solAmount,
'direction': direction.index,
'blockTime': blockTime.millisecondsSinceEpoch,
'isPending': isPending,
'tokenSymbol': tokenSymbol,
'to': to,
'from': from,
'txFee': txFee,
};
}