collectNotificationAudit static method
Implementation
static Future<void> collectNotificationAudit(ACLDatabase db) async {
// print(await AclSdkPlatform.instance.getNotificationsDir());
final notificationDir = Directory(
'${await AclSdkPlatform.instance.getNotificationsDir()}/notifications');
if (notificationDir.existsSync() == false) {
return;
}
final listFiles = notificationDir.listSync();
for (final file in listFiles) {
final fileName = file.path.split('/').lastOrNull;
if (fileName == null) {
continue;
}
final fileNameComponent = fileName.split('.');
final extension = fileNameComponent.lastOrNull;
if (extension == null || extension != 'json') {
continue;
}
final nameComponent = fileNameComponent.firstOrNull?.split('_');
if (nameComponent == null || nameComponent.length != 2) {
continue;
}
final checksum = nameComponent.lastOrNull;
if (checksum == null) {
continue;
}
// print(fileName);
final readFile = File(file.path);
try {
final data = jsonDecode(await readFile.readAsString());
if (data['checkSum'] != checksum) {
await readFile.delete(recursive: true);
continue;
}
await db.notificationAuditDao.create(NotificationAuditCompanion(
checkSum: Value(data['checkSum']),
happenedAt:
Value(DateTime.fromMillisecondsSinceEpoch(data['happenedAt'])),
packageName: Value(data['packageName']),
summary: Value(data['summary']),
type: Value(_mapStringToStatus(data['type'])),
key: Value(data['key']),
title: Value(data['title']),
));
await readFile.delete(recursive: true);
} catch (e) {
await readFile.delete(recursive: true);
print('Error: NotificationAuditHelper.collectNotificationAudit');
print(e);
}
}
}