mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-01-26 13:46:19 +00:00
[AB-60] added java doc for statistic module, added feature mode limitations to emote listener, replaced redundant Embeddable with ServerSpecificId
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.dv8tion.jda.api.entities.Emote;
|
||||
import net.dv8tion.jda.api.events.emote.EmoteAddedEvent;
|
||||
@@ -30,6 +34,15 @@ public class EmoteListener extends ListenerAdapter {
|
||||
@Autowired
|
||||
private List<EmoteUpdatedListener> updatedListeners;
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagService featureFlagService;
|
||||
|
||||
@Autowired
|
||||
private FeatureConfigService featureConfigService;
|
||||
|
||||
@Autowired
|
||||
private FeatureModeService featureModeService;
|
||||
|
||||
@Autowired
|
||||
@Lazy
|
||||
private EmoteListener self;
|
||||
@@ -37,9 +50,16 @@ public class EmoteListener extends ListenerAdapter {
|
||||
@Override
|
||||
@Transactional
|
||||
public void onEmoteAdded(@NotNull EmoteAddedEvent event) {
|
||||
createdListeners.forEach(listener ->
|
||||
self.executeCreatedListener(listener, event.getEmote())
|
||||
);
|
||||
createdListeners.forEach(listener -> {
|
||||
FeatureConfig feature = featureConfigService.getFeatureDisplayForFeature(listener.getFeature());
|
||||
if (!featureFlagService.isFeatureEnabled(feature, event.getGuild().getIdLong())) {
|
||||
return;
|
||||
}
|
||||
if(!featureModeService.necessaryFeatureModesMet(listener, event.getGuild().getIdLong())) {
|
||||
return;
|
||||
}
|
||||
self.executeCreatedListener(listener, event.getEmote());
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
@@ -49,9 +69,16 @@ public class EmoteListener extends ListenerAdapter {
|
||||
|
||||
@Override
|
||||
public void onEmoteRemoved(@NotNull EmoteRemovedEvent event) {
|
||||
deletedListeners.forEach(listener ->
|
||||
self.executeDeletedListener(listener, event.getEmote())
|
||||
);
|
||||
deletedListeners.forEach(listener -> {
|
||||
FeatureConfig feature = featureConfigService.getFeatureDisplayForFeature(listener.getFeature());
|
||||
if (!featureFlagService.isFeatureEnabled(feature, event.getGuild().getIdLong())) {
|
||||
return;
|
||||
}
|
||||
if(!featureModeService.necessaryFeatureModesMet(listener, event.getGuild().getIdLong())) {
|
||||
return;
|
||||
}
|
||||
self.executeDeletedListener(listener, event.getEmote());
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
@@ -61,9 +88,16 @@ public class EmoteListener extends ListenerAdapter {
|
||||
|
||||
@Override
|
||||
public void onEmoteUpdateName(@NotNull EmoteUpdateNameEvent event) {
|
||||
updatedListeners.forEach(emoteUpdatedListener ->
|
||||
self.executeUpdatedListener(emoteUpdatedListener, event.getEmote(), event.getOldName(), event.getNewName())
|
||||
);
|
||||
updatedListeners.forEach(emoteUpdatedListener -> {
|
||||
FeatureConfig feature = featureConfigService.getFeatureDisplayForFeature(emoteUpdatedListener.getFeature());
|
||||
if (!featureFlagService.isFeatureEnabled(feature, event.getGuild().getIdLong())) {
|
||||
return;
|
||||
}
|
||||
if(!featureModeService.necessaryFeatureModesMet(emoteUpdatedListener, event.getGuild().getIdLong())) {
|
||||
return;
|
||||
}
|
||||
self.executeUpdatedListener(emoteUpdatedListener, event.getEmote(), event.getOldName(), event.getNewName());
|
||||
});
|
||||
}
|
||||
|
||||
@Transactional(propagation = Propagation.REQUIRES_NEW)
|
||||
|
||||
@@ -6,6 +6,7 @@ import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.exception.FeatureModeNotFoundException;
|
||||
import dev.sheldan.abstracto.core.listener.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.database.*;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.FeatureModeDisplay;
|
||||
import dev.sheldan.abstracto.core.service.management.DefaultFeatureModeManagement;
|
||||
@@ -174,5 +175,20 @@ public class FeatureModeServiceBean implements FeatureModeService {
|
||||
return combineFeatureModesWithDefault(server, allDefaultModes, allModesFromServer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean necessaryFeatureModesMet(FeatureEnum featureEnum, List<FeatureMode> featureModes, Long serverId) {
|
||||
for (FeatureMode featureMode : featureModes) {
|
||||
if(featureModeActive(featureEnum, serverId, featureMode)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return featureModes.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean necessaryFeatureModesMet(FeatureAware featureAware, Long serverId) {
|
||||
return necessaryFeatureModesMet(featureAware.getFeature(), featureAware.getFeatureModeLimitations(), serverId);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
import dev.sheldan.abstracto.core.listener.FeatureAware;
|
||||
import dev.sheldan.abstracto.core.models.database.AFeature;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
import dev.sheldan.abstracto.core.models.template.commands.FeatureModeDisplay;
|
||||
@@ -20,4 +21,6 @@ public interface FeatureModeService {
|
||||
List<FeatureMode> getAllAvailableFeatureModes();
|
||||
List<FeatureModeDisplay> getEffectiveFeatureModes(AServer server);
|
||||
List<FeatureModeDisplay> getEffectiveFeatureModes(AServer server, AFeature feature);
|
||||
boolean necessaryFeatureModesMet(FeatureEnum featureEnum, List<FeatureMode> featureModes, Long serverId);
|
||||
boolean necessaryFeatureModesMet(FeatureAware featureAware, Long serverId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user