diff --git a/src/api/behaviorcontroller.h b/src/api/behaviorcontroller.h index fa5d363d53c5761391b1595a9f73e51157f414d4..d513273501f32a75c02c7098b8fbd825d27f3495 100644 --- a/src/api/behaviorcontroller.h +++ b/src/api/behaviorcontroller.h @@ -82,14 +82,14 @@ Q_SIGNALS: */ void newUnreadInteraction(const QString& accountId, const QString& conversation, - uint64_t interactionId, + const QString& interactionId, const interaction::Info& interaction) const; /** * Emitted when the unread interaction is now read */ void newReadInteraction(const QString& accountId, const QString& conversation, - uint64_t interactionId) const; + const QString& interactionId) const; /** * Emitted debugMessageReceived */ diff --git a/src/api/conversation.h b/src/api/conversation.h index 8d98dad1fc05353e2ebaee47766f66246caa3d45..97fbe776f21ac20b26f3e1daeca240b8cfc5373a 100644 --- a/src/api/conversation.h +++ b/src/api/conversation.h @@ -43,9 +43,9 @@ struct Info VectorString participants; QString callId; QString confId; - std::map<uint64_t, interaction::Info> interactions; - uint64_t lastMessageUid = 0; - std::map<QString, uint64_t> lastDisplayedMessageUid; + std::map<QString, interaction::Info> interactions; + QString lastMessageUid = 0; + std::map<QString, QString> lastDisplayedMessageUid; unsigned int unreadMessages = 0; QString getCallId() { return confId.isEmpty() ? callId : confId; } diff --git a/src/api/conversationmodel.h b/src/api/conversationmodel.h index 05eef0488c2b4e2a9f977aa8f82e4311f8e564a3..ca24f5d4fc93453b736f948d39930b1dd87cb2e8 100644 --- a/src/api/conversationmodel.h +++ b/src/api/conversationmodel.h @@ -231,7 +231,7 @@ public: * @param convId, id of the conversation * @param msgId, id of the interaction */ - void setInteractionRead(const QString& convId, const uint64_t& msgId); + void setInteractionRead(const QString& convId, const QString& msgId); /** * Clears the unread text messages of a conversation * @param convId, uid of the conversation @@ -246,13 +246,13 @@ public: * @param convId * @param interactionId */ - void clearInteractionFromConversation(const QString& convId, const uint64_t& interactionId); + void clearInteractionFromConversation(const QString& convId, const QString& interactionId); /** * Retry to send a message. In fact, will delete the previous interaction and resend a new one. * @param convId * @param interactionId */ - void retryInteraction(const QString& convId, const uint64_t& interactionId); + void retryInteraction(const QString& convId, const QString& interactionId); /** * @param convId * @param interactionId @@ -260,7 +260,7 @@ public: * @return whether the interaction is last displayed for the conversation */ bool isLastDisplayed(const QString& convId, - const uint64_t& interactionId, + const QString& interactionId, const QString participant); /** * delete obsolete history from the database @@ -270,13 +270,13 @@ public: void sendFile(const QString& convUid, const QString& path, const QString& filename); - void acceptTransfer(const QString& convUid, uint64_t interactionId); + void acceptTransfer(const QString& convUid, const QString& interactionId); - void acceptTransfer(const QString& convUid, uint64_t interactionId, const QString& path); + void acceptTransfer(const QString& convUid, const QString& interactionId, const QString& path); - void cancelTransfer(const QString& convUid, uint64_t interactionId); + void cancelTransfer(const QString& convUid, const QString& interactionId); - void getTransferInfo(const QString& conversationId, uint64_t interactionId, api::datatransfer::Info& info); + void getTransferInfo(const QString& conversationId, const QString& interactionId, api::datatransfer::Info& info); /** * @param convUid, uid of the conversation * @return the number of unread messages for the conversation @@ -327,7 +327,7 @@ Q_SIGNALS: * @param interactionInfo */ void newInteraction(const QString& uid, - uint64_t interactionId, + QString& interactionId, const interaction::Info& interactionInfo) const; /** * Emitted when an interaction got a new status @@ -336,14 +336,14 @@ Q_SIGNALS: * @param msg */ void interactionStatusUpdated(const QString& convUid, - uint64_t interactionId, + const QString& interactionId, const api::interaction::Info& msg) const; /** * Emitted when an interaction got removed from the conversation * @param convUid conversation which owns the interaction * @param interactionId */ - void interactionRemoved(const QString& convUid, uint64_t interactionId) const; + void interactionRemoved(const QString& convUid, const QString& interactionId) const; /** * Emitted when user clear the history of a conversation * @param uid @@ -401,8 +401,8 @@ Q_SIGNALS: */ void displayedInteractionChanged(const QString& uid, const QString& participantURI, - const uint64_t previousUid, - const uint64_t newdUid) const; + const QString& previousUid, + const QString& newdUid) const; /** * Emitted when search status changed diff --git a/src/authority/storagehelper.cpp b/src/authority/storagehelper.cpp index 3ab5f8bc8fd40cbc6bca6ebe87ea105f6503cb22..f9447ab4e701635e9e294bffb24510f8eb83387c 100644 --- a/src/authority/storagehelper.cpp +++ b/src/authority/storagehelper.cpp @@ -411,9 +411,8 @@ getHistory(Database& db, api::conversation::Info& conversation) type, status, (payloads[i + 6] == "1" ? true : false)}); - conversation.interactions.emplace(std::stoull(payloads[i].toStdString()), - std::move(msg)); - conversation.lastMessageUid = std::stoull(payloads[i].toStdString()); + conversation.interactions.emplace(payloads[i], std::move(msg)); + conversation.lastMessageUid = payloads[i]; if (status != api::interaction::Status::DISPLAYED || !payloads[i + 1].isEmpty()) { continue; } @@ -421,7 +420,7 @@ getHistory(Database& db, api::conversation::Info& conversation) conversation.participants.front()); if (messageId == conversation.lastDisplayedMessageUid.end()) { conversation.lastDisplayedMessageUid.emplace(conversation.participants.front(), - std::stoull(payloads[i].toStdString())); + payloads[i]); continue; } auto lastReadInteraction = conversation.interactions.find(messageId->second); @@ -435,7 +434,7 @@ getHistory(Database& db, api::conversation::Info& conversation) } } -int +QString addMessageToConversation(Database& db, const QString& conversationId, const api::interaction::Info& msg) @@ -457,7 +456,7 @@ addMessageToConversation(Database& db, {":is_read", msg.isRead ? "1" : "0"}}); } -int +QString addOrUpdateMessage(Database& db, const QString& conversationId, const api::interaction::Info& msg, @@ -507,10 +506,10 @@ addOrUpdateMessage(Database& db, {extra_data.isEmpty() ? "" : ":extra_data", extra_data}}, "id=:id", {{":id", id}}); - return std::stoi(id.toStdString()); + return id; } } -int +QString addDataTransferToConversation(Database& db, const QString& conversationId, const api::datatransfer::Info& infoFromDaemon) @@ -572,38 +571,31 @@ getInteractionExtraDataById(Database& db, const QString& id, const QString& key) } void -updateInteractionBody(Database& db, unsigned int id, const QString& newBody) +updateInteractionBody(Database& db, const QString& id, const QString& newBody) { - db.update("interactions", "body=:body", {{":body", newBody}}, "id=:id", {{":id", toQString(id)}}); + db.update("interactions", "body=:body", {{":body", newBody}}, "id=:id", {{":id", id}}); } void -updateInteractionStatus(Database& db, unsigned int id, api::interaction::Status newStatus) +updateInteractionStatus(Database& db, const QString& id, api::interaction::Status newStatus) { db.update("interactions", {"status=:status"}, {{":status", api::interaction::to_string(newStatus)}}, "id=:id", - {{":id", toQString(id)}}); + {{":id", id}}); } void -setInteractionRead(Database& db, unsigned int id) +setInteractionRead(Database& db, const QString& id) { - db.update("interactions", - {"is_read=:is_read"}, - {{":is_read", "1"}}, - "id=:id", - {{":id", toQString(id)}}); + db.update("interactions", {"is_read=:is_read"}, {{":is_read", "1"}}, "id=:id", {{":id", id}}); } QString -conversationIdFromInteractionId(Database& db, unsigned int interactionId) +conversationIdFromInteractionId(Database& db, const QString& interactionId) { - auto result = db.select("conversation", - "interactions", - "id=:id", - {{":id", toQString(interactionId)}}); + auto result = db.select("conversation", "interactions", "id=:id", {{":id", interactionId}}); if (result.nbrOfCols == 1 && result.payloads.size()) { return result.payloads[0]; } @@ -625,12 +617,12 @@ clearHistory(Database& db, const QString& conversationId) void clearInteractionFromConversation(Database& db, const QString& conversationId, - const uint64_t& interactionId) + const QString& interactionId) { try { db.deleteFrom("interactions", "conversation=:conversation AND id=:id", - {{":conversation", conversationId}, {":id", toQString(interactionId)}}); + {{":conversation", conversationId}, {":id", interactionId}}); } catch (Database::QueryDeleteError& e) { qWarning() << "deleteFrom error: " << e.details(); } diff --git a/src/authority/storagehelper.h b/src/authority/storagehelper.h index 4b7e0dff0b7cac38a3dc46c6c6bbbfa83aa7f64e..bf02bd9903bcd2da343a2906919b575d28982c03 100644 --- a/src/authority/storagehelper.h +++ b/src/authority/storagehelper.h @@ -175,9 +175,9 @@ void getHistory(Database& db, api::conversation::Info& conversation); * @param msg * @return the id of the inserted interaction */ -int addMessageToConversation(Database& db, - const QString& conversationId, - const api::interaction::Info& msg); +QString addMessageToConversation(Database& db, + const QString& conversationId, + const api::interaction::Info& msg); /** * Add or update an entry into interactions linked to a conversation. @@ -187,10 +187,10 @@ int addMessageToConversation(Database& db, * @param daemonId * @return the id of the inserted interaction */ -int addOrUpdateMessage(Database& db, - const QString& conversationId, - const api::interaction::Info& msg, - const QString& daemonId); +QString addOrUpdateMessage(Database& db, + const QString& conversationId, + const api::interaction::Info& msg, + const QString& daemonId); /** * Add a data transfer entry into interactions linked to a conversation. @@ -199,9 +199,9 @@ int addOrUpdateMessage(Database& db, * @param daemonId * @return the id of the inserted interaction */ -int addDataTransferToConversation(Database& db, - const QString& conversationId, - const api::datatransfer::Info& infoFromDaemon); +QString addDataTransferToConversation(Database& db, + const QString& conversationId, + const api::datatransfer::Info& infoFromDaemon); /** * Change the daemon_id column for an interaction @@ -221,7 +221,7 @@ QString getDaemonIdByInteractionId(Database& db, const QString& id); /** * Obtain the id of an interaction of a given daemon_id * @param db - * @param id + * @param daemon id * @return the interaction id for a daemon id else an empty string */ QString getInteractionIdByDaemonId(Database& db, const QString& daemon_id); @@ -241,7 +241,7 @@ QString getInteractionExtraDataById(Database& db, const QString& id, const QStri * @param id * @param newBody */ -void updateInteractionBody(Database& db, unsigned int id, const QString& newBody); +void updateInteractionBody(Database& db, const QString& id, const QString& newBody); /** * Change the status of an interaction @@ -250,14 +250,14 @@ void updateInteractionBody(Database& db, unsigned int id, const QString& newBody * @param newStatus * @param isRead */ -void updateInteractionStatus(Database& db, unsigned int id, api::interaction::Status newStatus); +void updateInteractionStatus(Database& db, const QString& id, api::interaction::Status newStatus); /** * Set interaction to the read state * @param db * @param id */ -void setInteractionRead(Database& db, unsigned int id); +void setInteractionRead(Database& db, const QString& id); /** * Clear history but not the conversation started interaction @@ -274,7 +274,7 @@ void clearHistory(Database& db, const QString& conversationId); */ void clearInteractionFromConversation(Database& db, const QString& conversationId, - const uint64_t& interactionId); + const QString& interactionId); /** * Clear all history stored in the interactions table of the database @@ -309,7 +309,7 @@ int countUnreadFromInteractions(Database& db, const QString& conversationId); * @param db * @param conversationId */ -QString conversationIdFromInteractionId(Database& db, unsigned int interactionId); +QString conversationIdFromInteractionId(Database& db, const QString& interactionId); /** * Retrieve the last timestamp from the interactions table diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index 928257c8ee0e5deccd61fb5da9ff263108927f70..b6dd99a81098166f9b23b554d3859469e391c611 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -152,10 +152,10 @@ public: * @param daemonId the daemon id * @return msgId generated (in db) */ - int addIncomingMessage(const QString& from, - const QString& body, - const uint64_t& timestamp = 0, - const QString& daemonId = ""); + QString addIncomingMessage(const QString& from, + const QString& body, + const uint64_t& timestamp = 0, + const QString& daemonId = ""); /** * Change the status of an interaction. Listen from callbacksHandler * @param accountId, account linked @@ -164,7 +164,7 @@ public: * @param status, new status for this interaction */ void slotUpdateInteractionStatus(const QString& accountId, - const uint64_t id, + const uint64_t& id, const QString& to, int status); @@ -199,7 +199,7 @@ public: * @param interactionId * @param final name of the file */ - void acceptTransfer(const QString& convUid, uint64_t interactionId, const QString& path); + void acceptTransfer(const QString& convUid, const QString& interactionId, const QString& path); void invalidateModel(); @@ -884,27 +884,27 @@ ConversationModel::sendMessage(const QString& uid, const QString& body, const QS // Add interaction to database interaction::Info msg {{}, body, std::time(nullptr), 0, interaction::Type::TEXT, status, true}; - int msgId = storage::addMessageToConversation(pimpl_->db, convId, msg); + auto msgId = storage::addMessageToConversation(pimpl_->db, convId, msg); // Update conversation if (status == interaction::Status::SENDING) { // Because the daemon already give an id for the message, we need to store it. - storage::addDaemonMsgId(pimpl_->db, toQString(msgId), toQString(daemonMsgId)); + storage::addDaemonMsgId(pimpl_->db, msgId, toQString(daemonMsgId)); } bool ret = false; { std::lock_guard<std::mutex> lk(pimpl_->interactionsLocks[convId]); - ret = newConv.interactions - .insert(std::pair<uint64_t, interaction::Info>(msgId, msg)) + ret = newConv.interactions.insert(std::pair<QString, interaction::Info>(msgId, msg)) .second; } if (!ret) { - qDebug("ConversationModel::sendMessage failed to send message because an existing " - "key was already present in the database (key = %d)", - msgId); + qDebug() + << "ConversationModel::sendMessage failed to send message because an existing " + "key was already present in the database key =" + << msgId; return; } @@ -1040,7 +1040,7 @@ ConversationModel::clearHistory(const QString& uid) void ConversationModel::clearInteractionFromConversation(const QString& convId, - const uint64_t& interactionId) + const QString& interactionId) { auto conversationIdx = pimpl_->indexOf(convId); if (conversationIdx == -1) @@ -1049,7 +1049,7 @@ ConversationModel::clearInteractionFromConversation(const QString& convId, auto erased_keys = 0; bool lastInteractionUpdated = false; bool updateDisplayedUid = false; - uint64_t newDisplayedUid = 0; + QString newDisplayedUid = 0; QString participantURI = ""; { std::lock_guard<std::mutex> lk(pimpl_->interactionsLocks[convId]); @@ -1079,7 +1079,7 @@ ConversationModel::clearInteractionFromConversation(const QString& convId, if (conversation.lastMessageUid == interactionId) { // Update lastMessageUid - auto newLastId = 0; + auto newLastId = QString::number(0); if (!conversation.interactions.empty()) newLastId = conversation.interactions.rbegin()->first; conversation.lastMessageUid = newLastId; @@ -1105,7 +1105,7 @@ ConversationModel::clearInteractionFromConversation(const QString& convId, } void -ConversationModel::retryInteraction(const QString& convId, const uint64_t& interactionId) +ConversationModel::retryInteraction(const QString& convId, const QString& interactionId) { auto conversationIdx = pimpl_->indexOf(convId); if (conversationIdx == -1) @@ -1155,7 +1155,7 @@ ConversationModel::retryInteraction(const QString& convId, const uint64_t& inter bool ConversationModel::isLastDisplayed(const QString& convId, - const uint64_t& interactionId, + const QString& interactionId, const QString participant) { auto conversationIdx = pimpl_->indexOf(convId); @@ -1185,7 +1185,7 @@ ConversationModel::clearAllHistory() } void -ConversationModel::setInteractionRead(const QString& convId, const uint64_t& interactionId) +ConversationModel::setInteractionRead(const QString& convId, const QString& interactionId) { auto conversationIdx = pimpl_->indexOf(convId); if (conversationIdx == -1) { @@ -1210,8 +1210,7 @@ ConversationModel::setInteractionRead(const QString& convId, const uint64_t& int } if (emitUpdated) { pimpl_->invalidateModel(); - auto daemonId = storage::getDaemonIdByInteractionId(pimpl_->db, - QString::number(interactionId)); + auto daemonId = storage::getDaemonIdByInteractionId(pimpl_->db, interactionId); if (owner.profileInfo.type != profile::Type::SIP) { ConfigurationManager::instance() .setMessageDisplayed(owner.id, @@ -1244,10 +1243,8 @@ ConversationModel::clearUnreadInteractions(const QString& convId) emitUpdated = true; it.second.isRead = true; if (owner.profileInfo.type != profile::Type::SIP) - lastDisplayed - = storage::getDaemonIdByInteractionId(pimpl_->db, - QString::number( - it.first)); + lastDisplayed = storage::getDaemonIdByInteractionId(pimpl_->db, + it.first); storage::setInteractionRead(pimpl_->db, it.first); } }); @@ -1917,7 +1914,7 @@ ConversationModelPimpl::addConversationWith(const QString& convId, const QString continue; } // Get the message status from daemon, else unknown - auto id = storage::getDaemonIdByInteractionId(db, toQString(interaction.first)); + auto id = storage::getDaemonIdByInteractionId(db, interaction.first); int status = 0; if (id.isEmpty()) { continue; @@ -2123,7 +2120,7 @@ ConversationModelPimpl::addOrUpdateCallMessage(const QString& callId, interaction::Status::SUCCESS, true}; // update the db - int msgId = storage::addOrUpdateMessage(db, conv_it->uid, msg, callId); + auto msgId = storage::addOrUpdateMessage(db, conv_it->uid, msg, callId); // now set the formatted call message string in memory only msg.body = storage::getCallInteractionString(uriString, duration); auto newInteraction = conv_it->interactions.find(msgId) == conv_it->interactions.end(); @@ -2186,7 +2183,7 @@ ConversationModelPimpl::slotIncomingCallMessage(const QString& callId, } } -int +QString ConversationModelPimpl::addIncomingMessage(const QString& from, const QString& body, const uint64_t& timestamp, @@ -2206,7 +2203,7 @@ ConversationModelPimpl::addIncomingMessage(const QString& from, false}; auto msgId = storage::addMessageToConversation(db, convIds[0], msg); if (!daemonId.isEmpty()) { - storage::addDaemonMsgId(db, QString::number(msgId), daemonId); + storage::addDaemonMsgId(db, msgId, daemonId); } auto conversationIdx = indexOf(convIds[0]); // Add the conversation if not already here @@ -2249,7 +2246,7 @@ ConversationModelPimpl::slotCallAddedToConference(const QString& callId, const Q void ConversationModelPimpl::slotUpdateInteractionStatus(const QString& accountId, - const uint64_t daemon_id, + const uint64_t& daemon_id, const QString& peer_uri, int status) { @@ -2283,7 +2280,7 @@ ConversationModelPimpl::slotUpdateInteractionStatus(const QString& accountId, if (interactionId.isEmpty()) { return; } - auto msgId = std::stoull(interactionId.toStdString()); + auto msgId = interactionId; storage::updateInteractionStatus(db, msgId, newStatus); // Update conversations auto convIds = storage::getConversationsWithPeer(db, peer_uri); @@ -2292,7 +2289,7 @@ ConversationModelPimpl::slotUpdateInteractionStatus(const QString& accountId, interaction::Info itCopy; bool emitUpdated = false; bool updateDisplayedUid = false; - uint64_t oldDisplayedUid = 0; + QString oldDisplayedUid = 0; if (conversationIdx != -1) { std::lock_guard<std::mutex> lk(interactionsLocks[conversations[conversationIdx].uid]); auto& interactions = conversations[conversationIdx].interactions; @@ -2430,7 +2427,7 @@ ConversationModel::sendFile(const QString& convUid, const QString& path, const Q } void -ConversationModel::acceptTransfer(const QString& convUid, uint64_t interactionId) +ConversationModel::acceptTransfer(const QString& convUid, const QString& interactionId) { lrc::api::datatransfer::Info info = {}; getTransferInfo(convUid, interactionId, info); @@ -2439,14 +2436,14 @@ ConversationModel::acceptTransfer(const QString& convUid, uint64_t interactionId void ConversationModel::acceptTransfer(const QString& convUid, - uint64_t interactionId, + const QString& interactionId, const QString& path) { pimpl_->acceptTransfer(convUid, interactionId, path); } void -ConversationModel::cancelTransfer(const QString& convUid, uint64_t interactionId) +ConversationModel::cancelTransfer(const QString& convUid, const QString& interactionId) { // For this action, we change interaction status before effective canceling as daemon will // emit Finished event code immediately (before leaving this method) in non-DBus mode. @@ -2470,7 +2467,7 @@ ConversationModel::cancelTransfer(const QString& convUid, uint64_t interactionId } if (emitUpdated) { // Forward cancel action to daemon (will invoke slotTransferStatusCanceled) - pimpl_->lrc.getDataTransferModel().cancel(owner.id, convUid, interactionId); + pimpl_->lrc.getDataTransferModel().cancel(owner.id, convUid, interactionId.toInt()); pimpl_->invalidateModel(); emit interactionStatusUpdated(convUid, interactionId, itCopy); emit pimpl_->behaviorController.newReadInteraction(owner.id, convUid, interactionId); @@ -2481,7 +2478,7 @@ void ConversationModel::getTransferInfo(const QString& conversationId, uint64_t interactionId, datatransfer::Info& info) { try { - auto dringId = pimpl_->lrc.getDataTransferModel().getDringIdFromInteractionId(interactionId); + auto dringId = pimpl_->lrc.getDataTransferModel().getDringIdFromInteractionId(interactionId.toInt()); pimpl_->lrc.getDataTransferModel().transferInfo(owner.id, conversationId, dringId, info); } catch (...) { info.status = datatransfer::Status::INVALID; @@ -2509,7 +2506,7 @@ ConversationModelPimpl::usefulDataFromDataTransfer(long long dringId, return false; } - convId = storage::conversationIdFromInteractionId(db, interactionId); + convId = storage::conversationIdFromInteractionId(db, QString::number(interactionId)); return true; } @@ -2535,7 +2532,7 @@ ConversationModelPimpl::slotTransferStatusCreated(long long dringId, datatransfe auto interactionId = storage::addDataTransferToConversation(db, convId, info); // map dringId and interactionId for latter retrivial from client (that only known the interactionId) - lrc.getDataTransferModel().registerTransferId(dringId, interactionId); + lrc.getDataTransferModel().registerTransferId(dringId, interactionId.toInt()); auto interaction = interaction::Info {info.isOutgoing ? "" : info.peerUri, info.isOutgoing ? info.path : info.displayName, @@ -2584,7 +2581,7 @@ ConversationModelPimpl::slotTransferStatusAwaitingHost(long long dringId, datatr return; auto newStatus = interaction::Status::TRANSFER_AWAITING_HOST; - storage::updateInteractionStatus(db, interactionId, newStatus); + storage::updateInteractionStatus(db, QString::number(interactionId), newStatus); auto conversationIdx = indexOf(convId); if (conversationIdx != -1) { @@ -2593,7 +2590,7 @@ ConversationModelPimpl::slotTransferStatusAwaitingHost(long long dringId, datatr { std::lock_guard<std::mutex> lk(interactionsLocks[convId]); auto& interactions = conversations[conversationIdx].interactions; - auto it = interactions.find(interactionId); + auto it = interactions.find(QString::number(interactionId)); if (it != interactions.end()) { emitUpdated = true; it->second.status = newStatus; @@ -2602,7 +2599,7 @@ ConversationModelPimpl::slotTransferStatusAwaitingHost(long long dringId, datatr } if (emitUpdated) { invalidateModel(); - emit linked.interactionStatusUpdated(convId, interactionId, itCopy); + emit linked.interactionStatusUpdated(convId, QString::number(interactionId), itCopy); // Only accept if contact is added if (!lrc.getDataTransferModel().acceptFromUnstrusted) { try { @@ -2618,7 +2615,7 @@ ConversationModelPimpl::slotTransferStatusAwaitingHost(long long dringId, datatr if (lrc.getDataTransferModel().automaticAcceptTransfer) { if (lrc.getDataTransferModel().acceptBehindMb == 0 || info.totalSize < lrc.getDataTransferModel().acceptBehindMb * 1024 * 1024) - acceptTransfer(convId, interactionId, info.displayName); + acceptTransfer(convId, QString::number(interactionId), info.displayName); } } } @@ -2626,7 +2623,7 @@ ConversationModelPimpl::slotTransferStatusAwaitingHost(long long dringId, datatr void ConversationModelPimpl::acceptTransfer(const QString& convUid, - uint64_t interactionId, + const QString& interactionId, const QString& path) { auto destinationDir = lrc.getDataTransferModel().downloadDirectory; @@ -2641,9 +2638,9 @@ ConversationModelPimpl::acceptTransfer(const QString& convUid, QDir dir = QFileInfo(destinationDir + path).absoluteDir(); if (!dir.exists()) dir.mkpath("."); - auto acceptedFilePath = lrc.getDataTransferModel().accept(linked.owner.id, +] auto acceptedFilePath = lrc.getDataTransferModel().accept(linked.owner.id, convUid, - interactionId, + interactionId.toInt(), destinationDir + path, 0); storage::updateInteractionBody(db, interactionId, acceptedFilePath); @@ -2688,7 +2685,7 @@ ConversationModelPimpl::slotTransferStatusOngoing(long long dringId, datatransfe return; auto newStatus = interaction::Status::TRANSFER_ONGOING; - storage::updateInteractionStatus(db, interactionId, newStatus); + storage::updateInteractionStatus(db, QString::number(interactionId), newStatus); auto conversationIdx = indexOf(convId); if (conversationIdx != -1) { @@ -2697,7 +2694,7 @@ ConversationModelPimpl::slotTransferStatusOngoing(long long dringId, datatransfe { std::lock_guard<std::mutex> lk(interactionsLocks[convId]); auto& interactions = conversations[conversationIdx].interactions; - auto it = interactions.find(interactionId); + auto it = interactions.find(QString::number(interactionId)); if (it != interactions.end()) { emitUpdated = true; it->second.status = newStatus; @@ -2711,7 +2708,7 @@ ConversationModelPimpl::slotTransferStatusOngoing(long long dringId, datatransfe }); timer->start(1000); invalidateModel(); - emit linked.interactionStatusUpdated(convId, interactionId, itCopy); + emit linked.interactionStatusUpdated(convId, QString::number(interactionId), itCopy); } } } @@ -2733,7 +2730,7 @@ ConversationModelPimpl::slotTransferStatusFinished(long long dringId, datatransf { std::lock_guard<std::mutex> lk(interactionsLocks[convId]); auto& interactions = conversations[conversationIdx].interactions; - auto it = interactions.find(interactionId); + auto it = interactions.find(QString::number(interactionId)); if (it != interactions.end()) { // We need to check if current status is ONGOING as CANCELED must not be // transformed into FINISHED @@ -2746,8 +2743,8 @@ ConversationModelPimpl::slotTransferStatusFinished(long long dringId, datatransf } if (emitUpdated) { invalidateModel(); - storage::updateInteractionStatus(db, interactionId, newStatus); - emit linked.interactionStatusUpdated(convId, interactionId, itCopy); + storage::updateInteractionStatus(db, QString::number(interactionId), newStatus); + emit linked.interactionStatusUpdated(convId, QString::number(interactionId), itCopy); } } } @@ -2787,7 +2784,7 @@ ConversationModelPimpl::updateTransferStatus(long long dringId, return; // update information in the db - storage::updateInteractionStatus(db, interactionId, newStatus); + storage::updateInteractionStatus(db, QString::number(interactionId), newStatus); // prepare interaction Info and emit signal for the client auto conversationIdx = indexOf(convId); @@ -2797,7 +2794,7 @@ ConversationModelPimpl::updateTransferStatus(long long dringId, { std::lock_guard<std::mutex> lk(interactionsLocks[convId]); auto& interactions = conversations[conversationIdx].interactions; - auto it = interactions.find(interactionId); + auto it = interactions.find(QString::number(interactionId)); if (it != interactions.end()) { emitUpdated = true; it->second.status = newStatus; @@ -2806,7 +2803,7 @@ ConversationModelPimpl::updateTransferStatus(long long dringId, } if (emitUpdated) { invalidateModel(); - emit linked.interactionStatusUpdated(convId, interactionId, itCopy); + emit linked.interactionStatusUpdated(convId, QString::number(interactionId), itCopy); } } } @@ -2823,7 +2820,7 @@ ConversationModelPimpl::updateTransfer(QTimer* timer, { std::lock_guard<std::mutex> lk(interactionsLocks[conversations[conversationIdx].uid]); const auto& interactions = conversations[conversationIdx].interactions; - const auto& it = interactions.find(interactionId); + const auto& it = interactions.find(QString::number(interactionId)); if (it != std::cend(interactions) and it->second.status == interaction::Status::TRANSFER_ONGOING) { emitUpdated = true; @@ -2831,7 +2828,9 @@ ConversationModelPimpl::updateTransfer(QTimer* timer, } } if (emitUpdated) { - emit linked.interactionStatusUpdated(conversation, interactionId, itCopy); + emit linked.interactionStatusUpdated(conversation, + QString::number(interactionId), + itCopy); return; } } catch (...) { diff --git a/src/database.cpp b/src/database.cpp index e2c1b50f0aaecdca74b8bd7b3999422a9d177d9e..923f30b4214da8cfecb4d5666991e0f0ae730a7c 100644 --- a/src/database.cpp +++ b/src/database.cpp @@ -222,7 +222,7 @@ Database::getVersion() return query.value(0).toString(); } -int +QString Database::insertInto( const QString& table, // "tests" const MapStringString& @@ -255,9 +255,10 @@ Database::insertInto( throw QueryInsertError(query, table, bindCol, bindsSet); if (!query.next()) - return -1; + return QString::number(-1); + ; - return query.value(0).toInt(); + return query.value(0).toString(); } void diff --git a/src/database.h b/src/database.h index 6802ff55b101f09772ecb9399e4b27374b494c9e..f8227e21322c48f6772f969ca7fbfbd339ad2b9f 100644 --- a/src/database.h +++ b/src/database.h @@ -188,15 +188,15 @@ public: * by ':'. The value is the name of the column from the table. * @param bindsSet binds value(s) and identifier(s). The key is the identifier, it should begin * by ':'. The value is the value to store. - * @return signed integer representing the index of last inserted element. -1 if nothing - * inserted. + * @return qstring from signed integer representing the index of last inserted element. -1 if + * nothing inserted. * @exception QueryInsertError insert query failed. * * @note usually the identifiers has to be the same between bindCol and bindsSet */ - int insertInto(const QString& table, - const MapStringString& bindCol, - const MapStringString& bindsSet); + QString insertInto(const QString& table, + const MapStringString& bindCol, + const MapStringString& bindsSet); /** * Update value(s) inside a table. * @param table where to perfom the action on.