create downloadInBackground function, add some checks

This commit is contained in:
OfficialDakari 2025-09-09 09:45:02 +05:00
parent b2c71b1403
commit ae8fb70a4a
2 changed files with 17 additions and 1 deletions

View File

@ -69,4 +69,9 @@ class DownloadManagerController extends State<DownloadManager>
Widget build(BuildContext context) => DownloadManagerView(this); Widget build(BuildContext context) => DownloadManagerView(this);
final List<Download> downloads = []; final List<Download> downloads = [];
void download(BuildContext context, String name, String url) async {
final dl = Download(context, url, name);
downloads.add(dl);
dl.start();
}
} }

View File

@ -1,5 +1,6 @@
import 'dart:developer'; import 'dart:developer';
import 'package:extera_next/pages/download_manager/download_manager.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.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/utils/size_string.dart';
import 'package:extera_next/widgets/future_loading_dialog.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'; import 'matrix_file_extension.dart';
extension LocalizedBody on Event { extension LocalizedBody on Event {
@ -19,10 +22,18 @@ extension LocalizedBody on Event {
void saveFile(BuildContext context) async { void saveFile(BuildContext context) async {
final matrixFile = await _getFile(context); final matrixFile = await _getFile(context);
matrixFile.result?.save(context); matrixFile.result?.save(context);
} }
void downloadInBackground(BuildContext context) async {
if (this.hasAttachment && this.status.isSent && !room.encrypted) {
final dmc = Provider.of<DownloadManagerController>(context);
final filename = content.tryGet<String>('filename') ?? body;
dmc.download(context, "$filename.${roomId!.substring(0, 4)}.${eventId.substring(0, 4)}.${extensionFromMime(attachmentMimetype)}", attachmentMxcUrl.toString());
}
}
void shareFile(BuildContext context) async { void shareFile(BuildContext context) async {
final matrixFile = await _getFile(context); final matrixFile = await _getFile(context);
inspect(matrixFile); inspect(matrixFile);