Skip to content

Commit

Permalink
[*]Async move directory & fix linux permission error
Browse files Browse the repository at this point in the history
  • Loading branch information
Muska-Ami committed Dec 30, 2023
1 parent 5a241bc commit bd827b9
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 28 deletions.
50 changes: 28 additions & 22 deletions lib/controller/dsetting.dart
Original file line number Diff line number Diff line change
Expand Up @@ -126,29 +126,35 @@ class DSettingController extends GetxController {
return FrpcDownloadDialogX(context: context).unarchiving();
});*/
Get.dialog(FrpcDownloadDialogX(context: context).unarchiving(), barrierDismissible: false);
final unarchive = await FrpcArchive.unarchive(
platform: platform,
arch: arch[frpc_download_arch.value]['arch'],
version: '0.51.3',
);
if (unarchive) {
SettingPrefs.setFrpcDownloadedVersionsInfo('0.51.3');
FrpcManagerStorage.save(
FrpcConfig(
settings: (await SettingPrefs.getFrpcInfo()).settings,
lists: (await SettingPrefs.getFrpcInfo()).lists),
);
} else {
Get.snackbar(
'解压 Frpc 时发生错误..呜呜..',
'请检查磁盘是否被塞满了..或者是已经安装了!受不了了呜呜呜...',
snackPosition: SnackPosition.BOTTOM,
animationDuration: Duration(milliseconds: 300),
Future.delayed(const Duration(milliseconds: 3000), () async {
//延时执行
final unarchive = await FrpcArchive.unarchive(
platform: platform,
arch: arch[frpc_download_arch.value]['arch'],
version: '0.51.3',
);
}
/// 关闭对话框
Navigator.of(context).pop();
Navigator.of(context).pop();
if (unarchive) {
SettingPrefs.setFrpcDownloadedVersionsInfo('0.51.3');
FrpcManagerStorage.save(
FrpcConfig(
settings: (await SettingPrefs.getFrpcInfo()).settings,
lists: (await SettingPrefs.getFrpcInfo()).lists),
);
if (!Platform.isWindows) {
await FrpcManagerStorage.setRunPermission();
}
} else {
Get.snackbar(
'解压 Frpc 时发生错误..呜呜..',
'请检查磁盘是否被塞满了..或者是已经安装了!受不了了呜呜呜...',
snackPosition: SnackPosition.BOTTOM,
animationDuration: Duration(milliseconds: 300),
);
}
/// 关闭对话框
Navigator.of(context).pop();
Navigator.of(context).pop();
});
} else {
frpc_download_show.clear();
frpc_download_show.add(Text(
Expand Down
10 changes: 10 additions & 0 deletions lib/io/frpcManagerStorage.dart
Original file line number Diff line number Diff line change
Expand Up @@ -92,4 +92,14 @@ class FrpcManagerStorage {
await File('${await _path}/info.json')
.writeAsString(write_data, encoding: utf8);
}

static Future<void> setRunPermission() async {
await Process.run(
'chmod',
[
'+x',
await getFilePath('0.51.3'),
],
);
}
}
13 changes: 7 additions & 6 deletions lib/util/FileIO.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,22 +29,23 @@ class FileIO {
/**
* 移动文件夹
*/
static void moveDirectory(Directory sourceDir, Directory targetDir) {
if (!targetDir.existsSync()) {
targetDir.createSync(recursive: true);
static void moveDirectory(Directory sourceDir, Directory targetDir) async {
if (!await targetDir.exists()) {
await targetDir.create(recursive: true);
}

sourceDir.listSync().forEach((FileSystemEntity entity) {
final sourceDirList = await sourceDir.list();
await sourceDirList.forEach((FileSystemEntity entity) async {
String newPath = targetDir.path + '/' + Uri.decodeFull(entity.uri.pathSegments.last);

print(newPath);
if (entity is File) {
File newFile = File(newPath);
entity.renameSync(newFile.path);
await entity.rename(newFile.path);
} else if (entity is Directory) {
Directory newDir = Directory(newPath);
moveDirectory(entity, newDir);
entity.deleteSync();
await entity.delete();
}
});
}
Expand Down

0 comments on commit bd827b9

Please sign in to comment.