diff options
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 46 |
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, ¤t_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 |