Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line numberDiff line numberDiff line change
Expand Up@@ -59,7 +59,9 @@ class _NewWalletRecoveryPhraseWarningViewState

final _numberOfPhraseWords = coin == Coin.monero
? Constants.seedPhraseWordCountMonero
: Constants.seedPhraseWordCountBip39;
: coin == Coin.wownero
? 14
: Constants.seedPhraseWordCountBip39;

return MasterScaffold(
isDesktop: isDesktop,
Expand Down
11 changes: 6 additions & 5 deletions lib/pages/exchange_view/send_from_view.dart
Original file line numberDiff line numberDiff line change
Expand Up@@ -85,7 +85,7 @@ class _SendFromViewState extends ConsumerState<SendFromView> {
height: 8,
),
Text(
"You need to send ${amount.toStringAsFixed(coin == Coin.monero || coin == Coin.wownero ? 12 : 8)} ${coin.ticker}",
"You need to send ${amount.toStringAsFixed(coin == Coin.monero ? Constants.satsPerCoinMonero : coin == Coin.wownero ? Constants.satsPerCoinWownero : Constants.satsPerCoin)} ${coin.ticker}",
style: STextStyles.itemSubtitle(context),
),
const SizedBox(
Expand DownExpand Up@@ -307,10 +307,11 @@ class _SendFromCardState extends ConsumerState<SendFromCard> {
"${Format.localizedStringAsFixed(
value: snapshot.data!,
locale: locale,
decimalPlaces:
coin == Coin.monero || coin == Coin.wownero
? 12
: 8,
decimalPlaces: coin == Coin.monero
? Constants.satsPerCoinMonero
: coin == Coin.wownero
? Constants.satsPerCoinWownero
: Constants.satsPerCoin,
)} ${coin.ticker}",
style: STextStyles.itemSubtitle(context),
);
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,9 +239,11 @@ class _TransactionDetailsViewState
children: [
SelectableText(
"$amountPrefix${Format.localizedStringAsFixed(
value: coin == Coin.monero || coin == Coin.wownero
value: coin == Coin.monero
? (amount / 10000.toDecimal()).toDecimal()
: amount,
: coin == Coin.wownero
? (amount / 1000.toDecimal()).toDecimal()
: amount,
locale: ref.watch(
localeServiceChangeNotifierProvider
.select((value) => value.locale),
Expand All@@ -254,7 +256,7 @@ class _TransactionDetailsViewState
height: 2,
),
SelectableText(
"${Format.localizedStringAsFixed(value: (coin == Coin.monero || coin == Coin.wownero ? (amount / 10000.toDecimal()).toDecimal() : amount) * ref.watch(priceAnd24hChangeNotifierProvider.select((value) => value.getPrice(coin).item1)), locale: ref.watch(
"${Format.localizedStringAsFixed(value: (coin == Coin.monero ? (amount / 10000.toDecimal()).toDecimal() : coin == Coin.wownero ? (amount / 1000.toDecimal()).toDecimal() : amount) * ref.watch(priceAnd24hChangeNotifierProvider.select((value) => value.getPrice(coin).item1)), locale: ref.watch(
localeServiceChangeNotifierProvider
.select((value) => value.locale),
), decimalPlaces: 2)} ${ref.watch(
Expand DownExpand Up@@ -462,18 +464,23 @@ class _TransactionDetailsViewState
showFeePending
? _transaction.confirmedStatus
? Format.localizedStringAsFixed(
value: coin == Coin.monero || coin == Coin.wownero
value: coin == Coin.monero
? (fee / 10000.toDecimal()).toDecimal()
: fee,
: coin == Coin.wownero
? (fee / 1000.toDecimal())
.toDecimal()
: fee,
locale: ref.watch(
localeServiceChangeNotifierProvider
.select((value) => value.locale)),
decimalPlaces: Constants.decimalPlaces)
: "Pending"
: Format.localizedStringAsFixed(
value: coin == Coin.monero || coin == Coin.wownero
value: coin == Coin.monero
? (fee / 10000.toDecimal()).toDecimal()
: fee,
: coin == Coin.wownero
? (fee / 1000.toDecimal()).toDecimal()
: fee,
locale: ref.watch(
localeServiceChangeNotifierProvider
.select((value) => value.locale)),
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -750,11 +750,16 @@ class _TransactionSearchViewState
}
int? amount;
if (amountDecimal != null) {
if (widget.coin == Coin.monero || widget.coin == Coin.wownero) {
if (widget.coin == Coin.monero) {
amount = (amountDecimal * Decimal.fromInt(Constants.satsPerCoinMonero))
.floor()
.toBigInt()
.toInt();
} else if (widget.coin == Coin.wownero) {
amount = (amountDecimal * Decimal.fromInt(Constants.satsPerCoinWownero))
.floor()
.toBigInt()
.toInt();
} else {
amount = (amountDecimal * Decimal.fromInt(Constants.satsPerCoin))
.floor()
Expand Down
2 changes: 1 addition & 1 deletion lib/services/coins/wownero/wownero_wallet.dart
Original file line numberDiff line numberDiff line change
Expand Up@@ -1452,7 +1452,7 @@ class WowneroWallet extends CoinServiceAPI {
try {
Logging.instance
.log("$toAddress $amount $args", level: LogLevel.Info);
String amountToSend = wowneroAmountToString(amount: amount * 10000);
String amountToSend = wowneroAmountToString(amount: amount * 1000);
Logging.instance.log("$amount $amountToSend", level: LogLevel.Info);

wownero_output.Output output = wownero_output.Output(walletBase!);
Expand Down
10 changes: 8 additions & 2 deletions lib/services/wallets_service.dart
Original file line numberDiff line numberDiff line change
Expand Up@@ -2,6 +2,7 @@ import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_libmonero/monero/monero.dart';
import 'package:flutter_libmonero/wownero/wownero.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:stackwallet/hive/db.dart';
import 'package:stackwallet/services/coins/epiccash/epiccash_wallet.dart';
Expand DownExpand Up@@ -367,8 +368,13 @@ class WalletsService extends ChangeNotifier {
await DB.instance.delete<dynamic>(
boxName: DB.boxNameAllWalletsData,
key: "${walletId}_mnemonicHasBeenVerified");

if (coinFromPrettyName(shell['coin'] as String) == Coin.monero) {
if (coinFromPrettyName(shell['coin'] as String) == Coin.wownero) {
final wowService =
wownero.createWowneroWalletService(DB.instance.moneroWalletInfoBox);
await wowService.remove(walletId);
Logging.instance
.log("monero wallet: $walletId deleted", level: LogLevel.Info);
} else if (coinFromPrettyName(shell['coin'] as String) == Coin.monero) {
final xmrService =
monero.createMoneroWalletService(DB.instance.moneroWalletInfoBox);
await xmrService.remove(walletId);
Expand Down
1 change: 1 addition & 0 deletions lib/utilities/constants.dart
Original file line numberDiff line numberDiff line change
Expand Up@@ -18,6 +18,7 @@ abstract class Constants {

//TODO: correct for monero?
static const int satsPerCoinMonero = 1000000000000;
static const int satsPerCoinWownero = 100000000000;
static const int satsPerCoin = 100000000;
static const int decimalPlaces = 8;

Expand Down
10 changes: 7 additions & 3 deletions lib/widgets/transaction_card.dart
Original file line numberDiff line numberDiff line change
Expand Up@@ -170,9 +170,11 @@ class _TransactionCardState extends ConsumerState<TransactionCard> {
fit: BoxFit.scaleDown,
child: Builder(
builder: (_) {
final amount = coin == Coin.monero || coin == Coin.wownero
final amount = coin == Coin.monero
? (_transaction.amount ~/ 10000)
: _transaction.amount;
: coin == Coin.wownero
? (_transaction.amount ~/ 1000)
: _transaction.amount;
return Text(
"${Format.satoshiAmountToPrettyString(amount, locale)} ${coin.ticker}",
style:
Expand DownExpand Up@@ -210,8 +212,10 @@ class _TransactionCardState extends ConsumerState<TransactionCard> {
builder: (_) {
// TODO: modify Format.<functions> to take optional Coin parameter so this type oif check isn't done in ui
int value = _transaction.amount;
if (coin == Coin.monero || coin == Coin.wownero) {
if (coin == Coin.monero) {
value = (value ~/ 10000);
} else if (coin == Coin.wownero) {
value = (value ~/ 1000);
}

return Text(
Expand Down
7 changes: 7 additions & 0 deletions pubspec.lock
Original file line numberDiff line numberDiff line change
Expand Up@@ -317,6 +317,13 @@ packages:
relative: true
source: path
version: "0.0.1"
cw_wownero:
dependency: "direct main"
description:
path: "crypto_plugins/flutter_libmonero/cw_wownero"
relative: true
source: path
version: "0.0.1"
dart_numerics:
dependency: "direct main"
description:
Expand Down