Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SpectrumIM/spectrum2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaly Takmazov <vitalyster@gmail.com>2022-02-06 00:29:23 +0300
committerVitaly Takmazov <vitalyster@gmail.com>2022-02-06 00:29:23 +0300
commit44a322044c9a6ec3beb350b63253c3f2b81049ea (patch)
tree8a84ae38f9a37e65fbb6c43b14ab8de61325bd53
parent5af40fe1381a3f14c839040aefa75e611e3e23d6 (diff)
Handle Attachment description
* NetworkPluginServer: forward Attachment description as {jabber:x:oob}desc element * libpurple: use remote filename as Attachment description
-rw-r--r--backends/libpurple/main.cpp2
-rw-r--r--include/transport/NetworkPluginServer.h2
-rw-r--r--libtransport/NetworkPluginServer.cpp8
3 files changed, 7 insertions, 5 deletions
diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp
index 7966625b..70aafd1a 100644
--- a/backends/libpurple/main.cpp
+++ b/backends/libpurple/main.cpp
@@ -1966,6 +1966,8 @@ static void XferReceiveComplete(PurpleXfer *xfer) {
pbnetwork::Attachment attachment;
gchar *base_filename = g_path_get_basename(filename.c_str());
attachment.set_url(web_url + "/" + std::string(base_filename));
+ std::string remote_filename(xfer ? purple_xfer_get_filename_wrapped(xfer) : "");
+ attachment.set_description(remote_filename.c_str());
g_free(base_filename);
std::vector<pbnetwork::Attachment> attachments = { attachment };
np->handleMessage(np->m_accounts[account], w, message, "", "", xfer->end_time? std::to_string(xfer->end_time) : "", false, false, false, attachments);
diff --git a/include/transport/NetworkPluginServer.h b/include/transport/NetworkPluginServer.h
index 51d0f4d8..96708ef0 100644
--- a/include/transport/NetworkPluginServer.h
+++ b/include/transport/NetworkPluginServer.h
@@ -161,7 +161,7 @@ class NetworkPluginServer : Swift::XMPPParserClient {
void handleStreamStart(const Swift::ProtocolHeader&) {}
void handleElement(std::shared_ptr<Swift::ToplevelElement> element);
void handleStreamEnd() {}
- void addOobPayload(Swift::Message::ref message, const std::string &url);
+ void addOobPayload(Swift::Message::ref message, const std::string &url, const std::string &description);
UserManager *m_userManager;
VCardResponder *m_vcardResponder;
diff --git a/libtransport/NetworkPluginServer.cpp b/libtransport/NetworkPluginServer.cpp
index e19416bf..86794db1 100644
--- a/libtransport/NetworkPluginServer.cpp
+++ b/libtransport/NetworkPluginServer.cpp
@@ -718,7 +718,7 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data, bool
}
for (const pbnetwork::Attachment &att : payload.attachment()) {
- addOobPayload(msg, att.url());
+ addOobPayload(msg, att.url(), att.description());
}
// Split the message if configured, or just preprocess
@@ -1731,11 +1731,11 @@ enum OobMode {
OobSplit = 3, //3. Split into multiple text-only/media-only messages.
};
-void NetworkPluginServer::addOobPayload(Swift::Message::ref message, const std::string &url) {
+void NetworkPluginServer::addOobPayload(Swift::Message::ref message, const std::string &url, const std::string &description) {
//Add OOB tag
std::shared_ptr<Swift::RawXMLPayload>
oob_payload(new Swift::RawXMLPayload(
- "<x xmlns='jabber:x:oob'><url>" + url + "</url>" + "</x>"));
+ "<x xmlns='jabber:x:oob'><url>" + url + "</url>" + "<desc>" + description + "</desc>" + "</x>"));
// todo: add the payload itself as a caption
message->addPayload(oob_payload);
}
@@ -1820,7 +1820,7 @@ NetworkPluginServer::wrapIncomingMedia(std::shared_ptr<Swift::Message>& msg) {
this_msg = msg;
}
- addOobPayload(this_msg, image_url);
+ addOobPayload(this_msg, image_url, "");
//In single-OOB mode there's no point to process further media
if (oobMode == OobExclusive)