JJ_MKVMaker/lib/app/install_marker.dart

36 lines
1.4 KiB
Dart

import 'dart:io';
import 'package:path/path.dart' as p;
/// 115: Android 자동 백업 (allowBackup) 은 앱을 지웠다 다시 깔면 설정 · 동영상 목록을 말없이 되살린다.
/// 이 표시 파일은 백업에서 빼 두었으므로 (res/xml/backup_rules · data_extraction_rules),
/// "설치 직후 처음 켰는데 설정 파일은 있고 표시 파일은 없다" 면 자동 백업에서 되살아난 것이다.
class InstallMarker {
InstallMarker(this.dataDir);
final String dataDir;
static const fileName = 'install_marker';
File get _file => File(p.join(dataDir, fileName));
bool get exists => _file.existsSync();
void write() {
try {
_file.writeAsStringSync(DateTime.now().toIso8601String());
} catch (_) {}
}
}
/// 자동 백업에서 되살아났는지: 설정 파일이 켜기 전부터 있었고, 표시 파일이 없고,
/// 새로 설치한 뒤 업데이트한 적이 없다 (업데이트로 처음 이 판을 켠 경우와 구분 - 업데이트는 설치 시각과 업데이트 시각이 다르다)
bool restoredByAutoBackup({
required bool settingsExisted,
required bool markerExists,
required DateTime? installTime,
required DateTime? updateTime,
}) {
if (!settingsExisted || markerExists || installTime == null || updateTime == null) return false;
return updateTime.difference(installTime).inSeconds.abs() < 5;
}