mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-09-13 10:26:58 +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
|
@Autowired
|
||||||
private AssignableRoleConditionService assignableRoleConditionService;
|
private AssignableRoleConditionService assignableRoleConditionService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AssignedRoleUserManagementServiceBean assignedRoleUserManagementServiceBean;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ServerManagementService serverManagementService;
|
private ServerManagementService serverManagementService;
|
||||||
|
|
||||||
@@ -122,7 +125,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
String emoteMarkdown = fakeEmote != null ? fakeEmote.getEmoteRepr() : null;
|
String emoteMarkdown = fakeEmote != null ? fakeEmote.getEmoteRepr() : null;
|
||||||
if (assignableRolePlace.getMessageId() != null) {
|
if (assignableRolePlace.getMessageId() != null) {
|
||||||
log.debug("Assignable role place {} has already message post with ID {} - updating.", assignableRolePlace.getId(), assignableRolePlace.getMessageId());
|
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));
|
.thenAccept(message -> self.persistAssignableRoleAddition(placeId, role, description, fakeEmote, buttonId));
|
||||||
} else {
|
} else {
|
||||||
log.info("Assignable role place {} is not yet setup - only adding role to the database.", assignableRolePlace.getId());
|
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()) {
|
for (AssignableRole assignableRole : assignableRolePlace.getAssignableRoles()) {
|
||||||
if (assignableRole.getRole().getId().equals(role.getId())) {
|
if (assignableRole.getRole().getId().equals(role.getId())) {
|
||||||
log.info("Found {} role to be removed - removing button from place.", 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 ->
|
return removeButtonFromAssignableRolePlace(assignableRole, assignableRolePlace).thenAccept(aVoid ->
|
||||||
self.deleteAssignableRoleFromPlace(assignableRolePlaceId, assignableRole.getId())
|
self.deleteAssignableRoleFromPlace(assignableRolePlaceId, assignableRole.getId())
|
||||||
);
|
);
|
||||||
@@ -179,6 +183,7 @@ public class AssignableRolePlaceServiceBean implements AssignableRolePlaceServic
|
|||||||
.findAny();
|
.findAny();
|
||||||
roleToRemoveOptional.ifPresent(assignableRole -> {
|
roleToRemoveOptional.ifPresent(assignableRole -> {
|
||||||
ComponentPayload componentPayload = assignableRole.getComponentPayload();
|
ComponentPayload componentPayload = assignableRole.getComponentPayload();
|
||||||
|
assignedRoleUserManagementServiceBean.removeAssignedRoleFromUsers(assignableRole);
|
||||||
assignableRoleManagementServiceBean.deleteAssignableRole(assignableRole);
|
assignableRoleManagementServiceBean.deleteAssignableRole(assignableRole);
|
||||||
componentPayloadManagementService.deletePayload(componentPayload);
|
componentPayloadManagementService.deletePayload(componentPayload);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ public class AssignableRoleManagementServiceBean implements AssignableRoleManage
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteAssignableRole(AssignableRole assignableRole) {
|
public void deleteAssignableRole(AssignableRole assignableRole) {
|
||||||
|
assignableRole.getAssignablePlace().getAssignableRoles().remove(assignableRole);
|
||||||
|
assignableRole.setAssignablePlace(null);
|
||||||
repository.delete(assignableRole);
|
repository.delete(assignableRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@@ -43,6 +44,18 @@ public class AssignedRoleUserManagementServiceBean implements AssignedRoleUserMa
|
|||||||
removeAssignedRoleFromUser(assignableRole, user);
|
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
|
@Override
|
||||||
public void removeAssignedRoleFromUser(AssignableRole assignableRole, AssignedRoleUser user) {
|
public void removeAssignedRoleFromUser(AssignableRole assignableRole, AssignedRoleUser user) {
|
||||||
assignableRole.getAssignedUsers().remove(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.ServerUser;
|
||||||
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Optional;
|
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
|
* @param aUserInAServer The {@link AUserInAServer user} from whom the {@link AssignableRole role} should be removed
|
||||||
*/
|
*/
|
||||||
void removeAssignedRoleFromUser(AssignableRole assignableRole, AUserInAServer aUserInAServer);
|
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}.
|
* Removes the given {@link AssignableRole assignableFrom} from the given {@link AssignedRoleUser user}.
|
||||||
|
|||||||
Reference in New Issue
Block a user