Merge branch 'main' of github.com:lollipopkit/flutter_server_box

This commit is contained in:
lollipopkit
2024-05-24 21:10:46 +08:00
2 changed files with 75 additions and 56 deletions

View File

@@ -65,14 +65,18 @@ class BackupPage extends StatelessWidget {
trailing: const Icon(Icons.save),
onTap: () async {
final path = await Backup.backup();
debugPrint("Backup path: $path");
/// Issue #188
final _ = switch (Pfs.type) {
Pfs.windows =>
await Process.run('explorer', ['/select,', path]),
Pfs.linux => await Process.run('xdg-open', [path]),
_ => await Pfs.sharePath(path),
};
switch (Pfs.type) {
case Pfs.windows:
final backslashPath = path.replaceAll('/', '\\');
await Process.run('explorer', ['/select,$backslashPath']);
case Pfs.linux:
await Process.run('xdg-open', [path]);
default:
await Pfs.sharePath(path);
}
},
),
ListTile(
@@ -263,6 +267,7 @@ class BackupPage extends StatelessWidget {
Future<void> _onTapWebdavDl(BuildContext context) async {
webdavLoading.value = true;
try {
final files = await Webdav.list();
if (files.isEmpty) {
context.showSnackBar(l10n.dirEmpty);
@@ -308,20 +313,34 @@ class BackupPage extends StatelessWidget {
final dlBak = await Computer.shared.start(Backup.fromJsonString, dlFile);
await dlBak.restore(force: true);
webdavLoading.value = false;
} catch (e) {
context.showSnackBar(e.toString());
rethrow;
} finally {
webdavLoading.value = false;
}
}
Future<void> _onTapWebdavUp(BuildContext context) async {
try {
webdavLoading.value = true;
final bakName = '${DateTime.now().ymdhms()}-${Paths.bakName}';
final bakName =
'${DateTime.now().ymdhms(ymdSep: "-", hmsSep: "-", sep: "-")}-${Paths.bakName}';
await Backup.backup(bakName);
final uploadResult = await Webdav.upload(relativePath: bakName);
if (uploadResult != null) {
Loggers.app.warning('Upload webdav backup failed: $uploadResult');
context.showSnackBar(uploadResult.toString());
} else {
Loggers.app.info('Upload webdav backup success');
}
} catch (e) {
context.showSnackBar(e.toString());
rethrow;
} finally {
webdavLoading.value = false;
}
}
Future<void> _onTapWebdavSetting(BuildContext context) async {
final urlCtrl = TextEditingController(

View File

@@ -25,7 +25,7 @@ final class _AppBar extends CustomAppBar {
return ValBuilder(
listenable: selectIndex,
builder: (idx) {
if (idx == AppTab.ssh.index) return placeholder;
if (idx == AppTab.ssh.index && !isWindows && !isLinux) return placeholder;
return super.build(context);
},
);