chore: Allow custom image resizer to be an async method

This commit is contained in:
Krille Fear 2022-04-04 14:35:23 +02:00
parent 03afabd323
commit e97fe621d6
2 changed files with 11 additions and 8 deletions

View File

@ -104,8 +104,8 @@ class Client extends MatrixApi {
final Duration sendTimelineEventTimeout; final Duration sendTimelineEventTimeout;
MatrixImageFileResizedResponse? Function(MatrixImageFileResizeArguments)? Future<MatrixImageFileResizedResponse?> Function(
customImageResizer; MatrixImageFileResizeArguments)? customImageResizer;
/// Create a client /// Create a client
/// [clientName] = unique identifier of this client /// [clientName] = unique identifier of this client

View File

@ -105,7 +105,8 @@ class MatrixImageFile extends MatrixFile {
required String name, required String name,
int maxDimension = 1600, int maxDimension = 1600,
String? mimeType, String? mimeType,
MatrixImageFileResizedResponse? Function(MatrixImageFileResizeArguments)? Future<MatrixImageFileResizedResponse?> Function(
MatrixImageFileResizeArguments)?
customImageResizer, customImageResizer,
Future<T> Function<T, U>(FutureOr<T> Function(U arg) function, U arg)? Future<T> Function<T, U>(FutureOr<T> Function(U arg) function, U arg)?
compute}) async { compute}) async {
@ -115,10 +116,11 @@ class MatrixImageFile extends MatrixFile {
fileName: name, fileName: name,
calcBlurhash: true, calcBlurhash: true,
); );
customImageResizer ??= _resize; final resizedData = customImageResizer != null
final resizedData = compute != null ? await customImageResizer(arguments)
? await compute(_resize, arguments) : compute != null
: _resize(arguments); ? await compute(_resize, arguments)
: _resize(arguments);
if (resizedData == null) { if (resizedData == null) {
return MatrixImageFile(bytes: bytes, name: name, mimeType: mimeType); return MatrixImageFile(bytes: bytes, name: name, mimeType: mimeType);
@ -157,7 +159,8 @@ class MatrixImageFile extends MatrixFile {
/// computes a thumbnail for the image /// computes a thumbnail for the image
Future<MatrixImageFile?> generateThumbnail( Future<MatrixImageFile?> generateThumbnail(
{int dimension = Client.defaultThumbnailSize, {int dimension = Client.defaultThumbnailSize,
MatrixImageFileResizedResponse? Function(MatrixImageFileResizeArguments)? Future<MatrixImageFileResizedResponse?> Function(
MatrixImageFileResizeArguments)?
customImageResizer, customImageResizer,
Future<T> Function<T, U>(FutureOr<T> Function(U arg) function, U arg)? Future<T> Function<T, U>(FutureOr<T> Function(U arg) function, U arg)?
compute}) async { compute}) async {