diff --git a/src/c-wrapper/api/c-chat-message.cpp b/src/c-wrapper/api/c-chat-message.cpp index 333d6a94e..902055f9a 100644 --- a/src/c-wrapper/api/c-chat-message.cpp +++ b/src/c-wrapper/api/c-chat-message.cpp @@ -108,7 +108,7 @@ const char *linphone_chat_message_get_external_body_url(const LinphoneChatMessag } void linphone_chat_message_set_external_body_url(LinphoneChatMessage *msg, const char *url) { - + L_GET_PRIVATE_FROM_C_OBJECT(msg)->setExternalBodyUrl(L_C_TO_STRING(url)); } time_t linphone_chat_message_get_time(const LinphoneChatMessage *msg) { diff --git a/src/chat/chat-message/chat-message-p.h b/src/chat/chat-message/chat-message-p.h index 764de0d96..42cbb58e6 100644 --- a/src/chat/chat-message/chat-message-p.h +++ b/src/chat/chat-message/chat-message-p.h @@ -105,6 +105,7 @@ public: std::string getSalCustomHeaderValue (const std::string &name); void loadFileTransferUrlFromBodyToContent (); + std::string createFakeFileTransferFromUrl(const std::string &url); void setChatRoom (const std::shared_ptr &chatRoom); @@ -127,6 +128,7 @@ public: void setAppdata (const std::string &appData); const std::string &getExternalBodyUrl () const; + void setExternalBodyUrl (const std::string &url); bool hasTextContent () const; const Content* getTextContent () const; diff --git a/src/chat/chat-message/chat-message.cpp b/src/chat/chat-message/chat-message.cpp index 487a052af..ead18f02c 100644 --- a/src/chat/chat-message/chat-message.cpp +++ b/src/chat/chat-message/chat-message.cpp @@ -263,6 +263,10 @@ const string &ChatMessagePrivate::getExternalBodyUrl () const { return Utils::getEmptyConstRefObject(); } +void ChatMessagePrivate::setExternalBodyUrl (const string &url) { + //TODO +} + const ContentType &ChatMessagePrivate::getContentType () { loadContentsFromDatabase(); if (direction == ChatMessage::Direction::Incoming) { @@ -390,6 +394,10 @@ void ChatMessagePrivate::loadFileTransferUrlFromBodyToContent() { fileTransferChatMessageModifier.decode(q->getSharedFromThis(), errorCode); } +std::string ChatMessagePrivate::createFakeFileTransferFromUrl(const std::string &url) { + return fileTransferChatMessageModifier.createFakeFileTransferFromUrl(url); +} + void ChatMessagePrivate::setChatRoom (const shared_ptr &cr) { chatRoom = cr; chatRoomId = cr->getChatRoomId(); diff --git a/src/chat/chat-room/chat-room.cpp b/src/chat/chat-room/chat-room.cpp index 9404bba69..8f69fda03 100644 --- a/src/chat/chat-room/chat-room.cpp +++ b/src/chat/chat-room/chat-room.cpp @@ -193,8 +193,13 @@ LinphoneReason ChatRoomPrivate::onSipMessageReceived (SalOp *op, const SalMessag ); Content content; - content.setContentType(message->content_type); - content.setBodyFromUtf8(message->text ? message->text : ""); + if (message->url && strcmp(message->content_type, ContentType::ExternalBody.asString().c_str()) == 0) { + content.setContentType(ContentType::FileTransfer); + content.setBody(msg->getPrivate()->createFakeFileTransferFromUrl(message->url)); + } else { + content.setContentType(message->content_type); + content.setBodyFromUtf8(message->text ? message->text : ""); + } msg->setInternalContent(content); msg->getPrivate()->setTime(message->time); diff --git a/src/chat/modifier/file-transfer-chat-message-modifier.cpp b/src/chat/modifier/file-transfer-chat-message-modifier.cpp index 1da43ae8d..8dd98988d 100644 --- a/src/chat/modifier/file-transfer-chat-message-modifier.cpp +++ b/src/chat/modifier/file-transfer-chat-message-modifier.cpp @@ -968,4 +968,8 @@ void FileTransferChatMessageModifier::releaseHttpRequest () { } } +string FileTransferChatMessageModifier::createFakeFileTransferFromUrl(const string &url) { + return ""; //TODO +} + LINPHONE_END_NAMESPACE diff --git a/src/chat/modifier/file-transfer-chat-message-modifier.h b/src/chat/modifier/file-transfer-chat-message-modifier.h index 99a7cbf2e..d6d9af736 100644 --- a/src/chat/modifier/file-transfer-chat-message-modifier.h +++ b/src/chat/modifier/file-transfer-chat-message-modifier.h @@ -63,6 +63,7 @@ public: int downloadFile(const std::shared_ptr &message, FileTransferContent *fileTransferContent); void cancelFileTransfer(); bool isFileTransferInProgressAndValid(); + std::string createFakeFileTransferFromUrl(const std::string &url); private: int uploadFile();