mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-27 06:04:54 +00:00
[AB-305] fixing not correctly persisting removal of an assignable role from an assignable role place
This commit is contained in:
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -6,6 +6,7 @@ import dev.sheldan.abstracto.assignableroles.model.database.AssignedRoleUser;
|
||||
import dev.sheldan.abstracto.core.models.ServerUser;
|
||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
@@ -25,6 +26,8 @@ public interface AssignedRoleUserManagementService {
|
||||
* @param aUserInAServer The {@link AUserInAServer user} from whom the {@link AssignableRole role} should be removed
|
||||
*/
|
||||
void removeAssignedRoleFromUser(AssignableRole assignableRole, AUserInAServer aUserInAServer);
|
||||
void removeAssignedRoleFromUsers(AssignableRole assignableRole, List<AssignedRoleUser> users);
|
||||
void removeAssignedRoleFromUsers(AssignableRole assignableRole);
|
||||
|
||||
/**
|
||||
* Removes the given {@link AssignableRole assignableFrom} from the given {@link AssignedRoleUser user}.
|
||||
|
||||
Reference in New Issue
Block a user