MCPcopy Create free account
hub / github.com/DiscordMessenger/dm / DeleteMessage

Method DeleteMessage

src/windows/MessageList.cpp:730–811  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

728}
729
730void MessageList::DeleteMessage(Snowflake sf)
731{
732 std::list<MessageItem>::reverse_iterator iter;
733
734 for (iter = m_messages.rbegin(); iter != m_messages.rend(); ++iter)
735 {
736 if (sf == iter->m_msg->m_snowflake)
737 break;
738 }
739
740 if (iter == m_messages.rend())
741 {
742 DbgPrintW("Message with id %lld not found to be deleted", sf);
743 return;
744 }
745
746 // delete it
747 RECT messageRect = iter->m_rect;
748 RECT invalidateLater{};
749 bool invalidateLaterExists = false;
750 int messageHeight = iter->m_height;
751
752 // Adjust the message afterwards
753 std::list<MessageItem>::iterator niter = --(iter.base()), afteriter = niter, beforeiter = niter;
754 ++afteriter;
755
756 bool wasFirstMessage = niter == m_messages.begin();
757
758 int afterMessageInitialHeight = 0;
759 int afterMessageNowHeight = 0;
760
761 if (afteriter != m_messages.end())
762 {
763 std::string nm, av;
764 Snowflake sf = Snowflake(-1);
765 time_t tm = 0;
766 int pl = 0;
767 MessageType::eType et = MessageType::DEFAULT;
768 if (beforeiter != m_messages.begin()) {
769 --beforeiter;
770 sf = beforeiter->m_msg->m_author_snowflake;
771 tm = beforeiter->m_msg->m_dateTime;
772 et = beforeiter->m_msg->m_type;
773 pl = beforeiter->m_placeInChain;
774 nm = beforeiter->m_msg->m_author;
775 av = beforeiter->m_msg->m_avatar;
776 }
777
778 afterMessageInitialHeight = afteriter->m_height;
779
780 bool shouldRecalc = false;
781 if (ShouldStartNewChain(sf, tm, pl, et, nm, av, *afteriter, false)) {
782 afteriter->m_placeInChain = 0; // don't care about the rest to be honest
783 shouldRecalc = true;
784 }
785
786 if (ShouldBeDateGap(tm, afteriter->m_msg->m_dateTime)) {
787 afteriter->m_bIsDateGap = true;

Callers 1

WindowProcFunction · 0.45

Calls 5

DbgPrintWFunction · 0.85
eraseMethod · 0.80
baseMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected