fix: incorrect storage path in linux (#270)

This commit is contained in:
Levi authored and GitHub committed 2023-11-15 16:26:29 +08:00
1 parent 485656d1d4
commit 0a05bf41e7
9 files changed
+164 -85

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@@ -209,6 +209,10 @@ class AppController extends GetxController with WindowListener, TrayListener {
}
Future<void> _initForegroundTask() async {
if (!Util.isMobile()) {
return;
}
FlutterForegroundTask.init(
androidNotificationOptions: AndroidNotificationOptions(
channelId: 'gopeed_service',
@@ -269,13 +273,8 @@ class AppController extends GetxController with WindowListener, TrayListener {
_defaultStartConfig!.address = "127.0.0.1:0";
} else {
_defaultStartConfig!.network = "unix";
if (Util.isDesktop()) {
_defaultStartConfig!.address = unixSocketPath;
}
if (Util.isMobile()) {
_defaultStartConfig!.address =
"${(await getTemporaryDirectory()).path}/$unixSocketPath";
}
_defaultStartConfig!.address =
"${(await getTemporaryDirectory()).path}/$unixSocketPath";
}
_defaultStartConfig!.apiToken = '';
return _defaultStartConfig!;
-2
View File
@@ -4,8 +4,6 @@ import "libgopeed_boot_stub.dart"
if (dart.library.io) 'entry/libgopeed_boot_native.dart';
abstract class LibgopeedBoot {
static const unixSocketPath = 'gopeed.sock';
static LibgopeedBoot? _instance;
static LibgopeedBoot get instance {
+5 -3
View File
@@ -37,11 +37,13 @@ Future<void> init() async {
});
}
if (!Util.isWeb()) {
await Util.initStorageDir();
}
initLogger();
final controller = Get.put(AppController());
try {
if (!Util.isWeb()) {
await Util.initStorageDir();
}
await controller.loadStartConfig();
final startCfg = controller.startConfig.value;
controller.runningPort.value = await LibgopeedBoot.instance.start(startCfg);
+13 -7
View File
@@ -1,18 +1,24 @@
import 'dart:io';
import 'package:flutter/foundation.dart';
import 'package:logger/logger.dart';
import 'package:path/path.dart' as path;
import 'util.dart';
final logger = Logger(
filter: ProductionFilter(),
printer: SimplePrinter(printTime: true, colors: false),
output: buildOutput(),
);
late final Logger logger;
buildOutput() {
initLogger() {
// if is debug mode, don't log to file
logger = Logger(
filter: ProductionFilter(),
printer: SimplePrinter(printTime: true, colors: false),
output: _buildOutput(),
);
}
_buildOutput() {
// if is debug mode, don't log to file
if (!kDebugMode && Util.isDesktop()) {
const logDirPath = 'logs';
final logDirPath = path.join(Util.getStorageDir(), 'logs');
var logDir = Directory(logDirPath);
if (!logDir.existsSync()) {
logDir.createSync();
+12 -4
View File
@@ -6,6 +6,8 @@ import 'package:flutter/foundation.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as path;
import 'log_util.dart';
class Util {
static String? _storageDir;
@@ -55,6 +57,16 @@ class Util {
storageDir = (await getExternalStorageDirectory())?.path ?? storageDir;
} else if (Platform.isIOS) {
storageDir = (await getLibraryDirectory()).path;
} else if (Util.isLinux()) {
storageDir = File(Platform.resolvedExecutable).parent.path;
// check has write permission, if not, fallback to application support dir
try {
final testFile = File(path.join(storageDir, ".test"));
await testFile.writeAsString("test");
await testFile.delete();
} catch (e) {
storageDir = (await getApplicationSupportDirectory()).path;
}
}
_storageDir = storageDir;
}
@@ -63,10 +75,6 @@ class Util {
return _storageDir!;
}
static String getStorageAsset(String asset) {
return path.join(getStorageDir(), asset);
}
static isAndroid() {
return !kIsWeb && Platform.isAndroid;
}
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>com.gopeed.Gopeed</id>
<name>Gopeed</name>
<summary>High speed downloader that supports all platforms.</summary>
<url type="homepage">https://gopeed.com</url>
<url type="bugtracker">https://github.com/GopeedLab/gopeed/issues</url>
<url type="donation">https://docs.gopeed.com/donate.html</url>
<url type="translate">https://github.com/GopeedLab/gopeed/blob/main/CONTRIBUTING.md#translation</url>
<metadata_license>MIT</metadata_license>
<project_license>GPL-3.0-only</project_license>
<developer_name>monkeyWie</developer_name>
<supports>
<control>pointing</control>
<control>keyboard</control>
<control>touch</control>
</supports>
<description>
<p>
Gopeed (full name Go Speed), a high-speed downloader developed by <code>Golang</code> + <code>Flutter</code>, supports (HTTP, BitTorrent, Magnet) protocol, and supports all platforms.
</p>
</description>
<content_rating type="oars-1.1"/>
<launchable type="desktop-id">com.gopeed.Gopeed.desktop</launchable>
<screenshots>
<screenshot type="default">
<image>https://raw.githubusercontent.com/GopeedLab/gopeed/v1.4.4/_docs/img/ui-demo.png</image>
</screenshot>
</screenshots>
<releases>
<release version="1.4.4" date="2023-11-09"/>
</releases>
</component>
+10
View File
@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Gopeed
GenericName=Downloader Manager
Comment=High speed downloader that supports all platforms.
Exec=gopeed
Icon=gopeed
Terminal=false
Type=Application
Categories=Utility
Keywords=HTTP;Bittorrent;Downloader;