diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id index 9482910a..528604ac 100644 --- a/ios/Flutter/.last_build_id +++ b/ios/Flutter/.last_build_id @@ -1 +1 @@ -6584a396d0abc5ca0aed64b9b1c06b3d \ No newline at end of file +dd448b9c97933af58f6a55258c72b577 \ No newline at end of file diff --git a/ios/Podfile b/ios/Podfile index 02cc456f..fb925943 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +platform :ios, '10.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -10,85 +10,33 @@ project 'Runner', { 'Release' => :release, } -def parse_KV_file(file, separator='=') - file_abs_path = File.expand_path(file) - if !File.exists? file_abs_path - return []; +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" end - generated_key_values = {} - skip_line_start_symbols = ["#", "/"] - 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 + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches end - generated_key_values + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" end +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + target 'Runner' do use_frameworks! use_modular_headers! - - # 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' pod 'SQLCipher' - # Plugin Pods - - # 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 + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 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 - post_install do |installer| installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['ENABLE_BITCODE'] = 'NO' - end + flutter_additional_ios_build_settings(target) end end - -# add pods for desired Firebase products -# https://firebase.google.com/docs/ios/setup#available-pods diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 4dd3b827..a040a43c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,39 +1,39 @@ PODS: + - android_path_provider (0.0.1): + - Flutter - disk_space (0.0.1): - Flutter - - DKImagePickerController/Core (4.2.2): + - DKImagePickerController/Core (4.3.2): - DKImagePickerController/ImageDataManager - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.2.2) - - DKImagePickerController/PhotoGallery (4.2.2): + - DKImagePickerController/ImageDataManager (4.3.2) + - DKImagePickerController/PhotoGallery (4.3.2): - DKImagePickerController/Core - DKPhotoGallery - - DKImagePickerController/Resource (4.2.2) - - DKPhotoGallery (0.0.14): - - DKPhotoGallery/Core (= 0.0.14) - - DKPhotoGallery/Model (= 0.0.14) - - DKPhotoGallery/Preview (= 0.0.14) - - DKPhotoGallery/Resource (= 0.0.14) + - DKImagePickerController/Resource (4.3.2) + - DKPhotoGallery (0.0.17): + - DKPhotoGallery/Core (= 0.0.17) + - DKPhotoGallery/Model (= 0.0.17) + - DKPhotoGallery/Preview (= 0.0.17) + - DKPhotoGallery/Resource (= 0.0.17) - SDWebImage - - SDWebImageFLPlugin - - DKPhotoGallery/Core (0.0.14): + - SwiftyGif + - DKPhotoGallery/Core (0.0.17): - DKPhotoGallery/Model - DKPhotoGallery/Preview - SDWebImage - - SDWebImageFLPlugin - - DKPhotoGallery/Model (0.0.14): + - SwiftyGif + - DKPhotoGallery/Model (0.0.17): - SDWebImage - - SDWebImageFLPlugin - - DKPhotoGallery/Preview (0.0.14): + - SwiftyGif + - DKPhotoGallery/Preview (0.0.17): - DKPhotoGallery/Model - DKPhotoGallery/Resource - SDWebImage - - SDWebImageFLPlugin - - DKPhotoGallery/Resource (0.0.14): + - SwiftyGif + - DKPhotoGallery/Resource (0.0.17): - SDWebImage - - SDWebImageFLPlugin - - file_chooser (0.0.1): - - Flutter + - SwiftyGif - file_picker (0.0.1): - DKImagePickerController/PhotoGallery - Flutter @@ -42,12 +42,10 @@ PODS: - Firebase/Messaging (6.26.0): - Firebase/CoreOnly - FirebaseMessaging (~> 4.4.1) - - firebase_core (0.5.0): + - firebase_core (0.5.0-1): - Firebase/CoreOnly (~> 6.26.0) - Flutter - - firebase_core_web (0.1.0): - - Flutter - - firebase_messaging (7.0.2): + - firebase_messaging (7.0.3): - Firebase/CoreOnly (~> 6.26.0) - Firebase/Messaging (~> 6.26.0) - firebase_core @@ -58,8 +56,8 @@ PODS: - FirebaseCoreDiagnosticsInterop (~> 1.2) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/Logger (~> 6.5) - - FirebaseCoreDiagnostics (1.6.0): - - GoogleDataTransport (~> 7.2) + - FirebaseCoreDiagnostics (1.7.0): + - GoogleDataTransport (~> 7.4) - GoogleUtilities/Environment (~> 6.7) - GoogleUtilities/Logger (~> 6.7) - nanopb (~> 1.30906.0) @@ -83,7 +81,6 @@ PODS: - GoogleUtilities/Reachability (~> 6.5) - GoogleUtilities/UserDefaults (~> 6.5) - Protobuf (>= 3.9.2, ~> 3.9) - - FLAnimatedImage (1.0.12) - Flutter (1.0.0) - flutter_keyboard_visibility (0.0.1): - Flutter @@ -92,8 +89,6 @@ PODS: - flutter_olm (0.0.1): - Flutter - OLMKit - - flutter_plugin_android_lifecycle (0.0.1): - - Flutter - flutter_secure_storage (3.3.1): - Flutter - flutter_sound (0.0.1): @@ -101,7 +96,7 @@ PODS: - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) - - GoogleDataTransport (7.3.0): + - GoogleDataTransport (7.5.1): - nanopb (~> 1.30906.0) - GoogleUtilities/AppDelegateSwizzler (6.7.2): - GoogleUtilities/Environment @@ -140,31 +135,24 @@ PODS: - Flutter - path_provider (0.0.1): - Flutter - - path_provider_linux (0.0.1): + - "permission_handler (5.0.1+1)": - Flutter - - path_provider_macos (0.0.1): - - Flutter - - path_provider_windows (0.0.1): - - Flutter - - PromisesObjC (1.2.10) + - PromisesObjC (1.2.11) - Protobuf (3.13.0) - receive_sharing_intent (0.0.1): - Flutter - - SDWebImage (5.9.1): - - SDWebImage/Core (= 5.9.1) - - SDWebImage/Core (5.9.1) - - SDWebImageFLPlugin (0.4.0): - - FLAnimatedImage (>= 1.0.11) - - SDWebImage/Core (~> 5.6) + - SDWebImage (5.9.5): + - SDWebImage/Core (= 5.9.5) + - SDWebImage/Core (5.9.5) - share (0.0.1): - Flutter - - sqflite (0.0.1): + - sqflite (0.0.2): - Flutter - - FMDB (~> 2.7.2) - - SQLCipher (4.4.0): - - SQLCipher/standard (= 4.4.0) - - SQLCipher/common (4.4.0) - - SQLCipher/standard (4.4.0): + - FMDB (>= 2.7.5) + - SQLCipher (4.4.1): + - SQLCipher/standard (= 4.4.1) + - SQLCipher/common (4.4.1) + - SQLCipher/standard (4.4.1): - SQLCipher/common - sqlite3 (3.32.3): - sqlite3/common (= 3.32.3) @@ -184,31 +172,22 @@ PODS: - sqlite3/json1 - sqlite3/perf-threadsafe - sqlite3/rtree + - SwiftyGif (5.3.0) - url_launcher (0.0.1): - Flutter - - url_launcher_linux (0.0.1): - - Flutter - - url_launcher_macos (0.0.1): - - Flutter - - url_launcher_web (0.0.1): - - Flutter - - url_launcher_windows (0.0.1): - - Flutter - webview_flutter (0.0.1): - Flutter DEPENDENCIES: + - android_path_provider (from `.symlinks/plugins/android_path_provider/ios`) - disk_space (from `.symlinks/plugins/disk_space/ios`) - - file_chooser (from `.symlinks/plugins/file_chooser/ios`) - file_picker (from `.symlinks/plugins/file_picker/ios`) - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - - firebase_core_web (from `.symlinks/plugins/firebase_core_web/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - Flutter (from `Flutter`) - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - flutter_olm (from `.symlinks/plugins/flutter_olm/ios`) - - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_sound (from `.symlinks/plugins/flutter_sound/ios`) - image_picker (from `.symlinks/plugins/image_picker/ios`) @@ -216,19 +195,13 @@ DEPENDENCIES: - open_file (from `.symlinks/plugins/open_file/ios`) - package_info (from `.symlinks/plugins/package_info/ios`) - path_provider (from `.symlinks/plugins/path_provider/ios`) - - path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`) - - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) - - path_provider_windows (from `.symlinks/plugins/path_provider_windows/ios`) + - permission_handler (from `.symlinks/plugins/permission_handler/ios`) - receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`) - share (from `.symlinks/plugins/share/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - SQLCipher - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/ios`) - url_launcher (from `.symlinks/plugins/url_launcher/ios`) - - url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`) - - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`) - - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`) - - url_launcher_windows (from `.symlinks/plugins/url_launcher_windows/ios`) - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`) SPEC REPOS: @@ -243,7 +216,6 @@ SPEC REPOS: - FirebaseInstallations - FirebaseInstanceID - FirebaseMessaging - - FLAnimatedImage - FMDB - GoogleDataTransport - GoogleUtilities @@ -252,21 +224,19 @@ SPEC REPOS: - PromisesObjC - Protobuf - SDWebImage - - SDWebImageFLPlugin - SQLCipher - sqlite3 + - SwiftyGif EXTERNAL SOURCES: + android_path_provider: + :path: ".symlinks/plugins/android_path_provider/ios" disk_space: :path: ".symlinks/plugins/disk_space/ios" - file_chooser: - :path: ".symlinks/plugins/file_chooser/ios" file_picker: :path: ".symlinks/plugins/file_picker/ios" firebase_core: :path: ".symlinks/plugins/firebase_core/ios" - firebase_core_web: - :path: ".symlinks/plugins/firebase_core_web/ios" firebase_messaging: :path: ".symlinks/plugins/firebase_messaging/ios" Flutter: @@ -277,8 +247,6 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_local_notifications/ios" flutter_olm: :path: ".symlinks/plugins/flutter_olm/ios" - flutter_plugin_android_lifecycle: - :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" flutter_secure_storage: :path: ".symlinks/plugins/flutter_secure_storage/ios" flutter_sound: @@ -293,12 +261,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/package_info/ios" path_provider: :path: ".symlinks/plugins/path_provider/ios" - path_provider_linux: - :path: ".symlinks/plugins/path_provider_linux/ios" - path_provider_macos: - :path: ".symlinks/plugins/path_provider_macos/ios" - path_provider_windows: - :path: ".symlinks/plugins/path_provider_windows/ios" + permission_handler: + :path: ".symlinks/plugins/permission_handler/ios" receive_sharing_intent: :path: ".symlinks/plugins/receive_sharing_intent/ios" share: @@ -309,44 +273,33 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/sqlite3_flutter_libs/ios" url_launcher: :path: ".symlinks/plugins/url_launcher/ios" - url_launcher_linux: - :path: ".symlinks/plugins/url_launcher_linux/ios" - url_launcher_macos: - :path: ".symlinks/plugins/url_launcher_macos/ios" - url_launcher_web: - :path: ".symlinks/plugins/url_launcher_web/ios" - url_launcher_windows: - :path: ".symlinks/plugins/url_launcher_windows/ios" webview_flutter: :path: ".symlinks/plugins/webview_flutter/ios" SPEC CHECKSUMS: + android_path_provider: 708a32098dc3da99e5d0c09ec6a485833a07d28a disk_space: e94d34bbdf77954adfb39e60bde9cc5c7233eda6 - DKImagePickerController: 4a3e7948a848c4348e600b3fe5ce41478835fa10 - DKPhotoGallery: 0290d32343574f06eaa4c26f8f2f8a1035e916be - file_chooser: 98943893422baaed80ca2415390aec58f01ea192 + DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d + DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179 file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1 Firebase: 7cf5f9c67f03cb3b606d1d6535286e1080e57eb6 - firebase_core: 3134fe79d257d430f163b558caf52a10a87efe8a - firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1 - firebase_messaging: 2844c37f9ce87c0904b38fe435223161b1a71528 + firebase_core: 00e54a4744164a6b5a250b96dd1ad5afaba7a342 + firebase_messaging: 666d9994651b1ecf8c582b52dd913f3fa58c17ef FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae FirebaseCore: f42e5e5f382cdcf6b617ed737bf6c871a6947b17 - FirebaseCoreDiagnostics: 7415bfb3883b3500c5a95c42b6ba66baae78f600 + FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1 FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 FirebaseInstallations: 6f5f680e65dc374397a483c32d1799ba822a395b FirebaseInstanceID: cef67c4967c7cecb56ea65d8acbb4834825c587b FirebaseMessaging: 29543feb343b09546ab3aa04d008ee8595b43c44 - FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 Flutter: 0e3d915762c693b495b44d77113d4970485de6ec flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 - flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186 + flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743 flutter_olm: be36ebeb6388f7d7b3097d39feaf459a3cad2091 - flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec flutter_sound: 0e8163ceac1e00eb6d894e2ae4641ba726a2c479 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - GoogleDataTransport: e85fb700c9b027079ce182c3d08e12e0f9618bb4 + GoogleDataTransport: f56af7caa4ed338dc8e138a5d7c5973e66440833 GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09 nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc @@ -355,26 +308,20 @@ SPEC CHECKSUMS: open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c - path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4 - path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0 - path_provider_windows: a2b81600c677ac1959367280991971cb9a1edb3b - PromisesObjC: b14b1c6b68e306650688599de8a45e49fae81151 + permission_handler: eac8e15b4a1a3fba55b761d19f3f4e6b005d15b6 + PromisesObjC: 8c196f5a328c2cba3e74624585467a557dcb482f Protobuf: 3dac39b34a08151c6d949560efe3f86134a3f748 receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1 - SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 - SDWebImageFLPlugin: 6c2295fb1242d44467c6c87dc5db6b0a13228fd8 + SDWebImage: 0b2ba0d56479bf6a45ecddbfd5558bea93150d25 share: 0b2c3e82132f5888bccca3351c504d0003b3b410 - sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 - SQLCipher: e434ed542b24f38ea7b36468a13f9765e1b5c072 + sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 + SQLCipher: 0b81a39b21247c559c52c3bd2234808e626c008b sqlite3: 8f7d2078ae27778699a622a94b853285793422a2 sqlite3_flutter_libs: 5651f8ff48e3b44d910863c4ea5916085b1b245f + SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40 url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef - url_launcher_linux: ac237cb7a8058736e4aae38bdbcc748a4b394cc0 - url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313 - url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c - url_launcher_windows: 683d7c283894db8d1914d3ab2223b20cc1ad95d5 webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 -PODFILE CHECKSUM: 4b647f92a1fa32e6a4287abfd67897564ceda4e9 +PODFILE CHECKSUM: 98265b4e989e5e1e991bc8f97bc358d0dd616061 -COCOAPODS: 1.9.3 +COCOAPODS: 1.10.0 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 190a43d2..e437b11b 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -263,9 +263,74 @@ files = ( ); inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework", + "${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework", + "${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework", + "${PODS_ROOT}/../Flutter/Flutter.framework", + "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework", + "${BUILT_PRODUCTS_DIR}/OLMKit/OLMKit.framework", + "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework", + "${BUILT_PRODUCTS_DIR}/Protobuf/Protobuf.framework", + "${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework", + "${BUILT_PRODUCTS_DIR}/SQLCipher/SQLCipher.framework", + "${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework", + "${BUILT_PRODUCTS_DIR}/android_path_provider/android_path_provider.framework", + "${BUILT_PRODUCTS_DIR}/disk_space/disk_space.framework", + "${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework", + "${BUILT_PRODUCTS_DIR}/flutter_keyboard_visibility/flutter_keyboard_visibility.framework", + "${BUILT_PRODUCTS_DIR}/flutter_local_notifications/flutter_local_notifications.framework", + "${BUILT_PRODUCTS_DIR}/flutter_olm/flutter_olm.framework", + "${BUILT_PRODUCTS_DIR}/flutter_secure_storage/flutter_secure_storage.framework", + "${BUILT_PRODUCTS_DIR}/flutter_sound/flutter_sound.framework", + "${BUILT_PRODUCTS_DIR}/image_picker/image_picker.framework", + "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework", + "${BUILT_PRODUCTS_DIR}/native_imaging/native_imaging.framework", + "${BUILT_PRODUCTS_DIR}/open_file/open_file.framework", + "${BUILT_PRODUCTS_DIR}/package_info/package_info.framework", + "${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework", + "${BUILT_PRODUCTS_DIR}/receive_sharing_intent/receive_sharing_intent.framework", + "${BUILT_PRODUCTS_DIR}/share/share.framework", + "${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework", + "${BUILT_PRODUCTS_DIR}/sqlite3/sqlite3.framework", + "${BUILT_PRODUCTS_DIR}/sqlite3_flutter_libs/sqlite3_flutter_libs.framework", + "${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework", + "${BUILT_PRODUCTS_DIR}/webview_flutter/webview_flutter.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OLMKit.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Protobuf.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SQLCipher.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/android_path_provider.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/disk_space.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_keyboard_visibility.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_local_notifications.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_olm.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_secure_storage.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_sound.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/image_picker.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/native_imaging.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/open_file.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}/receive_sharing_intent.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/share.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqlite3.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqlite3_flutter_libs.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/webview_flutter.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 70693e4a..9413c697 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -8,6 +8,9 @@ import Flutter didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) + if #available(iOS 10.0, *) { + UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate + } return super.application(application, didFinishLaunchingWithOptions: launchOptions) } } diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 94d01ab9..39847472 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -31,6 +31,7 @@ UIBackgroundModes audio + remote-notification UILaunchStoryboardName LaunchScreen diff --git a/lib/components/list_items/chat_list_item.dart b/lib/components/list_items/chat_list_item.dart index 0a788eb1..bc11c4bc 100644 --- a/lib/components/list_items/chat_list_item.dart +++ b/lib/components/list_items/chat_list_item.dart @@ -18,6 +18,8 @@ import '../matrix.dart'; import '../mouse_over_builder.dart'; import '../theme_switcher.dart'; +enum ArchivedRoomAction { delete, rejoin } + class ChatListItem extends StatelessWidget { final Room room; final bool activeChat; @@ -51,37 +53,33 @@ class ChatListItem extends StatelessWidget { } if (room.membership == Membership.leave) { - await showDialog( + final action = await showModalActionSheet( context: context, - builder: (BuildContext context) => AlertDialog( - title: Text(L10n.of(context).archivedRoom), - content: Text(L10n.of(context).thisRoomHasBeenArchived), - actions: [ - FlatButton( - child: Text(L10n.of(context).close.toUpperCase(), - style: TextStyle(color: Colors.blueGrey)), - onPressed: () => Navigator.of(context).pop(), - ), - FlatButton( - child: Text(L10n.of(context).delete.toUpperCase(), - style: TextStyle(color: Colors.red)), - onPressed: () async { - await archiveAction(context); - await Navigator.of(context).pop(); - }, - ), - FlatButton( - child: Text(L10n.of(context).rejoin.toUpperCase(), - style: TextStyle(color: Colors.blue)), - onPressed: () async { - await SimpleDialogs(context) - .tryRequestWithLoadingDialog(room.join()); - await Navigator.of(context).pop(); - }, - ), - ], - ), + title: L10n.of(context).archivedRoom, + message: L10n.of(context).thisRoomHasBeenArchived, + actions: [ + SheetAction( + label: L10n.of(context).rejoin, + key: ArchivedRoomAction.rejoin, + ), + SheetAction( + label: L10n.of(context).delete, + key: ArchivedRoomAction.delete, + isDestructiveAction: true, + ), + ], ); + if (action != null) { + switch (action) { + case ArchivedRoomAction.delete: + await archiveAction(context); + break; + case ArchivedRoomAction.rejoin: + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(room.join()); + break; + } + } } if (room.membership == Membership.join) { diff --git a/lib/utils/matrix_file_extension.dart b/lib/utils/matrix_file_extension.dart index d7daef3d..b8170a69 100644 --- a/lib/utils/matrix_file_extension.dart +++ b/lib/utils/matrix_file_extension.dart @@ -1,5 +1,6 @@ import 'dart:io'; +import 'package:android_path_provider/android_path_provider.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:flutter/foundation.dart'; @@ -7,7 +8,6 @@ import 'package:open_file/open_file.dart'; import 'package:path_provider/path_provider.dart'; import 'package:universal_html/prefer_universal/html.dart' as html; import 'package:mime_type/mime_type.dart'; -import 'package:downloads_path_provider_28/downloads_path_provider_28.dart'; import 'package:permission_handler/permission_handler.dart'; extension MatrixFileExtension on MatrixFile { @@ -29,12 +29,12 @@ extension MatrixFileExtension on MatrixFile { } else { if (!(await Permission.storage.request()).isGranted) return; final downloadsDir = PlatformInfos.isDesktop - ? (await getDownloadsDirectory()) + ? (await getDownloadsDirectory()).path : Platform.isAndroid - ? (await DownloadsPathProvider.downloadsDirectory) - : (await getApplicationDocumentsDirectory()); + ? (await AndroidPathProvider.downloadsPath) + : (await getApplicationDocumentsDirectory()).path; - final file = File(downloadsDir.path + '/' + name.split('/').last); + final file = File(downloadsDir + '/' + name.split('/').last); file.writeAsBytesSync(bytes); await OpenFile.open(file.path); } diff --git a/pubspec.lock b/pubspec.lock index 264088d6..63d350fb 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -22,6 +22,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.39.17" + android_path_provider: + dependency: "direct main" + description: + name: android_path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1" animations: dependency: transitive description: @@ -190,13 +197,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.0.3" - downloads_path_provider_28: - dependency: "direct main" - description: - name: downloads_path_provider_28 - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.0" encrypt: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 1a3f8a11..577c3873 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,7 +35,7 @@ dependencies: # desktop_notifications: ^0.0.0-dev.4 // Currently blocked by: https://github.com/canonical/desktop_notifications.dart/issues/5 matrix_link_text: ^0.3.2 path_provider: ^1.6.24 - downloads_path_provider_28: ^0.1.0 + android_path_provider: ^0.1.1 permission_handler: ^5.0.1+1 webview_flutter: ^1.0.7 share: ^0.6.5+4