searchSessionsByCustomTitle function
Search for sessions matching a custom title pattern. Returns a list of maps with sessionId and customTitle fields.
Implementation
Future<List<Map<String, String>>> searchSessionsByCustomTitle(
String projectDir,
String pattern, {
bool exact = false,
}) async {
final results = <Map<String, String>>[];
final dir = Directory(projectDir);
if (!await dir.exists()) return results;
await for (final entity in dir.list()) {
if (entity is File && entity.path.endsWith('.meta.json')) {
try {
final content = await entity.readAsString();
final meta = jsonDecode(content) as Map<String, dynamic>;
final customTitle = meta['customTitle'] as String?;
if (customTitle == null) continue;
if (exact) {
if (customTitle == pattern) {
final sessionId = p
.basenameWithoutExtension(entity.path)
.replaceAll('.meta', '');
results.add({'sessionId': sessionId, 'customTitle': customTitle});
}
} else {
if (customTitle.contains(pattern)) {
final sessionId = p
.basenameWithoutExtension(entity.path)
.replaceAll('.meta', '');
results.add({'sessionId': sessionId, 'customTitle': customTitle});
}
}
} catch (_) {
// Skip malformed meta files
}
}
}
return results;
}