31 lines
1.2 KiB
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;
|
|
}
|