소스 검색

Ensure that encrypted thumbnails are loaded from network correctly

Vishnu Mohandas 4 년 전
부모
커밋
0c8df6c923
2개의 변경된 파일22개의 추가작업 그리고 6개의 파일을 삭제
  1. 0 1
      lib/ui/thumbnail_widget.dart
  2. 22 5
      lib/ui/zoomable_image.dart

+ 0 - 1
lib/ui/thumbnail_widget.dart

@@ -1,7 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:photos/core/cache/image_cache.dart';
 import 'package:photos/core/cache/thumbnail_cache.dart';
-import 'package:photos/repositories/file_repository.dart';
 import 'package:photos/models/file.dart';
 import 'package:logging/logging.dart';
 import 'package:photos/core/constants.dart';

+ 22 - 5
lib/ui/zoomable_image.dart

@@ -79,11 +79,28 @@ class _ZoomableImageState extends State<ZoomableImage>
 
   void _loadNetworkImage() {
     if (!_loadedSmallThumbnail && !_loadedFinalImage) {
-      _imageProvider = CachedNetworkImageProvider(
-        _photo.getThumbnailUrl(),
-        cacheManager: ThumbnailCacheManager(),
-      );
-      _loadedSmallThumbnail = true;
+      final cachedThumbnail = ThumbnailFileLruCache.get(_photo);
+      if (cachedThumbnail != null) {
+        _imageProvider = Image.file(cachedThumbnail).image;
+        _loadedSmallThumbnail = true;
+      } else {
+        getThumbnailFromServer(_photo).then((file) {
+          final imageProvider = Image.file(file).image;
+          if (mounted) {
+            precacheImage(imageProvider, context).then((value) {
+              if (mounted) {
+                setState(() {
+                  _imageProvider = imageProvider;
+                  _loadedSmallThumbnail = true;
+                });
+              }
+            }).catchError((e) {
+              _logger.severe("Could not load image " + _photo.toString());
+              _loadedSmallThumbnail = true;
+            });
+          }
+        });
+      }
     }
     if (!_loadedFinalImage) {
       getFileFromServer(_photo).then((file) {