refactor(mobile): cleanup image providers (#31824)
* refactor(mobile): remove redundant cancellation checks in image providers * refactor(mobile): extract request helpers in full image providers (cherry picked from commit 795507cfec262f8a6a9bd3ddd6f5647781e605ca)
This commit is contained in:
1 parent
db6e11ecc8
commit
d63fc2088f
2 files changed
+31
-43
No files matched your search
@@ -152,13 +152,8 @@ class LocalFullImageProvider extends ImageProvider<LocalFullImageProvider> {
|
||||
}
|
||||
|
||||
final loadOriginal = SettingsRepository.instance.appConfig.image.loadOriginal;
|
||||
final devicePixelRatio = PlatformDispatcher.instance.views.first.devicePixelRatio;
|
||||
var request = loader.request = LocalImageRequest(
|
||||
localId: key.id,
|
||||
size: _previewTarget(devicePixelRatio, !loadOriginal),
|
||||
assetType: key.assetType,
|
||||
);
|
||||
yield* loader.loadRequest(request, decode, isFinal: !loadOriginal);
|
||||
final previewRequest = loader.request = _previewRequest(key, isFinal: !loadOriginal);
|
||||
yield* loader.loadRequest(previewRequest, decode, isFinal: !loadOriginal);
|
||||
|
||||
if (!loadOriginal) {
|
||||
return;
|
||||
@@ -168,9 +163,8 @@ class LocalFullImageProvider extends ImageProvider<LocalFullImageProvider> {
|
||||
return;
|
||||
}
|
||||
|
||||
request = loader.request = LocalImageRequest(localId: key.id, assetType: key.assetType, size: Size.zero);
|
||||
|
||||
yield* loader.loadRequest(request, decode, isFinal: true);
|
||||
final originalRequest = loader.request = _originalRequest(key);
|
||||
yield* loader.loadRequest(originalRequest, decode, isFinal: true);
|
||||
}
|
||||
|
||||
Stream<Object> _animatedCodec(ImageLoader loader, LocalFullImageProvider key, ImageDecoderCallback decode) async* {
|
||||
@@ -180,12 +174,7 @@ class LocalFullImageProvider extends ImageProvider<LocalFullImageProvider> {
|
||||
return;
|
||||
}
|
||||
|
||||
final devicePixelRatio = PlatformDispatcher.instance.views.first.devicePixelRatio;
|
||||
final previewRequest = loader.request = LocalImageRequest(
|
||||
localId: key.id,
|
||||
size: _previewTarget(devicePixelRatio, false),
|
||||
assetType: key.assetType,
|
||||
);
|
||||
final previewRequest = loader.request = _previewRequest(key, isFinal: false);
|
||||
yield* loader.loadRequest(previewRequest, decode, isFinal: false);
|
||||
|
||||
if (loader.isCancelled) {
|
||||
@@ -193,11 +182,7 @@ class LocalFullImageProvider extends ImageProvider<LocalFullImageProvider> {
|
||||
}
|
||||
|
||||
// always try original for animated, since previews don't support animation
|
||||
final originalRequest = loader.request = LocalImageRequest(
|
||||
localId: key.id,
|
||||
size: Size.zero,
|
||||
assetType: key.assetType,
|
||||
);
|
||||
final originalRequest = loader.request = _originalRequest(key);
|
||||
final codec = await loader.loadCodecRequest(originalRequest, isFinal: true);
|
||||
if (codec == null) {
|
||||
if (loader.isCancelled) {
|
||||
@@ -208,6 +193,15 @@ class LocalFullImageProvider extends ImageProvider<LocalFullImageProvider> {
|
||||
yield codec;
|
||||
}
|
||||
|
||||
LocalImageRequest _previewRequest(LocalFullImageProvider key, {required bool isFinal}) => LocalImageRequest(
|
||||
localId: key.id,
|
||||
size: _previewTarget(PlatformDispatcher.instance.views.first.devicePixelRatio, isFinal),
|
||||
assetType: key.assetType,
|
||||
);
|
||||
|
||||
LocalImageRequest _originalRequest(LocalFullImageProvider key) =>
|
||||
LocalImageRequest(localId: key.id, size: Size.zero, assetType: key.assetType);
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
if (identical(this, other)) {
|
||||
|
||||
@@ -132,14 +132,7 @@ class RemoteFullImageProvider extends ImageProvider<RemoteFullImageProvider> {
|
||||
return;
|
||||
}
|
||||
|
||||
final previewRequest = loader.request = RemoteImageRequest(
|
||||
uri: getThumbnailUrlForRemoteId(
|
||||
key.assetId,
|
||||
type: AssetMediaSize.preview,
|
||||
thumbhash: key.thumbhash,
|
||||
edited: key.edited,
|
||||
),
|
||||
);
|
||||
final previewRequest = loader.request = _previewRequest(key);
|
||||
final loadOriginal = assetType == AssetType.image && SettingsRepository.instance.appConfig.image.loadOriginal;
|
||||
yield* loader.loadRequest(previewRequest, decode, isFinal: !loadOriginal);
|
||||
|
||||
@@ -151,9 +144,7 @@ class RemoteFullImageProvider extends ImageProvider<RemoteFullImageProvider> {
|
||||
return;
|
||||
}
|
||||
|
||||
final originalRequest = loader.request = RemoteImageRequest(
|
||||
uri: getOriginalUrlForRemoteId(key.assetId, edited: key.edited),
|
||||
);
|
||||
final originalRequest = loader.request = _originalRequest(key);
|
||||
yield* loader.loadRequest(originalRequest, decode, isFinal: true);
|
||||
}
|
||||
|
||||
@@ -164,14 +155,7 @@ class RemoteFullImageProvider extends ImageProvider<RemoteFullImageProvider> {
|
||||
return;
|
||||
}
|
||||
|
||||
final previewRequest = loader.request = RemoteImageRequest(
|
||||
uri: getThumbnailUrlForRemoteId(
|
||||
key.assetId,
|
||||
type: AssetMediaSize.preview,
|
||||
thumbhash: key.thumbhash,
|
||||
edited: key.edited,
|
||||
),
|
||||
);
|
||||
final previewRequest = loader.request = _previewRequest(key);
|
||||
yield* loader.loadRequest(previewRequest, decode, isFinal: false);
|
||||
|
||||
if (loader.isCancelled) {
|
||||
@@ -179,9 +163,7 @@ class RemoteFullImageProvider extends ImageProvider<RemoteFullImageProvider> {
|
||||
}
|
||||
|
||||
// always try original for animated, since previews don't support animation
|
||||
final originalRequest = loader.request = RemoteImageRequest(
|
||||
uri: getOriginalUrlForRemoteId(key.assetId, edited: key.edited),
|
||||
);
|
||||
final originalRequest = loader.request = _originalRequest(key);
|
||||
final codec = await loader.loadCodecRequest(originalRequest, isFinal: true);
|
||||
if (codec == null) {
|
||||
if (loader.isCancelled) {
|
||||
@@ -192,6 +174,18 @@ class RemoteFullImageProvider extends ImageProvider<RemoteFullImageProvider> {
|
||||
yield codec;
|
||||
}
|
||||
|
||||
RemoteImageRequest _previewRequest(RemoteFullImageProvider key) => RemoteImageRequest(
|
||||
uri: getThumbnailUrlForRemoteId(
|
||||
key.assetId,
|
||||
type: AssetMediaSize.preview,
|
||||
thumbhash: key.thumbhash,
|
||||
edited: key.edited,
|
||||
),
|
||||
);
|
||||
|
||||
RemoteImageRequest _originalRequest(RemoteFullImageProvider key) =>
|
||||
RemoteImageRequest(uri: getOriginalUrlForRemoteId(key.assetId, edited: key.edited));
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) {
|
||||
if (identical(this, other)) {
|
||||
|
||||
Reference in new issue
Block a user