small improvements to file loading

This commit is contained in:
Henry Hiles 2026-10-03 21:59:45 -04:00
commit 9edaee6bea
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -1,5 +1,6 @@
import "dart:ui"; import "dart:ui";
import "package:flutter/foundation.dart";
import "package:flutter/widgets.dart"; import "package:flutter/widgets.dart";
import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/client.dart"; import "package:nexus/controllers/client.dart";
@ -9,19 +10,18 @@ class MxcImage(final WidgetRef ref, final DownloadMediaRequest request)
extends ImageProvider<MxcImage> { extends ImageProvider<MxcImage> {
@override @override
Future<MxcImage> obtainKey(ImageConfiguration configuration) => Future<MxcImage> obtainKey(ImageConfiguration configuration) =>
Future.value(this); SynchronousFuture(this);
@override @override
ImageStreamCompleter loadImage(MxcImage key, ImageDecoderCallback decode) => ImageStreamCompleter loadImage(MxcImage key, ImageDecoderCallback decode) =>
MultiFrameImageStreamCompleter(codec: _loadAsync(decode), scale: 1.0); MultiFrameImageStreamCompleter(codec: _loadAsync(decode), scale: 1);
Future<Codec> _loadAsync(ImageDecoderCallback decode) async { Future<Codec> _loadAsync(ImageDecoderCallback decode) async {
final file = await ref final file = await ref
.read(ClientController.provider.notifier) .read(ClientController.provider.notifier)
.downloadMedia(request); .downloadMedia(request);
final buffer = await ImmutableBuffer.fromFilePath(file.path);
return decode(buffer); return decode(await ImmutableBuffer.fromFilePath(file.path));
} }
@override @override