[AB-99] changing the way roles are added/removed for experience system, as discord has a race condition in which quick additions/removals cause unexpected problems

This commit is contained in:
Sheldan
2023-09-02 22:22:33 +02:00
parent 2396bf300b
commit f3144eb094
3 changed files with 40 additions and 12 deletions

View File

@@ -85,6 +85,23 @@ public class RoleServiceBean implements RoleService {
return addRoleToMemberAsync(member.getGuild(), member.getIdLong(), role);
}
@Override
public CompletableFuture<Void> updateRolesIds(Member member, List<Long> rolesToRemove, List<Long> rolesToAdd) {
List<Role> rolesObjToRemove = rolesToRemove
.stream().map(aLong -> member.getGuild().getRoleById(aLong))
.toList();
List<Role> rolesObjToAdd = rolesToAdd
.stream().map(aLong -> member.getGuild().getRoleById(aLong))
.toList();
return updateRolesObj(member, rolesObjToRemove, rolesObjToAdd);
}
@Override
public CompletableFuture<Void> updateRolesObj(Member member, List<Role> rolesToRemove, List<Role> rolesToAdd) {
return member.getGuild().modifyMemberRoles(member, rolesToAdd, rolesToRemove).submit();
}
@Override
public CompletableFuture<Void> addRoleToMemberAsync(Member member, Role role) {
return addRoleToMemberAsync(member.getGuild(), member.getIdLong(), role);

View File

@@ -16,6 +16,8 @@ public interface RoleService {
void addRoleToMember(AUserInAServer aUserInAServer, ARole role);
CompletableFuture<Void> addRoleToUserAsync(AUserInAServer aUserInAServer, ARole role);
CompletableFuture<Void> addRoleToMemberAsync(Member member, Long roleId);
CompletableFuture<Void> updateRolesIds(Member member, List<Long> rolesToRemove, List<Long> rolesToAdd);
CompletableFuture<Void> updateRolesObj(Member member, List<Role> rolesToRemove, List<Role> rolesToAdd);
CompletableFuture<Void> addRoleToMemberAsync(Member member, Role role);
void addRoleToMember(Member member, ARole role);
CompletableFuture<Void> addRoleToMemberAsync(Member member, ARole role);