mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-04-07 15:07:28 +00:00
CW-686-polyseed-language-issues (#2098)
* feat: Fix space for japanese seed * feat: Fix space for japanese seed * feat: Upgrade Polyseed version with improved jp support * feat: Fix monero legacy seed language falling back to english
This commit is contained in:
parent
626e532fce
commit
597a716f9d
8 changed files with 37 additions and 21 deletions
|
@ -61,9 +61,7 @@ String getSeed() {
|
|||
return legacy;
|
||||
}
|
||||
|
||||
String getSeedLegacy(String? language) {
|
||||
final cakepassphrase = getPassphrase();
|
||||
var legacy = monero.Wallet_seed(wptr!, seedOffset: cakepassphrase);
|
||||
String? getSeedLanguage(String? language) {
|
||||
switch (language) {
|
||||
case "Chinese (Traditional)": language = "Chinese (simplified)"; break;
|
||||
case "Chinese (Simplified)": language = "Chinese (simplified)"; break;
|
||||
|
@ -71,8 +69,25 @@ String getSeedLegacy(String? language) {
|
|||
case "Czech": language = "English"; break;
|
||||
case "Japanese": language = "English"; break;
|
||||
}
|
||||
return language;
|
||||
}
|
||||
|
||||
String getSeedLegacy(String? language) {
|
||||
final cakepassphrase = getPassphrase();
|
||||
var legacy = monero.Wallet_seed(wptr!, seedOffset: cakepassphrase);
|
||||
language = getSeedLanguage(language);
|
||||
if (monero.Wallet_status(wptr!) != 0) {
|
||||
monero.Wallet_setSeedLanguage(wptr!, language: language ?? "English");
|
||||
if (language != null) {
|
||||
monero.Wallet_setSeedLanguage(wptr!, language: language);
|
||||
final status = monero.Wallet_status(wptr!);
|
||||
if (status != 0) {
|
||||
final err = monero.Wallet_errorString(wptr!);
|
||||
if (legacy.isNotEmpty) {
|
||||
return "$err\n\n$legacy";
|
||||
}
|
||||
return err;
|
||||
}
|
||||
}
|
||||
legacy = monero.Wallet_seed(wptr!, seedOffset: cakepassphrase);
|
||||
}
|
||||
if (monero.Wallet_status(wptr!) != 0) {
|
||||
|
|
|
@ -73,6 +73,7 @@ void createWalletSync(
|
|||
required String passphrase,
|
||||
int nettype = 0}) {
|
||||
txhistory = null;
|
||||
language = getSeedLanguage(language)!;
|
||||
final newWptr = monero.WalletManager_createWallet(wmPtr,
|
||||
path: path, password: password, language: language, networkType: 0);
|
||||
|
||||
|
@ -366,6 +367,9 @@ Future<void> loadWallet(
|
|||
}
|
||||
|
||||
if (deviceType == 1) {
|
||||
if (gLedger == null) {
|
||||
throw Exception("Tried to open a ledger wallet with no ledger connected");
|
||||
}
|
||||
final dummyWPtr = wptr ??
|
||||
monero.WalletManager_openWallet(wmPtr, path: '', password: '');
|
||||
enableLedgerExchange(dummyWPtr, gLedger!);
|
||||
|
@ -533,4 +537,4 @@ Future<void> restoreFromSpendKey(
|
|||
|
||||
bool isWalletExist({required String path}) => _isWalletExist(path);
|
||||
|
||||
bool isViewOnlyBySpendKey() => int.tryParse(monero.Wallet_secretSpendKey(wptr!)) == 0;
|
||||
bool isViewOnlyBySpendKey() => int.tryParse(monero.Wallet_secretSpendKey(wptr!)) == 0;
|
||||
|
|
|
@ -11,8 +11,6 @@ import 'package:cw_core/wallet_credentials.dart';
|
|||
import 'package:cw_core/wallet_info.dart';
|
||||
import 'package:cw_core/wallet_service.dart';
|
||||
import 'package:cw_core/wallet_type.dart';
|
||||
import 'package:cw_monero/api/exceptions/wallet_opening_exception.dart';
|
||||
import 'package:cw_core/get_height_by_date.dart';
|
||||
import 'package:cw_monero/api/account_list.dart';
|
||||
import 'package:cw_monero/api/wallet_manager.dart' as monero_wallet_manager;
|
||||
import 'package:cw_monero/api/wallet_manager.dart';
|
||||
|
@ -292,16 +290,14 @@ class MoneroWalletService extends WalletService<
|
|||
Future<MoneroWallet> restoreFromSeed(
|
||||
MoneroRestoreWalletFromSeedCredentials credentials,
|
||||
{bool? isTestnet}) async {
|
||||
if (credentials.mnemonic.split(" ").length == 16) {
|
||||
// Restore from Polyseed
|
||||
try {
|
||||
if (Polyseed.isValidSeed(credentials.mnemonic)) {
|
||||
return restoreFromPolyseed(credentials);
|
||||
}
|
||||
} catch (e) {
|
||||
printV("Polyseed restore failed: $e");
|
||||
rethrow;
|
||||
// Restore from Polyseed
|
||||
try {
|
||||
if (Polyseed.isValidSeed(credentials.mnemonic)) {
|
||||
return restoreFromPolyseed(credentials);
|
||||
}
|
||||
} catch (e) {
|
||||
printV("Polyseed restore failed: $e");
|
||||
rethrow;
|
||||
}
|
||||
|
||||
try {
|
||||
|
|
|
@ -19,7 +19,7 @@ dependencies:
|
|||
flutter_mobx: ^2.0.6+1
|
||||
intl: ^0.19.0
|
||||
encrypt: ^5.0.1
|
||||
polyseed: ^0.0.6
|
||||
polyseed: ^0.0.7
|
||||
cw_core:
|
||||
path: ../cw_core
|
||||
monero:
|
||||
|
|
|
@ -19,7 +19,7 @@ dependencies:
|
|||
flutter_mobx: ^2.0.6+1
|
||||
intl: ^0.19.0
|
||||
encrypt: ^5.0.1
|
||||
polyseed: ^0.0.6
|
||||
polyseed: ^0.0.7
|
||||
cw_core:
|
||||
path: ../cw_core
|
||||
monero:
|
||||
|
|
|
@ -92,7 +92,8 @@ class ValidatableAnnotatedEditableTextState extends EditableTextState {
|
|||
|
||||
List<Annotation> getRanges() {
|
||||
final result = <Annotation>[];
|
||||
final text = textEditingValue.text;
|
||||
// Replace Ideographic Space (U+3000) with a normal space
|
||||
final text = textEditingValue.text.replaceAll("\u3000", " ");
|
||||
final source = text
|
||||
.split(' ')
|
||||
.map((word) {
|
||||
|
|
|
@ -60,7 +60,7 @@ abstract class WalletCreationVMBase with Store {
|
|||
final SeedSettingsViewModel seedSettingsViewModel;
|
||||
|
||||
bool isPolyseed(String seed) =>
|
||||
(type == WalletType.monero || type == WalletType.wownero) &&
|
||||
[WalletType.monero, WalletType.wownero].contains(type) &&
|
||||
(Polyseed.isValidSeed(seed) || (seed.split(" ").length == 14));
|
||||
|
||||
bool nameExists(String name) => walletCreationService.exists(name);
|
||||
|
|
|
@ -104,7 +104,7 @@ dependencies:
|
|||
# ref: main
|
||||
socks5_proxy: ^1.0.4
|
||||
flutter_svg: ^2.0.9
|
||||
polyseed: ^0.0.6
|
||||
polyseed: ^0.0.7
|
||||
nostr_tools: ^1.0.9
|
||||
ledger_flutter_plus:
|
||||
git:
|
||||
|
|
Loading…
Reference in a new issue