aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp46
1 files changed, 7 insertions, 39 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 614fad3..0ab78a1 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -3263,41 +3263,6 @@ namespace QuickMedia {
}
};
- // TODO: Remove this? it adds additional delay to launch.
- // TODO: Make async
- auto link_get_content_type = [this](const std::string &url) -> const char* {
- std::vector<CommandArg> additional_args = {
- { "-I", "" } // HEAD request, to get content-type
- };
-
- std::string program_result;
- if(download_to_string(url, program_result, std::move(additional_args), use_tor, true) != DownloadResult::OK) {
- fprintf(stderr, "HEAD request to %s failed\n", url.c_str());
- return nullptr;
- }
-
- const char *result = nullptr;
- string_split(program_result, '\n', [&result](const char *str, size_t size) mutable -> bool {
- if(size > 13 && strncasecmp(str, "content-type:", 13) == 0) {
- std::string content_type_value(str + 13, size - 13);
- content_type_value = strip(content_type_value);
- if(strncasecmp(content_type_value.c_str(), "audio", 5) == 0) {
- result = "audio";
- return false;
- } else if(strncasecmp(content_type_value.c_str(), "video", 5) == 0) {
- result = "video";
- return false;
- } else if(strncasecmp(content_type_value.c_str(), "image", 5) == 0) {
- result = "image";
- return false;
- }
- }
- return true;
- });
-
- return result;
- };
-
auto add_new_messages_to_current_room = [this, &tabs, &current_room](Messages &messages) {
int num_items = tabs[MESSAGES_TAB_INDEX].body->items.size();
bool scroll_to_end = (num_items == 0 || tabs[MESSAGES_TAB_INDEX].body->is_selected_item_last_visible_item());
@@ -3327,6 +3292,7 @@ namespace QuickMedia {
body_item->thumbnail_url = room->avatar_url;
body_item->userdata = room.get(); // Note: this has to be valid as long as the room list is valid!
body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
+ body_item->thumbnail_size = sf::Vector2i(32, 32);
tabs[ROOMS_TAB_INDEX].body->items.push_back(body_item);
body_items_by_room[room] = { body_item, true, 0 };
}
@@ -3478,16 +3444,18 @@ namespace QuickMedia {
if(tabs[selected_tab].type == ChatTabType::MESSAGES && event.key.code == sf::Keyboard::Enter) {
BodyItem *selected = tabs[selected_tab].body->get_selected();
if(selected) {
+ MessageType message_type = static_cast<Message*>(selected->userdata)->type;
std::string selected_url = selected->url;
- if(selected_url.empty() && selected->embedded_item)
+ if(selected_url.empty() && selected->embedded_item) {
selected_url = selected->embedded_item->url;
+ message_type = static_cast<Message*>(selected->embedded_item->userdata)->type;
+ }
if(!selected_url.empty()) {
- const char *content_type = link_get_content_type(selected_url);
- if(content_type && (strcmp(content_type, "audio") == 0 || strcmp(content_type, "video") == 0 || strcmp(content_type, "image") == 0)) {
+ if(message_type == MessageType::VIDEO || message_type == MessageType::IMAGE || message_type == MessageType::AUDIO) {
page_stack.push(PageType::CHAT);
watched_videos.clear();
current_page = PageType::VIDEO_CONTENT;
- bool is_audio = strcmp(content_type, "audio") == 0;
+ bool is_audio = (message_type == MessageType::AUDIO);
bool prev_no_video = no_video;
no_video = is_audio;
// TODO: Add title