aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index c533186..10224e2 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -2812,7 +2812,10 @@ namespace QuickMedia {
while (current_page == PageType::CHAT_LOGIN) {
while (window.pollEvent(event)) {
- if(event.type == sf::Event::Resized) {
+ if (event.type == sf::Event::Closed) {
+ current_page = PageType::EXIT;
+ window.close();
+ } else if(event.type == sf::Event::Resized) {
window_size.x = event.size.width;
window_size.y = event.size.height;
sf::FloatRect visible_area(0, 0, window_size.x, window_size.y);
@@ -2904,6 +2907,8 @@ namespace QuickMedia {
else {
body_item->thumbnail_url = message->user->avatar_url;
body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
+ // if construct is not configured to use ImageMagic then it wont give thumbnails of size 32x32 even when requested and the spec says that the server SHOULD do that
+ body_item->thumbnail_size = sf::Vector2i(32, 32);
}
// TODO: Show image thumbnail inline instead of url to image and showing it as the thumbnail of the body item
body_item->url = message->url;
@@ -3346,8 +3351,17 @@ namespace QuickMedia {
// TODO: What if these never end up referencing events? clean up automatically after a while?
std::unordered_map<std::shared_ptr<RoomData>, Messages> unreferenced_event_by_room;
+ auto set_body_as_deleted = [](Message *message, BodyItem *body_item) {
+ body_item->embedded_item = nullptr;
+ body_item->embedded_item_status = EmbeddedItemStatus::NONE;
+ body_item->thumbnail_url = message->user->avatar_url;
+ body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
+ body_item->set_description_color(sf::Color::White);
+ body_item->thumbnail_size = sf::Vector2i(32, 32);
+ };
+
// TODO: Optimize with hash map?
- auto resolve_unreferenced_events_with_body_items = [&unreferenced_event_by_room, &current_room, &find_body_item_by_event_id](std::shared_ptr<BodyItem> *body_items, size_t num_body_items) {
+ auto resolve_unreferenced_events_with_body_items = [&set_body_as_deleted, &unreferenced_event_by_room, &current_room, &find_body_item_by_event_id](std::shared_ptr<BodyItem> *body_items, size_t num_body_items) {
auto &unreferenced_events = unreferenced_event_by_room[current_room];
for(auto it = unreferenced_events.begin(); it != unreferenced_events.end(); ) {
auto &message = *it;
@@ -3356,13 +3370,8 @@ namespace QuickMedia {
auto body_item = find_body_item_by_event_id(body_items, num_body_items, message->related_event_id);
if(body_item) {
body_item->set_description(message->body);
- if(message->related_event_type == RelatedEventType::REDACTION) {
- body_item->embedded_item = nullptr;
- body_item->embedded_item_status = EmbeddedItemStatus::NONE;
- body_item->thumbnail_url = message->user->avatar_url;
- body_item->thumbnail_mask_type = ThumbnailMaskType::NONE;
- body_item->set_description_color(sf::Color::White);
- }
+ if(message->related_event_type == RelatedEventType::REDACTION)
+ set_body_as_deleted(message.get(), body_item.get());
it = unreferenced_events.erase(it);
} else {
++it;
@@ -3374,7 +3383,7 @@ namespace QuickMedia {
};
// TODO: Optimize with hash map?
- auto modify_related_messages_in_current_room = [&unreferenced_event_by_room, &current_room, &find_body_item_by_event_id, &tabs](Messages &messages) {
+ auto modify_related_messages_in_current_room = [&set_body_as_deleted, &unreferenced_event_by_room, &current_room, &find_body_item_by_event_id, &tabs](Messages &messages) {
auto &unreferenced_events = unreferenced_event_by_room[current_room];
auto &body_items = tabs[MESSAGES_TAB_INDEX].body->items;
for(auto &message : messages) {
@@ -3383,13 +3392,8 @@ namespace QuickMedia {
auto body_item = find_body_item_by_event_id(body_items.data(), body_items.size(), message->related_event_id);
if(body_item) {
body_item->set_description(message->body);
- if(message->related_event_type == RelatedEventType::REDACTION) {
- body_item->embedded_item = nullptr;
- body_item->embedded_item_status = EmbeddedItemStatus::NONE;
- body_item->thumbnail_url = message->user->avatar_url;
- body_item->thumbnail_mask_type = ThumbnailMaskType::NONE;
- body_item->set_description_color(sf::Color::White);
- }
+ if(message->related_event_type == RelatedEventType::REDACTION)
+ set_body_as_deleted(message.get(), body_item.get());
} else {
unreferenced_events.push_back(message);
}