pins: separate msgs, sort and store

This commit is contained in:
ouwou 2021-06-15 01:01:29 -04:00
parent e166c83d33
commit d527669d39
4 changed files with 12 additions and 1 deletions

View File

@ -61,7 +61,7 @@ void ChatList::ProcessNewMessage(const Message &data, bool prepend) {
ChatMessageHeader *last_row = nullptr;
bool should_attach = false;
if (m_num_rows > 0) {
if (!m_separate_all && m_num_rows > 0) {
if (prepend)
last_row = dynamic_cast<ChatMessageHeader *>(m_list.get_row_at_index(0));
else
@ -210,6 +210,10 @@ std::vector<Snowflake> ChatList::GetRecentAuthors() {
return ret;
}
void ChatList::SetSeparateAll(bool separate) {
m_separate_all = true;
}
void ChatList::OnScrollEdgeOvershot(Gtk::PositionType pos) {
if (pos == Gtk::POS_TOP)
m_signal_action_chat_load_history.emit(m_active_channel);

View File

@ -20,6 +20,7 @@ public:
void UpdateMessageReactions(Snowflake id);
void SetFailedByNonce(const std::string &nonce);
std::vector<Snowflake> GetRecentAuthors();
void SetSeparateAll(bool separate);
private:
void OnScrollEdgeOvershot(Gtk::PositionType pos);
@ -35,6 +36,8 @@ private:
bool m_should_scroll_to_bottom = true;
Gtk::ListBox m_list;
bool m_separate_all = false;
public:
// these are all forwarded by the parent
using type_signal_action_message_delete = sigc::signal<void, Snowflake, Snowflake>;

View File

@ -718,6 +718,9 @@ void DiscordClient::FetchPinned(Snowflake id, sigc::slot<void(std::vector<Messag
}
auto data = nlohmann::json::parse(response.text).get<std::vector<Message>>();
std::sort(data.begin(), data.end(), [](const Message &a, const Message &b) { return a.ID < b.ID; });
for (auto &msg : data)
StoreMessageData(msg);
callback(std::move(data), DiscordError::NONE);
});
}

View File

@ -17,6 +17,7 @@ PinnedWindow::PinnedWindow(const ChannelData &data)
add(m_chat);
m_chat.show();
m_chat.SetSeparateAll(true);
m_chat.SetActiveChannel(ChannelID);
FetchPinned();