summary refs log tree commit diff
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2018-07-15 20:05:31 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2018-07-15 20:05:31 +0300
commita9f02128a24d149579101e8dc2fc92b5069b8691 (patch)
treec97c31357612b866211a0ee2b91bda04f95d93c0
parentRemove the v2 namespace from the http client (diff)
downloadnheko-a9f02128a24d149579101e8dc2fc92b5069b8691.tar.xz
Use the http link for video messages
Add method to convert matrix content URIs to http links
-rw-r--r--include/Utils.h4
-rw-r--r--src/Utils.cc12
-rw-r--r--src/timeline/widgets/FileItem.cc8
-rw-r--r--src/timeline/widgets/ImageItem.cc8
-rw-r--r--src/timeline/widgets/VideoItem.cc11
5 files changed, 22 insertions, 21 deletions
diff --git a/include/Utils.h b/include/Utils.h
index 7db405b1..8f9b7cff 100644
--- a/include/Utils.h
+++ b/include/Utils.h
@@ -187,4 +187,8 @@ levenshtein_distance(const std::string &s1, const std::string &s2);
 
 QPixmap
 scaleImageToPixmap(const QImage &img, int size);
+
+//! Convert a Content Matrix URI to an HTTP link.
+QString
+mxcToHttp(const QUrl &url, const QString &server, int port);
 }
diff --git a/src/Utils.cc b/src/Utils.cc
index 705a9e21..2247c2b7 100644
--- a/src/Utils.cc
+++ b/src/Utils.cc
@@ -174,3 +174,15 @@ utils::scaleImageToPixmap(const QImage &img, int size)
         return QPixmap::fromImage(
           img.scaled(sz, sz, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
 }
+
+QString
+utils::mxcToHttp(const QUrl &url, const QString &server, int port)
+{
+        auto mxcParts = mtx::client::utils::parse_mxc_url(url.toString().toStdString());
+
+        return QString("https://%1:%2/_matrix/media/r0/download/%3/%4")
+          .arg(server)
+          .arg(port)
+          .arg(QString::fromStdString(mxcParts.server))
+          .arg(QString::fromStdString(mxcParts.media_id));
+}
diff --git a/src/timeline/widgets/FileItem.cc b/src/timeline/widgets/FileItem.cc
index 7c2be9f2..b4555b2f 100644
--- a/src/timeline/widgets/FileItem.cc
+++ b/src/timeline/widgets/FileItem.cc
@@ -81,12 +81,8 @@ FileItem::openUrl()
         if (url_.toString().isEmpty())
                 return;
 
-        auto mxc_parts = mtx::client::utils::parse_mxc_url(url_.toString().toStdString());
-        auto urlToOpen = QString("https://%1:%2/_matrix/media/r0/download/%3/%4")
-                           .arg(QString::fromStdString(http::client()->server()))
-                           .arg(http::client()->port())
-                           .arg(QString::fromStdString(mxc_parts.server))
-                           .arg(QString::fromStdString(mxc_parts.media_id));
+        auto urlToOpen = utils::mxcToHttp(
+          url_, QString::fromStdString(http::client()->server()), http::client()->port());
 
         if (!QDesktopServices::openUrl(urlToOpen))
                 nhlog::ui()->warn("Could not open url: {}", urlToOpen.toStdString());
diff --git a/src/timeline/widgets/ImageItem.cc b/src/timeline/widgets/ImageItem.cc
index 8c8f50a1..b7adb0fa 100644
--- a/src/timeline/widgets/ImageItem.cc
+++ b/src/timeline/widgets/ImageItem.cc
@@ -106,12 +106,8 @@ ImageItem::openUrl()
         if (url_.toString().isEmpty())
                 return;
 
-        auto mxc_parts = mtx::client::utils::parse_mxc_url(url_.toString().toStdString());
-        auto urlToOpen = QString("https://%1:%2/_matrix/media/r0/download/%3/%4")
-                           .arg(QString::fromStdString(http::client()->server()))
-                           .arg(http::client()->port())
-                           .arg(QString::fromStdString(mxc_parts.server))
-                           .arg(QString::fromStdString(mxc_parts.media_id));
+        auto urlToOpen = utils::mxcToHttp(
+          url_, QString::fromStdString(http::client()->server()), http::client()->port());
 
         if (!QDesktopServices::openUrl(urlToOpen))
                 nhlog::ui()->warn("could not open url: {}", urlToOpen.toStdString());
diff --git a/src/timeline/widgets/VideoItem.cc b/src/timeline/widgets/VideoItem.cc
index 34d963a9..daf181b2 100644
--- a/src/timeline/widgets/VideoItem.cc
+++ b/src/timeline/widgets/VideoItem.cc
@@ -26,15 +26,8 @@
 void
 VideoItem::init()
 {
-        // QList<QString> url_parts = url_.toString().split("mxc://");
-        // if (url_parts.size() != 2) {
-        //         qDebug() << "Invalid format for image" << url_.toString();
-        //         return;
-        // }
-
-        // QString media_params = url_parts[1];
-        // url_                 = QString("%1/_matrix/media/r0/download/%2")
-        //          .arg(http::client()->getHomeServer().toString(), media_params);
+        url_ = utils::mxcToHttp(
+          url_, QString::fromStdString(http::client()->server()), http::client()->port());
 }
 
 VideoItem::VideoItem(const mtx::events::RoomEvent<mtx::events::msg::Video> &event, QWidget *parent)