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
+}