fix(mobile): blurry memory photos (#6734)
* fix(mobile): blurry memory photos * better naming and performance
This commit is contained in:
@@ -161,7 +161,7 @@ class GalleryViewerPage extends HookConsumerWidget {
|
||||
|
||||
Iterable<ImageProvider> allImageProviders(Asset asset) sync* {
|
||||
if (ImmichImage.useLocal(asset)) {
|
||||
yield ImmichImage.localThumbnailProvider(asset);
|
||||
yield ImmichImage.localImageProvider(asset);
|
||||
yield localOriginalProvider(asset);
|
||||
} else {
|
||||
yield ImmichImage.remoteThumbnailProvider(asset, webp, header);
|
||||
@@ -787,7 +787,7 @@ class GalleryViewerPage extends HookConsumerWidget {
|
||||
final a = loadAsset(index);
|
||||
if (ImmichImage.useLocal(a)) {
|
||||
return Image(
|
||||
image: ImmichImage.localThumbnailProvider(a),
|
||||
image: ImmichImage.localImageProvider(a),
|
||||
fit: BoxFit.contain,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -82,6 +82,7 @@ class MemoryCard extends HookConsumerWidget {
|
||||
height: double.infinity,
|
||||
width: double.infinity,
|
||||
type: ThumbnailFormat.JPEG,
|
||||
preferredLocalAssetSize: 2048,
|
||||
),
|
||||
),
|
||||
Positioned(
|
||||
|
||||
@@ -101,6 +101,7 @@ class MemoryPage extends HookConsumerWidget {
|
||||
asset,
|
||||
context,
|
||||
type: api.ThumbnailFormat.WEBP,
|
||||
size: 2048,
|
||||
),
|
||||
);
|
||||
precaches.add(
|
||||
@@ -108,6 +109,7 @@ class MemoryPage extends HookConsumerWidget {
|
||||
asset,
|
||||
context,
|
||||
type: api.ThumbnailFormat.JPEG,
|
||||
size: 2048,
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ class ImmichImage extends StatelessWidget {
|
||||
this.useGrayBoxPlaceholder = false,
|
||||
this.useProgressIndicator = false,
|
||||
this.type = api.ThumbnailFormat.WEBP,
|
||||
this.preferredLocalAssetSize = 250,
|
||||
super.key,
|
||||
});
|
||||
final Asset? asset;
|
||||
@@ -29,6 +30,7 @@ class ImmichImage extends StatelessWidget {
|
||||
final double? height;
|
||||
final BoxFit fit;
|
||||
final api.ThumbnailFormat type;
|
||||
final int preferredLocalAssetSize;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -49,7 +51,7 @@ class ImmichImage extends StatelessWidget {
|
||||
final Asset asset = this.asset!;
|
||||
if (useLocal(asset)) {
|
||||
return Image(
|
||||
image: localThumbnailProvider(asset),
|
||||
image: localImageProvider(asset, size: preferredLocalAssetSize),
|
||||
width: width,
|
||||
height: height,
|
||||
fit: fit,
|
||||
@@ -145,11 +147,14 @@ class ImmichImage extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
static AssetEntityImageProvider localThumbnailProvider(Asset asset) =>
|
||||
static AssetEntityImageProvider localImageProvider(
|
||||
Asset asset, {
|
||||
int size = 250,
|
||||
}) =>
|
||||
AssetEntityImageProvider(
|
||||
asset.local!,
|
||||
isOriginal: false,
|
||||
thumbnailSize: const ThumbnailSize.square(250),
|
||||
thumbnailSize: ThumbnailSize.square(size),
|
||||
);
|
||||
|
||||
static CachedNetworkImageProvider remoteThumbnailProvider(
|
||||
@@ -181,10 +186,14 @@ class ImmichImage extends StatelessWidget {
|
||||
Asset asset,
|
||||
BuildContext context, {
|
||||
type = api.ThumbnailFormat.WEBP,
|
||||
size = 250,
|
||||
}) {
|
||||
if (useLocal(asset)) {
|
||||
// Precache the local image
|
||||
return precacheImage(localThumbnailProvider(asset), context);
|
||||
return precacheImage(
|
||||
localImageProvider(asset, size: size),
|
||||
context,
|
||||
);
|
||||
} else {
|
||||
final authToken = 'Bearer ${Store.get(StoreKey.accessToken)}';
|
||||
// Precache the remote image since we are not using local images
|
||||
|
||||
Reference in New Issue
Block a user