fix(mobile): do not try to load video as image (#25495)

* only load original for images

* early return
This commit is contained in:
Mert
2026-01-24 18:38:31 -05:00
committed by GitHub
parent 1803692eab
commit 5414302350
2 changed files with 12 additions and 8 deletions

View File

@@ -120,7 +120,7 @@ ImageProvider getFullImageProvider(BaseAsset asset, {Size size = const Size(1080
} else { } else {
throw ArgumentError("Unsupported asset type: ${asset.runtimeType}"); throw ArgumentError("Unsupported asset type: ${asset.runtimeType}");
} }
provider = RemoteFullImageProvider(assetId: assetId, thumbhash: thumbhash); provider = RemoteFullImageProvider(assetId: assetId, thumbhash: thumbhash, assetType: asset.type);
} }
return provider; return provider;

View File

@@ -1,5 +1,6 @@
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/painting.dart'; import 'package:flutter/painting.dart';
import 'package:immich_mobile/domain/models/asset/base_asset.model.dart';
import 'package:immich_mobile/domain/models/setting.model.dart'; import 'package:immich_mobile/domain/models/setting.model.dart';
import 'package:immich_mobile/domain/services/setting.service.dart'; import 'package:immich_mobile/domain/services/setting.service.dart';
import 'package:immich_mobile/infrastructure/loaders/image_request.dart'; import 'package:immich_mobile/infrastructure/loaders/image_request.dart';
@@ -59,8 +60,9 @@ class RemoteFullImageProvider extends CancellableImageProvider<RemoteFullImagePr
with CancellableImageProviderMixin<RemoteFullImageProvider> { with CancellableImageProviderMixin<RemoteFullImageProvider> {
final String assetId; final String assetId;
final String thumbhash; final String thumbhash;
final AssetType assetType;
RemoteFullImageProvider({required this.assetId, required this.thumbhash}); RemoteFullImageProvider({required this.assetId, required this.thumbhash, required this.assetType});
@override @override
Future<RemoteFullImageProvider> obtainKey(ImageConfiguration configuration) { Future<RemoteFullImageProvider> obtainKey(ImageConfiguration configuration) {
@@ -89,21 +91,23 @@ class RemoteFullImageProvider extends CancellableImageProvider<RemoteFullImagePr
} }
final headers = ApiService.getRequestHeaders(); final headers = ApiService.getRequestHeaders();
final request = this.request = RemoteImageRequest( final previewRequest = request = RemoteImageRequest(
uri: getThumbnailUrlForRemoteId(key.assetId, type: AssetMediaSize.preview, thumbhash: key.thumbhash), uri: getThumbnailUrlForRemoteId(key.assetId, type: AssetMediaSize.preview, thumbhash: key.thumbhash),
headers: headers, headers: headers,
); );
yield* loadRequest(request, decode); yield* loadRequest(previewRequest, decode);
if (assetType != AssetType.image || !AppSetting.get(Setting.loadOriginal)) {
return;
}
if (isCancelled) { if (isCancelled) {
PaintingBinding.instance.imageCache.evict(this); PaintingBinding.instance.imageCache.evict(this);
return; return;
} }
if (AppSetting.get(Setting.loadOriginal)) { final originalRequest = request = RemoteImageRequest(uri: getOriginalUrlForRemoteId(key.assetId), headers: headers);
final request = this.request = RemoteImageRequest(uri: getOriginalUrlForRemoteId(key.assetId), headers: headers); yield* loadRequest(originalRequest, decode);
yield* loadRequest(request, decode);
}
} }
@override @override