diff --git a/assets/images/2.0x/backup.png b/assets/images/2.0x/backup.png index 044e494a9..5cf40bba7 100644 Binary files a/assets/images/2.0x/backup.png and b/assets/images/2.0x/backup.png differ diff --git a/assets/images/2.0x/restore_keys.png b/assets/images/2.0x/restore_keys.png index db52a8a2f..6a90ef2c2 100644 Binary files a/assets/images/2.0x/restore_keys.png and b/assets/images/2.0x/restore_keys.png differ diff --git a/assets/images/2.0x/restore_seed.png b/assets/images/2.0x/restore_seed.png index ae32393cc..2bbea22cf 100644 Binary files a/assets/images/2.0x/restore_seed.png and b/assets/images/2.0x/restore_seed.png differ diff --git a/assets/images/2.0x/restore_wallet_image.png b/assets/images/2.0x/restore_wallet_image.png index 85c913533..3e3aecb91 100644 Binary files a/assets/images/2.0x/restore_wallet_image.png and b/assets/images/2.0x/restore_wallet_image.png differ diff --git a/assets/images/3.0x/backup.png b/assets/images/3.0x/backup.png index 48737c9b2..5971200dc 100644 Binary files a/assets/images/3.0x/backup.png and b/assets/images/3.0x/backup.png differ diff --git a/assets/images/3.0x/restore_keys.png b/assets/images/3.0x/restore_keys.png index 05cf12ed7..1d7301275 100644 Binary files a/assets/images/3.0x/restore_keys.png and b/assets/images/3.0x/restore_keys.png differ diff --git a/assets/images/3.0x/restore_seed.png b/assets/images/3.0x/restore_seed.png index addaf2cd0..de1a10bb7 100644 Binary files a/assets/images/3.0x/restore_seed.png and b/assets/images/3.0x/restore_seed.png differ diff --git a/assets/images/3.0x/restore_wallet_image.png b/assets/images/3.0x/restore_wallet_image.png index e96af8782..6a6fdd775 100644 Binary files a/assets/images/3.0x/restore_wallet_image.png and b/assets/images/3.0x/restore_wallet_image.png differ diff --git a/assets/images/backup.png b/assets/images/backup.png index e7948fba8..665128ac3 100644 Binary files a/assets/images/backup.png and b/assets/images/backup.png differ diff --git a/assets/images/restore_keys.png b/assets/images/restore_keys.png index cc1d80691..bbb7890f1 100644 Binary files a/assets/images/restore_keys.png and b/assets/images/restore_keys.png differ diff --git a/assets/images/restore_seed.png b/assets/images/restore_seed.png index 6a3ca415e..938cac4dd 100644 Binary files a/assets/images/restore_seed.png and b/assets/images/restore_seed.png differ diff --git a/assets/images/restore_wallet_image.png b/assets/images/restore_wallet_image.png index 4bd343eb3..9fee53f1d 100644 Binary files a/assets/images/restore_wallet_image.png and b/assets/images/restore_wallet_image.png differ diff --git a/cw_monero/pubspec.lock b/cw_monero/pubspec.lock index f462e288d..0aa42cd07 100644 --- a/cw_monero/pubspec.lock +++ b/cw_monero/pubspec.lock @@ -7,42 +7,42 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "2.0.11" + version: "2.0.13" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "1.5.2" + version: "1.6.0" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.0" + version: "2.4.1" boolean_selector: dependency: transitive description: name: boolean_selector url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "2.0.0" charcode: dependency: transitive description: name: charcode url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "1.1.3" collection: dependency: transitive description: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.11" + version: "1.14.12" convert: dependency: transitive description: @@ -56,7 +56,7 @@ packages: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.4" ffi: dependency: "direct main" description: @@ -80,7 +80,7 @@ packages: name: image url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "2.1.12" matcher: dependency: transitive description: @@ -109,13 +109,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.4.0" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0+1" petitparser: dependency: transitive description: @@ -136,7 +129,7 @@ packages: name: quiver url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.1.3" sky_engine: dependency: transitive description: flutter @@ -148,7 +141,7 @@ packages: name: source_span url: "https://pub.dartlang.org" source: hosted - version: "1.5.5" + version: "1.7.0" stack_trace: dependency: transitive description: @@ -183,7 +176,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.11" + version: "0.2.15" typed_data: dependency: transitive description: @@ -204,7 +197,7 @@ packages: name: xml url: "https://pub.dartlang.org" source: hosted - version: "3.5.0" + version: "3.6.1" sdks: dart: ">=2.6.0 <3.0.0" flutter: ">=0.1.4 <2.0.0" diff --git a/ios/Podfile b/ios/Podfile index 78d39756e..6697f0a53 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -15,59 +15,72 @@ def parse_KV_file(file, separator='=') if !File.exists? file_abs_path return []; end - pods_ary = [] + generated_key_values = {} skip_line_start_symbols = ["#", "/"] - File.foreach(file_abs_path) { |line| - next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } - plugin = line.split(pattern=separator) - if plugin.length == 2 - podname = plugin[0].strip() - path = plugin[1].strip() - podpath = File.expand_path("#{path}", file_abs_path) - pods_ary.push({:name => podname, :path => podpath}); - else - puts "Invalid plugin specification: #{line}" - end - } - return pods_ary + File.foreach(file_abs_path) do |line| + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } + plugin = line.split(pattern=separator) + if plugin.length == 2 + podname = plugin[0].strip() + path = plugin[1].strip() + podpath = File.expand_path("#{path}", file_abs_path) + generated_key_values[podname] = podpath + else + puts "Invalid plugin specification: #{line}" + end + end + generated_key_values end target 'Runner' do - # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock - # referring to absolute paths on developers' machines. use_frameworks! - system('rm -rf .symlinks') - system('mkdir -p .symlinks/plugins') + use_modular_headers! - # Flutter Pods - generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig') - if generated_xcode_build_settings.empty? - puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first." - end - generated_xcode_build_settings.map { |p| - if p[:name] == 'FLUTTER_FRAMEWORK_DIR' - symlink = File.join('.symlinks', 'flutter') - File.symlink(File.dirname(p[:path]), symlink) - pod 'Flutter', :path => File.join(symlink, File.basename(p[:path])) + # Flutter Pod + + copied_flutter_dir = File.join(__dir__, 'Flutter') + copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') + copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') + unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path) + # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet. + # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration. + # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist. + + generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig') + unless File.exist?(generated_xcode_build_settings_path) + raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first" end - } + generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path) + cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR']; + + unless File.exist?(copied_framework_path) + FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir) + end + unless File.exist?(copied_podspec_path) + FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir) + end + end + + # Keep pod path relative so it can be checked into Podfile.lock. + pod 'Flutter', :path => 'Flutter' # Plugin Pods - plugin_pods = parse_KV_file('../.flutter-plugins') - plugin_pods.map { |p| - symlink = File.join('.symlinks', 'plugins', p[:name]) - File.symlink(p[:path], symlink) - pod p[:name], :path => File.join(symlink, 'ios') - } -end -# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. -install! 'cocoapods', :disable_input_output_paths => true + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock + # referring to absolute paths on developers' machines. + system('rm -rf .symlinks') + system('mkdir -p .symlinks/plugins') + plugin_pods = parse_KV_file('../.flutter-plugins') + plugin_pods.each do |name, path| + symlink = File.join('.symlinks', 'plugins', name) + File.symlink(path, symlink) + pod name, :path => File.join(symlink, 'ios') + end +end post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| - config.build_settings['SWIFT_VERSION'] = '4.0' # required by simple_permission config.build_settings['ENABLE_BITCODE'] = 'NO' end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 959c597e1..3429d8968 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -61,7 +61,7 @@ DEPENDENCIES: - cw_monero (from `.symlinks/plugins/cw_monero/ios`) - devicelocale (from `.symlinks/plugins/devicelocale/ios`) - esys_flutter_share (from `.symlinks/plugins/esys_flutter_share/ios`) - - Flutter (from `.symlinks/flutter/ios`) + - Flutter (from `Flutter`) - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - local_auth (from `.symlinks/plugins/local_auth/ios`) @@ -92,7 +92,7 @@ EXTERNAL SOURCES: esys_flutter_share: :path: ".symlinks/plugins/esys_flutter_share/ios" Flutter: - :path: ".symlinks/flutter/ios" + :path: Flutter flutter_plugin_android_lifecycle: :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" flutter_secure_storage: @@ -145,6 +145,6 @@ SPEC CHECKSUMS: url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313 url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c -PODFILE CHECKSUM: f1916a43bb28badbd408be80e8e4b8652a74e93e +PODFILE CHECKSUM: c34e2287a9ccaa606aeceab922830efb9a6ff69a COCOAPODS: 1.9.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 54901a5a7..40ffc72b1 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -272,9 +272,40 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/../Flutter/Flutter.framework", + "${BUILT_PRODUCTS_DIR}/MTBBarcodeScanner/MTBBarcodeScanner.framework", + "${BUILT_PRODUCTS_DIR}/SwiftProtobuf/SwiftProtobuf.framework", + "${BUILT_PRODUCTS_DIR}/barcode_scan/barcode_scan.framework", + "${BUILT_PRODUCTS_DIR}/cw_monero/cw_monero.framework", + "${BUILT_PRODUCTS_DIR}/devicelocale/devicelocale.framework", + "${BUILT_PRODUCTS_DIR}/esys_flutter_share/esys_flutter_share.framework", + "${BUILT_PRODUCTS_DIR}/flutter_plugin_android_lifecycle/flutter_plugin_android_lifecycle.framework", + "${BUILT_PRODUCTS_DIR}/flutter_secure_storage/flutter_secure_storage.framework", + "${BUILT_PRODUCTS_DIR}/local_auth/local_auth.framework", + "${BUILT_PRODUCTS_DIR}/package_info/package_info.framework", + "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework", + "${BUILT_PRODUCTS_DIR}/share/share.framework", + "${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework", + "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MTBBarcodeScanner.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftProtobuf.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/barcode_scan.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/cw_monero.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/devicelocale.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/esys_flutter_share.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_plugin_android_lifecycle.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_secure_storage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/local_auth.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/lib/di.dart b/lib/di.dart index 7221b8964..a15c1811a 100644 --- a/lib/di.dart +++ b/lib/di.dart @@ -290,9 +290,6 @@ Future setup( getIt.registerFactory(() => ContactListViewModel( getIt.get().contactListStore, getIt.get())); - /*getIt.registerFactory( - () => ContactListPage(getIt.get()));*/ - getIt.registerFactoryParam((bool isEditable, _) => ContactListPage(getIt.get(), isEditable: isEditable)); diff --git a/lib/src/screens/restore/widgets/restore_button.dart b/lib/src/screens/restore/widgets/restore_button.dart index ba07d1fe8..72630492f 100644 --- a/lib/src/screens/restore/widgets/restore_button.dart +++ b/lib/src/screens/restore/widgets/restore_button.dart @@ -19,12 +19,12 @@ class RestoreButton extends StatelessWidget { onTap: onPressed, child: Container( width: double.infinity, - height: 150, + height: 160, padding: EdgeInsets.all(24), alignment: Alignment.topLeft, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(12)), - color: Theme.of(context).accentTextTheme.title.backgroundColor, + color: Theme.of(context).accentTextTheme.caption.color, ), child: Row( mainAxisSize: MainAxisSize.max, @@ -44,7 +44,7 @@ class RestoreButton extends StatelessWidget { title, style: TextStyle( fontSize: 16, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w500, color: Theme.of(context).primaryTextTheme.title.color ), ), @@ -54,7 +54,8 @@ class RestoreButton extends StatelessWidget { description, style: TextStyle( fontSize: 14, - color: Theme.of(context).primaryTextTheme.caption.color + fontWeight: FontWeight.normal, + color: Theme.of(context).primaryTextTheme.overline.color ), ), )