From 02f7bfefe3185a38f8935b31c68857b986d709ac Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Thu, 16 Mar 2023 21:15:56 -0400 Subject: withdraw notifications on channel open --- src/notifications/notifications.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/notifications/notifications.cpp') diff --git a/src/notifications/notifications.cpp b/src/notifications/notifications.cpp index fc7a2d6..5b834ce 100644 --- a/src/notifications/notifications.cpp +++ b/src/notifications/notifications.cpp @@ -99,12 +99,23 @@ void Notifications::CheckMessage(const Message &message) { // notify messages in DMs const auto channel = discord.GetChannel(message.ChannelID); if (channel->IsDM()) { + m_chan_notifications[message.ChannelID].push_back(message.ID); NotifyMessageDM(message); } else if (CheckGuildMessage(message)) { + m_chan_notifications[message.ChannelID].push_back(message.ID); NotifyMessageGuild(message); } } +void Notifications::WithdrawChannel(Snowflake channel_id) { + if (auto it = m_chan_notifications.find(channel_id); it != m_chan_notifications.end()) { + for (const auto notification_id : it->second) { + m_notifier.Withdraw(std::to_string(notification_id)); + } + it->second.clear(); + } +} + Glib::ustring Sanitize(const Message &message) { auto buf = Gtk::TextBuffer::create(); Gtk::TextBuffer::iterator begin, end; @@ -123,7 +134,7 @@ void Notifications::NotifyMessageDM(const Message &message) { const auto body = Sanitize(message); Abaddon::Get().GetImageManager().GetCache().GetFileFromURL(message.Author.GetAvatarURL("png", "64"), [=](const std::string &path) { - m_notifier.Notify(title, body, default_action, path); + m_notifier.Notify(std::to_string(message.ID), title, body, default_action, path); }); } @@ -146,7 +157,7 @@ void Notifications::NotifyMessageGuild(const Message &message) { } const auto body = Sanitize(message); Abaddon::Get().GetImageManager().GetCache().GetFileFromURL(message.Author.GetAvatarURL("png", "64"), [=](const std::string &path) { - m_notifier.Notify(title, body, default_action, path); + m_notifier.Notify(std::to_string(message.ID), title, body, default_action, path); }); } -- cgit v1.2.3