Skip to content
Merged

Wow #98

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 number Diff line number Diff 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 number Diff line number Diff 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 Down Expand 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 number Diff line number Diff 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 Down Expand 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 number Diff line number Diff 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 number Diff line number Diff 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 number Diff line number Diff 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 Down Expand 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 number Diff line number Diff 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 number Diff line number Diff 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 Down Expand 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 number Diff line number Diff 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