FeedReader: Message of a local feed can be added as forum and board message

This commit is contained in:
thunder2 2023-04-16 17:44:50 +02:00
parent bcb4e52768
commit b14fecfc2a
7 changed files with 237 additions and 7 deletions

View file

@ -2532,3 +2532,85 @@ bool p3FeedReader::waitForToken(RsGxsIfaceHelper *interface, uint32_t token)
return false;
}
bool p3FeedReader::getForumGroups(std::vector<RsGxsForumGroup> &groups, bool onlyOwn)
{
if (!mForums) {
std::cerr << "p3FeedReader::getForumGroups - can't get groups, member mForums is not set" << std::endl;
return false;
}
RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
uint32_t token;
if (!mForums->requestGroupInfo(token, opts)) {
std::cerr << "p3FeedReader::getForumGroups - can't get group list" << std::endl;
return false;
}
if (!waitForToken(mForums, token)) {
std::cerr << "p3FeedReader::getForumGroups - waitForToken for list failed" << std::endl;
return false;
}
if (!mForums->getGroupData(token, groups)) {
std::cerr << "p3FeedReader::getForumGroups - getGroupData failed" << std::endl;
return false;
}
if (onlyOwn) {
// filter groups
for (std::vector<RsGxsForumGroup>::iterator it = groups.begin(); it != groups.end(); ) {
const RsGxsForumGroup &group = *it;
if (IS_GROUP_PUBLISHER(group.mMeta.mSubscribeFlags) && IS_GROUP_ADMIN(group.mMeta.mSubscribeFlags)) {
++it;
} else {
it = groups.erase(it);
}
}
}
return true;
}
bool p3FeedReader::getPostedGroups(std::vector<RsPostedGroup> &groups, bool onlyOwn)
{
if (!mPosted) {
std::cerr << "p3FeedReader::getPostedGroups - can't get groups, member mPosted is not set" << std::endl;
return false;
}
RsTokReqOptions opts;
opts.mReqType = GXS_REQUEST_TYPE_GROUP_DATA;
uint32_t token;
if (!mPosted->requestGroupInfo(token, opts)) {
std::cerr << "p3FeedReader::getPostedGroups - can't get group list" << std::endl;
return false;
}
if (!waitForToken(mPosted, token)) {
std::cerr << "p3FeedReader::getPostedGroups - waitForToken for list failed" << std::endl;
return false;
}
if (!mPosted->getGroupData(token, groups)) {
std::cerr << "p3FeedReader::getForumGroups - getGroupData failed" << std::endl;
return false;
}
if (onlyOwn) {
// filter groups
for (std::vector<RsPostedGroup>::iterator it = groups.begin(); it != groups.end(); ) {
const RsPostedGroup &group = *it;
if (IS_GROUP_PUBLISHER(group.mMeta.mSubscribeFlags) && IS_GROUP_ADMIN(group.mMeta.mSubscribeFlags)) {
++it;
} else {
it = groups.erase(it);
}
}
}
return true;
}