display salvium tx type in transaction details
What changed, and why it matters
This commit is a straightforward user-interface improvement: it adds a new 'Type' field to the transaction-details screen for Salvium cryptocurrency transactions. There is no evidence in the diff of any security bug, vulnerability, or behavior change that could put user funds or data at risk.
No security action required. Treat as a normal feature/UI commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The change extends TransactionV2’s ‘other data’ map with two new keys (salviumTypeInt and salviumTypeString), exposes a read-only getter, and renders the string in the transaction details view when the coin is Salvium and the value is present. The bulk of the diff is code-formatting/whitespace refactoring in the same file. No cryptographic, networking, storage, or permission logic is modified.
Changed components
lib/models/isar/models/blockchain_data/v2/transaction_v2.dartlib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_details_view.dartInspect captured patch +1146 / −1212
diff --git a/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart b/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart
index 44fbaf3..a507ba8 100644
--- a/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart
+++ b/lib/models/isar/models/blockchain_data/v2/transaction_v2.dart
@@ -406,6 +406,10 @@ class TransactionV2 {
bool get isInstantLock =>
_getFromOtherData(key: TxV2OdKeys.isInstantLock) == true;
+ @ignore
+ String? get salviumTypeString =>
+ _getFromOtherData(key: TxV2OdKeys.salviumTypeString) as String?;
+
@override
String toString() {
return 'TransactionV2(\n'
@@ -441,4 +445,6 @@ abstract final class TxV2OdKeys {
static const moneroAccountIndex = "moneroAccountIndex";
static const isMoneroTransaction = "isMoneroTransaction";
static const isInstantLock = "isInstantLock";
+ static const salviumTypeInt = "salviumTypeInt";
+ static const salviumTypeString = "salviumTypeString";
}
diff --git a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_details_view.dart b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_details_view.dart
index 13c0b1f..21d76fa 100644
--- a/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_details_view.dart
+++ b/lib/pages/wallet_view/transaction_views/tx_v2/transaction_v2_details_view.dart
@@ -135,36 +135,33 @@ class _TransactionV2DetailsViewState
if (mounted) {
await showDialog<void>(
context: context,
- builder:
- (context) => DesktopDialog(
- maxHeight: null,
- maxWidth: 580,
- child: Column(
- mainAxisSize: MainAxisSize.min,
+ builder: (context) => DesktopDialog(
+ maxHeight: null,
+ maxWidth: 580,
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ children: [
+ Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
- Row(
- mainAxisAlignment: MainAxisAlignment.spaceBetween,
- children: [
- Padding(
- padding: const EdgeInsets.only(left: 32),
- child: Text(
- "Boost transaction",
- style: STextStyles.desktopH3(context),
- ),
- ),
- const DesktopDialogCloseButton(),
- ],
- ),
- Flexible(
- child: SingleChildScrollView(
- child: BoostTransactionView(
- transaction: _transaction,
- ),
+ Padding(
+ padding: const EdgeInsets.only(left: 32),
+ child: Text(
+ "Boost transaction",
+ style: STextStyles.desktopH3(context),
),
),
+ const DesktopDialogCloseButton(),
],
),
- ),
+ Flexible(
+ child: SingleChildScrollView(
+ child: BoostTransactionView(transaction: _transaction),
+ ),
+ ),
+ ],
+ ),
+ ),
);
}
} else {
@@ -214,8 +211,11 @@ class _TransactionV2DetailsViewState
unit = coin.ticker;
}
- minConfirms =
- ref.read(pWallets).getWallet(walletId).cryptoCurrency.minConfirms;
+ minConfirms = ref
+ .read(pWallets)
+ .getWallet(walletId)
+ .cryptoCurrency
+ .minConfirms;
final fractionDigits = ethContract?.decimals ?? coin.fractionDigits;
@@ -245,35 +245,33 @@ class _TransactionV2DetailsViewState
);
break;
}
- data =
- _transaction.outputs
- .map(
- (e) => (
- addresses: e.addresses,
- amount: Amount(
- rawValue: e.value,
- fractionDigits: coin.fractionDigits,
- ),
- ),
- )
- .toList();
+ data = _transaction.outputs
+ .map(
+ (e) => (
+ addresses: e.addresses,
+ amount: Amount(
+ rawValue: e.value,
+ fractionDigits: coin.fractionDigits,
+ ),
+ ),
+ )
+ .toList();
} else if (_transaction.subType == TransactionSubType.cashFusion) {
amount = _transaction.getAmountReceivedInThisWallet(
fractionDigits: fractionDigits,
);
- data =
- _transaction.outputs
- .where((e) => e.walletOwns)
- .map(
- (e) => (
- addresses: e.addresses,
- amount: Amount(
- rawValue: e.value,
- fractionDigits: coin.fractionDigits,
- ),
- ),
- )
- .toList();
+ data = _transaction.outputs
+ .where((e) => e.walletOwns)
+ .map(
+ (e) => (
+ addresses: e.addresses,
+ amount: Amount(
+ rawValue: e.value,
+ fractionDigits: coin.fractionDigits,
+ ),
+ ),
+ )
+ .toList();
} else if (_transaction.isMimblewimblecoinTransaction) {
switch (_transaction.type) {
case TransactionType.outgoing:
@@ -291,8 +289,26 @@ class _TransactionV2DetailsViewState
);
break;
}
- data =
- _transaction.outputs
+ data = _transaction.outputs
+ .map(
+ (e) => (
+ addresses: e.addresses,
+ amount: Amount(
+ rawValue: e.value,
+ fractionDigits: coin.fractionDigits,
+ ),
+ ),
+ )
+ .toList();
+ } else {
+ switch (_transaction.type) {
+ case TransactionType.outgoing:
+ amount = _transaction.getAmountSentFromThisWallet(
+ fractionDigits: fractionDigits,
+ subtractFee: coin is! Ethereum,
+ );
+ data = _transaction.outputs
+ .where((e) => !e.walletOwns)
.map(
(e) => (
addresses: e.addresses,
@@ -303,57 +319,36 @@ class _TransactionV2DetailsViewState
),
)
.toList();
- } else {
- switch (_transaction.type) {
- case TransactionType.outgoing:
- amount = _transaction.getAmountSentFromThisWallet(
- fractionDigits: fractionDigits,
- subtractFee: coin is! Ethereum,
- );
- data =
- _transaction.outputs
- .where((e) => !e.walletOwns)
- .map(
- (e) => (
- addresses: e.addresses,
- amount: Amount(
- rawValue: e.value,
- fractionDigits: coin.fractionDigits,
- ),
- ),
- )
- .toList();
break;
case TransactionType.incoming:
case TransactionType.sentToSelf:
if (_transaction.subType == TransactionSubType.sparkMint ||
_transaction.subType == TransactionSubType.sparkSpend) {
- _sparkMemo =
- ref
- .read(mainDBProvider)
- .isar
- .sparkCoins
- .where()
- .walletIdEqualToAnyLTagHash(walletId)
- .filter()
- .memoIsNotEmpty()
- .and()
- .heightEqualTo(_transaction.height)
- .anyOf(
- _transaction.outputs
- .where(
- (e) =>
- e.walletOwns &&
- e.addresses.isEmpty &&
- e.scriptPubKeyHex.length >= 488,
- )
- .map((e) => e.scriptPubKeyHex.substring(2, 488))
- .toList(),
- (q, element) => q.serializedCoinB64StartsWith(element),
- )
- .memoProperty()
- .findFirstSync();
+ _sparkMemo = ref
+ .read(mainDBProvider)
+ .isar
+ .sparkCoins
+ .where()
+ .walletIdEqualToAnyLTagHash(walletId)
+ .filter()
+ .memoIsNotEmpty()
+ .and()
+ .heightEqualTo(_transaction.height)
+ .anyOf(
+ _transaction.outputs
+ .where(
+ (e) =>
+ e.walletOwns &&
+ e.addresses.isEmpty &&
+ e.scriptPubKeyHex.length >= 488,
+ )
+ .map((e) => e.scriptPubKeyHex.substring(2, 488))
+ .toList(),
+ (q, element) => q.serializedCoinB64StartsWith(element),
+ )
+ .memoProperty()
+ .findFirstSync();
}
if (_transaction.subType == TransactionSubType.sparkMint) {
@@ -377,19 +372,18 @@ class _TransactionV2DetailsViewState
fractionDigits: fractionDigits,
);
}
- data =
- _transaction.outputs
- .where((e) => e.walletOwns)
- .map(
- (e) => (
- addresses: e.addresses,
- amount: Amount(
- rawValue: e.value,
- fractionDigits: coin.fractionDigits,
- ),
- ),
- )
- .toList();
+ data = _transaction.outputs
+ .where((e) => e.walletOwns)
+ .map(
+ (e) => (
+ addresses: e.addresses,
+ amount: Amount(
+ rawValue: e.value,
+ fractionDigits: coin.fractionDigits,
+ ),
+ ),
+ )
+ .toList();
break;
case TransactionType.unknown:
@@ -397,19 +391,18 @@ class _TransactionV2DetailsViewState
fractionDigits: fractionDigits,
subtractFee: coin is! Ethereum,
);
- data =
- _transaction.inputs
- .where((e) => e.walletOwns)
- .map(
- (e) => (
- addresses: e.addresses,
- amount: Amount(
- rawValue: e.value,
- fractionDigits: coin.fractionDigits,
- ),
- ),
- )
- .toList();
+ data = _transaction.inputs
+ .where((e) => e.walletOwns)
+ .map(
+ (e) => (
+ addresses: e.addresses,
+ amount: Amount(
+ rawValue: e.value,
+ fractionDigits: coin.fractionDigits,
+ ),
+ ),
+ )
+ .toList();
break;
}
}
@@ -425,12 +418,11 @@ class _TransactionV2DetailsViewState
String whatIsIt(TransactionV2 tx, int height) => tx.statusLabel(
currentChainHeight: height,
minConfirms: minConfirms,
- minCoinbaseConfirms:
- ref
- .read(pWallets)
- .getWallet(walletId)
- .cryptoCurrency
- .minCoinbaseConfirms,
+ minCoinbaseConfirms: ref
+ .read(pWallets)
+ .getWallet(walletId)
+ .cryptoCurrency
+ .minCoinbaseConfirms,
);
Future<String> fetchContactNameFor(String address) async {
@@ -442,10 +434,9 @@ class _TransactionV2DetailsViewState
.read(addressBookServiceProvider)
.contacts
.where(
- (element) =>
- element.addresses
- .where((element) => element.address == address)
- .isNotEmpty,
+ (element) => element.addresses
+ .where((element) => element.address == address)
+ .isNotEmpty,
);
if (contacts.isNotEmpty) {
return contacts.first.name;
@@ -481,8 +472,9 @@ class _TransactionV2DetailsViewState
onChanged: (value) {
if (value is bool) {
ref
- .read(prefsChangeNotifierProvider)
- .hideBlockExplorerWarning = value;
+ .read(prefsChangeNotifierProvider)
+ .hideBlockExplorerWarning =
+ value;
setState(() {});
}
},
@@ -502,10 +494,9 @@ class _TransactionV2DetailsViewState
child: Text(
"Cancel",
style: STextStyles.button(context).copyWith(
- color:
- Theme.of(
- context,
- ).extension<StackColors>()!.accentColorDark,
+ color: Theme.of(
+ context,
+ ).extension<StackColors>()!.accentColorDark,
),
),
),
@@ -544,8 +535,9 @@ class _TransactionV2DetailsViewState
onChanged: (value) {
if (value is bool) {
ref
- .read(prefsChangeNotifierProvider)
- .hideBlockExplorerWarning = value;
+ .read(prefsChangeNotifierProvider)
+ .hideBlockExplorerWarning =
+ value;
setState(() {});
}
},
@@ -628,10 +620,9 @@ class _TransactionV2DetailsViewState
)) {
price = ref.watch(
priceAnd24hChangeNotifierProvider.select(
- (value) =>
- isTokenTx
- ? value.getTokenPrice(_transaction.contractAddress!)?.value
- : value.getPrice(coin)?.value,
+ (value) => isTokenTx
+ ? value.getTokenPrice(_transaction.contractAddress!)?.value
+ : value.getPrice(coin)?.value,
),
);
}
@@ -640,38 +631,36 @@ class _TransactionV2DetailsViewState
condition: !isDesktop,
builder: (child) => Background(child: child),
child: Scaffold(
- backgroundColor:
- isDesktop
- ? Colors.transparent
- : Theme.of(context).extension<StackColors>()!.background,
- appBar:
- isDesktop
- ? null
- : AppBar(
- backgroundColor:
- Theme.of(context).extension<StackColors>()!.background,
- leading: AppBarBackButton(
- onPressed: () async {
- // if (FocusScope.of(context).hasFocus) {
- // FocusScope.of(context).unfocus();
- // await Future<void>.delayed(Duration(milliseconds: 50));
- // }
- Navigator.of(context).pop();
- },
- ),
- title: Text(
- "Transaction details",
- style: STextStyles.navBarTitle(context),
- ),
+ backgroundColor: isDesktop
+ ? Colors.transparent
+ : Theme.of(context).extension<StackColors>()!.background,
+ appBar: isDesktop
+ ? null
+ : AppBar(
+ backgroundColor: Theme.of(
+ context,
+ ).extension<StackColors>()!.background,
+ leading: AppBarBackButton(
+ onPressed: () async {
+ // if (FocusScope.of(context).hasFocus) {
+ // FocusScope.of(context).unfocus();
+ // await Future<void>.delayed(Duration(milliseconds: 50));
+ // }
+ Navigator.of(context).pop();
+ },
+ ),
+ title: Text(
+ "Transaction details",
+ style: STextStyles.navBarTitle(context),
),
+ ),
body: ConditionalParent(
condition: !isDesktop,
builder: (child) => SafeArea(child: child),
child: Padding(
- padding:
- isDesktop
- ? const EdgeInsets.only(left: 32)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.only(left: 32)
+ : const EdgeInsets.all(12),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
@@ -688,20 +677,18 @@ class _TransactionV2DetailsViewState
),
Flexible(
child: Padding(
- padding:
- isDesktop
- ? const EdgeInsets.only(right: 32, bottom: 32)
- : const EdgeInsets.all(0),
+ padding: isDesktop
+ ? const EdgeInsets.only(right: 32, bottom: 32)
+ : const EdgeInsets.all(0),
child: ConditionalParent(
condition: isDesktop,
builder: (child) {
return RoundedWhiteContainer(
- borderColor:
- isDesktop
- ? Theme.of(
- context,
- ).extension<StackColors>()!.backgroundAppBar
- : null,
+ borderColor: isDesktop
+ ? Theme.of(
+ context,
+ ).extension<StackColors>()!.backgroundAppBar
+ : null,
padding: const EdgeInsets.all(0),
child: child,
);
@@ -709,41 +696,36 @@ class _TransactionV2DetailsViewState
child: SingleChildScrollView(
primary: isDesktop ? false : null,
child: Padding(
- padding:
- isDesktop
- ? const EdgeInsets.all(0)
- : const EdgeInsets.all(4),
+ padding: isDesktop
+ ? const EdgeInsets.all(0)
+ : const EdgeInsets.all(4),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(0)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(0)
+ : const EdgeInsets.all(12),
child: Container(
- decoration:
- isDesktop
- ? BoxDecoration(
- color:
- Theme.of(context)
- .extension<StackColors>()!
- .backgroundAppBar,
- borderRadius: BorderRadius.vertical(
- top: Radius.circular(
- Constants
- .size
- .circularBorderRadius,
- ),
+ decoration: isDesktop
+ ? BoxDecoration(
+ color: Theme.of(context)
+ .extension<StackColors>()!
+ .backgroundAppBar,
+ borderRadius: BorderRadius.vertical(
+ top: Radius.circular(
+ Constants
+ .size
+ .circularBorderRadius,
),
- )
- : null,
+ ),
+ )
+ : null,
child: Padding(
- padding:
- isDesktop
- ? const EdgeInsets.all(12)
- : const EdgeInsets.all(0),
+ padding: isDesktop
+ ? const EdgeInsets.all(12)
+ : const EdgeInsets.all(0),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
@@ -770,28 +752,25 @@ class _TransactionV2DetailsViewState
],
),
Column(
- crossAxisAlignment:
- isDesktop
- ? CrossAxisAlignment.end
- : CrossAxisAlignment.start,
+ crossAxisAlignment: isDesktop
+ ? CrossAxisAlignment.end
+ : CrossAxisAlignment.start,
children: [
SelectableText(
"$amountPrefix${ref.watch(pAmountFormatter(coin)).format(amount, ethContract: ethContract)}",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.titleBold12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.titleBold12(
+ context,
+ ),
),
const SizedBox(height: 2),
if (price != null)
@@ -807,9 +786,8 @@ class _TransactionV2DetailsViewState
locale: ref.watch(
localeServiceChangeNotifierProvider
.select(
- (value) =>
- value
- .locale,
+ (value) => value
+ .locale,
),
),
);
@@ -822,14 +800,13 @@ class _TransactionV2DetailsViewState
);
return SelectableText(
"$amountPrefix$formatted $ticker",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
);
},
),
@@ -851,24 +828,20 @@ class _TransactionV2DetailsViewState
? const _Divider()
: const SizedBox(height: 12),
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text(
"Status",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(context),
),
// Flexible(
// child: FittedBox(
@@ -876,33 +849,29 @@ class _TransactionV2DetailsViewState
// child:
SelectableText(
whatIsIt(_transaction, currentHeight),
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- _transaction.type ==
- TransactionType
- .outgoing &&
- _transaction
- .subType !=
- TransactionSubType
- .cashFusion
- ? Theme.of(context)
- .extension<
- StackColors
- >()!
- .accentColorOrange
- : Theme.of(context)
- .extension<
- StackColors
- >()!
- .accentColorGreen,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color:
+ _transaction.type ==
+ TransactionType
+ .outgoing &&
+ _transaction.subType !=
+ TransactionSubType
+ .cashFusion
+ ? Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .accentColorOrange
+ : Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .accentColorGreen,
+ )
+ : STextStyles.itemSubtitle12(context),
),
// ),
// ),
@@ -925,10 +894,9 @@ class _TransactionV2DetailsViewState
_transaction.subType ==
TransactionSubType.mint))
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
@@ -995,14 +963,13 @@ class _TransactionV2DetailsViewState
},
child: Text(
outputLabel,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
),
const SizedBox(height: 8),
@@ -1023,45 +990,43 @@ class _TransactionV2DetailsViewState
.addresses
.first,
),
- builder: (
- builderContext,
- AsyncSnapshot<String>
- snapshot,
- ) {
- String
- addressOrContactName =
- data
- .first
- .addresses
- .first;
- if (snapshot.connectionState ==
- ConnectionState
- .done &&
- snapshot.hasData) {
- addressOrContactName =
- snapshot.data!;
- }
- return SelectableText(
- addressOrContactName,
- style:
- isDesktop
+ builder:
+ (
+ builderContext,
+ AsyncSnapshot<String>
+ snapshot,
+ ) {
+ String
+ addressOrContactName =
+ data
+ .first
+ .addresses
+ .first;
+ if (snapshot.connectionState ==
+ ConnectionState
+ .done &&
+ snapshot
+ .hasData) {
+ addressOrContactName =
+ snapshot.data!;
+ }
+ return SelectableText(
+ addressOrContactName,
+ style: isDesktop
? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(
- context,
- )
- .extension<
- StackColors
- >()!
- .textDark,
- )
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
: STextStyles.itemSubtitle12(
- context,
- ),
- );
- },
+ context,
+ ),
+ );
+ },
)
else
for (
@@ -1071,16 +1036,15 @@ class _TransactionV2DetailsViewState
)
ConditionalParent(
condition: i > 0,
- builder:
- (child) => Column(
- crossAxisAlignment:
- CrossAxisAlignment
- .stretch,
- children: [
- const _Divider(),
- child,
- ],
- ),
+ builder: (child) => Column(
+ crossAxisAlignment:
+ CrossAxisAlignment
+ .stretch,
+ children: [
+ const _Divider(),
+ child,
+ ],
+ ),
child: Padding(
padding:
const EdgeInsets.all(
@@ -1099,37 +1063,36 @@ class _TransactionV2DetailsViewState
fetchContactNameFor(
e,
),
- builder: (
- builderContext,
- AsyncSnapshot<
- String
- >
- snapshot,
- ) {
- final String
- addressOrContactName;
- if (snapshot.connectionState ==
- ConnectionState
- .done &&
- snapshot
- .hasData) {
- addressOrContactName =
- snapshot
- .data!;
- } else {
- addressOrContactName =
- e;
- }
-
- return OutputCard(
- address:
- addressOrContactName,
- amount:
- data[i]
- .amount,
- coin: coin,
- );
- },
+ builder:
+ (
+ builderContext,
+ AsyncSnapshot<
+ String
+ >
+ snapshot,
+ ) {
+ final String
+ addressOrContactName;
+ if (snapshot.connectionState ==
+ ConnectionState.done &&
+ snapshot
+ .hasData) {
+ addressOrContactName =
+ snapshot.data!;
+ } else {
+ addressOrContactName =
+ e;
+ }
+
+ return OutputCard(
+ address:
+ addressOrContactName,
+ amount:
+ data[i].amount,
+ coin:
+ coin,
+ );
+ },
);
}),
],
@@ -1154,10 +1117,9 @@ class _TransactionV2DetailsViewState
: const SizedBox(height: 12),
if (coin is Epiccash || coin is Mimblewimblecoin)
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
@@ -1171,33 +1133,30 @@ class _TransactionV2DetailsViewState
children: [
Text(
"On chain note",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
const SizedBox(height: 8),
SelectableText(
_transaction.onChainNote ?? "",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
],
),
@@ -1213,10 +1172,9 @@ class _TransactionV2DetailsViewState
? const _Divider()
: const SizedBox(height: 12),
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@@ -1229,100 +1187,95 @@ class _TransactionV2DetailsViewState
coin is Mimblewimblecoin)
? "Local Note"
: "Note ",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
isDesktop
? IconPencilButton(
- onPressed: () {
- showDialog<void>(
- context: context,
- builder: (context) {
- return DesktopDialog(
- maxWidth: 580,
- maxHeight: 360,
- child: EditNoteView(
- txid: _transaction.txid,
- walletId: walletId,
- ),
- );
- },
- );
- },
- )
+ onPressed: () {
+ showDialog<void>(
+ context: context,
+ builder: (context) {
+ return DesktopDialog(
+ maxWidth: 580,
+ maxHeight: 360,
+ child: EditNoteView(
+ txid:
+ _transaction.txid,
+ walletId: walletId,
+ ),
+ );
+ },
+ );
+ },
+ )
: GestureDetector(
- onTap: () {
- Navigator.of(context).pushNamed(
- EditNoteView.routeName,
- arguments: Tuple2(
- _transaction.txid,
- walletId,
- ),
- );
- },
- child: Row(
- children: [
- SvgPicture.asset(
- Assets.svg.pencil,
- width: 10,
- height: 10,
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .infoItemIcons,
- ),
- const SizedBox(width: 4),
- Text(
- "Edit",
- style: STextStyles.link2(
- context,
+ onTap: () {
+ Navigator.of(
+ context,
+ ).pushNamed(
+ EditNoteView.routeName,
+ arguments: Tuple2(
+ _transaction.txid,
+ walletId,
),
- ),
- ],
- ),
- ),
- ],
- ),
- const SizedBox(height: 8),
- SelectableText(
- ref
- .watch(
- pTransactionNote((
- txid:
+ );
+ },
+ child: Row(
+ children: [
+ SvgPicture.asset(
+ Assets.svg.pencil,
+ width: 10,
+ height: 10,
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .infoItemIcons,
+ ),
+ const SizedBox(width: 4),
+ Text(
+ "Edit",
+ style: STextStyles.link2(
+ context,
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ const SizedBox(height: 8),
+ SelectableText(
+ ref
+ .watch(
+ pTransactionNote((
+ txid:
(coin is Epiccash ||
- coin
- is Mimblewimblecoin)
- ? _transaction.slateId
- .toString()
- : _transaction.txid,
+ coin
+ is Mimblewimblecoin)
+ ? _transaction.slateId
+ .toString()
+ : _transaction.txid,
walletId: walletId,
)),
)
?.value ??
"",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<StackColors>()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(context),
),
],
),
@@ -1333,10 +1286,9 @@ class _TransactionV2DetailsViewState
: const SizedBox(height: 12),
if (_sparkMemo != null)
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
@@ -1345,35 +1297,30 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Memo",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
],
),
const SizedBox(height: 8),
SelectableText(
_sparkMemo!,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<StackColors>()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
],
),
@@ -1382,10 +1329,9 @@ class _TransactionV2DetailsViewState
? const _Divider()
: const SizedBox(height: 12),
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
@@ -1397,14 +1343,13 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Date",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
if (isDesktop)
const SizedBox(height: 2),
@@ -1413,21 +1358,19 @@ class _TransactionV2DetailsViewState
Format.extractDateFrom(
_transaction.timestamp,
),
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
],
),
@@ -1436,21 +1379,17 @@ class _TransactionV2DetailsViewState
Format.extractDateFrom(
_transaction.timestamp,
),
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<StackColors>()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
if (isDesktop)
IconCopyButton(
@@ -1473,28 +1412,26 @@ class _TransactionV2DetailsViewState
_transaction.type ==
TransactionType.incoming))
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Builder(
builder: (context) {
- final String feeString =
- showFeePending
- ? _transaction.isConfirmed(
- currentHeight,
- minConfirms,
- coin.minCoinbaseConfirms,
- )
- ? ref
+ final String feeString = showFeePending
+ ? _transaction.isConfirmed(
+ currentHeight,
+ minConfirms,
+ coin.minCoinbaseConfirms,
+ )
+ ? ref
.watch(
pAmountFormatter(coin),
)
.format(fee)
- : "Pending"
- : ref
- .watch(pAmountFormatter(coin))
- .format(fee);
+ : "Pending"
+ : ref
+ .watch(pAmountFormatter(coin))
+ .format(fee);
return Row(
mainAxisAlignment:
@@ -1508,37 +1445,33 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Transaction fee",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
if (isDesktop)
const SizedBox(height: 2),
if (isDesktop)
SelectableText(
feeString,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(
- context,
- )
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color:
+ Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
if (supportsRbf && !confirmedTxn)
const SizedBox(height: 8),
@@ -1552,21 +1485,19 @@ class _TransactionV2DetailsViewState
if (!isDesktop)
SelectableText(
feeString,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
if (isDesktop)
IconCopyButton(data: feeString),
@@ -1589,9 +1520,9 @@ class _TransactionV2DetailsViewState
widget.coin is Ecash) {
height =
_transaction.height != null &&
- _transaction.height! > 0
- ? "${_transaction.height!}"
- : "Pending";
+ _transaction.height! > 0
+ ? "${_transaction.height!}"
+ : "Pending";
confirmations = confirms.toString();
} else if (widget.coin is Epiccash &&
_transaction.slateId == null) {
@@ -1607,10 +1538,9 @@ class _TransactionV2DetailsViewState
height =
"${_transaction.height == 0 ? "Unknown" : _transaction.height}";
} else {
- height =
- confirms > 0
- ? "${_transaction.height}"
- : "Pending";
+ height = confirms > 0
+ ? "${_transaction.height}"
+ : "Pending";
}
confirmations = confirms.toString();
@@ -1619,10 +1549,9 @@ class _TransactionV2DetailsViewState
return Column(
children: [
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
@@ -1635,58 +1564,54 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Block height",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
if (isDesktop)
const SizedBox(height: 2),
if (isDesktop)
SelectableText(
height,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(
- context,
- )
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color:
+ Theme.of(
+ context,
+ )
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
],
),
if (!isDesktop)
SelectableText(
height,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
if (isDesktop)
IconCopyButton(data: height),
@@ -1697,10 +1622,9 @@ class _TransactionV2DetailsViewState
? const _Divider()
: const SizedBox(height: 12),
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
@@ -1713,58 +1637,54 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Confirmations",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
if (isDesktop)
const SizedBox(height: 2),
if (isDesktop)
SelectableText(
confirmations,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(
- context,
- )
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color:
+ Theme.of(
+ context,
+ )
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
],
),
if (!isDesktop)
SelectableText(
confirmations,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
if (isDesktop)
IconCopyButton(data: height),
@@ -1783,10 +1703,9 @@ class _TransactionV2DetailsViewState
if (coin is Ethereum &&
_transaction.type != TransactionType.incoming)
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
@@ -1795,32 +1714,72 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Nonce",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(context),
),
SelectableText(
_transaction.nonce.toString(),
- style:
- isDesktop
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<StackColors>()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
+ ),
+ ],
+ ),
+ ),
+ if (coin is Salvium &&
+ _transaction.salviumTypeString != null)
+ isDesktop
+ ? const _Divider()
+ : const SizedBox(height: 12),
+ if (coin is Salvium &&
+ _transaction.salviumTypeString != null)
+ RoundedWhiteContainer(
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ Row(
+ children: [
+ Text(
+ "Type",
+ style: isDesktop
? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
+ ),
+ ],
+ ),
+ const SizedBox(height: 8),
+ SelectableText(
+ _transaction.salviumTypeString!,
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<StackColors>()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
],
),
@@ -1831,10 +1790,9 @@ class _TransactionV2DetailsViewState
: const SizedBox(height: 12),
if (kDebugMode)
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
@@ -1843,32 +1801,25 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Tx sub type",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(context),
),
SelectableText(
_transaction.subType.toString(),
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<StackColors>()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
],
),
@@ -1890,58 +1841,54 @@ class _TransactionV2DetailsViewState
_transaction.subType ==
TransactionSubType.mweb
? RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
- child: Row(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Expanded(
- child: Column(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- ConditionalParent(
- condition: !isDesktop,
- builder:
- (child) => Row(
- children: [
- Expanded(child: child),
- SimpleCopyButton(
- data: _transaction
- .txid
- .replaceFirst(
- "mweb_outputId_",
- "",
- ),
- ),
- ],
- ),
- child: Text(
- "MWEB Output ID",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
+ child: Row(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ Expanded(
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ ConditionalParent(
+ condition: !isDesktop,
+ builder: (child) => Row(
+ children: [
+ Expanded(child: child),
+ SimpleCopyButton(
+ data: _transaction.txid
+ .replaceFirst(
+ "mweb_outputId_",
+ "",
+ ),
+ ),
+ ],
+ ),
+ child: Text(
+ "MWEB Output ID",
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
context,
)
- : STextStyles.itemSubtitle(
+ : STextStyles.itemSubtitle(
context,
),
+ ),
),
- ),
- const SizedBox(height: 8),
- SelectableText(
- _transaction.txid.replaceFirst(
- "mweb_outputId_",
- "",
- ),
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
+ const SizedBox(height: 8),
+ SelectableText(
+ _transaction.txid
+ .replaceFirst(
+ "mweb_outputId_",
+ "",
+ ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
context,
).copyWith(
color:
@@ -1951,142 +1898,137 @@ class _TransactionV2DetailsViewState
>()!
.textDark,
)
- : STextStyles.itemSubtitle12(
+ : STextStyles.itemSubtitle12(
context,
),
- ),
- // if (coin is Litecoin &&
- // coin.network ==
- // CryptoCurrencyNetwork
- // .main)
- // const SizedBox(height: 8),
- // if (coin is Litecoin &&
- // coin.network ==
- // CryptoCurrencyNetwork
- // .main)
- // CustomTextButton(
- // text:
- // "Open in block explorer",
- // onTap: () async {
- // final uri =
- // getBlockExplorerTransactionUrlFor(
- // coin: coin,
- // txid: _transaction
- // .txid
- // .replaceFirst(
- // "mweb_outputId_",
- // "",
- // ),
- // );
- //
- // if (ref
- // .read(
- // prefsChangeNotifierProvider,
- // )
- // .hideBlockExplorerWarning ==
- // false) {
- // final shouldContinue =
- // await showExplorerWarning(
- // "${uri.scheme}://${uri.host}",
- // );
- //
- // if (!shouldContinue) {
- // return;
- // }
- // }
- // try {
- // await launchUrl(
- // uri,
- // mode:
- // LaunchMode
- // .externalApplication,
- // );
- // } catch (_) {
- // if (context.mounted) {
- // unawaited(
- // showDialog<void>(
- // context: context,
- // builder:
- // (
- // _,
- // ) => StackOkDialog(
- // title:
- // "Could not open in block explorer",
- // message:
- // "Failed to open \"${uri.toString()}\"",
- // ),
- // ),
- // );
- // }
- // }
- // },
- // ),
- ],
- ),
- ),
- if (isDesktop)
- const SizedBox(width: 12),
- if (isDesktop)
- IconCopyButton(
- data: _transaction.txid
- .replaceFirst(
- "mweb_outputId_",
- "",
),
+ // if (coin is Litecoin &&
+ // coin.network ==
+ // CryptoCurrencyNetwork
+ // .main)
+ // const SizedBox(height: 8),
+ // if (coin is Litecoin &&
+ // coin.network ==
+ // CryptoCurrencyNetwork
+ // .main)
+ // CustomTextButton(
+ // text:
+ // "Open in block explorer",
+ // onTap: () async {
+ // final uri =
+ // getBlockExplorerTransactionUrlFor(
+ // coin: coin,
+ // txid: _transaction
+ // .txid
+ // .replaceFirst(
+ // "mweb_outputId_",
+ // "",
+ // ),
+ // );
+ //
+ // if (ref
+ // .read(
+ // prefsChangeNotifierProvider,
+ // )
+ // .hideBlockExplorerWarning ==
+ // false) {
+ // final shouldContinue =
+ // await showExplorerWarning(
+ // "${uri.scheme}://${uri.host}",
+ // );
+ //
+ // if (!shouldContinue) {
+ // return;
+ // }
+ // }
+ // try {
+ // await launchUrl(
+ // uri,
+ // mode:
+ // LaunchMode
+ // .externalApplication,
+ // );
+ // } catch (_) {
+ // if (context.mounted) {
+ // unawaited(
+ // showDialog<void>(
+ // context: context,
+ // builder:
+ // (
+ // _,
+ // ) => StackOkDialog(
+ // title:
+ // "Could not open in block explorer",
+ // message:
+ // "Failed to open \"${uri.toString()}\"",
+ // ),
+ // ),
+ // );
+ // }
+ // }
+ // },
+ // ),
+ ],
+ ),
),
- ],
- ),
- )
+ if (isDesktop)
+ const SizedBox(width: 12),
+ if (isDesktop)
+ IconCopyButton(
+ data: _transaction.txid
+ .replaceFirst(
+ "mweb_outputId_",
+ "",
+ ),
+ ),
+ ],
+ ),
+ )
: RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
- child: Row(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- mainAxisAlignment:
- MainAxisAlignment.spaceBetween,
- children: [
- Expanded(
- child: Column(
- crossAxisAlignment:
- CrossAxisAlignment.start,
- children: [
- ConditionalParent(
- condition: !isDesktop,
- builder:
- (child) => Row(
- children: [
- Expanded(child: child),
- SimpleCopyButton(
- data:
- _transaction.txid,
- ),
- ],
- ),
- child: Text(
- "Transaction ID",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
+ child: Row(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ mainAxisAlignment:
+ MainAxisAlignment.spaceBetween,
+ children: [
+ Expanded(
+ child: Column(
+ crossAxisAlignment:
+ CrossAxisAlignment.start,
+ children: [
+ ConditionalParent(
+ condition: !isDesktop,
+ builder: (child) => Row(
+ children: [
+ Expanded(child: child),
+ SimpleCopyButton(
+ data: _transaction.txid,
+ ),
+ ],
+ ),
+ child: Text(
+ "Transaction ID",
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
context,
)
- : STextStyles.itemSubtitle(
+ : STextStyles.itemSubtitle(
context,
),
+ ),
),
- ),
- const SizedBox(height: 8),
- // Flexible(
- // child: FittedBox(
- // fit: BoxFit.scaleDown,
- // child:
- SelectableText(
- _transaction.txid,
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
+ const SizedBox(height: 8),
+ // Flexible(
+ // child: FittedBox(
+ // fit: BoxFit.scaleDown,
+ // child:
+ SelectableText(
+ _transaction.txid,
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
context,
).copyWith(
color:
@@ -2096,101 +2038,97 @@ class _TransactionV2DetailsViewState
>()!
.textDark,
)
- : STextStyles.itemSubtitle12(
+ : STextStyles.itemSubtitle12(
context,
),
- ),
- if (coin is! Epiccash &&
- coin is! Mimblewimblecoin)
- const SizedBox(height: 8),
- if (coin is! Epiccash &&
- coin is! Mimblewimblecoin)
- CustomTextButton(
- text:
- "Open in block explorer",
- onTap: () async {
- final uri =
- getBlockExplorerTransactionUrlFor(
- coin: coin,
- txid:
- _transaction.txid,
- );
-
- if (ref
- .read(
- prefsChangeNotifierProvider,
- )
- .hideBlockExplorerWarning ==
- false) {
- final shouldContinue =
- await showExplorerWarning(
- "${uri.scheme}://${uri.host}",
+ ),
+ if (coin is! Epiccash &&
+ coin is! Mimblewimblecoin)
+ const SizedBox(height: 8),
+ if (coin is! Epiccash &&
+ coin is! Mimblewimblecoin)
+ CustomTextButton(
+ text:
+ "Open in block explorer",
+ onTap: () async {
+ final uri =
+ getBlockExplorerTransactionUrlFor(
+ coin: coin,
+ txid: _transaction
+ .txid,
);
- if (!shouldContinue) {
- return;
+ if (ref
+ .read(
+ prefsChangeNotifierProvider,
+ )
+ .hideBlockExplorerWarning ==
+ false) {
+ final shouldContinue =
+ await showExplorerWarning(
+ "${uri.scheme}://${uri.host}",
+ );
+
+ if (!shouldContinue) {
+ return;
+ }
}
- }
-
- // ref
- // .read(
- // shouldShowLockscreenOnResumeStateProvider
- // .state)
- // .state = false;
- try {
- await launchUrl(
- uri,
- mode:
- LaunchMode
- .externalApplication,
- );
- } catch (_) {
- if (context.mounted) {
- unawaited(
- showDialog<void>(
- context: context,
- builder:
- (
- _,
- ) => StackOkDialog(
- title:
- "Could not open in block explorer",
- message:
- "Failed to open \"${uri.toString()}\"",
- maxWidth:
- Util.isDesktop
- ? 400
- : null,
- ),
- ),
+
+ // ref
+ // .read(
+ // shouldShowLockscreenOnResumeStateProvider
+ // .state)
+ // .state = false;
+ try {
+ await launchUrl(
+ uri,
+ mode: LaunchMode
+ .externalApplication,
);
+ } catch (_) {
+ if (context.mounted) {
+ unawaited(
+ showDialog<void>(
+ context: context,
+ builder: (_) => StackOkDialog(
+ title:
+ "Could not open in block explorer",
+ message:
+ "Failed to open \"${uri.toString()}\"",
+ maxWidth:
+ Util.isDesktop
+ ? 400
+ : null,
+ ),
+ ),
+ );
+ }
+ } finally {
+ // Future<void>.delayed(
+ // const Duration(seconds: 1),
+ // () => ref
+ // .read(
+ // shouldShowLockscreenOnResumeStateProvider
+ // .state)
+ // .state = true,
+ // );
}
- } finally {
- // Future<void>.delayed(
- // const Duration(seconds: 1),
- // () => ref
- // .read(
- // shouldShowLockscreenOnResumeStateProvider
- // .state)
- // .state = true,
- // );
- }
- },
- ),
- // ),
- // ),
- ],
- ),
- ),
- if (isDesktop)
- const SizedBox(width: 12),
- if (isDesktop)
- IconCopyButton(
- data: _transaction.txid,
+ },
+ ),
+ // ),
+ // ),
+ ],
+ ),
),
- ],
+ if (isDesktop)
+ const SizedBox(width: 12),
+ if (isDesktop)
+ IconCopyButton(
+ data: _transaction.txid,
+ ),
+ ],
+ ),
),
- ),
// if ((coin is FiroTestNet || coin is Firo) &&
// _transaction.subType == "mint")
// const SizedBox(
@@ -2274,10 +2212,9 @@ class _TransactionV2DetailsViewState
: const SizedBox(height: 12),
if (coin is Epiccash || coin is Mimblewimblecoin)
RoundedWhiteContainer(
- padding:
- isDesktop
- ? const EdgeInsets.all(16)
- : const EdgeInsets.all(12),
+ padding: isDesktop
+ ? const EdgeInsets.all(16)
+ : const EdgeInsets.all(12),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
@@ -2290,14 +2227,13 @@ class _TransactionV2DetailsViewState
children: [
Text(
"Slate ID",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- )
- : STextStyles.itemSubtitle(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ )
+ : STextStyles.itemSubtitle(
+ context,
+ ),
),
// Flexible(
// child: FittedBox(
@@ -2305,21 +2241,19 @@ class _TransactionV2DetailsViewState
// child:
SelectableText(
_transaction.slateId ?? "Unknown",
- style:
- isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
- context,
- ).copyWith(
- color:
- Theme.of(context)
- .extension<
- StackColors
- >()!
- .textDark,
- )
- : STextStyles.itemSubtitle12(
- context,
- ),
+ style: isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(
+ context,
+ ).copyWith(
+ color: Theme.of(context)
+ .extension<
+ StackColors
+ >()!
+ .textDark,
+ )
+ : STextStyles.itemSubtitle12(
+ context,
+ ),
),
// ),
// ),
@@ -2363,165 +2297,154 @@ class _TransactionV2DetailsViewState
floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
floatingActionButton:
((coin is Epiccash || coin is Mimblewimblecoin) &&
- _transaction.getConfirmations(currentHeight) < 1 &&
- _transaction.isCancelled == false)
- ? ConditionalParent(
- condition: isDesktop,
- builder:
- (child) => Padding(
- padding: const EdgeInsets.symmetric(
- horizontal: 32,
- vertical: 16,
- ),
- child: child,
- ),
- child: SizedBox(
- width: MediaQuery.of(context).size.width - 32,
- child: TextButton(
- style: ButtonStyle(
- backgroundColor: MaterialStateProperty.all<Color>(
- Theme.of(context).extension<StackColors>()!.textError,
- ),
+ _transaction.getConfirmations(currentHeight) < 1 &&
+ _transaction.isCancelled == false)
+ ? ConditionalParent(
+ condition: isDesktop,
+ builder: (child) => Padding(
+ padding: const EdgeInsets.symmetric(
+ horizontal: 32,
+ vertical: 16,
+ ),
+ child: child,
+ ),
+ child: SizedBox(
+ width: MediaQuery.of(context).size.width - 32,
+ child: TextButton(
+ style: ButtonStyle(
+ backgroundColor: MaterialStateProperty.all<Color>(
+ Theme.of(context).extension<StackColors>()!.textError,
),
- onPressed: () async {
- final wallet = ref.read(pWallets).getWallet(walletId);
-
- if (wallet is EpiccashWallet) {
- final String? id = _transaction.slateId;
- if (id == null) {
- unawaited(
- showFloatingFlushBar(
- type: FlushBarType.warning,
- message: "Could not find Epic transaction ID",
- context: context,
- ),
- );
- return;
- }
+ ),
+ onPressed: () async {
+ final wallet = ref.read(pWallets).getWallet(walletId);
+ if (wallet is EpiccashWallet) {
+ final String? id = _transaction.slateId;
+ if (id == null) {
unawaited(
- showDialog<void>(
- barrierDismissible: false,
+ showFloatingFlushBar(
+ type: FlushBarType.warning,
+ message: "Could not find Epic transaction ID",
context: context,
- builder:
- (_) =>
- const CancellingTransactionProgressDialog(),
),
);
+ return;
+ }
- final result = await wallet
- .cancelPendingTransactionAndPost(id);
- if (context.mounted) {
- // Pop progress dialog.
- Navigator.of(context).pop();
-
- if (result.isEmpty) {
- await showDialog<dynamic>(
- context: context,
- builder:
- (_) => StackOkDialog(
- title: "Transaction cancelled",
- onOkPressed: (_) {
- Navigator.of(context).popUntil(
- ModalRoute.withName(
- WalletView.routeName,
- ),
- );
- },
- maxWidth: Util.isDesktop ? 400 : null,
- ),
- );
- unawaited(wallet.refresh());
- } else {
- await showDialog<dynamic>(
- context: context,
- builder:
- (_) => StackOkDialog(
- title: "Failed to cancel transaction",
- message: result,
- maxWidth: Util.isDesktop ? 400 : null,
- ),
- );
- }
- }
- } else if (wallet is MimblewimblecoinWallet) {
- final String? id = _transaction.slateId;
- if (id == null) {
- unawaited(
- showFloatingFlushBar(
- type: FlushBarType.warning,
- message: "Could not find MWC transaction ID",
- context: context,
+ unawaited(
+ showDialog<void>(
+ barrierDismissible: false,
+ context: context,
+ builder: (_) =>
+ const CancellingTransactionProgressDialog(),
+ ),
+ );
+
+ final result = await wallet
+ .cancelPendingTransactionAndPost(id);
+ if (context.mounted) {
+ // Pop progress dialog.
+ Navigator.of(context).pop();
+
+ if (result.isEmpty) {
+ await showDialog<dynamic>(
+ context: context,
+ builder: (_) => StackOkDialog(
+ title: "Transaction cancelled",
+ onOkPressed: (_) {
+ Navigator.of(context).popUntil(
+ ModalRoute.withName(WalletView.routeName),
+ );
+ },
+ maxWidth: Util.isDesktop ? 400 : null,
),
);
- return;
- }
-
- unawaited(
- showDialog<void>(
- barrierDismissible: false,
+ unawaited(wallet.refresh());
+ } else {
+ await showDialog<dynamic>(
context: context,
- builder:
- (_) =>
- const CancellingTransactionProgressDialog(),
- ),
- );
-
- final result = await wallet
- .cancelPendingTransactionAndPost(id);
- if (context.mounted) {
- // pop progress dialog
- Navigator.of(context).pop();
-
- if (result.isEmpty) {
- await showDialog<dynamic>(
- context: context,
- builder:
- (_) => StackOkDialog(
- title: "Transaction cancelled",
- onOkPressed: (_) {
- Navigator.of(context).popUntil(
- ModalRoute.withName(
- WalletView.routeName,
- ),
- );
- },
- maxWidth: Util.isDesktop ? 400 : null,
- ),
- );
- unawaited(wallet.refresh());
- } else {
- await showDialog<dynamic>(
- context: context,
- builder:
- (_) => StackOkDialog(
- title: "Failed to cancel transaction",
- message: result,
- maxWidth: Util.isDesktop ? 400 : null,
- ),
- );
- }
+ builder: (_) => StackOkDialog(
+ title: "Failed to cancel transaction",
+ message: result,
+ maxWidth: Util.isDesktop ? 400 : null,
+ ),
+ );
}
- } else {
+ }
+ } else if (wallet is MimblewimblecoinWallet) {
+ final String? id = _transaction.slateId;
+ if (id == null) {
unawaited(
showFloatingFlushBar(
type: FlushBarType.warning,
- message:
- "ERROR: Wallet type is not Epic Cash or MimbleWimbleCoin",
+ message: "Could not find MWC transaction ID",
context: context,
),
);
return;
}
- },
- child: Text(
- "Cancel Transaction",
- style: STextStyles.button(context),
- ),
+
+ unawaited(
+ showDialog<void>(
+ barrierDismissible: false,
+ context: context,
+ builder: (_) =>
+ const CancellingTransactionProgressDialog(),
+ ),
+ );
+
+ final result = await wallet
+ .cancelPendingTransactionAndPost(id);
+ if (context.mounted) {
+ // pop progress dialog
+ Navigator.of(context).pop();
+
+ if (result.isEmpty) {
+ await showDialog<dynamic>(
+ context: context,
+ builder: (_) => StackOkDialog(
+ title: "Transaction cancelled",
+ onOkPressed: (_) {
+ Navigator.of(context).popUntil(
+ ModalRoute.withName(WalletView.routeName),
+ );
+ },
+ maxWidth: Util.isDesktop ? 400 : null,
+ ),
+ );
+ unawaited(wallet.refresh());
+ } else {
+ await showDialog<dynamic>(
+ context: context,
+ builder: (_) => StackOkDialog(
+ title: "Failed to cancel transaction",
+ message: result,
+ maxWidth: Util.isDesktop ? 400 : null,
+ ),
+ );
+ }
+ }
+ } else {
+ unawaited(
+ showFloatingFlushBar(
+ type: FlushBarType.warning,
+ message:
+ "ERROR: Wallet type is not Epic Cash or MimbleWimbleCoin",
+ context: context,
+ ),
+ );
+ return;
+ }
+ },
+ child: Text(
+ "Cancel Transaction",
+ style: STextStyles.button(context),
),
),
- )
- : null,
+ ),
+ )
+ : null,
),
);
}
@@ -2546,19 +2469,17 @@ class OutputCard extends ConsumerWidget {
children: [
Text(
"Address",
- style:
- Util.isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(context)
- : STextStyles.itemSubtitle(context),
+ style: Util.isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(context)
+ : STextStyles.itemSubtitle(context),
),
SelectableText(
address,
- style:
- Util.isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(context).copyWith(
- color: Theme.of(context).extension<StackColors>()!.textDark,
- )
- : STextStyles.itemSubtitle12(context),
+ style: Util.isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(context).copyWith(
+ color: Theme.of(context).extension<StackColors>()!.textDark,
+ )
+ : STextStyles.itemSubtitle12(context),
),
const SizedBox(height: 10),
Row(
@@ -2566,24 +2487,19 @@ class OutputCard extends ConsumerWidget {
children: [
Text(
"Amount",
- style:
- Util.isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(context)
- : STextStyles.itemSubtitle(context),
+ style: Util.isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(context)
+ : STextStyles.itemSubtitle(context),
),
SelectableText(
ref.watch(pAmountFormatter(coin)).format(amount),
- style:
- Util.isDesktop
- ? STextStyles.desktopTextExtraExtraSmall(
+ style: Util.isDesktop
+ ? STextStyles.desktopTextExtraExtraSmall(context).copyWith(
+ color: Theme.of(
context,
- ).copyWith(
- color:
- Theme.of(
- context,
- ).extension<StackColors>()!.textDark,
- )
- : STextStyles.itemSubtitle12(context),
+ ).extension<StackColors>()!.textDark,
+ )
+ : STextStyles.itemSubtitle12(context),
),
],
),
@@ -2615,8 +2531,9 @@ class IconCopyButton extends StatelessWidget {
height: 26,
width: 26,
child: RawMaterialButton(
- fillColor:
- Theme.of(context).extension<StackColors>()!.buttonBackSecondary,
+ fillColor: Theme.of(
+ context,
+ ).extension<StackColors>()!.buttonBackSecondary,
elevation: 0,
hoverElevation: 0,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(6)),
@@ -2656,8 +2573,9 @@ class IconPencilButton extends StatelessWidget {
height: 26,
width: 26,
child: RawMaterialButton(
- fillColor:
- Theme.of(context).extension<StackColors>()!.buttonBackSecondary,
+ fillColor: Theme.of(
+ context,
+ ).extension<StackColors>()!.buttonBackSecondary,
elevation: 0,
hoverElevation: 0,
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(6)),
diff --git a/lib/wallets/wallet/intermediate/lib_salvium_wallet.dart b/lib/wallets/wallet/intermediate/lib_salvium_wallet.dart
index c3da088..89c9b30 100644
--- a/lib/wallets/wallet/intermediate/lib_salvium_wallet.dart
+++ b/lib/wallets/wallet/intermediate/lib_salvium_wallet.dart
@@ -669,6 +669,8 @@ abstract class LibSalviumWallet<T extends CryptonoteCurrency>
).toJsonString(),
TxV2OdKeys.moneroAccountIndex: tx.accountIndex,
TxV2OdKeys.isMoneroTransaction: true,
+ TxV2OdKeys.salviumTypeInt: tx.salviumData?.type,
+ TxV2OdKeys.salviumTypeString: tx.salviumData?.typeDisplay,
}),
);
diff --git a/lib/wl_gen/interfaces/cs_monero_interface.dart b/lib/wl_gen/interfaces/cs_monero_interface.dart
index 8987508..a676bd1 100644
--- a/lib/wl_gen/interfaces/cs_monero_interface.dart
+++ b/lib/wl_gen/interfaces/cs_monero_interface.dart
@@ -300,7 +300,7 @@ final class CsTransaction {
/// Flag indicating whether the transaction is pending (i.e., not yet confirmed).
bool get isPending => confirmations < minConfirms;
- final ({int type, String asset})? salviumData;
+ final ({int type, String typeDisplay, String asset})? salviumData;
}
// forwarding class
diff --git a/tool/wl_templates/SAL_cs_salvium_interface_impl.template.dart b/tool/wl_templates/SAL_cs_salvium_interface_impl.template.dart
index e6d8303..fb13045 100644
--- a/tool/wl_templates/SAL_cs_salvium_interface_impl.template.dart
+++ b/tool/wl_templates/SAL_cs_salvium_interface_impl.template.dart
@@ -299,7 +299,11 @@ class _CsSalviumInterfaceImpl extends CsSalviumInterface {
key: e.key,
timeStamp: e.timeStamp,
minConfirms: e.minConfirms.value,
- salviumData: (asset: e.asset, type: e.type.value),
+ salviumData: (
+ asset: e.asset,
+ type: e.type.value,
+ typeDisplay: e.type.displayName,
+ ),
),
)
.toList();
@@ -333,7 +337,11 @@ class _CsSalviumInterfaceImpl extends CsSalviumInterface {
key: e.key,
timeStamp: e.timeStamp,
minConfirms: e.minConfirms.value,
- salviumData: (asset: e.asset, type: e.type.value),
+ salviumData: (
+ asset: e.asset,
+ type: e.type.value,
+ typeDisplay: e.type.displayName,
+ ),
),
)
.toList();
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.