readSessionStartDate static method
Peeks at the head of a session file to get the session start date. Uses a small 4 KB read to avoid loading the full file.
Implementation
static Future<String?> readSessionStartDate(String filePath) async {
try {
final file = File(filePath);
final raf = await file.open(mode: FileMode.read);
try {
final buf = List<int>.filled(4096, 0);
final bytesRead = await raf.readInto(buf);
if (bytesRead == 0) return null;
final head = utf8.decode(
buf.sublist(0, bytesRead),
allowMalformed: true,
);
final lastNewline = head.lastIndexOf('\n');
if (lastNewline < 0) return null;
for (final line in head.substring(0, lastNewline).split('\n')) {
if (line.isEmpty) continue;
Map<String, dynamic> entry;
try {
entry = jsonDecode(line) as Map<String, dynamic>;
} catch (_) {
continue;
}
final type = entry['type'];
if (type is! String) continue;
if (!_transcriptMessageTypes.contains(type)) continue;
if (entry['isSidechain'] == true) continue;
final timestamp = entry['timestamp'];
if (timestamp is! String) return null;
final date = DateTime.tryParse(timestamp);
if (date == null) return null;
return toDateString(date);
}
return null;
} finally {
await raf.close();
}
} catch (_) {
return null;
}
}