From ae8fb70a4a062ad3b1c1b1344850b4860c49adb0 Mon Sep 17 00:00:00 2001 From: OfficialDakari Date: Tue, 9 Sep 2025 09:45:02 +0500 Subject: [PATCH] create downloadInBackground function, add some checks --- lib/pages/download_manager/download_manager.dart | 5 +++++ .../matrix_sdk_extensions/event_extension.dart | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/pages/download_manager/download_manager.dart b/lib/pages/download_manager/download_manager.dart index 95035f7..138e1a6 100644 --- a/lib/pages/download_manager/download_manager.dart +++ b/lib/pages/download_manager/download_manager.dart @@ -69,4 +69,9 @@ class DownloadManagerController extends State Widget build(BuildContext context) => DownloadManagerView(this); final List downloads = []; + void download(BuildContext context, String name, String url) async { + final dl = Download(context, url, name); + downloads.add(dl); + dl.start(); + } } diff --git a/lib/utils/matrix_sdk_extensions/event_extension.dart b/lib/utils/matrix_sdk_extensions/event_extension.dart index 11c2ff3..82e97dc 100644 --- a/lib/utils/matrix_sdk_extensions/event_extension.dart +++ b/lib/utils/matrix_sdk_extensions/event_extension.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:extera_next/pages/download_manager/download_manager.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -8,6 +9,8 @@ import 'package:matrix/matrix.dart'; import 'package:extera_next/utils/size_string.dart'; import 'package:extera_next/widgets/future_loading_dialog.dart'; +import 'package:mime/mime.dart'; +import 'package:provider/provider.dart'; import 'matrix_file_extension.dart'; extension LocalizedBody on Event { @@ -19,10 +22,18 @@ extension LocalizedBody on Event { void saveFile(BuildContext context) async { final matrixFile = await _getFile(context); - + matrixFile.result?.save(context); } + void downloadInBackground(BuildContext context) async { + if (this.hasAttachment && this.status.isSent && !room.encrypted) { + final dmc = Provider.of(context); + final filename = content.tryGet('filename') ?? body; + dmc.download(context, "$filename.${roomId!.substring(0, 4)}.${eventId.substring(0, 4)}.${extensionFromMime(attachmentMimetype)}", attachmentMxcUrl.toString()); + } + } + void shareFile(BuildContext context) async { final matrixFile = await _getFile(context); inspect(matrixFile);