nc-photos/app/lib/entity/local_file/data_source.dart

32 lines
1.1 KiB
Dart
Raw Normal View History

2022-05-05 16:06:47 +02:00
import 'package:logging/logging.dart';
import 'package:nc_photos/entity/file_util.dart' as file_util;
import 'package:nc_photos/entity/local_file.dart';
import 'package:nc_photos/object_extension.dart';
import 'package:nc_photos_plugin/nc_photos_plugin.dart';
class LocalFileMediaStoreDataSource implements LocalFileDataSource {
const LocalFileMediaStoreDataSource();
@override
listDir(String path) async {
_log.info("[listDir] $path");
final results = await MediaStore.queryFiles(path);
return results
.where((r) => file_util.isSupportedMime(r.mimeType ?? ""))
.map(_toLocalFile)
.toList();
}
static LocalFile _toLocalFile(MediaStoreQueryResult r) => LocalUriFile(
uri: r.uri,
displayName: r.displayName,
path: r.path,
lastModified: DateTime.fromMillisecondsSinceEpoch(r.dateModified),
mime: r.mimeType,
dateTaken: r.dateTaken?.run(DateTime.fromMillisecondsSinceEpoch),
);
static final _log =
Logger("entity.local_file.data_source.LocalFileMediaStoreDataSource");
}