JJ_MKVMaker/lib/core/vault_view.dart

31 lines
1.2 KiB
Dart

import 'dart:io';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
/// 암호 보관함 [보기] 에서 잠깐 푼 파일을 두는 곳 (관리자 지시 10/21): 공유 폴더 (Download · 시스템 TEMP) 가 아니라
/// 앱 전용 - Android getCacheDir (다른 앱이 못 봄), Windows 앱 데이터 폴더의 temp. 시험에서 바꾼다
Future<Directory> Function() vaultViewRootOf = () async {
if (Platform.isAndroid) return getTemporaryDirectory();
return Directory(p.join((await getApplicationSupportDirectory()).path, 'temp'));
};
/// 푼 파일을 두는 폴더 이름 앞 (실행마다 새 폴더)
const vaultViewPrefix = 'jj_vault_view_';
/// 앱이 강제로 꺼져 남은 보기 폴더를 지운다 (앱을 켤 때 - 그때는 보관함이 열려 있지 않음). 지운 이름
List<String> removeStaleVaultViews(String root) {
final removed = <String>[];
try {
for (final e in Directory(root).listSync(followLinks: false)) {
final name = p.basename(e.path);
if (e is! Directory || !name.startsWith(vaultViewPrefix)) continue;
try {
e.deleteSync(recursive: true);
removed.add(name);
} catch (_) {}
}
} catch (_) {}
return removed;
}