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