From bce514115dc1e846b5c295290891067d2ff12214 Mon Sep 17 00:00:00 2001 From: csoler Date: Wed, 25 Nov 2020 23:35:20 +0100 Subject: [PATCH] added proper notifications when a group is deleted --- libretroshare/src/gxs/rsgxsutil.cc | 2 +- libretroshare/src/retroshare/rsgxschannels.h | 1 + libretroshare/src/retroshare/rsgxscircles.h | 5 +++++ libretroshare/src/retroshare/rsgxsforums.h | 1 + libretroshare/src/retroshare/rsposted.h | 1 + libretroshare/src/services/p3gxschannels.cc | 11 ++++++++++- libretroshare/src/services/p3gxscircles.cc | 15 ++++++++++++--- libretroshare/src/services/p3gxsforums.cc | 11 ++++++++++- libretroshare/src/services/p3postbase.cc | 11 +++++++++++ retroshare-gui/src/gui/Identity/IdDialog.cpp | 3 ++- retroshare-gui/src/gui/Posted/PostedDialog.cpp | 3 ++- .../src/gui/Posted/PostedListWidgetWithModel.cpp | 1 + .../src/gui/gxschannels/GxsChannelDialog.cpp | 1 + .../GxsChannelPostsWidgetWithModel.cpp | 1 + .../src/gui/gxsforums/GxsForumsDialog.cpp | 1 + 15 files changed, 60 insertions(+), 8 deletions(-) diff --git a/libretroshare/src/gxs/rsgxsutil.cc b/libretroshare/src/gxs/rsgxsutil.cc index 23b233b63..4895ea25d 100644 --- a/libretroshare/src/gxs/rsgxsutil.cc +++ b/libretroshare/src/gxs/rsgxsutil.cc @@ -195,7 +195,7 @@ bool RsGxsCleanUp::clean(RsGxsGroupId& next_group_to_check) } } - //mDs->removeGroups(grps_to_delete); + mDs->removeGroups(grps_to_delete); return full_round; } diff --git a/libretroshare/src/retroshare/rsgxschannels.h b/libretroshare/src/retroshare/rsgxschannels.h index 23ffc9a6c..933826789 100644 --- a/libretroshare/src/retroshare/rsgxschannels.h +++ b/libretroshare/src/retroshare/rsgxschannels.h @@ -118,6 +118,7 @@ enum class RsChannelEventCode: uint8_t SYNC_PARAMETERS_UPDATED = 0x0a, // sync and storage times have changed NEW_COMMENT = 0x0b, // new comment arrived/published. mChannelThreadId gives the ID of the commented message NEW_VOTE = 0x0c, // new vote arrived/published. mChannelThreadId gives the ID of the votes message comment + DELETED_CHANNEL = 0x0d, // channel was deleted by auto-cleaning system }; struct RsGxsChannelEvent: RsEvent diff --git a/libretroshare/src/retroshare/rsgxscircles.h b/libretroshare/src/retroshare/rsgxscircles.h index ebe5a0131..8379c2b16 100644 --- a/libretroshare/src/retroshare/rsgxscircles.h +++ b/libretroshare/src/retroshare/rsgxscircles.h @@ -235,6 +235,11 @@ enum class RsGxsCircleEventCode: uint8_t * * no additional information. Simply means that the info previously from the cache has changed. */ CACHE_DATA_UPDATED = 0x06, + + /** + * The circle has been deleted by auto-cleaning. + * */ + CIRCLE_DELETED = 0x07, }; struct RsGxsCircleEvent: RsEvent diff --git a/libretroshare/src/retroshare/rsgxsforums.h b/libretroshare/src/retroshare/rsgxsforums.h index 573111d9f..83a961fc3 100644 --- a/libretroshare/src/retroshare/rsgxsforums.h +++ b/libretroshare/src/retroshare/rsgxsforums.h @@ -117,6 +117,7 @@ enum class RsForumEventCode: uint8_t MODERATOR_LIST_CHANGED = 0x08, /// forum moderation list has changed. SYNC_PARAMETERS_UPDATED = 0x0a, /// sync and storage times have changed PINNED_POSTS_CHANGED = 0x0b, /// some posts where pinned or un-pinned + DELETED_FORUM = 0x0c, /// forum was deleted by cleaning }; struct RsGxsForumEvent: RsEvent diff --git a/libretroshare/src/retroshare/rsposted.h b/libretroshare/src/retroshare/rsposted.h index 7e9494db0..e56c3cef0 100644 --- a/libretroshare/src/retroshare/rsposted.h +++ b/libretroshare/src/retroshare/rsposted.h @@ -119,6 +119,7 @@ enum class RsPostedEventCode: uint8_t SYNC_PARAMETERS_UPDATED = 0x09, NEW_COMMENT = 0x0a, NEW_VOTE = 0x0b, + BOARD_DELETED = 0x0c, }; diff --git a/libretroshare/src/services/p3gxschannels.cc b/libretroshare/src/services/p3gxschannels.cc index b61880cd5..2381bed9e 100644 --- a/libretroshare/src/services/p3gxschannels.cc +++ b/libretroshare/src/services/p3gxschannels.cc @@ -376,7 +376,16 @@ void p3GxsChannels::notifyChanges(std::vector &changes) } break; - case RsGxsNotify::TYPE_RECEIVED_PUBLISHKEY: + case RsGxsNotify::TYPE_GROUP_DELETED: + { + auto ev = std::make_shared(); + ev->mChannelGroupId = grpChange->mGroupId; + ev->mChannelEventCode = RsChannelEventCode::DELETED_CHANNEL; + rsEvents->postEvent(ev); + } + break; + + case RsGxsNotify::TYPE_RECEIVED_PUBLISHKEY: { /* group received */ auto ev = std::make_shared(); diff --git a/libretroshare/src/services/p3gxscircles.cc b/libretroshare/src/services/p3gxscircles.cc index ea3f79ab1..842998078 100644 --- a/libretroshare/src/services/p3gxscircles.cc +++ b/libretroshare/src/services/p3gxscircles.cc @@ -698,7 +698,7 @@ void p3GxsCircles::notifyChanges(std::vector &changes) ev->mCircleId = RsGxsCircleId(*git); ev->mGxsId = gxs_id; - rsEvents->sendEvent(ev); + rsEvents->postEvent(ev); } } else if(c->getType()==RsGxsNotify::TYPE_UPDATED) @@ -728,7 +728,7 @@ void p3GxsCircles::notifyChanges(std::vector &changes) ev->mCircleId = circle_id; ev->mGxsId = gxs_id; - rsEvents->sendEvent(ev); + rsEvents->postEvent(ev); } for(auto& gxs_id: old_circle_grp_item->gxsIdSet.ids) @@ -740,10 +740,19 @@ void p3GxsCircles::notifyChanges(std::vector &changes) ev->mCircleId = circle_id; ev->mGxsId = gxs_id; - rsEvents->sendEvent(ev); + rsEvents->postEvent(ev); } } + else if(c->getType()==RsGxsNotify::TYPE_GROUP_DELETED) + { + auto ev = std::make_shared(); + + ev->mCircleEventType = RsGxsCircleEventCode::CIRCLE_DELETED; + ev->mCircleId = RsGxsCircleId(groupChange->mGroupId); + + rsEvents->postEvent(ev); + } } } diff --git a/libretroshare/src/services/p3gxsforums.cc b/libretroshare/src/services/p3gxsforums.cc index aff930fc9..7ea188b9d 100644 --- a/libretroshare/src/services/p3gxsforums.cc +++ b/libretroshare/src/services/p3gxsforums.cc @@ -298,7 +298,16 @@ void p3GxsForums::notifyChanges(std::vector &changes) } break; - case RsGxsNotify::TYPE_STATISTICS_CHANGED: + case RsGxsNotify::TYPE_GROUP_DELETED: + { + auto ev = std::make_shared(); + ev->mForumGroupId = grpChange->mGroupId; + ev->mForumEventCode = RsForumEventCode::DELETED_FORUM; + rsEvents->postEvent(ev); + } + break; + + case RsGxsNotify::TYPE_STATISTICS_CHANGED: { auto ev = std::make_shared(); ev->mForumGroupId = grpChange->mGroupId; diff --git a/libretroshare/src/services/p3postbase.cc b/libretroshare/src/services/p3postbase.cc index bfd160672..deb5a88d5 100644 --- a/libretroshare/src/services/p3postbase.cc +++ b/libretroshare/src/services/p3postbase.cc @@ -132,6 +132,7 @@ void p3PostBase::notifyChanges(std::vector &changes) } break; + case RsGxsNotify::TYPE_PROCESSED: { auto ev = std::make_shared(); @@ -184,6 +185,16 @@ void p3PostBase::notifyChanges(std::vector &changes) } break; + case RsGxsNotify::TYPE_GROUP_DELETED: + { + auto ev = std::make_shared(); + ev->mPostedGroupId = msgChange->mGroupId; + ev->mPostedEventCode = RsPostedEventCode::BOARD_DELETED; + + rsEvents->postEvent(ev); + } + break; + case RsGxsNotify::TYPE_STATISTICS_CHANGED: { auto ev = std::make_shared(); diff --git a/retroshare-gui/src/gui/Identity/IdDialog.cpp b/retroshare-gui/src/gui/Identity/IdDialog.cpp index 747e4706f..e42dfeb26 100644 --- a/retroshare-gui/src/gui/Identity/IdDialog.cpp +++ b/retroshare-gui/src/gui/Identity/IdDialog.cpp @@ -439,7 +439,8 @@ void IdDialog::handleEvent_main_thread(std::shared_ptr event) case RsGxsCircleEventCode::CIRCLE_MEMBERSHIP_LEAVE: case RsGxsCircleEventCode::CIRCLE_MEMBERSHIP_ID_REMOVED_FROM_INVITEE_LIST: case RsGxsCircleEventCode::NEW_CIRCLE: - case RsGxsCircleEventCode::CACHE_DATA_UPDATED: + case RsGxsCircleEventCode::CIRCLE_DELETED: + case RsGxsCircleEventCode::CACHE_DATA_UPDATED: updateCircles(); default: diff --git a/retroshare-gui/src/gui/Posted/PostedDialog.cpp b/retroshare-gui/src/gui/Posted/PostedDialog.cpp index 9c84eb06a..5000ce3f1 100644 --- a/retroshare-gui/src/gui/Posted/PostedDialog.cpp +++ b/retroshare-gui/src/gui/Posted/PostedDialog.cpp @@ -67,7 +67,8 @@ void PostedDialog::handleEvent_main_thread(std::shared_ptr event) break; case RsPostedEventCode::NEW_POSTED_GROUP: // [[fallthrough]]; - case RsPostedEventCode::SUBSCRIBE_STATUS_CHANGED: // [[fallthrough]]; + case RsPostedEventCode::BOARD_DELETED: // [[fallthrough]]; + case RsPostedEventCode::SUBSCRIBE_STATUS_CHANGED: // [[fallthrough]]; updateDisplay(true); break; diff --git a/retroshare-gui/src/gui/Posted/PostedListWidgetWithModel.cpp b/retroshare-gui/src/gui/Posted/PostedListWidgetWithModel.cpp index 974774417..741f4d180 100644 --- a/retroshare-gui/src/gui/Posted/PostedListWidgetWithModel.cpp +++ b/retroshare-gui/src/gui/Posted/PostedListWidgetWithModel.cpp @@ -493,6 +493,7 @@ void PostedListWidgetWithModel::handleEvent_main_thread(std::shared_ptrmPostedGroupId == groupId()) diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp index 1a63186b6..b6451e5d6 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelDialog.cpp @@ -75,6 +75,7 @@ void GxsChannelDialog::handleEvent_main_thread(std::shared_ptr ev case RsChannelEventCode::RECEIVED_PUBLISH_KEY: // [[fallthrough]]; case RsChannelEventCode::NEW_CHANNEL: // [[fallthrough]]; + case RsChannelEventCode::DELETED_CHANNEL: // [[fallthrough]]; case RsChannelEventCode::SUBSCRIBE_STATUS_CHANGED:// reloads group summary (calling GxsGroupFrameDialog parent method) updateDisplay(true); break; diff --git a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp index 959074138..ae869cb5a 100644 --- a/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp +++ b/retroshare-gui/src/gui/gxschannels/GxsChannelPostsWidgetWithModel.cpp @@ -750,6 +750,7 @@ void GxsChannelPostsWidgetWithModel::handleEvent_main_thread(std::shared_ptrmChannelEventCode) { case RsChannelEventCode::NEW_CHANNEL: // [[fallthrough]]; + case RsChannelEventCode::DELETED_CHANNEL: // [[fallthrough]]; case RsChannelEventCode::NEW_COMMENT: // [[fallthrough]]; case RsChannelEventCode::NEW_VOTE: // [[fallthrough]]; case RsChannelEventCode::UPDATED_CHANNEL: // [[fallthrough]]; diff --git a/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp b/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp index 7ce84ea5c..1a1ceba23 100644 --- a/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp +++ b/retroshare-gui/src/gui/gxsforums/GxsForumsDialog.cpp @@ -67,6 +67,7 @@ void GxsForumsDialog::handleEvent_main_thread(std::shared_ptr eve break; case RsForumEventCode::NEW_FORUM: // [[fallthrough]]; + case RsForumEventCode::DELETED_FORUM: // [[fallthrough]]; case RsForumEventCode::SUBSCRIBE_STATUS_CHANGED: updateDisplay(true); break;