diff --git a/src/mainview/components/MessageWebView.qml b/src/mainview/components/MessageWebView.qml index 50fddca9b111454222686e30907288255b934000..767710b09e7a46b536f166b9779e4e387e32911c 100644 --- a/src/mainview/components/MessageWebView.qml +++ b/src/mainview/components/MessageWebView.qml @@ -227,6 +227,10 @@ Rectangle { messageWebViewRect.messagesLoaded() } + function copyToDownloads(interactionId, displayName) { + MessagesAdapter.copyToDownloads(interactionId, displayName) + } + function emitPasteKeyDetected() { MessagesAdapter.pasteKeyDetected() } diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 618384d533af2aa47a67022f854737a00ae58115..f36293b5b865915f482027259095ff9c3bdb238d 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -28,6 +28,8 @@ #include "utils.h" #include "webchathelpers.h" +#include <api/datatransfermodel.h> + #include <QApplication> #include <QClipboard> #include <QDesktopServices> @@ -368,6 +370,18 @@ MessagesAdapter::retryInteraction(const QString& interactionId) ->retryInteraction(lrcInstance_->get_selectedConvUid(), interactionId); } +void +MessagesAdapter::copyToDownloads(const QString& interactionId, const QString& displayName) +{ + auto downloadDir = lrcInstance_->accountModel().downloadDirectory; + if (auto accInfo = &lrcInstance_->getCurrentAccountInfo()) + accInfo->dataTransferModel->copyTo(lrcInstance_->getCurrentAccountId(), + lrcInstance_->get_selectedConvUid(), + interactionId, + downloadDir, + displayName); +} + void MessagesAdapter::setNewMessagesContent(const QString& path) { diff --git a/src/messagesadapter.h b/src/messagesadapter.h index 62ea73a6e8a2ba611f042d9732581236eceef12e..82017a3bbb542d604d5454afb3ab5bce624ae6c1 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -67,6 +67,7 @@ protected: Q_INVOKABLE void pasteKeyDetected(); Q_INVOKABLE void onComposing(bool isComposing); Q_INVOKABLE void loadMessages(int n); + Q_INVOKABLE void copyToDownloads(const QString& interactionId, const QString& displayName); // Manually update draft when hiding message web view (Back to welcome page). Q_INVOKABLE void updateDraft();