fix message content download crash

This commit is contained in:
Gaelle Braud 2025-11-06 15:23:38 +01:00 committed by Gaëlle Braud
parent e224f24e92
commit d957fae94e
5 changed files with 74 additions and 50 deletions

View file

@ -97,16 +97,16 @@ void ChatMessageContentCore::setSelf(QSharedPointer<ChatMessageContentCore> me)
mChatMessageContentModelConnection->makeConnectToCore(&ChatMessageContentCore::lDownloadFile, [this]() {
mChatMessageContentModelConnection->invokeToModel([this] {
QString error;
bool downloaded = mChatMessageContentModel->downloadFile(mName, &error);
QString *error = new QString();
bool downloaded = mChatMessageContentModel->downloadFile(mName, error);
if (!downloaded) {
mChatMessageContentModelConnection->invokeToCore([this, &error] {
QString message = error;
mChatMessageContentModelConnection->invokeToCore([this, error] {
//: Error downloading file %1
if (error.isEmpty()) error = tr("download_file_default_error").arg(mName);
Utils::showInformationPopup(tr("info_popup_error_titile"), message, false);
if (error->isEmpty()) *error = tr("download_file_default_error").arg(mName);
Utils::showInformationPopup(tr("info_popup_error_titile"), *error, false);
delete error;
});
}
} else delete error;
});
});
mChatMessageContentModelConnection->makeConnectToModel(

View file

@ -2240,24 +2240,24 @@
<context>
<name>ChatMessageContentCore</name>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="106"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="107"/>
<source>download_file_default_error</source>
<extracomment>Error downloading file %1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="107"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="108"/>
<source>info_popup_error_titile</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="138"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="140"/>
<source>popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Fehler</translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="140"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="142"/>
<source>popup_open_file_error_does_not_exist_message</source>
<extracomment>Could not open file : unknown path %1</extracomment>
<translation type="unfinished"></translation>
@ -2329,8 +2329,8 @@ Error</extracomment>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="95"/>
<source>download_file_error_wrong_state</source>
<extracomment>Wrong message state when requesting downloading, state = %1</extracomment>
<source>download_file_server_error</source>
<extracomment>Error while trying to download content : %1</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
@ -2346,7 +2346,13 @@ Error</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="121"/>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="119"/>
<source>download_file_error_null_name</source>
<extracomment>Content name is null, can&apos;t download it !</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="127"/>
<source>download_file_error_unable_to_download</source>
<extracomment>Unable to download file of entry %1</extracomment>
<translation type="unfinished"></translation>
@ -5646,28 +5652,28 @@ Pour les activer dans un projet commercial, merci de nous contacter.</source>
<translation>Erweiterte Einstellungen</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="415"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="422"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="416"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="423"/>
<source>login_proxy_server_url</source>
<extracomment>&quot;Outbound SIP Proxy URI&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="417"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="418"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="402"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="407"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="403"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="408"/>
<source>login_registrar_uri</source>
<extracomment>&quot;Registrar URI&quot;</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="390"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="396"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="395"/>
<source>login_id</source>
<extracomment>&quot;Authentication ID (if different)&quot;</extracomment>
<translation type="unfinished"></translation>

View file

@ -2217,24 +2217,24 @@
<context>
<name>ChatMessageContentCore</name>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="106"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="107"/>
<source>download_file_default_error</source>
<extracomment>Error downloading file %1</extracomment>
<translation>Error downloading file %1</translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="107"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="108"/>
<source>info_popup_error_titile</source>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="138"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="140"/>
<source>popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Error</translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="140"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="142"/>
<source>popup_open_file_error_does_not_exist_message</source>
<extracomment>Could not open file : unknown path %1</extracomment>
<translation>Could not open file : unknown path %1</translation>
@ -2301,9 +2301,9 @@ Error</extracomment>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="95"/>
<source>download_file_error_wrong_state</source>
<extracomment>Wrong message state when requesting downloading, state = %1</extracomment>
<translation>Wrong message state when requesting downloading, state = %1</translation>
<source>download_file_server_error</source>
<extracomment>Error while trying to download content : %1</extracomment>
<translation>Error while trying to download content : %1</translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="105"/>
@ -2318,7 +2318,13 @@ Error</extracomment>
<translation>This file was already downloaded and is no more on the server. Your peer have to resend it if you want to get it</translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="121"/>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="119"/>
<source>download_file_error_null_name</source>
<extracomment>Content name is null, can&apos;t download it !</extracomment>
<translation>Content name is null, can&apos;t download it !</translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="127"/>
<source>download_file_error_unable_to_download</source>
<extracomment>Unable to download file of entry %1</extracomment>
<translation>Unable to download file of entry %1</translation>
@ -5541,28 +5547,28 @@ To enable them in a commercial project, please contact us.</translation>
<translation>Advanced parameters</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="415"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="422"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="416"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="423"/>
<source>login_proxy_server_url</source>
<extracomment>&quot;Outbound SIP Proxy URI&quot;</extracomment>
<translation>Outbound SIP Proxy URI</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="417"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="418"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation>If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="402"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="407"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="403"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="408"/>
<source>login_registrar_uri</source>
<extracomment>&quot;Registrar URI&quot;</extracomment>
<translation>Registrar URI</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="390"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="396"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="395"/>
<source>login_id</source>
<extracomment>&quot;Authentication ID (if different)&quot;</extracomment>
<translation>Authentication ID (if different)</translation>

View file

@ -2217,24 +2217,24 @@
<context>
<name>ChatMessageContentCore</name>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="106"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="107"/>
<source>download_file_default_error</source>
<extracomment>Error downloading file %1</extracomment>
<translation>Erreur de téléchargement du fichier %1</translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="107"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="108"/>
<source>info_popup_error_titile</source>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="138"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="140"/>
<source>popup_error_title</source>
<extracomment>Error</extracomment>
<translation>Erreur</translation>
</message>
<message>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="140"/>
<location filename="../../core/chat/message/content/ChatMessageContentCore.cpp" line="142"/>
<source>popup_open_file_error_does_not_exist_message</source>
<extracomment>Could not open file : unknown path %1</extracomment>
<translation>Impossible d&apos;ouvrir le fichier : chemin inconnu (%1)</translation>
@ -2301,9 +2301,9 @@ Error</extracomment>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="95"/>
<source>download_file_error_wrong_state</source>
<extracomment>Wrong message state when requesting downloading, state = %1</extracomment>
<translation>Erreur dans l&apos;état du message lors de la requête de téléchargement (state = %1)</translation>
<source>download_file_server_error</source>
<extracomment>Error while trying to download content : %1</extracomment>
<translation>Erreur en tentant de télécharger le contenu : %1</translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="105"/>
@ -2318,7 +2318,13 @@ Error</extracomment>
<translation>Le fichier a déjà é téléchargé et n&apos;est plus disponible sur le serveur. Votre correspondant devra vous le renvoyez si vous souhaitez l&apos;obtenir</translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="121"/>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="119"/>
<source>download_file_error_null_name</source>
<extracomment>Content name is null, can&apos;t download it !</extracomment>
<translation>Le nom du contenu est nul, impossible de le télécharger !</translation>
</message>
<message>
<location filename="../../model/chat/message/content/ChatMessageContentModel.cpp" line="127"/>
<source>download_file_error_unable_to_download</source>
<extracomment>Unable to download file of entry %1</extracomment>
<translation>Impossible de télécharger le fichier : %1</translation>
@ -5541,28 +5547,28 @@ Pour les activer dans un projet commercial, merci de nous contacter.</translatio
<translation>Paramètres avancés</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="415"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="422"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="416"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="423"/>
<source>login_proxy_server_url</source>
<extracomment>&quot;Outbound SIP Proxy URI&quot;</extracomment>
<translation>URI du proxy SIP sortant</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="417"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="418"/>
<source>login_proxy_server_url_tooltip</source>
<extracomment>&quot;If this field is filled, the outbound proxy will be enabled automatically. Leave it empty to disable it.&quot;</extracomment>
<translation>Si ce champ est rempli, loutbound proxy sera activé automatiquement. Laissez-le vide pour le désactiver.</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="402"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="407"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="403"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="408"/>
<source>login_registrar_uri</source>
<extracomment>&quot;Registrar URI&quot;</extracomment>
<translation>Registrar URI</translation>
</message>
<message>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="390"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="396"/>
<location filename="../../view/Page/Form/Login/SIPLoginPage.qml" line="395"/>
<source>login_id</source>
<extracomment>&quot;Authentication ID (if different)&quot;</extracomment>
<translation>Identifiant de connexion (si différent)</translation>

View file

@ -91,8 +91,8 @@ bool ChatMessageContentModel::downloadFile(const QString &name, QString *error)
default:
auto state = LinphoneEnums::fromLinphone(mChatMessageModel->getState());
lWarning() << QStringLiteral("Wrong message state when requesting downloading, state=") << state;
//: Wrong message state when requesting downloading, state = %1
if (error) *error = tr("download_file_error_wrong_state").arg(LinphoneEnums::toString(state));
//: Error while trying to download content : %1
if (error) *error = tr("download_file_server_error").arg(LinphoneEnums::toString(state));
return false;
}
bool soFarSoGood;
@ -113,7 +113,13 @@ bool ChatMessageContentModel::downloadFile(const QString &name, QString *error)
//: to get it
if (error) *error = tr("download_file_error_file_transfer_unavailable");
return false;
} else if (mContent->getName().empty()) {
lWarning() << QStringLiteral("content name is null, can't download it !");
//: Content name is null, can't download it !
if (error) *error = tr("download_file_error_null_name");
return false;
} else {
lDebug() << log().arg("download file : %1").arg(name);
auto downloaded = mChatMessageModel->getMonitor()->downloadContent(mContent);
if (!downloaded && error) {
lWarning() << QStringLiteral("Unable to download file of entry %1.").arg(name);