summaryrefslogtreecommitdiff
path: root/src/components/progressbar.cpp
blob: aa5d748b5adaad3913426a7ee7ba41bd68603084 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "progressbar.hpp"
#include "abaddon.hpp"

MessageUploadProgressBar::MessageUploadProgressBar() {
    get_style_context()->add_class("message-progress");
    auto &discord = Abaddon::Get().GetDiscordClient();
    discord.signal_message_progress().connect([this](const std::string &nonce, float percent) {
        if (nonce == m_last_nonce) {
            set_fraction(percent);
        }
    });
    discord.signal_message_send_fail().connect([this](const std::string &nonce, float) {
        if (nonce == m_last_nonce)
            set_fraction(0.0);
    });
    discord.signal_message_create().connect([this](const Message &msg) {
        if (msg.IsPending) {
            m_last_nonce = *msg.Nonce;
        } else if (msg.Nonce.has_value() && (*msg.Nonce == m_last_nonce)) {
            m_last_nonce = "";
            set_fraction(0.0);
        }
    });
}