summaryrefslogtreecommitdiff
path: root/windows/pinnedwindow.cpp
blob: 0d677ee11be0cc6ea499a2c2d70e87be1fde21d1 (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
25
26
27
28
29
30
31
32
#include "pinnedwindow.hpp"
#include "../abaddon.hpp"

PinnedWindow::PinnedWindow(const ChannelData &data)
    : ChannelID(data.ID) {
    if (data.GuildID.has_value())
        GuildID = *data.GuildID;

    set_name("pinned-messages");
    set_default_size(450, 375);
    set_title("#" + *data.Name + " - Pinned Messages");
    set_position(Gtk::WIN_POS_CENTER);
    get_style_context()->add_class("app-window");
    get_style_context()->add_class("app-popup");
    get_style_context()->add_class("pinned-messages-window");

    add(m_chat);
    m_chat.show();

    m_chat.SetActiveChannel(ChannelID);

    FetchPinned();
}

void PinnedWindow::FetchPinned() {
    Abaddon::Get().GetDiscordClient().FetchPinned(ChannelID, sigc::mem_fun(*this, &PinnedWindow::OnFetchedPinned));
}

void PinnedWindow::OnFetchedPinned(const std::vector<Message> &msgs, DiscordError code) {
    if (code != DiscordError::NONE) return;
    m_chat.SetMessages(msgs.begin(), msgs.end());
}