fluffychat/lib/utils/matrix_sdk_extensions/event_extension.dart

54 lines
1.5 KiB
Dart
Raw Normal View History

import 'dart:developer';
2020-05-07 09:19:29 +00:00
import 'package:flutter/foundation.dart';
2020-01-19 14:07:42 +00:00
import 'package:flutter/material.dart';
2021-10-26 16:50:34 +00:00
2023-10-28 15:32:37 +00:00
import 'package:async/async.dart' as async;
2021-10-26 16:50:34 +00:00
import 'package:future_loading_dialog/future_loading_dialog.dart';
import 'package:matrix/matrix.dart';
2022-07-22 09:04:47 +00:00
import 'package:fluffychat/utils/size_string.dart';
2020-05-16 06:02:33 +00:00
import 'matrix_file_extension.dart';
2020-01-19 14:07:42 +00:00
extension LocalizedBody on Event {
2023-10-28 15:32:37 +00:00
Future<async.Result<MatrixFile?>> _getFile(BuildContext context) =>
showFutureLoadingDialog(
context: context,
future: downloadAndDecryptAttachment,
);
2021-07-11 15:12:56 +00:00
void saveFile(BuildContext context) async {
final matrixFile = await _getFile(context);
2021-07-11 15:12:56 +00:00
matrixFile.result?.save(context);
2020-05-16 06:02:33 +00:00
}
void shareFile(BuildContext context) async {
final matrixFile = await _getFile(context);
inspect(matrixFile);
matrixFile.result?.share(context);
}
bool get isAttachmentSmallEnough =>
infoMap['size'] is int &&
infoMap['size'] < room.client.database!.maxFileSize;
bool get isThumbnailSmallEnough =>
thumbnailInfoMap['size'] is int &&
thumbnailInfoMap['size'] < room.client.database!.maxFileSize;
2020-05-07 09:19:29 +00:00
bool get showThumbnail =>
2021-08-08 15:55:00 +00:00
[MessageTypes.Image, MessageTypes.Sticker, MessageTypes.Video]
.contains(messageType) &&
(kIsWeb ||
isAttachmentSmallEnough ||
isThumbnailSmallEnough ||
2020-09-03 10:58:54 +00:00
(content['url'] is String));
2020-05-07 09:19:29 +00:00
2022-07-22 09:04:47 +00:00
String? get sizeString => content
.tryGetMap<String, dynamic>('info')
?.tryGet<int>('size')
?.sizeString;
2020-01-19 14:07:42 +00:00
}