mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-12-15 08:39:08 -05:00
added deferred update to feed items
This commit is contained in:
parent
d86c5dabd3
commit
2eb48e0305
10 changed files with 51 additions and 4 deletions
|
|
@ -143,6 +143,7 @@ void BaseBoardsCommentsItem::loadGroup()
|
|||
{
|
||||
RsErr() << "GxsPostedGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||
mIsLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +151,8 @@ void BaseBoardsCommentsItem::loadGroup()
|
|||
{
|
||||
std::cerr << "GxsPostedGroupItem::loadGroup() Wrong number of Items" << std::endl;
|
||||
mIsLoadingGroup = false;
|
||||
return;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
RsPostedGroup group(groups[0]);
|
||||
|
||||
|
|
@ -182,7 +184,8 @@ void BaseBoardsCommentsItem::loadMessage()
|
|||
{
|
||||
RsErr() << "BaseBoardsCommentsItem::loadMessage() ERROR getting data" << std::endl;
|
||||
mIsLoadingMessage = false;
|
||||
return;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
if (posts.size() == 1)
|
||||
|
|
@ -243,7 +246,8 @@ void BaseBoardsCommentsItem::loadComment()
|
|||
{
|
||||
RsErr() << "BaseBoardsCommentsItem::loadGroup() ERROR getting data" << std::endl;
|
||||
mIsLoadingComment = false;
|
||||
return;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
int comNb = comments.size();
|
||||
|
|
|
|||
|
|
@ -220,6 +220,7 @@ void BoardsPostItem::loadGroup()
|
|||
{
|
||||
RsErr() << "BoardsPostItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -228,6 +229,7 @@ void BoardsPostItem::loadGroup()
|
|||
std::cerr << "BoardsPostItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
||||
std::cerr << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
RsPostedGroup group(groups[0]);
|
||||
|
|
@ -266,6 +268,7 @@ void BoardsPostItem::loadMessage()
|
|||
{
|
||||
RsErr() << "BoardsPostedItem::loadMessage() ERROR getting data" << std::endl;
|
||||
mLoadingMessage = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -353,7 +356,7 @@ void BoardsPostItem::fill()
|
|||
|
||||
ui->subjectLabel->setText(msgText);
|
||||
|
||||
std::cerr << "Copying 1 line from \"" << mPost.mNotes << "\"" << std::endl;
|
||||
//std::cerr << "Copying 1 line from \"" << mPost.mNotes << "\"" << std::endl;
|
||||
//ui->newCommentLabel->setText(RsStringUtil::CopyLines(QString::fromUtf8(mPost.mNotes.c_str()), 1)) ;
|
||||
//ui->newCommentLabel->setText(RsHtml().formatText(NULL, QString::fromUtf8(mPost.mNotes.c_str()), /* RSHTML_FORMATTEXT_EMBED_SMILEYS |*/ RSHTML_FORMATTEXT_EMBED_LINKS));
|
||||
|
||||
|
|
|
|||
|
|
@ -211,6 +211,7 @@ void ChannelsCommentsItem::loadGroupData()
|
|||
{
|
||||
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -219,6 +220,7 @@ void ChannelsCommentsItem::loadGroupData()
|
|||
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
||||
std::cerr << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
RsGxsChannelGroup group(groups[0]);
|
||||
|
|
@ -257,6 +259,7 @@ void ChannelsCommentsItem::loadMessageData()
|
|||
{
|
||||
RsErr() << "GxsGxsChannelGroupItem::loadMessage() ERROR getting data" << std::endl;
|
||||
mLoadingMessage = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -303,11 +306,13 @@ void ChannelsCommentsItem::loadCommentData()
|
|||
{
|
||||
RsErr() << "GxsGxsChannelGroupItem::loadComment() ERROR getting data" << std::endl;
|
||||
mLoadingComment = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
if(comments.size()!=1)
|
||||
{
|
||||
mLoadingComment = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -150,6 +150,7 @@ void GxsChannelGroupItem::loadGroup()
|
|||
{
|
||||
RsErr() << "PostedItem::loadGroup() ERROR getting data" << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -157,6 +158,7 @@ void GxsChannelGroupItem::loadGroup()
|
|||
{
|
||||
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items";
|
||||
std::cerr << std::endl;
|
||||
deferred_update();
|
||||
mLoadingGroup = false;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -219,6 +219,7 @@ void GxsChannelPostItem::loadGroup()
|
|||
{
|
||||
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -227,6 +228,7 @@ void GxsChannelPostItem::loadGroup()
|
|||
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
||||
std::cerr << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
RsGxsChannelGroup group(groups[0]);
|
||||
|
|
@ -265,6 +267,7 @@ void GxsChannelPostItem::loadMessage()
|
|||
{
|
||||
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||
mLoadingMessage = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -161,6 +161,7 @@ void GxsForumGroupItem::loadGroup()
|
|||
{
|
||||
RsErr() << "GxsForumGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -169,6 +170,7 @@ void GxsForumGroupItem::loadGroup()
|
|||
std::cerr << "GxsForumGroupItem::loadGroup() Wrong number of Items";
|
||||
std::cerr << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
RsGxsForumGroup group(groups[0]);// no reference to teporary accross threads!
|
||||
|
|
|
|||
|
|
@ -167,6 +167,7 @@ void GxsForumMsgItem::loadGroup()
|
|||
{
|
||||
RsErr() << "GxsForumGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -175,6 +176,7 @@ void GxsForumMsgItem::loadGroup()
|
|||
std::cerr << "GxsForumGroupItem::loadGroup() Wrong number of Items";
|
||||
std::cerr << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
RsGxsForumGroup group(groups[0]);
|
||||
|
|
@ -229,6 +231,7 @@ void GxsForumMsgItem::loadMessage()
|
|||
{
|
||||
std::cerr << "GxsForumMsgItem::loadMessage() ERROR getting message data";
|
||||
mLoadingMessage = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
// now load the parent message. If not found, it's not a problem.
|
||||
|
|
|
|||
|
|
@ -127,6 +127,7 @@ void PostedGroupItem::loadGroup()
|
|||
{
|
||||
RsErr() << "GxsPostedGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -135,6 +136,7 @@ void PostedGroupItem::loadGroup()
|
|||
std::cerr << "GxsPostedGroupItem::loadGroup() Wrong number of Items";
|
||||
std::cerr << std::endl;
|
||||
mLoadingGroup = false;
|
||||
deferred_update();
|
||||
return;
|
||||
}
|
||||
RsPostedGroup group(groups[0]);
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
#include "gui/feeds/FeedHolder.h"
|
||||
#include "gui/gxs/RsGxsUpdateBroadcastBase.h"
|
||||
|
||||
#include "util/qtthreadsutils.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
|
||||
|
|
@ -43,6 +45,7 @@ GxsGroupFeedItem::GxsGroupFeedItem(FeedHolder *feedHolder, uint32_t feedId, cons
|
|||
|
||||
/* this are just generally useful for all children */
|
||||
mIsHome = isHome;
|
||||
mLastDelay = 300; // re-update after 300ms on fail. See deferred_update()
|
||||
|
||||
/* load data if we can */
|
||||
mGroupId = groupId;
|
||||
|
|
@ -116,3 +119,19 @@ void GxsGroupFeedItem::requestGroup()
|
|||
loadGroup();
|
||||
}
|
||||
|
||||
void GxsGroupFeedItem::deferred_update()
|
||||
{
|
||||
mLastDelay = (int)(float(mLastDelay)*1.2);
|
||||
mLastDelay += 100.0*drand48();
|
||||
|
||||
if(mLastDelay < 10000.0)
|
||||
{
|
||||
std::cerr << "Launching deferred update at " << mLastDelay << " ms." << std::endl;
|
||||
RsQThreadUtils::postToObject( [this]() { QTimer::singleShot(mLastDelay,this,SLOT(update())); }, this );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,9 @@ protected:
|
|||
virtual RetroShareLink::enumType getLinkType() = 0;
|
||||
virtual QString groupName() = 0;
|
||||
|
||||
// This triggers an update in the main thread after a short waiting period. Help loading objects that havn't loaded yet.
|
||||
void deferred_update();
|
||||
|
||||
protected slots:
|
||||
void subscribe();
|
||||
void unsubscribe();
|
||||
|
|
@ -74,6 +77,7 @@ private slots:
|
|||
|
||||
private:
|
||||
RsGxsGroupId mGroupId;
|
||||
int mLastDelay;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(RsGxsGroupId)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue