[AB-305] fixing not correctly persisting removal of an assignable role from an assignable role place

This commit is contained in:
Sheldan
2021-07-21 00:46:11 +02:00
parent 92a8b5ba64
commit bc1eb0b55f
4 changed files with 24 additions and 1 deletions

View File

@@ -83,6 +83,9 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
@Autowired
private AssignableRoleConditionService assignableRoleConditionService;
@Autowired
private AssignedRoleUserManagementServiceBean assignedRoleUserManagementServiceBean;
@Autowired
private ServerManagementService serverManagementService;
@@ -122,7 +125,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
String emoteMarkdown = fakeEmote != null ? fakeEmote.getEmoteRepr() : null;
if (assignableRolePlace.getMessageId() != null) {
log.debug("Assignable role place {} has already message post with ID {} - updating.", assignableRolePlace.getId(), assignableRolePlace.getMessageId());
return componentService.addButtonToMessage(assignableRolePlace.getMessageId(), textChannel, buttonId, description, emoteMarkdown, ButtonStyle.PRIMARY)
return componentService.addButtonToMessage(assignableRolePlace.getMessageId(), textChannel, buttonId, description, emoteMarkdown, ButtonStyle.SECONDARY)
.thenAccept(message -> self.persistAssignableRoleAddition(placeId, role, description, fakeEmote, buttonId));
} else {
log.info("Assignable role place {} is not yet setup - only adding role to the database.", assignableRolePlace.getId());
@@ -149,6 +152,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
for (AssignableRole assignableRole : assignableRolePlace.getAssignableRoles()) {
if (assignableRole.getRole().getId().equals(role.getId())) {
log.info("Found {} role to be removed - removing button from place.", role.getId());
// TODO we might want to actually remove all the assigned roles as well
return removeButtonFromAssignableRolePlace(assignableRole, assignableRolePlace).thenAccept(aVoid ->
self.deleteAssignableRoleFromPlace(assignableRolePlaceId, assignableRole.getId())
);
@@ -179,6 +183,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
.findAny();
roleToRemoveOptional.ifPresent(assignableRole -> {
ComponentPayload componentPayload = assignableRole.getComponentPayload();
assignedRoleUserManagementServiceBean.removeAssignedRoleFromUsers(assignableRole);
assignableRoleManagementServiceBean.deleteAssignableRole(assignableRole);
componentPayloadManagementService.deletePayload(componentPayload);
});

View File

@@ -62,6 +62,8 @@ public class AssignableRoleManagementServiceBean implements AssignableRoleManage
@Override
public void deleteAssignableRole(AssignableRole assignableRole) {
assignableRole.getAssignablePlace().getAssignableRoles().remove(assignableRole);
assignableRole.setAssignablePlace(null);
repository.delete(assignableRole);
}

View File

@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Optional;
@Component
@@ -43,6 +44,18 @@ public class AssignedRoleUserManagementServiceBean implements AssignedRoleUserMa
removeAssignedRoleFromUser(assignableRole, user);
}
@Override
public void removeAssignedRoleFromUsers(AssignableRole assignableRole, List<AssignedRoleUser> users) {
log.info("Clearing all assignable role {} for {} users.", assignableRole.getId(), users.size());
assignableRole.getAssignedUsers().removeAll(users);
users.forEach(roleUser -> roleUser.getRoles().remove(assignableRole));
}
@Override
public void removeAssignedRoleFromUsers(AssignableRole assignableRole) {
removeAssignedRoleFromUsers(assignableRole, assignableRole.getAssignedUsers());
}
@Override
public void removeAssignedRoleFromUser(AssignableRole assignableRole, AssignedRoleUser user) {
assignableRole.getAssignedUsers().remove(user);