mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2025-01-18 16:44:32 +00:00
Merge remote-tracking branch 'origin_SW/staging' into persistence
# Conflicts: # test/electrumx_test.mocks.dart
This commit is contained in:
commit
7484353854
25 changed files with 277 additions and 92 deletions
|
@ -12,6 +12,7 @@ part 'transaction.g.dart';
|
||||||
|
|
||||||
@Collection()
|
@Collection()
|
||||||
class Transaction {
|
class Transaction {
|
||||||
|
|
||||||
Transaction({
|
Transaction({
|
||||||
required this.walletId,
|
required this.walletId,
|
||||||
required this.txid,
|
required this.txid,
|
||||||
|
@ -29,6 +30,7 @@ class Transaction {
|
||||||
required this.inputs,
|
required this.inputs,
|
||||||
required this.outputs,
|
required this.outputs,
|
||||||
required this.nonce,
|
required this.nonce,
|
||||||
|
required this.numberOfMessages,
|
||||||
});
|
});
|
||||||
|
|
||||||
Tuple2<Transaction, Address?> copyWith({
|
Tuple2<Transaction, Address?> copyWith({
|
||||||
|
@ -50,6 +52,7 @@ class Transaction {
|
||||||
int? nonce,
|
int? nonce,
|
||||||
Id? id,
|
Id? id,
|
||||||
Address? address,
|
Address? address,
|
||||||
|
int? numberOfMessages,
|
||||||
}) {
|
}) {
|
||||||
return Tuple2(
|
return Tuple2(
|
||||||
Transaction(
|
Transaction(
|
||||||
|
@ -68,7 +71,8 @@ class Transaction {
|
||||||
otherData: otherData ?? this.otherData,
|
otherData: otherData ?? this.otherData,
|
||||||
nonce: nonce ?? this.nonce,
|
nonce: nonce ?? this.nonce,
|
||||||
inputs: inputs ?? this.inputs,
|
inputs: inputs ?? this.inputs,
|
||||||
outputs: outputs ?? this.outputs)
|
outputs: outputs ?? this.outputs,
|
||||||
|
numberOfMessages: numberOfMessages ?? this.numberOfMessages)
|
||||||
..id = id ?? this.id,
|
..id = id ?? this.id,
|
||||||
address ?? this.address.value,
|
address ?? this.address.value,
|
||||||
);
|
);
|
||||||
|
@ -114,6 +118,8 @@ class Transaction {
|
||||||
|
|
||||||
late final List<Output> outputs;
|
late final List<Output> outputs;
|
||||||
|
|
||||||
|
late final int? numberOfMessages;
|
||||||
|
|
||||||
@Backlink(to: "transactions")
|
@Backlink(to: "transactions")
|
||||||
final address = IsarLink<Address>();
|
final address = IsarLink<Address>();
|
||||||
|
|
||||||
|
@ -154,6 +160,7 @@ class Transaction {
|
||||||
"address: ${address.value}, "
|
"address: ${address.value}, "
|
||||||
"inputsLength: ${inputs.length}, "
|
"inputsLength: ${inputs.length}, "
|
||||||
"outputsLength: ${outputs.length}, "
|
"outputsLength: ${outputs.length}, "
|
||||||
|
"numberOfMessages: $numberOfMessages, "
|
||||||
"}";
|
"}";
|
||||||
|
|
||||||
String toJsonString() {
|
String toJsonString() {
|
||||||
|
@ -175,6 +182,7 @@ class Transaction {
|
||||||
"address": address.value?.toJsonString(),
|
"address": address.value?.toJsonString(),
|
||||||
"inputs": inputs.map((e) => e.toJsonString()).toList(),
|
"inputs": inputs.map((e) => e.toJsonString()).toList(),
|
||||||
"outputs": outputs.map((e) => e.toJsonString()).toList(),
|
"outputs": outputs.map((e) => e.toJsonString()).toList(),
|
||||||
|
"numberOfMessages": numberOfMessages,
|
||||||
};
|
};
|
||||||
return jsonEncode(result);
|
return jsonEncode(result);
|
||||||
}
|
}
|
||||||
|
@ -205,6 +213,7 @@ class Transaction {
|
||||||
outputs: List<String>.from(json["outputs"] as List)
|
outputs: List<String>.from(json["outputs"] as List)
|
||||||
.map((e) => Output.fromJsonString(e))
|
.map((e) => Output.fromJsonString(e))
|
||||||
.toList(),
|
.toList(),
|
||||||
|
numberOfMessages: json["numberOfMessages"] as int,
|
||||||
);
|
);
|
||||||
if (json["address"] == null) {
|
if (json["address"] == null) {
|
||||||
return Tuple2(transaction, null);
|
return Tuple2(transaction, null);
|
||||||
|
|
|
@ -58,46 +58,51 @@ const TransactionSchema = CollectionSchema(
|
||||||
name: r'nonce',
|
name: r'nonce',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'otherData': PropertySchema(
|
r'numberOfMessages': PropertySchema(
|
||||||
id: 8,
|
id: 8,
|
||||||
|
name: r'numberOfMessages',
|
||||||
|
type: IsarType.long,
|
||||||
|
),
|
||||||
|
r'otherData': PropertySchema(
|
||||||
|
id: 9,
|
||||||
name: r'otherData',
|
name: r'otherData',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
),
|
),
|
||||||
r'outputs': PropertySchema(
|
r'outputs': PropertySchema(
|
||||||
id: 9,
|
id: 10,
|
||||||
name: r'outputs',
|
name: r'outputs',
|
||||||
type: IsarType.objectList,
|
type: IsarType.objectList,
|
||||||
target: r'Output',
|
target: r'Output',
|
||||||
),
|
),
|
||||||
r'slateId': PropertySchema(
|
r'slateId': PropertySchema(
|
||||||
id: 10,
|
id: 11,
|
||||||
name: r'slateId',
|
name: r'slateId',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
),
|
),
|
||||||
r'subType': PropertySchema(
|
r'subType': PropertySchema(
|
||||||
id: 11,
|
id: 12,
|
||||||
name: r'subType',
|
name: r'subType',
|
||||||
type: IsarType.byte,
|
type: IsarType.byte,
|
||||||
enumMap: _TransactionsubTypeEnumValueMap,
|
enumMap: _TransactionsubTypeEnumValueMap,
|
||||||
),
|
),
|
||||||
r'timestamp': PropertySchema(
|
r'timestamp': PropertySchema(
|
||||||
id: 12,
|
id: 13,
|
||||||
name: r'timestamp',
|
name: r'timestamp',
|
||||||
type: IsarType.long,
|
type: IsarType.long,
|
||||||
),
|
),
|
||||||
r'txid': PropertySchema(
|
r'txid': PropertySchema(
|
||||||
id: 13,
|
id: 14,
|
||||||
name: r'txid',
|
name: r'txid',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
),
|
),
|
||||||
r'type': PropertySchema(
|
r'type': PropertySchema(
|
||||||
id: 14,
|
id: 15,
|
||||||
name: r'type',
|
name: r'type',
|
||||||
type: IsarType.byte,
|
type: IsarType.byte,
|
||||||
enumMap: _TransactiontypeEnumValueMap,
|
enumMap: _TransactiontypeEnumValueMap,
|
||||||
),
|
),
|
||||||
r'walletId': PropertySchema(
|
r'walletId': PropertySchema(
|
||||||
id: 15,
|
id: 16,
|
||||||
name: r'walletId',
|
name: r'walletId',
|
||||||
type: IsarType.string,
|
type: IsarType.string,
|
||||||
)
|
)
|
||||||
|
@ -233,19 +238,20 @@ void _transactionSerialize(
|
||||||
writer.writeBool(offsets[5], object.isCancelled);
|
writer.writeBool(offsets[5], object.isCancelled);
|
||||||
writer.writeBool(offsets[6], object.isLelantus);
|
writer.writeBool(offsets[6], object.isLelantus);
|
||||||
writer.writeLong(offsets[7], object.nonce);
|
writer.writeLong(offsets[7], object.nonce);
|
||||||
writer.writeString(offsets[8], object.otherData);
|
writer.writeLong(offsets[8], object.numberOfMessages);
|
||||||
|
writer.writeString(offsets[9], object.otherData);
|
||||||
writer.writeObjectList<Output>(
|
writer.writeObjectList<Output>(
|
||||||
offsets[9],
|
offsets[10],
|
||||||
allOffsets,
|
allOffsets,
|
||||||
OutputSchema.serialize,
|
OutputSchema.serialize,
|
||||||
object.outputs,
|
object.outputs,
|
||||||
);
|
);
|
||||||
writer.writeString(offsets[10], object.slateId);
|
writer.writeString(offsets[11], object.slateId);
|
||||||
writer.writeByte(offsets[11], object.subType.index);
|
writer.writeByte(offsets[12], object.subType.index);
|
||||||
writer.writeLong(offsets[12], object.timestamp);
|
writer.writeLong(offsets[13], object.timestamp);
|
||||||
writer.writeString(offsets[13], object.txid);
|
writer.writeString(offsets[14], object.txid);
|
||||||
writer.writeByte(offsets[14], object.type.index);
|
writer.writeByte(offsets[15], object.type.index);
|
||||||
writer.writeString(offsets[15], object.walletId);
|
writer.writeString(offsets[16], object.walletId);
|
||||||
}
|
}
|
||||||
|
|
||||||
Transaction _transactionDeserialize(
|
Transaction _transactionDeserialize(
|
||||||
|
@ -269,23 +275,24 @@ Transaction _transactionDeserialize(
|
||||||
isCancelled: reader.readBool(offsets[5]),
|
isCancelled: reader.readBool(offsets[5]),
|
||||||
isLelantus: reader.readBoolOrNull(offsets[6]),
|
isLelantus: reader.readBoolOrNull(offsets[6]),
|
||||||
nonce: reader.readLongOrNull(offsets[7]),
|
nonce: reader.readLongOrNull(offsets[7]),
|
||||||
otherData: reader.readStringOrNull(offsets[8]),
|
numberOfMessages: reader.readLongOrNull(offsets[8]),
|
||||||
|
otherData: reader.readStringOrNull(offsets[9]),
|
||||||
outputs: reader.readObjectList<Output>(
|
outputs: reader.readObjectList<Output>(
|
||||||
offsets[9],
|
offsets[10],
|
||||||
OutputSchema.deserialize,
|
OutputSchema.deserialize,
|
||||||
allOffsets,
|
allOffsets,
|
||||||
Output(),
|
Output(),
|
||||||
) ??
|
) ??
|
||||||
[],
|
[],
|
||||||
slateId: reader.readStringOrNull(offsets[10]),
|
slateId: reader.readStringOrNull(offsets[11]),
|
||||||
subType:
|
subType:
|
||||||
_TransactionsubTypeValueEnumMap[reader.readByteOrNull(offsets[11])] ??
|
_TransactionsubTypeValueEnumMap[reader.readByteOrNull(offsets[12])] ??
|
||||||
TransactionSubType.none,
|
TransactionSubType.none,
|
||||||
timestamp: reader.readLong(offsets[12]),
|
timestamp: reader.readLong(offsets[13]),
|
||||||
txid: reader.readString(offsets[13]),
|
txid: reader.readString(offsets[14]),
|
||||||
type: _TransactiontypeValueEnumMap[reader.readByteOrNull(offsets[14])] ??
|
type: _TransactiontypeValueEnumMap[reader.readByteOrNull(offsets[15])] ??
|
||||||
TransactionType.outgoing,
|
TransactionType.outgoing,
|
||||||
walletId: reader.readString(offsets[15]),
|
walletId: reader.readString(offsets[16]),
|
||||||
);
|
);
|
||||||
object.id = id;
|
object.id = id;
|
||||||
return object;
|
return object;
|
||||||
|
@ -321,8 +328,10 @@ P _transactionDeserializeProp<P>(
|
||||||
case 7:
|
case 7:
|
||||||
return (reader.readLongOrNull(offset)) as P;
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
case 8:
|
case 8:
|
||||||
return (reader.readStringOrNull(offset)) as P;
|
return (reader.readLongOrNull(offset)) as P;
|
||||||
case 9:
|
case 9:
|
||||||
|
return (reader.readStringOrNull(offset)) as P;
|
||||||
|
case 10:
|
||||||
return (reader.readObjectList<Output>(
|
return (reader.readObjectList<Output>(
|
||||||
offset,
|
offset,
|
||||||
OutputSchema.deserialize,
|
OutputSchema.deserialize,
|
||||||
|
@ -330,19 +339,19 @@ P _transactionDeserializeProp<P>(
|
||||||
Output(),
|
Output(),
|
||||||
) ??
|
) ??
|
||||||
[]) as P;
|
[]) as P;
|
||||||
case 10:
|
|
||||||
return (reader.readStringOrNull(offset)) as P;
|
|
||||||
case 11:
|
case 11:
|
||||||
|
return (reader.readStringOrNull(offset)) as P;
|
||||||
|
case 12:
|
||||||
return (_TransactionsubTypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
return (_TransactionsubTypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
||||||
TransactionSubType.none) as P;
|
TransactionSubType.none) as P;
|
||||||
case 12:
|
|
||||||
return (reader.readLong(offset)) as P;
|
|
||||||
case 13:
|
case 13:
|
||||||
return (reader.readString(offset)) as P;
|
return (reader.readLong(offset)) as P;
|
||||||
case 14:
|
case 14:
|
||||||
|
return (reader.readString(offset)) as P;
|
||||||
|
case 15:
|
||||||
return (_TransactiontypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
return (_TransactiontypeValueEnumMap[reader.readByteOrNull(offset)] ??
|
||||||
TransactionType.outgoing) as P;
|
TransactionType.outgoing) as P;
|
||||||
case 15:
|
case 16:
|
||||||
return (reader.readString(offset)) as P;
|
return (reader.readString(offset)) as P;
|
||||||
default:
|
default:
|
||||||
throw IsarError('Unknown property with id $propertyId');
|
throw IsarError('Unknown property with id $propertyId');
|
||||||
|
@ -1374,6 +1383,80 @@ extension TransactionQueryFilter
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
numberOfMessagesIsNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const FilterCondition.isNull(
|
||||||
|
property: r'numberOfMessages',
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
numberOfMessagesIsNotNull() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(const FilterCondition.isNotNull(
|
||||||
|
property: r'numberOfMessages',
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
numberOfMessagesEqualTo(int? value) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.equalTo(
|
||||||
|
property: r'numberOfMessages',
|
||||||
|
value: value,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
numberOfMessagesGreaterThan(
|
||||||
|
int? value, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||||
|
include: include,
|
||||||
|
property: r'numberOfMessages',
|
||||||
|
value: value,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
numberOfMessagesLessThan(
|
||||||
|
int? value, {
|
||||||
|
bool include = false,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.lessThan(
|
||||||
|
include: include,
|
||||||
|
property: r'numberOfMessages',
|
||||||
|
value: value,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
|
numberOfMessagesBetween(
|
||||||
|
int? lower,
|
||||||
|
int? upper, {
|
||||||
|
bool includeLower = true,
|
||||||
|
bool includeUpper = true,
|
||||||
|
}) {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addFilterCondition(FilterCondition.between(
|
||||||
|
property: r'numberOfMessages',
|
||||||
|
lower: lower,
|
||||||
|
includeLower: includeLower,
|
||||||
|
upper: upper,
|
||||||
|
includeUpper: includeUpper,
|
||||||
|
));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
QueryBuilder<Transaction, Transaction, QAfterFilterCondition>
|
||||||
otherDataIsNull() {
|
otherDataIsNull() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -2320,6 +2403,20 @@ extension TransactionQuerySortBy
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterSortBy>
|
||||||
|
sortByNumberOfMessages() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(r'numberOfMessages', Sort.asc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterSortBy>
|
||||||
|
sortByNumberOfMessagesDesc() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(r'numberOfMessages', Sort.desc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterSortBy> sortByOtherData() {
|
QueryBuilder<Transaction, Transaction, QAfterSortBy> sortByOtherData() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'otherData', Sort.asc);
|
return query.addSortBy(r'otherData', Sort.asc);
|
||||||
|
@ -2504,6 +2601,20 @@ extension TransactionQuerySortThenBy
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterSortBy>
|
||||||
|
thenByNumberOfMessages() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(r'numberOfMessages', Sort.asc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QAfterSortBy>
|
||||||
|
thenByNumberOfMessagesDesc() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addSortBy(r'numberOfMessages', Sort.desc);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QAfterSortBy> thenByOtherData() {
|
QueryBuilder<Transaction, Transaction, QAfterSortBy> thenByOtherData() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addSortBy(r'otherData', Sort.asc);
|
return query.addSortBy(r'otherData', Sort.asc);
|
||||||
|
@ -2634,6 +2745,13 @@ extension TransactionQueryWhereDistinct
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, Transaction, QDistinct>
|
||||||
|
distinctByNumberOfMessages() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addDistinctBy(r'numberOfMessages');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, Transaction, QDistinct> distinctByOtherData(
|
QueryBuilder<Transaction, Transaction, QDistinct> distinctByOtherData(
|
||||||
{bool caseSensitive = true}) {
|
{bool caseSensitive = true}) {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
@ -2737,6 +2855,12 @@ extension TransactionQueryProperty
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QueryBuilder<Transaction, int?, QQueryOperations> numberOfMessagesProperty() {
|
||||||
|
return QueryBuilder.apply(this, (query) {
|
||||||
|
return query.addPropertyName(r'numberOfMessages');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
QueryBuilder<Transaction, String?, QQueryOperations> otherDataProperty() {
|
QueryBuilder<Transaction, String?, QQueryOperations> otherDataProperty() {
|
||||||
return QueryBuilder.apply(this, (query) {
|
return QueryBuilder.apply(this, (query) {
|
||||||
return query.addPropertyName(r'otherData');
|
return query.addPropertyName(r'otherData');
|
||||||
|
|
|
@ -155,6 +155,9 @@ class Transaction {
|
||||||
// @HiveField(18)
|
// @HiveField(18)
|
||||||
final String? otherData;
|
final String? otherData;
|
||||||
|
|
||||||
|
// @HiveField(16)
|
||||||
|
final int? numberOfMessages;
|
||||||
|
|
||||||
Transaction({
|
Transaction({
|
||||||
required this.txid,
|
required this.txid,
|
||||||
required this.confirmedStatus,
|
required this.confirmedStatus,
|
||||||
|
@ -176,6 +179,7 @@ class Transaction {
|
||||||
this.isCancelled = false,
|
this.isCancelled = false,
|
||||||
this.slateId,
|
this.slateId,
|
||||||
this.otherData,
|
this.otherData,
|
||||||
|
this.numberOfMessages,
|
||||||
});
|
});
|
||||||
|
|
||||||
factory Transaction.fromJson(Map<String, dynamic> json) {
|
factory Transaction.fromJson(Map<String, dynamic> json) {
|
||||||
|
@ -211,6 +215,7 @@ class Transaction {
|
||||||
isCancelled: json["isCancelled"] as bool? ?? false,
|
isCancelled: json["isCancelled"] as bool? ?? false,
|
||||||
slateId: json["slateId"] as String?,
|
slateId: json["slateId"] as String?,
|
||||||
otherData: json["otherData"] as String?,
|
otherData: json["otherData"] as String?,
|
||||||
|
numberOfMessages: json["numberOfMessages"] as int?,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,6 +274,7 @@ class Transaction {
|
||||||
bool? isCancelled,
|
bool? isCancelled,
|
||||||
String? slateId,
|
String? slateId,
|
||||||
String? otherData,
|
String? otherData,
|
||||||
|
int? numberOfMessages,
|
||||||
}) {
|
}) {
|
||||||
return Transaction(
|
return Transaction(
|
||||||
txid: txid ?? this.txid,
|
txid: txid ?? this.txid,
|
||||||
|
@ -292,13 +298,14 @@ class Transaction {
|
||||||
isCancelled: isCancelled ?? this.isCancelled,
|
isCancelled: isCancelled ?? this.isCancelled,
|
||||||
slateId: slateId ?? this.slateId,
|
slateId: slateId ?? this.slateId,
|
||||||
otherData: otherData ?? this.otherData,
|
otherData: otherData ?? this.otherData,
|
||||||
|
numberOfMessages: numberOfMessages ?? this.numberOfMessages,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
String transaction =
|
String transaction =
|
||||||
"{txid: $txid, type: $txType, subType: $subType, value: $amount, fee: $fees, height: $height, confirm: $confirmedStatus, confirmations: $confirmations, address: $address, timestamp: $timestamp, worthNow: $worthNow, inputs: $inputs, slateid: $slateId }";
|
"{txid: $txid, type: $txType, subType: $subType, value: $amount, fee: $fees, height: $height, confirm: $confirmedStatus, confirmations: $confirmations, address: $address, timestamp: $timestamp, worthNow: $worthNow, inputs: $inputs, slateid: $slateId, numberOfMessages: $numberOfMessages }";
|
||||||
return transaction;
|
return transaction;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,12 +93,7 @@ class _TransactionsListState extends ConsumerState<TransactionsList> {
|
||||||
children: [
|
children: [
|
||||||
TransactionCard(
|
TransactionCard(
|
||||||
// this may mess with combined firo transactions
|
// this may mess with combined firo transactions
|
||||||
key: isConfirmed
|
key: UniqueKey(), //
|
||||||
? Key(tx.txid +
|
|
||||||
tx.type.name +
|
|
||||||
tx.address.value.toString() +
|
|
||||||
tx.height.toString())
|
|
||||||
: UniqueKey(), //
|
|
||||||
transaction: tx,
|
transaction: tx,
|
||||||
walletId: widget.walletId,
|
walletId: widget.walletId,
|
||||||
),
|
),
|
||||||
|
@ -193,12 +188,7 @@ class _TransactionsListState extends ConsumerState<TransactionsList> {
|
||||||
),
|
),
|
||||||
child: TransactionCard(
|
child: TransactionCard(
|
||||||
// this may mess with combined firo transactions
|
// this may mess with combined firo transactions
|
||||||
key: isConfirmed
|
key: UniqueKey(),
|
||||||
? Key(tx.txid +
|
|
||||||
tx.type.name +
|
|
||||||
tx.address.value.toString() +
|
|
||||||
tx.height.toString())
|
|
||||||
: UniqueKey(),
|
|
||||||
transaction: tx,
|
transaction: tx,
|
||||||
walletId: widget.walletId,
|
walletId: widget.walletId,
|
||||||
),
|
),
|
||||||
|
|
|
@ -126,6 +126,37 @@ class _TransactionDetailsViewState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (coin == Coin.epicCash) {
|
||||||
|
if (_transaction.isCancelled) {
|
||||||
|
return "Cancelled";
|
||||||
|
} else if (type == TransactionType.incoming) {
|
||||||
|
if (tx.isConfirmed(height, coin.requiredConfirmations)) {
|
||||||
|
return "Received";
|
||||||
|
} else {
|
||||||
|
if (_transaction.numberOfMessages == 1) {
|
||||||
|
return "Receiving (waiting for sender)";
|
||||||
|
} else if ((_transaction.numberOfMessages ?? 0) > 1) {
|
||||||
|
return
|
||||||
|
"Receiving (waiting for confirmations)"; // TODO test if the sender still has to open again after the receiver has 2 messages present, ie. sender->receiver->sender->node (yes) vs. sender->receiver->node (no)
|
||||||
|
} else {
|
||||||
|
return "Receiving";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (type == TransactionType.outgoing) {
|
||||||
|
if (tx.isConfirmed(height, coin.requiredConfirmations)) {
|
||||||
|
return "Sent (confirmed)";
|
||||||
|
} else {
|
||||||
|
if (_transaction.numberOfMessages == 1) {
|
||||||
|
return "Sending (waiting for receiver)";
|
||||||
|
} else if ((_transaction.numberOfMessages ?? 0) > 1) {
|
||||||
|
return "Sending (waiting for confirmations)";
|
||||||
|
} else {
|
||||||
|
return "Sending";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (type == TransactionType.incoming) {
|
if (type == TransactionType.incoming) {
|
||||||
// if (_transaction.isMinting) {
|
// if (_transaction.isMinting) {
|
||||||
// return "Minting";
|
// return "Minting";
|
||||||
|
|
|
@ -1293,6 +1293,7 @@ class BitcoinWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
|
|
@ -1158,6 +1158,7 @@ class BitcoinCashWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
@ -2142,6 +2143,7 @@ class BitcoinCashWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: inputs,
|
inputs: inputs,
|
||||||
outputs: outputs,
|
outputs: outputs,
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txns.add(Tuple2(tx, transactionAddress));
|
txns.add(Tuple2(tx, transactionAddress));
|
||||||
|
|
|
@ -1145,6 +1145,7 @@ class DogecoinWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
|
|
@ -1365,6 +1365,7 @@ class ECashWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: inputs,
|
inputs: inputs,
|
||||||
outputs: outputs,
|
outputs: outputs,
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txns.add(Tuple2(tx, transactionAddress));
|
txns.add(Tuple2(tx, transactionAddress));
|
||||||
|
@ -2775,6 +2776,7 @@ class ECashWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
|
|
@ -1153,10 +1153,6 @@ class EpicCashWallet extends CoinServiceAPI
|
||||||
Future<bool> startScans() async {
|
Future<bool> startScans() async {
|
||||||
try {
|
try {
|
||||||
if (ListenerManager.pointer != null) {
|
if (ListenerManager.pointer != null) {
|
||||||
Logging.instance
|
|
||||||
.log("LISTENER HANDLER IS NOT NULL ....", level: LogLevel.Info);
|
|
||||||
Logging.instance
|
|
||||||
.log("STOPPING ANY WALLET LISTENER ....", level: LogLevel.Info);
|
|
||||||
epicboxListenerStop(ListenerManager.pointer!);
|
epicboxListenerStop(ListenerManager.pointer!);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1648,7 +1644,7 @@ class EpicCashWallet extends CoinServiceAPI
|
||||||
Future<void> _refreshTransactions() async {
|
Future<void> _refreshTransactions() async {
|
||||||
// final currentChainHeight = await chainHeight;
|
// final currentChainHeight = await chainHeight;
|
||||||
final wallet = await _secureStore.read(key: '${_walletId}_wallet');
|
final wallet = await _secureStore.read(key: '${_walletId}_wallet');
|
||||||
const refreshFromNode = 0;
|
const refreshFromNode = 1;
|
||||||
|
|
||||||
dynamic message;
|
dynamic message;
|
||||||
await m.protect(() async {
|
await m.protect(() async {
|
||||||
|
@ -1714,6 +1710,7 @@ class EpicCashWallet extends CoinServiceAPI
|
||||||
?[tx["tx_type"] == "TxReceived" ? "from" : "to"] as String? ??
|
?[tx["tx_type"] == "TxReceived" ? "from" : "to"] as String? ??
|
||||||
"";
|
"";
|
||||||
String? commitId = slatesToCommits[slateId]?['commitId'] as String?;
|
String? commitId = slatesToCommits[slateId]?['commitId'] as String?;
|
||||||
|
tx['numberOfMessages'] = tx['messages']?['messages']?.length;
|
||||||
|
|
||||||
int? height;
|
int? height;
|
||||||
|
|
||||||
|
@ -1726,6 +1723,7 @@ class EpicCashWallet extends CoinServiceAPI
|
||||||
final isIncoming = (tx["tx_type"] == "TxReceived" ||
|
final isIncoming = (tx["tx_type"] == "TxReceived" ||
|
||||||
tx["tx_type"] == "TxReceivedCancelled");
|
tx["tx_type"] == "TxReceivedCancelled");
|
||||||
|
|
||||||
|
|
||||||
final txn = isar_models.Transaction(
|
final txn = isar_models.Transaction(
|
||||||
walletId: walletId,
|
walletId: walletId,
|
||||||
txid: commitId ?? tx["id"].toString(),
|
txid: commitId ?? tx["id"].toString(),
|
||||||
|
@ -1749,6 +1747,7 @@ class EpicCashWallet extends CoinServiceAPI
|
||||||
otherData: tx["id"].toString(),
|
otherData: tx["id"].toString(),
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: ((tx["numberOfMessages"] == null) ? 0 : tx["numberOfMessages"]) as int,
|
||||||
);
|
);
|
||||||
|
|
||||||
// txn.address =
|
// txn.address =
|
||||||
|
|
|
@ -944,6 +944,7 @@ class EthereumWallet extends CoinServiceAPI with WalletCache, WalletDB {
|
||||||
response.value?.nonce.toBigIntFromHex.toInt(),
|
response.value?.nonce.toBigIntFromHex.toInt(),
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
Address? address = await db.getAddress(
|
Address? address = await db.getAddress(
|
||||||
|
@ -1035,6 +1036,7 @@ class EthereumWallet extends CoinServiceAPI with WalletCache, WalletDB {
|
||||||
nonce: tuple.item2,
|
nonce: tuple.item2,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
Address? transactionAddress = await db
|
Address? transactionAddress = await db
|
||||||
|
|
|
@ -449,6 +449,7 @@ Future<Map<dynamic, dynamic>> staticProcessRestore(
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: element.inputs,
|
inputs: element.inputs,
|
||||||
outputs: element.outputs,
|
outputs: element.outputs,
|
||||||
|
numberOfMessages: null,
|
||||||
)..address.value = element.address.value;
|
)..address.value = element.address.value;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -891,6 +892,7 @@ class FiroWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
@ -3038,6 +3040,7 @@ class FiroWallet extends CoinServiceAPI
|
||||||
otherData: transactionInfo["otherData"] as String?,
|
otherData: transactionInfo["otherData"] as String?,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final transactionAddress = await db
|
final transactionAddress = await db
|
||||||
|
@ -3518,6 +3521,7 @@ class FiroWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: ins,
|
inputs: ins,
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txnsData.add(Tuple2(tx, null));
|
txnsData.add(Tuple2(tx, null));
|
||||||
|
@ -3640,6 +3644,7 @@ class FiroWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: ins,
|
inputs: ins,
|
||||||
outputs: outs,
|
outputs: outs,
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txnsData.add(Tuple2(tx, transactionAddress));
|
txnsData.add(Tuple2(tx, transactionAddress));
|
||||||
|
@ -3791,6 +3796,7 @@ class FiroWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: ins,
|
inputs: ins,
|
||||||
outputs: outs,
|
outputs: outs,
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txnsData.add(Tuple2(tx, transactionAddress));
|
txnsData.add(Tuple2(tx, transactionAddress));
|
||||||
|
@ -5069,6 +5075,7 @@ class FiroWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = await db
|
final address = await db
|
||||||
|
|
|
@ -1276,6 +1276,7 @@ class LitecoinWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
|
|
@ -954,6 +954,7 @@ class MoneroWallet extends CoinServiceAPI with WalletCache, WalletDB {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txnsData.add(Tuple2(txn, address));
|
txnsData.add(Tuple2(txn, address));
|
||||||
|
|
|
@ -1265,6 +1265,7 @@ class NamecoinWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
|
|
@ -1193,6 +1193,7 @@ class ParticlWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
final address = txData["address"] is String
|
final address = txData["address"] is String
|
||||||
|
@ -2396,6 +2397,7 @@ class ParticlWallet extends CoinServiceAPI
|
||||||
nonce: null,
|
nonce: null,
|
||||||
slateId: null,
|
slateId: null,
|
||||||
otherData: null,
|
otherData: null,
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txns.add(Tuple2(tx, transactionAddress));
|
txns.add(Tuple2(tx, transactionAddress));
|
||||||
|
|
|
@ -1041,6 +1041,7 @@ class WowneroWallet extends CoinServiceAPI with WalletCache, WalletDB {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
txnsData.add(Tuple2(txn, address));
|
txnsData.add(Tuple2(txn, address));
|
||||||
|
|
|
@ -169,6 +169,7 @@ class EthTokenWallet extends ChangeNotifier with EthTokenCache {
|
||||||
response.value?.nonce.toBigIntFromHex.toInt(),
|
response.value?.nonce.toBigIntFromHex.toInt(),
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
Address? address = await ethWallet.db.getAddress(
|
Address? address = await ethWallet.db.getAddress(
|
||||||
|
@ -519,6 +520,7 @@ class EthTokenWallet extends ChangeNotifier with EthTokenCache {
|
||||||
otherData: tuple.item1.address,
|
otherData: tuple.item1.address,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
Address? transactionAddress = await ethWallet.db
|
Address? transactionAddress = await ethWallet.db
|
||||||
|
|
|
@ -258,6 +258,7 @@ mixin ElectrumXParsing {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: ins,
|
inputs: ins,
|
||||||
outputs: outs,
|
outputs: outs,
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
|
|
||||||
return Tuple2(tx, transactionAddress);
|
return Tuple2(tx, transactionAddress);
|
||||||
|
|
|
@ -397,6 +397,7 @@ class DbVersionMigrator with WalletDB {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: tx.numberOfMessages,
|
||||||
);
|
);
|
||||||
|
|
||||||
if (tx.address.isEmpty) {
|
if (tx.address.isEmpty) {
|
||||||
|
|
|
@ -33,17 +33,6 @@ class _FakeDuration_0 extends _i1.SmartFake implements Duration {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
class _FakeJsonRPCResponse_1 extends _i1.SmartFake
|
|
||||||
implements _i2.JsonRPCResponse {
|
|
||||||
_FakeJsonRPCResponse_1(
|
|
||||||
Object parent,
|
|
||||||
Invocation parentInvocation,
|
|
||||||
) : super(
|
|
||||||
parent,
|
|
||||||
parentInvocation,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// A class which mocks [JsonRPC].
|
/// A class which mocks [JsonRPC].
|
||||||
///
|
///
|
||||||
/// See the documentation for Mockito's code generation for more information.
|
/// See the documentation for Mockito's code generation for more information.
|
||||||
|
@ -58,16 +47,40 @@ class MockJsonRPC extends _i1.Mock implements _i2.JsonRPC {
|
||||||
returnValue: false,
|
returnValue: false,
|
||||||
) as bool);
|
) as bool);
|
||||||
@override
|
@override
|
||||||
|
set useSSL(bool? _useSSL) => super.noSuchMethod(
|
||||||
|
Invocation.setter(
|
||||||
|
#useSSL,
|
||||||
|
_useSSL,
|
||||||
|
),
|
||||||
|
returnValueForMissingStub: null,
|
||||||
|
);
|
||||||
|
@override
|
||||||
String get host => (super.noSuchMethod(
|
String get host => (super.noSuchMethod(
|
||||||
Invocation.getter(#host),
|
Invocation.getter(#host),
|
||||||
returnValue: '',
|
returnValue: '',
|
||||||
) as String);
|
) as String);
|
||||||
@override
|
@override
|
||||||
|
set host(String? _host) => super.noSuchMethod(
|
||||||
|
Invocation.setter(
|
||||||
|
#host,
|
||||||
|
_host,
|
||||||
|
),
|
||||||
|
returnValueForMissingStub: null,
|
||||||
|
);
|
||||||
|
@override
|
||||||
int get port => (super.noSuchMethod(
|
int get port => (super.noSuchMethod(
|
||||||
Invocation.getter(#port),
|
Invocation.getter(#port),
|
||||||
returnValue: 0,
|
returnValue: 0,
|
||||||
) as int);
|
) as int);
|
||||||
@override
|
@override
|
||||||
|
set port(int? _port) => super.noSuchMethod(
|
||||||
|
Invocation.setter(
|
||||||
|
#port,
|
||||||
|
_port,
|
||||||
|
),
|
||||||
|
returnValueForMissingStub: null,
|
||||||
|
);
|
||||||
|
@override
|
||||||
Duration get connectionTimeout => (super.noSuchMethod(
|
Duration get connectionTimeout => (super.noSuchMethod(
|
||||||
Invocation.getter(#connectionTimeout),
|
Invocation.getter(#connectionTimeout),
|
||||||
returnValue: _FakeDuration_0(
|
returnValue: _FakeDuration_0(
|
||||||
|
@ -76,40 +89,21 @@ class MockJsonRPC extends _i1.Mock implements _i2.JsonRPC {
|
||||||
),
|
),
|
||||||
) as Duration);
|
) as Duration);
|
||||||
@override
|
@override
|
||||||
_i3.Future<_i2.JsonRPCResponse> request(String? jsonRpcRequest) =>
|
set connectionTimeout(Duration? _connectionTimeout) => super.noSuchMethod(
|
||||||
(super.noSuchMethod(
|
Invocation.setter(
|
||||||
|
#connectionTimeout,
|
||||||
|
_connectionTimeout,
|
||||||
|
),
|
||||||
|
returnValueForMissingStub: null,
|
||||||
|
);
|
||||||
|
@override
|
||||||
|
_i3.Future<dynamic> request(String? jsonRpcRequest) => (super.noSuchMethod(
|
||||||
Invocation.method(
|
Invocation.method(
|
||||||
#request,
|
#request,
|
||||||
[jsonRpcRequest],
|
[jsonRpcRequest],
|
||||||
),
|
),
|
||||||
returnValue:
|
returnValue: _i3.Future<dynamic>.value(),
|
||||||
_i3.Future<_i2.JsonRPCResponse>.value(_FakeJsonRPCResponse_1(
|
) as _i3.Future<dynamic>);
|
||||||
this,
|
|
||||||
Invocation.method(
|
|
||||||
#request,
|
|
||||||
[jsonRpcRequest],
|
|
||||||
),
|
|
||||||
)),
|
|
||||||
) as _i3.Future<_i2.JsonRPCResponse>);
|
|
||||||
@override
|
|
||||||
_i3.Future<void> disconnect({required String? reason}) => (super.noSuchMethod(
|
|
||||||
Invocation.method(
|
|
||||||
#disconnect,
|
|
||||||
[],
|
|
||||||
{#reason: reason},
|
|
||||||
),
|
|
||||||
returnValue: _i3.Future<void>.value(),
|
|
||||||
returnValueForMissingStub: _i3.Future<void>.value(),
|
|
||||||
) as _i3.Future<void>);
|
|
||||||
@override
|
|
||||||
_i3.Future<void> connect() => (super.noSuchMethod(
|
|
||||||
Invocation.method(
|
|
||||||
#connect,
|
|
||||||
[],
|
|
||||||
),
|
|
||||||
returnValue: _i3.Future<void>.value(),
|
|
||||||
returnValueForMissingStub: _i3.Future<void>.value(),
|
|
||||||
) as _i3.Future<void>);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A class which mocks [Prefs].
|
/// A class which mocks [Prefs].
|
||||||
|
|
|
@ -143,7 +143,7 @@ void main() {
|
||||||
]
|
]
|
||||||
});
|
});
|
||||||
expect(txChunk.toString(),
|
expect(txChunk.toString(),
|
||||||
"timestamp: 993260735 transactions: [\n {txid: txid, type: txType, subType: mint, value: 10, fee: 1, height: 1, confirm: true, confirmations: 1, address: address, timestamp: 1876352482, worthNow: 1, inputs: [], slateid: slateId } \n]");
|
"timestamp: 993260735 transactions: [\n {txid: txid, type: txType, subType: mint, value: 10, fee: 1, height: 1, confirm: true, confirmations: 1, address: address, timestamp: 1876352482, worthNow: 1, inputs: [], slateid: slateId, numberOfMessages: null } \n]");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -105,6 +105,7 @@ void main() {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.toList();
|
.toList();
|
||||||
|
|
|
@ -126,6 +126,7 @@ void main() {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
);
|
);
|
||||||
when(wallet.transactions).thenAnswer((_) async => [
|
when(wallet.transactions).thenAnswer((_) async => [
|
||||||
tx,
|
tx,
|
||||||
|
|
|
@ -71,6 +71,7 @@ void main() {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
)..address.value = Address(
|
)..address.value = Address(
|
||||||
walletId: "walletId",
|
walletId: "walletId",
|
||||||
value: "",
|
value: "",
|
||||||
|
@ -188,6 +189,7 @@ void main() {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
)..address.value = Address(
|
)..address.value = Address(
|
||||||
walletId: "walletId",
|
walletId: "walletId",
|
||||||
value: "",
|
value: "",
|
||||||
|
@ -302,6 +304,7 @@ void main() {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
)..address.value = Address(
|
)..address.value = Address(
|
||||||
walletId: "walletId",
|
walletId: "walletId",
|
||||||
value: "",
|
value: "",
|
||||||
|
@ -410,6 +413,7 @@ void main() {
|
||||||
nonce: null,
|
nonce: null,
|
||||||
inputs: [],
|
inputs: [],
|
||||||
outputs: [],
|
outputs: [],
|
||||||
|
numberOfMessages: null,
|
||||||
)..address.value = Address(
|
)..address.value = Address(
|
||||||
walletId: "walletId",
|
walletId: "walletId",
|
||||||
value: "",
|
value: "",
|
||||||
|
|
Loading…
Reference in a new issue