Files
abaddon/src/components/ratelimitindicator.hpp
Dylam De La Torre a51a54bc59 Restructure source and resource files (#46)
importantly, res is now res/res and css is now res/css
2021-11-23 04:21:56 +00:00

32 lines
902 B
C++

#pragma once
#include <gtkmm.h>
#include <unordered_map>
#include <chrono>
#include "discord/message.hpp"
class RateLimitIndicator : public Gtk::Box {
public:
RateLimitIndicator();
void SetActiveChannel(Snowflake id);
// even tho this probably isnt the right place for this im gonna do it anyway to reduce coad
bool CanSpeak() const;
private:
int GetTimeLeft() const;
int GetRateLimit() const;
bool UpdateIndicator();
void OnMessageCreate(const Message &message);
void OnMessageSendFail(const std::string &nonce, float rate_limit);
void OnChannelUpdate(Snowflake channel_id);
Gtk::Image m_img;
Gtk::Label m_label;
sigc::connection m_connection;
int m_rate_limit;
Snowflake m_active_channel;
std::unordered_map<Snowflake, std::chrono::time_point<std::chrono::steady_clock>> m_times; // time point of when next message can be sent
};