Started working on iOS migrations. Addeed migrations for wallets info and address book. Fixed build for iOS

M committed Apr 6, 2020 at 19:10 UTC 8e9033fce43a4377544bdd016ea8cdd33ea97a15
5 files changed +98 -14
cw_monero/ios/cw_monero.podspec
+8 -1
@@ -48,4 +48,11 @@ A new flutter plugin project.
48 sodium.libraries = 'sodium'
49 sodium.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/libs/sodium/include/**" }
50 end
51 -end
\ No newline at end of file
51 +
52 + s.subspec 'lmdb' do |sodium|
53 +# sodium.preserve_paths = 'External/ios/libs/sodium/include/**/*.h'
54 + sodium.vendored_libraries = 'External/ios/libs/lmdb/liblmdb.a'
55 + sodium.libraries = 'lmdb'
56 +# sodium.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/External/ios/libs/sodium/include/**" }
57 + end
58 +end
ios/Podfile.lock
+24 -3
@@ -4,24 +4,33 @@ PODS:
4 - MTBBarcodeScanner
5 - cw_monero (0.0.2):
6 - cw_monero/Boost (= 0.0.2)
7 + - cw_monero/lmdb (= 0.0.2)
8 - cw_monero/Monero (= 0.0.2)
9 - cw_monero/OpenSSL (= 0.0.2)
10 - cw_monero/Sodium (= 0.0.2)
11 - Flutter
12 - cw_monero/Boost (0.0.2):
13 - Flutter
14 + - cw_monero/lmdb (0.0.2):
15 + - Flutter
16 - cw_monero/Monero (0.0.2):
17 - Flutter
18 - cw_monero/OpenSSL (0.0.2):
19 - Flutter
20 - cw_monero/Sodium (0.0.2):
21 - Flutter
22 + - devicelocale (0.0.1):
23 + - Flutter
24 - esys_flutter_share (0.0.1):
25 - Flutter
26 - Flutter (1.0.0)
27 - flutter_secure_storage (3.3.1):
28 - Flutter
29 + - local_auth (0.0.1):
30 + - Flutter
31 - MTBBarcodeScanner (5.0.11)
32 + - package_info (0.0.1):
33 + - Flutter
34 - path_provider (0.0.1):
35 - Flutter
36 - share (0.5.2):
@@ -36,9 +45,12 @@ PODS:
45 DEPENDENCIES:
46 - barcode_scan (from `.symlinks/plugins/barcode_scan/ios`)
47 - cw_monero (from `.symlinks/plugins/cw_monero/ios`)
48 + - devicelocale (from `.symlinks/plugins/devicelocale/ios`)
49 - esys_flutter_share (from `.symlinks/plugins/esys_flutter_share/ios`)
40 - - Flutter (from `.symlinks/flutter/ios-release`)
50 + - Flutter (from `.symlinks/flutter/ios`)
51 - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
52 + - local_auth (from `.symlinks/plugins/local_auth/ios`)
53 + - package_info (from `.symlinks/plugins/package_info/ios`)
54 - path_provider (from `.symlinks/plugins/path_provider/ios`)
55 - share (from `.symlinks/plugins/share/ios`)
56 - shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
@@ -54,12 +66,18 @@ EXTERNAL SOURCES:
66 :path: ".symlinks/plugins/barcode_scan/ios"
67 cw_monero:
68 :path: ".symlinks/plugins/cw_monero/ios"
69 + devicelocale:
70 + :path: ".symlinks/plugins/devicelocale/ios"
71 esys_flutter_share:
72 :path: ".symlinks/plugins/esys_flutter_share/ios"
73 Flutter:
60 - :path: ".symlinks/flutter/ios-release"
74 + :path: ".symlinks/flutter/ios"
75 flutter_secure_storage:
76 :path: ".symlinks/plugins/flutter_secure_storage/ios"
77 + local_auth:
78 + :path: ".symlinks/plugins/local_auth/ios"
79 + package_info:
80 + :path: ".symlinks/plugins/package_info/ios"
81 path_provider:
82 :path: ".symlinks/plugins/path_provider/ios"
83 share:
@@ -73,11 +91,14 @@ EXTERNAL SOURCES:
91
92 SPEC CHECKSUMS:
93 barcode_scan: 33f586d02270046fc6559135038b34b5754eaa4f
76 - cw_monero: ca40a57b99f7753ed93d3b50af671a637277eb89
94 + cw_monero: 2e1f79929880cc2293b5bc1b25e28152e4d84649
95 + devicelocale: feebbe5e7a30adb8c4f83185de1b50ff19b44f00
96 esys_flutter_share: 403498dab005b36ce1f8d7aff377e81f0621b0b4
97 Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
98 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
99 + local_auth: 2571c49920ae469f46d5557435fad8fa473a5e88
100 MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
101 + package_info: 48b108e75b8802c2d5e126f208ef540561c98aef
102 path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d
103 share: bae0a282aab4483288913fc4dc0b935d4b491f2e
104 shared_preferences: 430726339841afefe5142b9c1f50cb6bd7793e01
ios/Runner.xcodeproj/project.pbxproj
+6 -3
@@ -399,7 +399,8 @@
399 "$(inherited)",
400 "$(PROJECT_DIR)/Flutter",
401 );
402 - PRODUCT_BUNDLE_IDENTIFIER = com.cakewallet.cakewallet;
402 + MARKETING_VERSION = 3.1.28;
403 + PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
404 PRODUCT_NAME = "$(TARGET_NAME)";
405 SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
406 SWIFT_VERSION = 5.0;
@@ -534,7 +535,8 @@
535 "$(inherited)",
536 "$(PROJECT_DIR)/Flutter",
537 );
537 - PRODUCT_BUNDLE_IDENTIFIER = com.cakewallet.cakewallet;
538 + MARKETING_VERSION = 3.1.28;
539 + PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
540 PRODUCT_NAME = "$(TARGET_NAME)";
541 SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
542 SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -564,7 +566,8 @@
566 "$(inherited)",
567 "$(PROJECT_DIR)/Flutter",
568 );
567 - PRODUCT_BUNDLE_IDENTIFIER = com.cakewallet.cakewallet;
569 + MARKETING_VERSION = 3.1.28;
570 + PRODUCT_BUNDLE_IDENTIFIER = com.fotolockr.cakewallet;
571 PRODUCT_NAME = "$(TARGET_NAME)";
572 SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
573 SWIFT_VERSION = 5.0;
ios/Runner/Info.plist
+1 -1
@@ -15,7 +15,7 @@
15 <key>CFBundlePackageType</key>
16 <string>APPL</string>
17 <key>CFBundleShortVersionString</key>
18 - <string>$(FLUTTER_BUILD_NAME)</string>
18 + <string>$(MARKETING_VERSION)</string>
19 <key>CFBundleSignature</key>
20 <string>????</string>
21 <key>CFBundleVersion</key>
lib/src/domain/common/fs_migration.dart
+59 -6
@@ -1,4 +1,12 @@
1 import 'dart:io';
2 +import 'dart:convert';
3 +import 'package:cake_wallet/src/domain/common/contact.dart';
4 +import 'package:cake_wallet/src/domain/common/crypto_currency.dart';
5 +import 'package:cake_wallet/src/domain/common/wallet_info.dart';
6 +import 'package:cake_wallet/src/domain/common/wallet_type.dart';
7 +import 'package:cake_wallet/src/domain/exchange/trade.dart';
8 +import 'package:flutter/foundation.dart';
9 +import 'package:hive/hive.dart';
10 import 'package:path_provider/path_provider.dart';
11
12 const reservedNames = ["flutter_assets", "wallets", "db"];
@@ -12,8 +20,6 @@ Future<void> migrate_android_v1() async {
20
21 Future<void> migrate_ios_v1() async {
22 final appDocDir = await getApplicationDocumentsDirectory();
15 -
16 -
23 }
24
25 Future<void> migrate_hives({Directory appDocDir}) async {
@@ -73,7 +79,54 @@ Future<void> migrate_wallets({Directory appDocDir}) async {
79 });
80 }
81
76 -Future<void> migrate_ios_wallets({Directory appDocDir}) async {
77 - // final oldWalletsDir = Directory('${appDocDir.path}/wallets');
78 -
79 -}
\ No newline at end of file
82 +Future<void> migrate_ios_wallet_info(
83 + {@required Directory appDocDir,
84 + @required Box<WalletInfo> walletsInfo}) async {
85 + final walletsDir = Directory('${appDocDir.path}/wallets');
86 + final moneroWalletsDir = Directory('${walletsDir.path}/monero');
87 +
88 + moneroWalletsDir.listSync().forEach((item) async {
89 + try {
90 + if (item is Directory) {
91 + final name = item.path.split('/').last;
92 + final configFile = File('${item.path}/$name.json');
93 + final config =
94 + json.decode(configFile.readAsStringSync()) as Map<String, dynamic>;
95 + final isRecovery = config["isRecovery"] as bool ?? false;
96 + final id =
97 + walletTypeToString(WalletType.monero).toLowerCase() + '_' + name;
98 + final walletInfo =
99 + WalletInfo(id: id, name: name, isRecovery: isRecovery);
100 +
101 + await walletsInfo.add(walletInfo);
102 + }
103 + } catch (e) {
104 + print(e.toString());
105 + }
106 + });
107 +}
108 +
109 +Future<void> migrate_ios_trades_list(
110 + {@required Directory appDocDir, @required Box<Trade> trades}) async {
111 + final adderessBookJSON = File('${appDocDir.path}/trades_list.json');
112 + final List<dynamic> trades =
113 + json.decode(adderessBookJSON.readAsStringSync()) as List<dynamic>;
114 +}
115 +
116 +Future<void> migrate_ios_address_book(
117 + {@required Directory appDocDir, @required Box<Contact> contacts}) async {
118 + final adderessBookJSON = File('${appDocDir.path}/address_book.json');
119 + final List<dynamic> addresses =
120 + json.decode(adderessBookJSON.readAsStringSync()) as List<dynamic>;
121 +
122 + addresses.forEach((dynamic item) async {
123 + final _item = item as Map<String, dynamic>;
124 + final type = _item["type"] as String;
125 + final address = _item["address"] as String;
126 + final name = _item["name"] as String;
127 + final contact = Contact(
128 + address: address, name: name, type: CryptoCurrency.fromString(type));
129 +
130 + await contacts.add(contact);
131 + });
132 +}