|
|
|
@ -10,6 +10,7 @@ import 'package:immich_mobile/presentation/widgets/images/one_frame_multi_image_
|
|
|
|
import 'package:immich_mobile/providers/image/cache/remote_image_cache_manager.dart';
|
|
|
|
import 'package:immich_mobile/providers/image/cache/remote_image_cache_manager.dart';
|
|
|
|
import 'package:immich_mobile/services/api.service.dart';
|
|
|
|
import 'package:immich_mobile/services/api.service.dart';
|
|
|
|
import 'package:immich_mobile/utils/image_url_builder.dart';
|
|
|
|
import 'package:immich_mobile/utils/image_url_builder.dart';
|
|
|
|
|
|
|
|
import 'package:openapi/api.dart';
|
|
|
|
|
|
|
|
|
|
|
|
class RemoteThumbProvider extends CancellableImageProvider<RemoteThumbProvider>
|
|
|
|
class RemoteThumbProvider extends CancellableImageProvider<RemoteThumbProvider>
|
|
|
|
with CancellableImageProviderMixin<RemoteThumbProvider> {
|
|
|
|
with CancellableImageProviderMixin<RemoteThumbProvider> {
|
|
|
|
@ -104,9 +105,34 @@ class RemoteFullImageProvider extends CancellableImageProvider<RemoteFullImagePr
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// If loading originals is enabled, attempt to load the original
|
|
|
|
|
|
|
|
// and fall back to the fullsize preview when that fails.
|
|
|
|
if (AppSetting.get(Setting.loadOriginal)) {
|
|
|
|
if (AppSetting.get(Setting.loadOriginal)) {
|
|
|
|
final request = this.request = RemoteImageRequest(uri: getOriginalUrlForRemoteId(key.assetId), headers: headers);
|
|
|
|
try {
|
|
|
|
yield* loadRequest(request, decode);
|
|
|
|
final request = this.request = RemoteImageRequest(uri: getOriginalUrlForRemoteId(key.assetId), headers: headers);
|
|
|
|
|
|
|
|
yield* loadRequest(request, decode);
|
|
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
|
|
if (isCancelled) {
|
|
|
|
|
|
|
|
unawaited(evict());
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Fallback to fullsize preview when original fails
|
|
|
|
|
|
|
|
final fullResRequest = this.request = RemoteImageRequest(
|
|
|
|
|
|
|
|
uri: getThumbnailUrlForRemoteId(key.assetId, type: AssetMediaSize.fullsize),
|
|
|
|
|
|
|
|
headers: headers,
|
|
|
|
|
|
|
|
cacheManager: cacheManager,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
yield* loadRequest(fullResRequest, decode);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// When load original is disabled, always load the fullsize preview after the preview.
|
|
|
|
|
|
|
|
final fullResRequest = this.request = RemoteImageRequest(
|
|
|
|
|
|
|
|
uri: getThumbnailUrlForRemoteId(key.assetId, type: AssetMediaSize.fullsize),
|
|
|
|
|
|
|
|
headers: headers,
|
|
|
|
|
|
|
|
cacheManager: cacheManager,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
yield* loadRequest(fullResRequest, decode);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|