aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index da76335..101fa59 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -5246,6 +5246,26 @@ namespace QuickMedia {
return message;
}
+ static std::string pantalaimon_image_proxy_url_to_remote_image_url(Matrix *matrix, const std::string &image_url) {
+ std::string remote_homeserver_url = matrix->get_remote_homeserver_url();
+ if(!remote_homeserver_url.empty() && remote_homeserver_url.back() == '/')
+ remote_homeserver_url.pop_back();
+
+ std::string result_url = image_url;
+
+ if(string_starts_with(result_url, "http://"))
+ result_url.erase(result_url.begin(), result_url.begin() + 7);
+ else if(string_starts_with(result_url, "https://"))
+ result_url.erase(result_url.begin(), result_url.begin() + 8);
+
+ size_t path_index = result_url.find('/');
+ if(path_index == std::string::npos)
+ return remote_homeserver_url;
+
+ result_url.replace(0, path_index, remote_homeserver_url);
+ return result_url;
+ }
+
bool Program::chat_page(MatrixChatPage *matrix_chat_page, RoomData *current_room) {
assert(current_room);
assert(strcmp(plugin_name, "matrix") == 0);
@@ -6627,6 +6647,8 @@ namespace QuickMedia {
if(selected_item_message->type == MessageType::VIDEO)
image_url = selected_item->thumbnail_url;
+ image_url = pantalaimon_image_proxy_url_to_remote_image_url(matrix, image_url);
+
std::vector<Tab> saucenao_tabs;
saucenao_tabs.push_back(Tab{create_body(), std::make_unique<SaucenaoPage>(this, image_url, false), nullptr});
page_loop(saucenao_tabs);