mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-12-16 09:03:51 -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;
|
RsErr() << "GxsPostedGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
mIsLoadingGroup = false;
|
mIsLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -150,7 +151,8 @@ void BaseBoardsCommentsItem::loadGroup()
|
||||||
{
|
{
|
||||||
std::cerr << "GxsPostedGroupItem::loadGroup() Wrong number of Items" << std::endl;
|
std::cerr << "GxsPostedGroupItem::loadGroup() Wrong number of Items" << std::endl;
|
||||||
mIsLoadingGroup = false;
|
mIsLoadingGroup = false;
|
||||||
return;
|
deferred_update();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
RsPostedGroup group(groups[0]);
|
RsPostedGroup group(groups[0]);
|
||||||
|
|
||||||
|
|
@ -182,7 +184,8 @@ void BaseBoardsCommentsItem::loadMessage()
|
||||||
{
|
{
|
||||||
RsErr() << "BaseBoardsCommentsItem::loadMessage() ERROR getting data" << std::endl;
|
RsErr() << "BaseBoardsCommentsItem::loadMessage() ERROR getting data" << std::endl;
|
||||||
mIsLoadingMessage = false;
|
mIsLoadingMessage = false;
|
||||||
return;
|
deferred_update();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (posts.size() == 1)
|
if (posts.size() == 1)
|
||||||
|
|
@ -243,7 +246,8 @@ void BaseBoardsCommentsItem::loadComment()
|
||||||
{
|
{
|
||||||
RsErr() << "BaseBoardsCommentsItem::loadGroup() ERROR getting data" << std::endl;
|
RsErr() << "BaseBoardsCommentsItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
mIsLoadingComment = false;
|
mIsLoadingComment = false;
|
||||||
return;
|
deferred_update();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int comNb = comments.size();
|
int comNb = comments.size();
|
||||||
|
|
|
||||||
|
|
@ -220,6 +220,7 @@ void BoardsPostItem::loadGroup()
|
||||||
{
|
{
|
||||||
RsErr() << "BoardsPostItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
RsErr() << "BoardsPostItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -228,6 +229,7 @@ void BoardsPostItem::loadGroup()
|
||||||
std::cerr << "BoardsPostItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
std::cerr << "BoardsPostItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RsPostedGroup group(groups[0]);
|
RsPostedGroup group(groups[0]);
|
||||||
|
|
@ -266,6 +268,7 @@ void BoardsPostItem::loadMessage()
|
||||||
{
|
{
|
||||||
RsErr() << "BoardsPostedItem::loadMessage() ERROR getting data" << std::endl;
|
RsErr() << "BoardsPostedItem::loadMessage() ERROR getting data" << std::endl;
|
||||||
mLoadingMessage = false;
|
mLoadingMessage = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -353,7 +356,7 @@ void BoardsPostItem::fill()
|
||||||
|
|
||||||
ui->subjectLabel->setText(msgText);
|
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(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));
|
//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;
|
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,6 +220,7 @@ void ChannelsCommentsItem::loadGroupData()
|
||||||
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RsGxsChannelGroup group(groups[0]);
|
RsGxsChannelGroup group(groups[0]);
|
||||||
|
|
@ -257,6 +259,7 @@ void ChannelsCommentsItem::loadMessageData()
|
||||||
{
|
{
|
||||||
RsErr() << "GxsGxsChannelGroupItem::loadMessage() ERROR getting data" << std::endl;
|
RsErr() << "GxsGxsChannelGroupItem::loadMessage() ERROR getting data" << std::endl;
|
||||||
mLoadingMessage = false;
|
mLoadingMessage = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -303,11 +306,13 @@ void ChannelsCommentsItem::loadCommentData()
|
||||||
{
|
{
|
||||||
RsErr() << "GxsGxsChannelGroupItem::loadComment() ERROR getting data" << std::endl;
|
RsErr() << "GxsGxsChannelGroupItem::loadComment() ERROR getting data" << std::endl;
|
||||||
mLoadingComment = false;
|
mLoadingComment = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(comments.size()!=1)
|
if(comments.size()!=1)
|
||||||
{
|
{
|
||||||
mLoadingComment = false;
|
mLoadingComment = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@ void GxsChannelGroupItem::loadGroup()
|
||||||
{
|
{
|
||||||
RsErr() << "PostedItem::loadGroup() ERROR getting data" << std::endl;
|
RsErr() << "PostedItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -157,6 +158,7 @@ void GxsChannelGroupItem::loadGroup()
|
||||||
{
|
{
|
||||||
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items";
|
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
deferred_update();
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -219,6 +219,7 @@ void GxsChannelPostItem::loadGroup()
|
||||||
{
|
{
|
||||||
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data for group " << groupId() << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -227,6 +228,7 @@ void GxsChannelPostItem::loadGroup()
|
||||||
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
std::cerr << "GxsGxsChannelGroupItem::loadGroup() Wrong number of Items for group " << groupId() ;
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RsGxsChannelGroup group(groups[0]);
|
RsGxsChannelGroup group(groups[0]);
|
||||||
|
|
@ -265,6 +267,7 @@ void GxsChannelPostItem::loadMessage()
|
||||||
{
|
{
|
||||||
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data" << std::endl;
|
RsErr() << "GxsGxsChannelGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
mLoadingMessage = false;
|
mLoadingMessage = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -161,6 +161,7 @@ void GxsForumGroupItem::loadGroup()
|
||||||
{
|
{
|
||||||
RsErr() << "GxsForumGroupItem::loadGroup() ERROR getting data" << std::endl;
|
RsErr() << "GxsForumGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -169,6 +170,7 @@ void GxsForumGroupItem::loadGroup()
|
||||||
std::cerr << "GxsForumGroupItem::loadGroup() Wrong number of Items";
|
std::cerr << "GxsForumGroupItem::loadGroup() Wrong number of Items";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RsGxsForumGroup group(groups[0]);// no reference to teporary accross threads!
|
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;
|
RsErr() << "GxsForumGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -175,6 +176,7 @@ void GxsForumMsgItem::loadGroup()
|
||||||
std::cerr << "GxsForumGroupItem::loadGroup() Wrong number of Items";
|
std::cerr << "GxsForumGroupItem::loadGroup() Wrong number of Items";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RsGxsForumGroup group(groups[0]);
|
RsGxsForumGroup group(groups[0]);
|
||||||
|
|
@ -229,6 +231,7 @@ void GxsForumMsgItem::loadMessage()
|
||||||
{
|
{
|
||||||
std::cerr << "GxsForumMsgItem::loadMessage() ERROR getting message data";
|
std::cerr << "GxsForumMsgItem::loadMessage() ERROR getting message data";
|
||||||
mLoadingMessage = false;
|
mLoadingMessage = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// now load the parent message. If not found, it's not a problem.
|
// 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;
|
RsErr() << "GxsPostedGroupItem::loadGroup() ERROR getting data" << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -135,6 +136,7 @@ void PostedGroupItem::loadGroup()
|
||||||
std::cerr << "GxsPostedGroupItem::loadGroup() Wrong number of Items";
|
std::cerr << "GxsPostedGroupItem::loadGroup() Wrong number of Items";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
mLoadingGroup = false;
|
mLoadingGroup = false;
|
||||||
|
deferred_update();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RsPostedGroup group(groups[0]);
|
RsPostedGroup group(groups[0]);
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@
|
||||||
#include "gui/feeds/FeedHolder.h"
|
#include "gui/feeds/FeedHolder.h"
|
||||||
#include "gui/gxs/RsGxsUpdateBroadcastBase.h"
|
#include "gui/gxs/RsGxsUpdateBroadcastBase.h"
|
||||||
|
|
||||||
|
#include "util/qtthreadsutils.h"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
@ -43,6 +45,7 @@ GxsGroupFeedItem::GxsGroupFeedItem(FeedHolder *feedHolder, uint32_t feedId, cons
|
||||||
|
|
||||||
/* this are just generally useful for all children */
|
/* this are just generally useful for all children */
|
||||||
mIsHome = isHome;
|
mIsHome = isHome;
|
||||||
|
mLastDelay = 300; // re-update after 300ms on fail. See deferred_update()
|
||||||
|
|
||||||
/* load data if we can */
|
/* load data if we can */
|
||||||
mGroupId = groupId;
|
mGroupId = groupId;
|
||||||
|
|
@ -116,3 +119,19 @@ void GxsGroupFeedItem::requestGroup()
|
||||||
loadGroup();
|
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 RetroShareLink::enumType getLinkType() = 0;
|
||||||
virtual QString groupName() = 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:
|
protected slots:
|
||||||
void subscribe();
|
void subscribe();
|
||||||
void unsubscribe();
|
void unsubscribe();
|
||||||
|
|
@ -74,6 +77,7 @@ private slots:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RsGxsGroupId mGroupId;
|
RsGxsGroupId mGroupId;
|
||||||
|
int mLastDelay;
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(RsGxsGroupId)
|
Q_DECLARE_METATYPE(RsGxsGroupId)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue