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);
});
}
}