From 8f64f5452dace06394bea9fc3862b8118291151e Mon Sep 17 00:00:00 2001 From: Piotr Rogowski Date: Wed, 21 Sep 2022 21:56:21 +0200 Subject: [PATCH] Fix file paths for MacOS --- .vscode/settings.json | 5 +++-- lib/generated_plugin_registrant.dart | 29 +++++++++++++++++++++++++ lib/models/Logger.dart | 26 +++++++++++++--------- lib/provider/UserPreferences.dart | 5 +++++ macos/Podfile | 2 +- macos/Podfile.lock | 30 +++++++++----------------- macos/Runner.xcodeproj/project.pbxproj | 7 +++++- macos/Runner/DebugProfile.entitlements | 4 ++-- macos/Runner/RunnerDebug.entitlements | 14 ++++++++++++ 9 files changed, 86 insertions(+), 36 deletions(-) create mode 100644 lib/generated_plugin_registrant.dart create mode 100644 macos/Runner/RunnerDebug.entitlements diff --git a/.vscode/settings.json b/.vscode/settings.json index 44bf8e0a..9f4bfc59 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "cmake.configureOnOpen": false, "cSpell.words": [ - "Mpris" + "Mpris", + "Spotube" ] -} \ No newline at end of file +} diff --git a/lib/generated_plugin_registrant.dart b/lib/generated_plugin_registrant.dart new file mode 100644 index 00000000..22458492 --- /dev/null +++ b/lib/generated_plugin_registrant.dart @@ -0,0 +1,29 @@ +// +// Generated file. Do not edit. +// + +// ignore_for_file: directives_ordering +// ignore_for_file: lines_longer_than_80_chars +// ignore_for_file: depend_on_referenced_packages + +import 'package:audio_service_web/audio_service_web.dart'; +import 'package:audio_session/audio_session_web.dart'; +import 'package:audioplayers_web/audioplayers_web.dart'; +import 'package:file_picker/_internal/file_picker_web.dart'; +import 'package:package_info_plus_web/package_info_plus_web.dart'; +import 'package:shared_preferences_web/shared_preferences_web.dart'; +import 'package:url_launcher_web/url_launcher_web.dart'; + +import 'package:flutter_web_plugins/flutter_web_plugins.dart'; + +// ignore: public_member_api_docs +void registerPlugins(Registrar registrar) { + AudioServiceWeb.registerWith(registrar); + AudioSessionWeb.registerWith(registrar); + AudioplayersPlugin.registerWith(registrar); + FilePickerWeb.registerWith(registrar); + PackageInfoPlugin.registerWith(registrar); + SharedPreferencesPlugin.registerWith(registrar); + UrlLauncherPlugin.registerWith(registrar); + registrar.registerMessageHandler(); +} diff --git a/lib/models/Logger.dart b/lib/models/Logger.dart index a772dbb1..3467c44d 100644 --- a/lib/models/Logger.dart +++ b/lib/models/Logger.dart @@ -18,19 +18,25 @@ class _SpotubeLogger extends Logger { _SpotubeLogger([this.owner]) : super(filter: _SpotubeLogFilter()); @override - void log(Level level, message, [error, StackTrace? stackTrace]) { + void log(Level level, message, [error, StackTrace? stackTrace]) async { if (!kIsWeb) { - (kIsAndroid - ? getExternalStorageDirectory() - : getApplicationDocumentsDirectory()) - .then((dir) async { - final file = File(path.join(dir!.path, ".spotube_logs")); - if (level == Level.error) { - await file.writeAsString("[${DateTime.now()}]\n$message\n$stackTrace", - mode: FileMode.writeOnlyAppend); + if (level == Level.error) { + String dir = (await getApplicationDocumentsDirectory()).path; + + if (kIsAndroid) { + dir = (await getExternalStorageDirectory())?.path ?? ""; } - }); + + if (kIsMacOS) { + dir = path.join((await getLibraryDirectory()).path, "Logs"); + } + + await File(path.join(dir, ".spotube_logs")).writeAsString( + "[${DateTime.now()}]\n$message\n$stackTrace", + mode: FileMode.writeOnlyAppend); + } } + super.log(level, "[$owner] $message", error, stackTrace); } } diff --git a/lib/provider/UserPreferences.dart b/lib/provider/UserPreferences.dart index 3b4f2906..cc24325f 100644 --- a/lib/provider/UserPreferences.dart +++ b/lib/provider/UserPreferences.dart @@ -142,6 +142,11 @@ class UserPreferences extends PersistedChangeNotifier { Future _getDefaultDownloadDirectory() async { if (kIsAndroid) return "/storage/emulated/0/Download/Spotube"; + + if (kIsMacOS) { + return path.join((await getLibraryDirectory()).path, "Caches"); + } + return getDownloadsDirectory().then((dir) { return path.join(dir!.path, "Spotube"); }); diff --git a/macos/Podfile b/macos/Podfile index 3fc77897..fe733905 100644 --- a/macos/Podfile +++ b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '11.6' +platform :osx, '10.13' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/macos/Podfile.lock b/macos/Podfile.lock index b49b6360..a7ebc82f 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -3,18 +3,14 @@ PODS: - FlutterMacOS - audio_session (0.0.1): - FlutterMacOS + - audioplayers_darwin (0.0.1): + - FlutterMacOS - bitsdojo_window_macos (0.0.1): - FlutterMacOS - FlutterMacOS (1.0.0) - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) - - HotKey (0.1.2) - - hotkey_manager (0.0.1): - - FlutterMacOS - - HotKey - - just_audio (0.0.1): - - FlutterMacOS - package_info_plus_macos (0.0.1): - FlutterMacOS - path_provider_macos (0.0.1): @@ -30,10 +26,9 @@ PODS: DEPENDENCIES: - audio_service (from `Flutter/ephemeral/.symlinks/plugins/audio_service/macos`) - audio_session (from `Flutter/ephemeral/.symlinks/plugins/audio_session/macos`) + - audioplayers_darwin (from `Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos`) - bitsdojo_window_macos (from `Flutter/ephemeral/.symlinks/plugins/bitsdojo_window_macos/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - - hotkey_manager (from `Flutter/ephemeral/.symlinks/plugins/hotkey_manager/macos`) - - just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/macos`) - package_info_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos`) - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) - shared_preferences_macos (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos`) @@ -43,21 +38,18 @@ DEPENDENCIES: SPEC REPOS: trunk: - FMDB - - HotKey EXTERNAL SOURCES: audio_service: :path: Flutter/ephemeral/.symlinks/plugins/audio_service/macos audio_session: :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos + audioplayers_darwin: + :path: Flutter/ephemeral/.symlinks/plugins/audioplayers_darwin/macos bitsdojo_window_macos: :path: Flutter/ephemeral/.symlinks/plugins/bitsdojo_window_macos/macos FlutterMacOS: :path: Flutter/ephemeral - hotkey_manager: - :path: Flutter/ephemeral/.symlinks/plugins/hotkey_manager/macos - just_audio: - :path: Flutter/ephemeral/.symlinks/plugins/just_audio/macos package_info_plus_macos: :path: Flutter/ephemeral/.symlinks/plugins/package_info_plus_macos/macos path_provider_macos: @@ -72,18 +64,16 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: audio_service: b88ff778e0e3915efd4cd1a5ad6f0beef0c950a9 audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72 + audioplayers_darwin: dcad41de4fbd0099cb3749f7ab3b0cb8f70b810c bitsdojo_window_macos: 44e3b8fe3dd463820e0321f6256c5b1c16bb6a00 - FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 + FlutterMacOS: ae6af50a8ea7d6103d888583d46bd8328a7e9811 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - HotKey: ad59450195936c10992438c4210f673de5aee43e - hotkey_manager: ad673457691f4d39e481be04a61da2ae07d81c62 - just_audio: 9b67ca7b97c61cfc9784ea23cd8cc55eb226d489 package_info_plus_macos: f010621b07802a241d96d01876d6705f15e77c1c - path_provider_macos: 160cab0d5461f0c0e02995469a98f24bdb9a3f1f + path_provider_macos: 3c0c3b4b0d4a76d2bf989a913c2de869c5641a19 shared_preferences_macos: a64dc611287ed6cbe28fd1297898db1336975727 sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea url_launcher_macos: 597e05b8e514239626bcf4a850fcf9ef5c856ec3 -PODFILE CHECKSUM: f7c7be88e75cc0b6c98b7564b0771f5dff5c5490 +PODFILE CHECKSUM: a884f6dd3f7494f3892ee6c81feea3a3abbf9153 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index f0d5037c..9c87d96f 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -55,6 +55,7 @@ /* Begin PBXFileReference section */ 24623C2B279C0F1500F06218 /* libc++.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; + 2477CD0828DB95ED00FFF454 /* RunnerDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerDebug.entitlements; sourceTree = ""; }; 2B7356CD51A3DADCBF3B9209 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; @@ -145,6 +146,7 @@ 33FAB671232836740065AC1E /* Runner */ = { isa = PBXGroup; children = ( + 2477CD0828DB95ED00FFF454 /* RunnerDebug.entitlements */, 33CC10F02044A3C60003C045 /* AppDelegate.swift */, 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, 33E51913231747F40026EE4D /* DebugProfile.entitlements */, @@ -429,6 +431,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 10.13; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; @@ -547,7 +550,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_ENTITLEMENTS = Runner/RunnerDebug.entitlements; CODE_SIGN_STYLE = Automatic; COMBINE_HIDPI_IMAGES = YES; INFOPLIST_FILE = Runner/Info.plist; @@ -555,6 +558,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 10.13; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -575,6 +579,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); + MACOSX_DEPLOYMENT_TARGET = 10.13; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; }; diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements index 6b6d882f..3ba6c126 100644 --- a/macos/Runner/DebugProfile.entitlements +++ b/macos/Runner/DebugProfile.entitlements @@ -6,9 +6,9 @@ com.apple.security.cs.allow-jit - com.apple.security.network.server + com.apple.security.network.client - com.apple.security.network.client + com.apple.security.network.server diff --git a/macos/Runner/RunnerDebug.entitlements b/macos/Runner/RunnerDebug.entitlements new file mode 100644 index 00000000..3ba6c126 --- /dev/null +++ b/macos/Runner/RunnerDebug.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + +