mirror of
https://github.com/immich-app/immich.git
synced 2026-02-04 08:49:01 +03:00
* platform clients * uppercase http method * fix hot reload * custom user agent * init before app launch * set defaults * move to bootstrap * unrelated change * disable disk cache by default * optimized decoding * remove incremental * android impl * memory optimization * lock approach is slower on ios * conditional cronet * clarify parameter * enable disk cache * set user agent * flutter-side decode * optimized http * fixed locking * refactor * potential race conditions * embedded cronet * refactor, fix capacity handling * fast path for known content length * ios optimizations * re-enable cache * formatting * bump concurrency * clear cache button * fix eviction race condition * add extra cancellation check * tighten dispose * better error handling * fix disposal --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
39 lines
1.0 KiB
Dart
39 lines
1.0 KiB
Dart
part of 'image_request.dart';
|
|
|
|
class LocalImageRequest extends ImageRequest {
|
|
final String localId;
|
|
final int width;
|
|
final int height;
|
|
final AssetType assetType;
|
|
|
|
LocalImageRequest({required this.localId, required ui.Size size, required this.assetType})
|
|
: width = size.width.toInt(),
|
|
height = size.height.toInt();
|
|
|
|
@override
|
|
Future<ImageInfo?> load(ImageDecoderCallback decode, {double scale = 1.0}) async {
|
|
if (_isCancelled) {
|
|
return null;
|
|
}
|
|
|
|
final info = await localImageApi.requestImage(
|
|
localId,
|
|
requestId: requestId,
|
|
width: width,
|
|
height: height,
|
|
isVideo: assetType == AssetType.video,
|
|
);
|
|
if (info == null) {
|
|
return null;
|
|
}
|
|
|
|
final frame = await _fromDecodedPlatformImage(info["pointer"]!, info["width"]!, info["height"]!, info["rowBytes"]!);
|
|
return frame == null ? null : ImageInfo(image: frame.image, scale: scale);
|
|
}
|
|
|
|
@override
|
|
Future<void> _onCancelled() {
|
|
return localImageApi.cancelRequest(requestId);
|
|
}
|
|
}
|