This commit is contained in:
Levi committed 2025-03-14 22:05:55 +08:00
1 parent 08603f9510
commit 3ddbc11378
11 files changed
+137 -16

No files matched your search

@@ -16,6 +16,7 @@ import '../../../../api/model/extension.dart';
import '../../../../api/model/install_extension.dart';
import '../../../../api/model/switch_extension.dart';
import '../../../../api/model/update_extension_settings.dart';
import '../../../../util/mac_bookmarks.dart';
import '../../../../util/message.dart';
import '../../../../util/util.dart';
import '../../../views/icon_button_loading.dart';
@@ -95,6 +96,7 @@ class ExtensionView extends GetView<ExtensionController> {
var dir =
await FilePicker.platform.getDirectoryPath();
if (dir != null) {
MacBookmarks.saveBookmark(dir);
try {
await installExtension(
InstallExtension(devMode: true, url: dir));
@@ -9,6 +9,7 @@ import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:toggle_switch/toggle_switch.dart';
import '../../util/mac_bookmarks.dart';
import '../../util/message.dart';
import '../../util/util.dart';
@@ -41,6 +42,7 @@ class _DirectorySelectorState extends State<DirectorySelector> {
var dir = await FilePicker.platform.getDirectoryPath();
if (dir != null) {
widget.controller.text = dir;
MacBookmarks.saveBookmark(dir);
}
});
}
-1
View File
@@ -6,7 +6,6 @@ import 'package:hive/hive.dart';
import 'entity.dart';
const String _startConfig = 'startConfig';
const String _lastRunningConfig = 'lastRunningConfig';
const String _windowState = 'windowState';
const String _bookmark = 'bookmark';
const String _createHistory = 'createHistory';
+2
View File
@@ -14,6 +14,7 @@ import 'i18n/message.dart';
import 'util/browser_extension_host/browser_extension_host.dart';
import 'util/locale_manager.dart';
import 'util/log_util.dart';
import 'util/mac_bookmarks.dart';
import 'util/package_info.dart';
import 'util/scheme_register/scheme_register.dart';
import 'util/updater.dart';
@@ -89,6 +90,7 @@ Future<void> init(Args args) async {
try {
await controller.loadDownloaderConfig();
MacBookmarks.loadBookmark();
} catch (e) {
logger.e("load config fail", e);
}
@@ -216,8 +216,17 @@ String? _getManifestPath(Browser browser) {
return Util.homePathJoin(manifestName);
}
final home =
Platform.environment['HOME'] ?? Platform.environment['USERPROFILE'];
String? home;
if (Platform.isMacOS) {
try {
final user = Process.runSync("id", ["-un"]).stdout.trim();
home = '/Users/$user';
} catch (e) {
// ignore
}
}
home ??= Platform.environment['HOME'] ?? Platform.environment['USERPROFILE'];
if (home == null) return null;
if (Platform.isMacOS) {
+30
View File
@@ -0,0 +1,30 @@
import 'dart:io';
import 'package:macos_secure_bookmarks/macos_secure_bookmarks.dart';
import '../database/database.dart';
import 'util.dart';
class MacBookmarks {
static Future<void> saveBookmark(String dir) async {
if (!Util.isMacos()) {
return;
}
final secureBookmarks = SecureBookmarks();
final bookmark = await secureBookmarks.bookmark(Directory(dir));
Database.instance.saveBookmark(MapEntry(dir, bookmark));
}
static Future<void> loadBookmark() async {
if (!Util.isMacos()) {
return;
}
final secureBookmarks = SecureBookmarks();
final bookmark = Database.instance.getBookmark() ?? {};
bookmark.forEach((_, v) async {
final resolvedFile =
await secureBookmarks.resolveBookmark(v, isDirectory: true);
await secureBookmarks.startAccessingSecurityScopedResource(resolvedFile);
});
}
}
+6
View File
@@ -6,6 +6,8 @@ PODS:
- device_info_plus (0.0.1):
- FlutterMacOS
- FlutterMacOS (1.0.0)
- macos_secure_bookmarks (0.0.3):
- FlutterMacOS
- package_info_plus (0.0.1):
- FlutterMacOS
- path_provider_foundation (0.0.1):
@@ -30,6 +32,7 @@ DEPENDENCIES:
- desktop_drop (from `Flutter/ephemeral/.symlinks/plugins/desktop_drop/macos`)
- device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
- FlutterMacOS (from `Flutter/ephemeral`)
- macos_secure_bookmarks (from `Flutter/ephemeral/.symlinks/plugins/macos_secure_bookmarks/macos`)
- package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`)
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
- screen_retriever (from `Flutter/ephemeral/.symlinks/plugins/screen_retriever/macos`)
@@ -48,6 +51,8 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos
FlutterMacOS:
:path: Flutter/ephemeral
macos_secure_bookmarks:
:path: Flutter/ephemeral/.symlinks/plugins/macos_secure_bookmarks/macos
package_info_plus:
:path: Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos
path_provider_foundation:
@@ -70,6 +75,7 @@ SPEC CHECKSUMS:
desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898
device_info_plus: 74e614483d05c89290d30a4c8feae15d555f7427
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
macos_secure_bookmarks: cff041c4b377fa00941bb901aaec4d27fac5edf2
package_info_plus: f5790acc797bf17c3e959e9d6cf162cc68ff7523
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
@@ -1,10 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
</dict>
</plist>
<dict>
<key>com.apple.security.app-sandbox</key>
<true />
<key>com.apple.security.cs.allow-jit</key>
<true />
<key>com.apple.security.files.bookmarks.app-scope</key>
<true />
<key>com.apple.security.files.downloads.read-write</key>
<true />
<key>com.apple.security.files.user-selected.read-write</key>
<true />
<key>com.apple.security.network.client</key>
<true />
<key>com.apple.security.network.server</key>
<true />
<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>
<array>
<string>/Library/Application Support/Mozilla/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Beta/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Dev/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/</string>
<string>/Library/Application Support/Chromium/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Beta/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Dev/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Canary/NativeMessagingHosts/</string>
<string>/Library/Application Support/Vivaldi/NativeMessagingHosts/</string>
<string>/code/go/gopeed/ui/flutter/build/macos/Build/Products/Debug/Gopeed.app/Contents/MacOS/</string>
</array>
<key>com.apple.security.temporary-exception.files.home-relative-path.execute</key>
<array>
<string>/code/go/gopeed/ui/flutter/build/macos/Build/Products/Debug/Gopeed.app/Contents/MacOS/</string>
</array>
</dict>
</plist>
+30 -5
View File
@@ -1,8 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.files.bookmarks.app-scope</key>
<true/>
</dict>
</plist>
<dict>
<key>com.apple.security.app-sandbox</key>
<true />
<key>com.apple.security.files.bookmarks.app-scope</key>
<true />
<key>com.apple.security.files.downloads.read-write</key>
<true />
<key>com.apple.security.files.user-selected.read-write</key>
<true />
<key>com.apple.security.network.client</key>
<true />
<key>com.apple.security.network.server</key>
<true />
<key>com.apple.security.temporary-exception.files.home-relative-path.read-write</key>
<array>
<string>/Library/Application Support/Mozilla/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Beta/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Dev/NativeMessagingHosts/</string>
<string>/Library/Application Support/Google/Chrome Canary/NativeMessagingHosts/</string>
<string>/Library/Application Support/Chromium/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Beta/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Dev/NativeMessagingHosts/</string>
<string>/Library/Application Support/Microsoft Edge Canary/NativeMessagingHosts/</string>
<string>/Library/Application Support/Vivaldi/NativeMessagingHosts/</string>
<string>/code/go/gopeed/ui/flutter/build/macos/Build/Products/Debug/Gopeed.app/Contents/MacOS/</string>
</array>
</dict>
</plist>
+16
View File
@@ -667,6 +667,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.0"
logging_appenders:
dependency: transitive
description:
name: logging_appenders
sha256: e329e7472f99416d0edaaf6451fe6c02dec91d34535bd252e284a0b94ab23d79
url: "https://pub.dev"
source: hosted
version: "1.3.1"
macos_secure_bookmarks:
dependency: "direct main"
description:
name: macos_secure_bookmarks
sha256: c3163875f8fd530a1654a7cf8aa426e6e208d28bf05724a1d4960e4b7d2ca1c6
url: "https://pub.dev"
source: hosted
version: "0.2.1"
macros:
dependency: transitive
description:
+2 -1
View File
@@ -15,7 +15,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.6.10+1
version: 1.6.9+1
environment:
sdk: ">=3.0.0 <4.0.0"
@@ -76,6 +76,7 @@ dependencies:
git:
url: https://github.com/hui-z/flutter_install_plugin.git
ref: cf08af829f4a4145634f8a047108f505fdbe5eaa
macos_secure_bookmarks: ^0.2.1
dependency_overrides:
permission_handler_windows:
git: