Skip to content

Commit

Permalink
支持设置data路径
Browse files Browse the repository at this point in the history
  • Loading branch information
jing332 committed Jan 19, 2024
1 parent 48e3e37 commit 5142ef8
Show file tree
Hide file tree
Showing 15 changed files with 258 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ public interface AppConfig {

void setAutoOpenWebPageEnabled(@NonNull Boolean enabled);

@NonNull
String getDataDir();

void setDataDir(@NonNull String dir);

/** The codec used by AppConfig. */
static @NonNull MessageCodec<Object> getCodec() {
return new StandardMessageCodec();
Expand Down Expand Up @@ -289,6 +294,52 @@ static void setUp(@NonNull BinaryMessenger binaryMessenger, @Nullable AppConfig
api.setAutoOpenWebPageEnabled(enabledArg);
wrapped.add(0, null);
}
catch (Throwable exception) {
ArrayList<Object> wrappedError = wrapError(exception);
wrapped = wrappedError;
}
reply.reply(wrapped);
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.alist_flutter.AppConfig.getDataDir", getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList<Object> wrapped = new ArrayList<Object>();
try {
String output = api.getDataDir();
wrapped.add(0, output);
}
catch (Throwable exception) {
ArrayList<Object> wrappedError = wrapError(exception);
wrapped = wrappedError;
}
reply.reply(wrapped);
});
} else {
channel.setMessageHandler(null);
}
}
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(
binaryMessenger, "dev.flutter.pigeon.alist_flutter.AppConfig.setDataDir", getCodec());
if (api != null) {
channel.setMessageHandler(
(message, reply) -> {
ArrayList<Object> wrapped = new ArrayList<Object>();
ArrayList<Object> args = (ArrayList<Object>) message;
String dirArg = (String) args.get(0);
try {
api.setDataDir(dirArg);
wrapped.add(0, null);
}
catch (Throwable exception) {
ArrayList<Object> wrappedError = wrapError(exception);
wrapped = wrappedError;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ object AppConfigBridge : GeneratedApi.AppConfig {

override fun isAutoCheckUpdateEnabled() = AppConfig.isAutoCheckUpdateEnabled
override fun isAutoOpenWebPageEnabled() = AppConfig.isAutoOpenWebPageEnabled
override fun getDataDir() = AppConfig.dataDir

override fun setDataDir(dir: String) {
AppConfig.dataDir = dir
}

override fun setAutoOpenWebPageEnabled(enabled: Boolean) {
AppConfig.isAutoOpenWebPageEnabled = enabled
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,23 @@ object AppConfig {
fallback = false
)

val defaultDataDir by lazy {app.getExternalFilesDir("data")?.absolutePath!!}

private var mDataDir: String by prefs.dynamic("dataDir", fallback = defaultDataDir)


var dataDir:String
get() {
if (mDataDir.isBlank()) mDataDir = defaultDataDir
return mDataDir
}
set(value) {
if (value.isBlank()){
mDataDir = defaultDataDir
return
}

mDataDir = value
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,18 @@ package com.github.jing332.alistflutter.model.alist
import android.annotation.SuppressLint
import com.github.jing332.alistflutter.R
import com.github.jing332.alistflutter.app
import com.github.jing332.alistflutter.config.AppConfig
import com.github.jing332.alistflutter.constant.LogLevel
import com.github.jing332.alistflutter.data.entities.ServerLog.Companion.evalLog
import com.github.jing332.alistflutter.utils.StringUtils.removeAnsiCodes
import com.github.jing332.alistflutter.utils.ToastUtils.longToast
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
import java.io.File
import java.io.IOException
import java.io.InputStream
import kotlin.coroutines.coroutineContext

object AList {
const val TAG = "AList"
Expand All @@ -27,7 +26,7 @@ object AList {
val context = app

val dataPath: String
get() = context.getExternalFilesDir("data")?.absolutePath!!
get() = AppConfig.dataDir

val configPath: String
get() = "$dataPath${File.separator}config.json"
Expand Down Expand Up @@ -90,8 +89,7 @@ object AList {

@SuppressLint("SdCardPath")
fun startup(
dataFolder: String = context.getExternalFilesDir("data")?.absolutePath
?: "/data/data/${context.packageName}/files/data"
dataFolder: String = dataPath
): Int {
// appDb.serverLogDao.deleteAll()
mProcess =
Expand Down
4 changes: 4 additions & 0 deletions lib/generated/intl/messages_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,12 @@ class MessageLookup extends MessageLookupByLibrary {
"cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"checkForUpdates":
MessageLookupByLibrary.simpleMessage("Check for updates"),
"confirm": MessageLookupByLibrary.simpleMessage("OK"),
"copiedToClipboard":
MessageLookupByLibrary.simpleMessage("Copied to clipboard"),
"currentIsLatestVersion":
MessageLookupByLibrary.simpleMessage("Current is latest version"),
"dataDirectory": MessageLookupByLibrary.simpleMessage("data Directory"),
"desktopShortcut":
MessageLookupByLibrary.simpleMessage("Desktop shortcut"),
"download": MessageLookupByLibrary.simpleMessage("download"),
Expand Down Expand Up @@ -70,6 +72,8 @@ class MessageLookup extends MessageLookupByLibrary {
MessageLookupByLibrary.simpleMessage("Select app to open"),
"setAdminPassword":
MessageLookupByLibrary.simpleMessage("Set admin password"),
"setDefaultDirectory":
MessageLookupByLibrary.simpleMessage("是否设为默认目录?"),
"settings": MessageLookupByLibrary.simpleMessage("Settings"),
"wakeLock": MessageLookupByLibrary.simpleMessage("Wake lock"),
"wakeLockDesc": MessageLookupByLibrary.simpleMessage(
Expand Down
4 changes: 4 additions & 0 deletions lib/generated/intl/messages_zh.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,11 @@ class MessageLookup extends MessageLookupByLibrary {
"在开机后自动启动AList服务。(请确保授予自启动权限)"),
"cancel": MessageLookupByLibrary.simpleMessage("取消"),
"checkForUpdates": MessageLookupByLibrary.simpleMessage("检查更新"),
"confirm": MessageLookupByLibrary.simpleMessage("确认"),
"copiedToClipboard": MessageLookupByLibrary.simpleMessage("已复制到剪贴板"),
"currentIsLatestVersion":
MessageLookupByLibrary.simpleMessage("已经是最新版本"),
"dataDirectory": MessageLookupByLibrary.simpleMessage("data 文件夹路径"),
"desktopShortcut": MessageLookupByLibrary.simpleMessage("桌面快捷方式"),
"download": MessageLookupByLibrary.simpleMessage("下载"),
"downloadApk": MessageLookupByLibrary.simpleMessage("下载APK"),
Expand All @@ -59,6 +61,8 @@ class MessageLookup extends MessageLookupByLibrary {
"releasePage": MessageLookupByLibrary.simpleMessage("发布页面"),
"selectAppToOpen": MessageLookupByLibrary.simpleMessage("选择应用打开"),
"setAdminPassword": MessageLookupByLibrary.simpleMessage("设置admin密码"),
"setDefaultDirectory":
MessageLookupByLibrary.simpleMessage("是否设为默认目录?"),
"settings": MessageLookupByLibrary.simpleMessage("设置"),
"wakeLock": MessageLookupByLibrary.simpleMessage("唤醒锁"),
"wakeLockDesc": MessageLookupByLibrary.simpleMessage(
Expand Down
30 changes: 30 additions & 0 deletions lib/generated/l10n.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

49 changes: 49 additions & 0 deletions lib/generated_api.dart
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,55 @@ class AppConfig {
return;
}
}

Future<String> getDataDir() async {
const String __pigeon_channelName = 'dev.flutter.pigeon.alist_flutter.AppConfig.getDataDir';
final BasicMessageChannel<Object?> __pigeon_channel = BasicMessageChannel<Object?>(
__pigeon_channelName,
pigeonChannelCodec,
binaryMessenger: __pigeon_binaryMessenger,
);
final List<Object?>? __pigeon_replyList =
await __pigeon_channel.send(null) as List<Object?>?;
if (__pigeon_replyList == null) {
throw _createConnectionError(__pigeon_channelName);
} else if (__pigeon_replyList.length > 1) {
throw PlatformException(
code: __pigeon_replyList[0]! as String,
message: __pigeon_replyList[1] as String?,
details: __pigeon_replyList[2],
);
} else if (__pigeon_replyList[0] == null) {
throw PlatformException(
code: 'null-error',
message: 'Host platform returned null value for non-null return value.',
);
} else {
return (__pigeon_replyList[0] as String?)!;
}
}

Future<void> setDataDir(String dir) async {
const String __pigeon_channelName = 'dev.flutter.pigeon.alist_flutter.AppConfig.setDataDir';
final BasicMessageChannel<Object?> __pigeon_channel = BasicMessageChannel<Object?>(
__pigeon_channelName,
pigeonChannelCodec,
binaryMessenger: __pigeon_binaryMessenger,
);
final List<Object?>? __pigeon_replyList =
await __pigeon_channel.send(<Object?>[dir]) as List<Object?>?;
if (__pigeon_replyList == null) {
throw _createConnectionError(__pigeon_channelName);
} else if (__pigeon_replyList.length > 1) {
throw PlatformException(
code: __pigeon_replyList[0]! as String,
message: __pigeon_replyList[1] as String?,
details: __pigeon_replyList[2],
);
} else {
return;
}
}
}

class Android {
Expand Down
5 changes: 4 additions & 1 deletion lib/l10n/intl_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"moreOptions": "More options",
"checkForUpdates": "Check for updates",
"currentIsLatestVersion": "Current is latest version",
"confirm": "OK",
"cancel": "Cancel",
"releasePage": "Release Page",
"downloadApk": "Download APK",
Expand All @@ -32,5 +33,7 @@
"grantNotificationPermission": "Grant 【Notification】 permission",
"grantNotificationPermissionDesc": "Used for foreground service keep alive",
"autoStartWebPage": "将网页设置为打开首页",
"autoStartWebPageDesc": "打开主界面时的首页"
"autoStartWebPageDesc": "打开主界面时的首页",
"dataDirectory": "data Directory",
"setDefaultDirectory": "是否设为默认目录?"
}
5 changes: 4 additions & 1 deletion lib/l10n/intl_zh.arb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"moreOptions": "更多选项",
"checkForUpdates": "检查更新",
"currentIsLatestVersion": "已经是最新版本",
"confirm": "确认",
"cancel": "取消",
"releasePage": "发布页面",
"downloadApk": "下载APK",
Expand All @@ -31,5 +32,7 @@
"grantNotificationPermission": "申请【通知权限】",
"grantNotificationPermissionDesc": "用于前台服务保活",
"autoStartWebPage": "将网页设置为打开首页",
"autoStartWebPageDesc": "打开主界面时的首页"
"autoStartWebPageDesc": "打开主界面时的首页",
"dataDirectory": "data 文件夹路径",
"setDefaultDirectory": "是否设为默认目录?"
}
6 changes: 5 additions & 1 deletion lib/pages/alist/alist.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import 'dart:developer';
import 'dart:io';

import 'package:alist_flutter/generated_api.dart';
import 'package:alist_flutter/pages/alist/about_dialog.dart';
import 'package:alist_flutter/pages/alist/pwd_edit_dialog.dart';
import 'package:alist_flutter/pages/app_update_dialog.dart';
import 'package:alist_flutter/widgets/switch_floating_action_button.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';

Expand All @@ -24,7 +28,7 @@ class AListScreen extends StatelessWidget {
actions: [
IconButton(
tooltip: S.of(context).desktopShortcut,
onPressed: () {
onPressed: () async {
Android().addShortcut();
},
icon: const Icon(Icons.add_home),
Expand Down
Loading

0 comments on commit 5142ef8

Please sign in to comment.