diff --git a/src/api/datatransfermodel.h b/src/api/datatransfermodel.h index 9394cf51c92e06399042a407570bdcc9e6c37b5e..0b6b041ce0a9e74bb4cf07ddbd412675e5249e11 100644 --- a/src/api/datatransfermodel.h +++ b/src/api/datatransfermodel.h @@ -66,18 +66,18 @@ public: qlonglong& total, qlonglong& progress); - QString accept(const QString& accountId, - const QString& fileId, - const QString& file_path, - std::size_t offset); + QString accept(const QString& accountId, const QString& fileId, const QString& filePath = {}); void download(const QString& accountId, const QString& convId, const QString& interactionId, const QString& fileId, - const QString& path); + const QString& filePath = {}); - void copyTo(const QString& accountId, const QString& convId, const QString& interactionId, const QString& destPath); + void copyTo(const QString& accountId, + const QString& convId, + const QString& interactionId, + const QString& destPath); void cancel(const QString& accountId, const QString& conversationId, const QString& fileId); diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index be6cc0003a770600ba4da0ef7cfb4d21417f3aff..05420682a4269e06ca34a5ea653508e88258d657 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -3646,24 +3646,25 @@ ConversationModelPimpl::acceptTransfer(const QString& convUid, const QString& interactionId, const QString& path) { - auto destinationDir = linked.owner.accountModel->downloadDirectory; - if (destinationDir.isEmpty()) { - return; - } + auto& conversation = getConversationForUid(convUid).get(); + if (conversation.isNotASwarm()) { + // This is a fallback, will be removed when swarm will be mandatory + auto destinationDir = linked.owner.accountModel->downloadDirectory; + if (destinationDir.isEmpty()) { + return; + } #ifdef Q_OS_WIN - if (destinationDir.right(1) != '/') { - destinationDir += "/"; - } + if (destinationDir.right(1) != '/') { + destinationDir += "/"; + } #endif - QDir dir = QFileInfo(destinationDir + path).absoluteDir(); - if (!dir.exists()) - dir.mkpath("."); - auto& conversation = getConversationForUid(convUid).get(); - if (conversation.mode == conversation::Mode::NON_SWARM) { + QDir dir = QFileInfo(destinationDir + path).absoluteDir(); + if (!dir.exists()) + dir.mkpath("."); + auto acceptedFilePath = linked.owner.dataTransferModel->accept(linked.owner.id, interactionId, - destinationDir + path, - 0); + destinationDir + path); auto fileId = linked.owner.dataTransferModel->getFileIdFromInteractionId(interactionId); if (transfIdToDbIntId.find(fileId) != transfIdToDbIntId.end()) { auto dbInteractionId = transfIdToDbIntId[fileId]; @@ -3705,35 +3706,12 @@ ConversationModelPimpl::acceptTransfer(const QString& convUid, auto interaction = conversation.interactions.find(interactionId); if (interaction != conversation.interactions.end()) { - auto displayName = interaction->second.commit["displayName"]; auto fileId = interaction->second.commit["fileId"]; if (fileId.isEmpty()) { qWarning() << "Cannot download file without fileId"; - } - if (displayName.isEmpty()) { - displayName = interactionId; - } - int i = 0; - auto path = destinationDir + displayName; - do { - if (i > 0) { - path = destinationDir + QString::number(i) + displayName; - } - QFileInfo fi(path); - if (!fi.isFile()) - break; - ++i; - - } while (i < 1000); - if (i == 1000) { - qWarning() << "Too much duplicates for " << destinationDir << path; return; } - linked.owner.dataTransferModel->download(linked.owner.id, - convUid, - interactionId, - fileId, - path); + linked.owner.dataTransferModel->download(linked.owner.id, convUid, interactionId, fileId); } else { qWarning() << "Cannot download file without valid interaction"; } diff --git a/src/datatransfermodel.cpp b/src/datatransfermodel.cpp index 2df7baf0c24ae0609b5f2b1e8d057b51ce2f37d4..a895393753f2720147d35566f09a5c4b2337f48c 100644 --- a/src/datatransfermodel.cpp +++ b/src/datatransfermodel.cpp @@ -204,15 +204,12 @@ DataTransferModel::fileTransferInfo(const QString& accountId, } QString -DataTransferModel::accept(const QString& accountId, - const QString& fileId, - const QString& file_path, - std::size_t) +DataTransferModel::accept(const QString& accountId, const QString& fileId, const QString& filePath) { - auto unique_file_path = pimpl_->getUniqueFilePath(file_path); - auto dring_id = pimpl_->interactionToFileId[fileId]; - ConfigurationManager::instance().acceptFileTransfer(accountId, dring_id, unique_file_path); - return unique_file_path; + auto uniqueFilePath = pimpl_->getUniqueFilePath(filePath); + auto daemonFileId = pimpl_->interactionToFileId[fileId]; + ConfigurationManager::instance().acceptFileTransfer(accountId, daemonFileId, uniqueFilePath); + return uniqueFilePath; } void @@ -226,7 +223,10 @@ DataTransferModel::download(const QString& accountId, } void -DataTransferModel::copyTo(const QString& accountId, const QString& convId, const QString& interactionId, const QString& destPath) +DataTransferModel::copyTo(const QString& accountId, + const QString& convId, + const QString& interactionId, + const QString& destPath) { auto fileId = getFileIdFromInteractionId(interactionId); if (fileId.isEmpty()) { @@ -248,7 +248,6 @@ DataTransferModel::copyTo(const QString& accountId, const QString& convId, const src.copy(dest); } - void DataTransferModel::cancel(const QString& accountId, const QString& conversationId,