mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 14:56:20 +01:00
31 lines
1.1 KiB
Dart
31 lines
1.1 KiB
Dart
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");
|
|
}
|