Fix image file preview loading

This commit is contained in:
Hank Grabowski 2022-03-16 15:03:38 -04:00
parent 1ec9939f9b
commit af69bb910b
3 changed files with 13 additions and 20 deletions

View file

@ -55,13 +55,13 @@ class MediaWrapperComponent extends StatelessWidget {
noImageText: 'No Thumbnail', noImageText: 'No Thumbnail',
noImageOnTapText: noImageOnTapText:
'Click to launch video in external player (No Thumbnail)', 'Click to launch video in external player (No Thumbnail)',
onTap: () async => onTap: () async => await _attemptToPlay(
await _attemptToPlay(context, videoPlayerCommand, path)); context, videoPlayerCommand, path.toString()));
} }
return TextButton( return TextButton(
onPressed: () async { onPressed: () async {
await _attemptToPlay(context, videoPlayerCommand, path); await _attemptToPlay(context, videoPlayerCommand, path.toString());
}, },
child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
Text( Text(
@ -74,8 +74,7 @@ class MediaWrapperComponent extends StatelessWidget {
} }
if (mediaAttachment.explicitType == AttachmentMediaType.image) { if (mediaAttachment.explicitType == AttachmentMediaType.image) {
final imageResult = final imageResult = _uriToImage(path, archiveService.pathMappingService);
_uriToImage(mediaAttachment.uri, archiveService.pathMappingService);
if (imageResult.image == null) { if (imageResult.image == null) {
final errorPath = imageResult.path.isNotEmpty final errorPath = imageResult.path.isNotEmpty
? imageResult.path ? imageResult.path
@ -172,13 +171,13 @@ class MediaWrapperComponent extends StatelessWidget {
return InkWell(onTap: onTap, child: imageWidget); return InkWell(onTap: onTap, child: imageWidget);
} }
String _calculatePath(ArchiveServiceProvider archiveService) { Uri _calculatePath(ArchiveServiceProvider archiveService) {
final url = mediaAttachment.uri.toString(); final url = mediaAttachment.uri.toString();
String basePath = ''; String basePath = '';
if (url.startsWith('http')) { if (url.startsWith('http')) {
final localCacheFile = archiveService.getImageByUrl(url); final localCacheFile = archiveService.getImageByUrl(url);
if (localCacheFile.isFailure) { if (localCacheFile.isFailure) {
return url; return mediaAttachment.uri;
} }
basePath = localCacheFile.value.localFilename; basePath = localCacheFile.value.localFilename;
@ -186,7 +185,7 @@ class MediaWrapperComponent extends StatelessWidget {
basePath = mediaAttachment.uri.path; basePath = mediaAttachment.uri.path;
} }
return archiveService.pathMappingService.toFullPath(basePath); return Uri.parse(basePath);
} }
} }

View file

@ -40,6 +40,10 @@ class DiasporaPathMappingService implements PathMappingService {
@override @override
String toFullPath(String relPath) { String toFullPath(String relPath) {
if (File(relPath).existsSync()) {
return relPath;
}
for (final file in _photoDirectories) { for (final file in _photoDirectories) {
final fullPath = p.join(file.path, relPath); final fullPath = p.join(file.path, relPath);
if (File(fullPath).existsSync()) { if (File(fullPath).existsSync()) {

View file

@ -29,19 +29,9 @@ class FriendicaPathMappingService implements PathMappingService {
} }
_archiveDirectories.clear(); _archiveDirectories.clear();
try { final recursive = !_calcRootIsSingleArchiveFolder();
if (_calcRootIsSingleArchiveFolder()) {
_archiveDirectories.add(Directory(rootFolder));
return;
}
} catch (e) {
_logger
.severe('Error thrown while trying to calculate root structure: $e');
return;
}
_archiveDirectories.addAll(Directory(settings.rootFolder) _archiveDirectories.addAll(Directory(settings.rootFolder)
.listSync(recursive: false) .listSync(recursive: recursive)
.where((element) => .where((element) =>
element.statSync().type == FileSystemEntityType.directory)); element.statSync().type == FileSystemEntityType.directory));
} }