Skip to content

Commit

Permalink
Remove polyseed seed workaround and fix properly by just storing the …
Browse files Browse the repository at this point in the history
…wallet (#1215)
  • Loading branch information
konstantinullrich authored Dec 4, 2023
1 parent b3d579c commit 3c28e25
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 29 deletions.
16 changes: 10 additions & 6 deletions cw_monero/lib/api/wallet_manager.dart
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
import 'dart:ffi';
import 'package:ffi/ffi.dart';
import 'package:flutter/foundation.dart';

import 'package:cw_monero/api/convert_utf8_to_string.dart';
import 'package:cw_monero/api/signatures.dart';
import 'package:cw_monero/api/types.dart';
import 'package:cw_monero/api/monero_api.dart';
import 'package:cw_monero/api/exceptions/wallet_opening_exception.dart';
import 'package:cw_monero/api/exceptions/wallet_creation_exception.dart';
import 'package:cw_monero/api/exceptions/wallet_opening_exception.dart';
import 'package:cw_monero/api/exceptions/wallet_restore_from_keys_exception.dart';
import 'package:cw_monero/api/exceptions/wallet_restore_from_seed_exception.dart';
import 'package:cw_monero/api/monero_api.dart';
import 'package:cw_monero/api/signatures.dart';
import 'package:cw_monero/api/types.dart';
import 'package:cw_monero/api/wallet.dart';
import 'package:ffi/ffi.dart';
import 'package:flutter/foundation.dart';

final createWalletNative = moneroApi
.lookup<NativeFunction<create_wallet>>('create_wallet')
Expand Down Expand Up @@ -175,6 +177,8 @@ void restoreWalletFromSpendKeySync(
calloc.free(languagePointer);
calloc.free(spendKeyPointer);

storeSync();

if (!isWalletRestored) {
throw WalletRestoreFromKeysException(
message: convertUTF8ToString(pointer: errorMessagePointer));
Expand Down
9 changes: 2 additions & 7 deletions cw_monero/lib/monero_wallet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,7 @@ abstract class MoneroWalletBase
ObservableMap<CryptoCurrency, MoneroBalance> balance;

@override
String get seed => _seed;
String _seed = monero_wallet.getSeed();
String get seed => monero_wallet.getSeed();

@override
MoneroWalletKeys get keys => MoneroWalletKeys(
Expand All @@ -114,11 +113,7 @@ abstract class MoneroWalletBase
Timer? _autoSaveTimer;
List<MoneroUnspent> unspentCoins;

Future<void> init({String seedFallback = ""}) async {
if (_seed.isEmpty) {
_seed = seedFallback;
}

Future<void> init() async {
await walletAddresses.init();
balance = ObservableMap<CryptoCurrency, MoneroBalance>.of(<CryptoCurrency, MoneroBalance>{
currency: MoneroBalance(
Expand Down
17 changes: 1 addition & 16 deletions cw_monero/lib/monero_wallet_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import 'dart:io';
import 'package:cw_core/monero_wallet_utils.dart';
import 'package:cw_core/pathForWallet.dart';
import 'package:cw_core/unspent_coins_info.dart';
import 'package:cw_core/utils/file.dart';
import 'package:cw_core/wallet_base.dart';
import 'package:cw_core/wallet_credentials.dart';
import 'package:cw_core/wallet_info.dart';
Expand Down Expand Up @@ -134,12 +133,7 @@ class MoneroWalletService extends WalletService<
return openWallet(name, password);
}

if (wallet.seed.isEmpty) {
final seedFallback = await _getSeedBackup(path, password);
await wallet.init(seedFallback: seedFallback);
} else {
await wallet.init();
}
await wallet.init();

return wallet;
} catch (e) {
Expand Down Expand Up @@ -295,22 +289,13 @@ class MoneroWalletService extends WalletService<
restoreHeight: height,
spendKey: spendKey);

await writeData(path: "$path.seed", password: password, data: seed);

final wallet = MoneroWallet(
walletInfo: walletInfo, unspentCoinsInfo: unspentCoinsInfoSource);
await wallet.init();

return wallet;
}

Future<String> _getSeedBackup(String path, String password) async {
final seedFilePath = "$path.seed";
final seedFile = File(seedFilePath);
if (!seedFile.existsSync()) return "";
return read(path: seedFilePath, password: password);
}

Future<void> repairOldAndroidWallet(String name) async {
try {
if (!Platform.isAndroid) {
Expand Down

0 comments on commit 3c28e25

Please sign in to comment.