diff --git a/lib/models/isar/models/blockchain_data/epic_transaction.dart b/lib/models/isar/models/blockchain_data/epic_transaction.dart new file mode 100644 index 000000000..9640ff49f --- /dev/null +++ b/lib/models/isar/models/blockchain_data/epic_transaction.dart @@ -0,0 +1,125 @@ +import 'package:isar/isar.dart'; +import 'package:stackwallet/models/isar/models/isar_models.dart'; + +class EpicTransaction { + + @Index() + late final String walletId; + + @Index() + final String parentKeyId; + + @Index(unique: true, composite: [CompositeIndex("walletId")]) + late final int id; + + final String? txSlateId; + + @enumerated + final TransactionType txType; + + final String creationTs; + final String confirmationTs; + final bool confirmed; + final int numInputs; + final int numOutputs; + final String amountCredited; + final String amountDebited; + final String? fee; + final String? ttlCutoffHeight; + final Messages? messages; + final String? storedTx; + final String? kernelExcess; + final int? kernelLookupMinHeight; + final String? paymentProof; + + @Backlink(to: "transactions") + final address = IsarLink
(); + + EpicTransaction({ + required this.parentKeyId, + required this.id, + this.txSlateId, + required this.txType, + required this.creationTs, + required this.confirmationTs, + required this.confirmed, + required this.numInputs, + required this.numOutputs, + required this.amountCredited, + required this.amountDebited, + this.fee, + this.ttlCutoffHeight, + this.messages, + this.storedTx, + this.kernelExcess, + this.kernelLookupMinHeight, + this.paymentProof, + }); + + factory EpicTransaction.fromJson(Map json) { + return EpicTransaction( + parentKeyId: json['parent_key_id'] as String, + id: json['id'] as int, + txSlateId: json['tx_slate_id'] as String, + txType: json['tx_type'] as TransactionType, + creationTs: json['creation_ts'] as String, + confirmationTs: json['confirmation_ts'] as String, + confirmed: json['confirmed'] as bool, + numInputs: json['num_inputs'] as int, + numOutputs: json['num_outputs'] as int, + amountCredited: json['amount_credited'] as String, + amountDebited: json['amount_debited'] as String, + fee: json['fee'] as String, + ttlCutoffHeight: json['ttl_cutoff_height'] as String, + messages: json['messages'] != null ? Messages.fromJson(json['messages'] as Map) : null, + storedTx: json['stored_tx'] as String, + kernelExcess: json['kernel_excess'] as String, + kernelLookupMinHeight: json['kernel_lookup_min_height'] as int, + paymentProof: json['payment_proof'] as String, + ); + } +} + +class Messages { + final List messages; + + Messages({required this.messages}); + + factory Messages.fromJson(Map json) { + final messageList = json['messages'] as List; + final messages = messageList.map((message) => Message.fromJson(message as Map)).toList(); + return Messages(messages: messages); + } +} + +class Message { + final String id; + final String publicKey; + final String? message; + final String? messageSig; + + Message({ + required this.id, + required this.publicKey, + this.message, + this.messageSig, + }); + + factory Message.fromJson(Map json) { + return Message( + id: json['id'] as String, + publicKey: json['public_key'] as String, + message: json['message'] as String, + messageSig: json['message_sig'] as String, + ); + } +} + + +enum EpicTransactionType { + //Use Epic transaction type here + outgoing, + incoming, + sentToSelf, // should we keep this? + unknown; +} diff --git a/lib/services/coins/epiccash/epiccash_wallet.dart b/lib/services/coins/epiccash/epiccash_wallet.dart index e920baf66..bae1ec80e 100644 --- a/lib/services/coins/epiccash/epiccash_wallet.dart +++ b/lib/services/coins/epiccash/epiccash_wallet.dart @@ -1277,13 +1277,6 @@ class EpicCashWallet extends CoinServiceAPI Map txAddressInfo) async { try { var slatesToCommits = await getSlatesToCommits(); - // final slate0 = jsonDecode(slateMessage); - // final slate = jsonDecode(slate0[0] as String); - // final part1 = jsonDecode(slate[0] as String); - // final part2 = jsonDecode(slate[1] as String); - // final slateId = part1[0]['tx_slate_id']; - // final commitId = part2['tx']['body']['outputs'][0]['commit']; - final from = txAddressInfo['from']; final to = txAddressInfo['to']; slatesToCommits[slateData.slateId] = { @@ -1530,6 +1523,8 @@ class EpicCashWallet extends CoinServiceAPI }); // return message; final String transactions = message['result'] as String; + + print("RETURNED TRANSACTIONS IS $transactions"); final jsonTransactions = json.decode(transactions) as List; final List> txnsData = @@ -1594,7 +1589,6 @@ class EpicCashWallet extends CoinServiceAPI isLelantus: false, slateId: slateId, nonce: null, - // otherData: tx["id"].toString(), otherData: tx['onChainNote'].toString(), inputs: [], outputs: [],