getRecordings method

Future<List<RecordingSession>> getRecordings()

Implementation

Future<List<RecordingSession>> getRecordings() async {
  final directory = await getApplicationDocumentsDirectory();
  final recordingsDir = Directory(path.join(directory.path, 'recordings'));

  if (!recordingsDir.existsSync()) {
    return [];
  }

  final recordings = <RecordingSession>[];
  final files = recordingsDir
      .listSync()
      .where((entity) => entity is File && entity.path.endsWith('.wav'))
      .cast<File>();

  for (final file in files) {
    try {
      final stat = file.statSync();
      final session = RecordingSession(
        id: path.basenameWithoutExtension(file.path),
        filePath: file.path,
        startTime: stat.modified,
        duration: Duration
            .zero, // Would need to parse WAV header for exact duration
        sampleRate: _sampleRate,
        deviceName: 'Unknown',
      );
      recordings.add(session);
    } catch (e) {
      print('Error processing recording file: $e');
      // Skip invalid files
    }
  }

  recordings.sort((a, b) => b.startTime.compareTo(a.startTime));
  return recordings;
}