From 9034968868a22f611e85ddf71cc75b420f78fd53 Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Fri, 1 Mar 2024 23:13:48 +0100 Subject: [PATCH] [AB-xxx] only executing level actions if the user changes level --- .../experience/service/AUserExperienceServiceBean.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/AUserExperienceServiceBean.java b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/AUserExperienceServiceBean.java index 478ca2b74..9fa2bd161 100644 --- a/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/AUserExperienceServiceBean.java +++ b/abstracto-application/abstracto-modules/experience-tracking/experience-tracking-impl/src/main/java/dev/sheldan/abstracto/experience/service/AUserExperienceServiceBean.java @@ -336,7 +336,8 @@ public class AUserExperienceServiceBean implements AUserExperienceService { RoleCalculationResult result = RoleCalculationResult .builder() .build(); - if(!Objects.equals(newLevel.getLevel(), aUserExperience.getCurrentLevel().getLevel())) { + boolean userChangesLevel = !Objects.equals(newLevel.getLevel(), aUserExperience.getCurrentLevel().getLevel()); + if(userChangesLevel) { Integer oldLevel = aUserExperience.getCurrentLevel() != null ? aUserExperience.getCurrentLevel().getLevel() : 0; log.info("User {} in server {} changed level. New {}, Old {}.", member.getIdLong(), member.getGuild().getIdLong(), newLevel.getLevel(), @@ -371,7 +372,7 @@ public class AUserExperienceServiceBean implements AUserExperienceService { aUserExperience.setCurrentExperienceRole(calculatedNewRole); } aUserExperience.setMessageCount(aUserExperience.getMessageCount() + 1L); - if(featureModeService.featureModeActive(ExperienceFeatureDefinition.EXPERIENCE, server, ExperienceFeatureMode.LEVEL_ACTION)) { + if(userChangesLevel && featureModeService.featureModeActive(ExperienceFeatureDefinition.EXPERIENCE, server, ExperienceFeatureMode.LEVEL_ACTION)) { levelActionService.applyLevelActionsToUser(aUserExperience) .thenAccept(unused -> { log.info("Executed level actions for user {}.", userInServerId);