diff options
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 22 |
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); |