Fix #5704 Backend: Remove usage from activity feed (#5759)

This commit is contained in:
Vivek Ratnavel Subramanian 2022-06-30 02:15:21 -07:00 committed by GitHub
parent f3f45bc174
commit 2b0aeaf0eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -84,28 +84,36 @@ public class ChangeEventHandler implements EventHandler {
// Add a new thread to the entity for every change event
// for the event to appear in activity feeds
if (Entity.shouldDisplayEntityChangeOnFeed(changeEvent.getEntityType())) {
for (var thread : listOrEmpty(getThreads(responseContext, loggedInUserName))) {
// Don't create a thread if there is no message
if (!thread.getMessage().isEmpty()) {
EntityInterface entity;
// In case of ENTITY_FIELDS_CHANGED entity from responseContext will be a ChangeEvent
if (responseContext.getEntity() instanceof ChangeEvent) {
ChangeEvent change = (ChangeEvent) responseContext.getEntity();
entity = (EntityInterface) change.getEntity();
} else {
entity = (EntityInterface) responseContext.getEntity();
// ignore usageSummary updates in the feed
boolean shouldIgnore = false;
if (Entity.TABLE.equals(changeEvent.getEntityType()) && changeEvent.getChangeDescription() != null) {
List<FieldChange> fields = changeEvent.getChangeDescription().getFieldsUpdated();
shouldIgnore = fields.stream().anyMatch(field -> field.getName().equals("usageSummary"));
}
if (!shouldIgnore) {
for (var thread : listOrEmpty(getThreads(responseContext, loggedInUserName))) {
// Don't create a thread if there is no message
if (!thread.getMessage().isEmpty()) {
EntityInterface entity;
// In case of ENTITY_FIELDS_CHANGED entity from responseContext will be a ChangeEvent
if (responseContext.getEntity() instanceof ChangeEvent) {
ChangeEvent change = (ChangeEvent) responseContext.getEntity();
entity = (EntityInterface) change.getEntity();
} else {
entity = (EntityInterface) responseContext.getEntity();
}
EntityReference entityReference = entity.getEntityReference();
EntityReference owner;
try {
owner = Entity.getOwner(entityReference);
} catch (Exception exception) {
owner = null;
}
EntityLink about = EntityLink.parse(thread.getAbout());
feedDao.create(thread, entity.getId(), owner, about);
String jsonThread = mapper.writeValueAsString(thread);
WebSocketManager.getInstance().broadCastMessageToAll(WebSocketManager.feedBroadcastChannel, jsonThread);
}
EntityReference entityReference = entity.getEntityReference();
EntityReference owner;
try {
owner = Entity.getOwner(entityReference);
} catch (Exception exception) {
owner = null;
}
EntityLink about = EntityLink.parse(thread.getAbout());
feedDao.create(thread, entity.getId(), owner, about);
String jsonThread = mapper.writeValueAsString(thread);
WebSocketManager.getInstance().broadCastMessageToAll(WebSocketManager.feedBroadcastChannel, jsonThread);
}
}
}