mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-02-02 03:06:29 +00:00
organise classes into separate files
This commit is contained in:
parent
649dac33b3
commit
993914636b
3 changed files with 118 additions and 117 deletions
54
lib/models/isar/models/blockchain_data/v2/input_v2.dart
Normal file
54
lib/models/isar/models/blockchain_data/v2/input_v2.dart
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
class InputV2 {
|
||||||
|
final String scriptSigHex;
|
||||||
|
final int sequence;
|
||||||
|
final String txid;
|
||||||
|
final int vout;
|
||||||
|
|
||||||
|
InputV2({
|
||||||
|
required this.scriptSigHex,
|
||||||
|
required this.sequence,
|
||||||
|
required this.txid,
|
||||||
|
required this.vout,
|
||||||
|
});
|
||||||
|
|
||||||
|
static InputV2 fromElectrumXJson(Map<String, dynamic> json) {
|
||||||
|
try {
|
||||||
|
return InputV2(
|
||||||
|
scriptSigHex: json["scriptSig"]["hex"] as String,
|
||||||
|
sequence: json["sequence"] as int,
|
||||||
|
txid: json["txid"] as String,
|
||||||
|
vout: json["vout"] as int);
|
||||||
|
} catch (e) {
|
||||||
|
throw Exception("Failed to parse InputV2 from $json");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
if (identical(this, other)) return true;
|
||||||
|
|
||||||
|
return other is InputV2 &&
|
||||||
|
other.scriptSigHex == scriptSigHex &&
|
||||||
|
other.sequence == sequence &&
|
||||||
|
other.txid == txid &&
|
||||||
|
other.vout == vout;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(
|
||||||
|
scriptSigHex,
|
||||||
|
sequence,
|
||||||
|
txid,
|
||||||
|
vout,
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'InputV2(\n'
|
||||||
|
' scriptSigHex: $scriptSigHex,\n'
|
||||||
|
' sequence: $sequence,\n'
|
||||||
|
' txid: $txid,\n'
|
||||||
|
' vout: $vout,\n'
|
||||||
|
')';
|
||||||
|
}
|
||||||
|
}
|
62
lib/models/isar/models/blockchain_data/v2/output_v2.dart
Normal file
62
lib/models/isar/models/blockchain_data/v2/output_v2.dart
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
import 'package:decimal/decimal.dart';
|
||||||
|
|
||||||
|
class OutputV2 {
|
||||||
|
final String scriptPubKeyHex;
|
||||||
|
final String valueStringSats;
|
||||||
|
|
||||||
|
BigInt get value => BigInt.parse(valueStringSats);
|
||||||
|
|
||||||
|
OutputV2({
|
||||||
|
required this.scriptPubKeyHex,
|
||||||
|
required this.valueStringSats,
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: move this to a subclass based on coin since we don't know if the value will be sats or a decimal amount
|
||||||
|
// For now assume 8 decimal places
|
||||||
|
@Deprecated("See TODO and comments")
|
||||||
|
static OutputV2 fromElectrumXJson(Map<String, dynamic> json) {
|
||||||
|
try {
|
||||||
|
final temp = Decimal.parse(json["value"].toString());
|
||||||
|
if (temp < Decimal.zero) {
|
||||||
|
throw Exception("Negative value found");
|
||||||
|
}
|
||||||
|
|
||||||
|
final String valueStringSats;
|
||||||
|
if (temp.isInteger) {
|
||||||
|
valueStringSats = temp.toString();
|
||||||
|
} else {
|
||||||
|
valueStringSats = temp.shift(8).toBigInt().toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
return OutputV2(
|
||||||
|
scriptPubKeyHex: json["scriptPubKey"]["hex"] as String,
|
||||||
|
valueStringSats: valueStringSats,
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
throw Exception("Failed to parse OutputV2 from $json");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
if (identical(this, other)) return true;
|
||||||
|
|
||||||
|
return other is OutputV2 &&
|
||||||
|
other.scriptPubKeyHex == scriptPubKeyHex &&
|
||||||
|
other.valueStringSats == valueStringSats;
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode => Object.hash(
|
||||||
|
scriptPubKeyHex,
|
||||||
|
valueStringSats,
|
||||||
|
);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'OutputV2(\n'
|
||||||
|
' scriptPubKeyHex: $scriptPubKeyHex,\n'
|
||||||
|
' value: $value,\n'
|
||||||
|
')';
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
import 'package:decimal/decimal.dart';
|
import 'package:stackwallet/models/isar/models/blockchain_data/v2/input_v2.dart';
|
||||||
|
import 'package:stackwallet/models/isar/models/blockchain_data/v2/output_v2.dart';
|
||||||
|
|
||||||
class TransactionV2 {
|
class TransactionV2 {
|
||||||
final String hash;
|
final String hash;
|
||||||
|
@ -105,122 +106,6 @@ class TransactionV2 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class InputV2 {
|
|
||||||
final String scriptSigHex;
|
|
||||||
final int sequence;
|
|
||||||
final String txid;
|
|
||||||
final int vout;
|
|
||||||
|
|
||||||
InputV2({
|
|
||||||
required this.scriptSigHex,
|
|
||||||
required this.sequence,
|
|
||||||
required this.txid,
|
|
||||||
required this.vout,
|
|
||||||
});
|
|
||||||
|
|
||||||
static InputV2 fromElectrumXJson(Map<String, dynamic> json) {
|
|
||||||
try {
|
|
||||||
return InputV2(
|
|
||||||
scriptSigHex: json["scriptSig"]["hex"] as String,
|
|
||||||
sequence: json["sequence"] as int,
|
|
||||||
txid: json["txid"] as String,
|
|
||||||
vout: json["vout"] as int);
|
|
||||||
} catch (e) {
|
|
||||||
throw Exception("Failed to parse InputV2 from $json");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) {
|
|
||||||
if (identical(this, other)) return true;
|
|
||||||
|
|
||||||
return other is InputV2 &&
|
|
||||||
other.scriptSigHex == scriptSigHex &&
|
|
||||||
other.sequence == sequence &&
|
|
||||||
other.txid == txid &&
|
|
||||||
other.vout == vout;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode => Object.hash(
|
|
||||||
scriptSigHex,
|
|
||||||
sequence,
|
|
||||||
txid,
|
|
||||||
vout,
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'InputV2(\n'
|
|
||||||
' scriptSigHex: $scriptSigHex,\n'
|
|
||||||
' sequence: $sequence,\n'
|
|
||||||
' txid: $txid,\n'
|
|
||||||
' vout: $vout,\n'
|
|
||||||
')';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class OutputV2 {
|
|
||||||
final String scriptPubKeyHex;
|
|
||||||
final String valueStringSats;
|
|
||||||
|
|
||||||
BigInt get value => BigInt.parse(valueStringSats);
|
|
||||||
|
|
||||||
OutputV2({
|
|
||||||
required this.scriptPubKeyHex,
|
|
||||||
required this.valueStringSats,
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: move this to a subclass based on coin since we don't know if the value will be sats or a decimal amount
|
|
||||||
// For now assume 8 decimal places
|
|
||||||
@Deprecated("See TODO and comments")
|
|
||||||
static OutputV2 fromElectrumXJson(Map<String, dynamic> json) {
|
|
||||||
try {
|
|
||||||
final temp = Decimal.parse(json["value"].toString());
|
|
||||||
if (temp < Decimal.zero) {
|
|
||||||
throw Exception("Negative value found");
|
|
||||||
}
|
|
||||||
|
|
||||||
final String valueStringSats;
|
|
||||||
if (temp.isInteger) {
|
|
||||||
valueStringSats = temp.toString();
|
|
||||||
} else {
|
|
||||||
valueStringSats = temp.shift(8).toBigInt().toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
return OutputV2(
|
|
||||||
scriptPubKeyHex: json["scriptPubKey"]["hex"] as String,
|
|
||||||
valueStringSats: valueStringSats,
|
|
||||||
);
|
|
||||||
} catch (e) {
|
|
||||||
throw Exception("Failed to parse OutputV2 from $json");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
bool operator ==(Object other) {
|
|
||||||
if (identical(this, other)) return true;
|
|
||||||
|
|
||||||
return other is OutputV2 &&
|
|
||||||
other.scriptPubKeyHex == scriptPubKeyHex &&
|
|
||||||
other.valueStringSats == valueStringSats;
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
int get hashCode => Object.hash(
|
|
||||||
scriptPubKeyHex,
|
|
||||||
valueStringSats,
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String toString() {
|
|
||||||
return 'OutputV2(\n'
|
|
||||||
' scriptPubKeyHex: $scriptPubKeyHex,\n'
|
|
||||||
' value: $value,\n'
|
|
||||||
')';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool _listEquals<T, U>(List<T> a, List<U> b) {
|
bool _listEquals<T, U>(List<T> a, List<U> b) {
|
||||||
if (T != U) {
|
if (T != U) {
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in a new issue