mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-30 15:11:38 +00:00
added a condition to check for the correct feature mode
merged mod mail logging back into the mod mail feature and set it up as a mode
This commit is contained in:
@@ -22,9 +22,12 @@ public abstract class AbstractConditionableCommand implements ConditionalCommand
|
||||
@Autowired
|
||||
protected ImmuneUserCondition immuneUserCondition;
|
||||
|
||||
@Autowired
|
||||
private FeatureModeCondition featureModeCondition;
|
||||
|
||||
|
||||
@Override
|
||||
public List<CommandCondition> getConditions() {
|
||||
return new ArrayList<>(Arrays.asList(featureEnabledCondition, commandDisabledCondition, commandDisallowedCondition));
|
||||
return new ArrayList<>(Arrays.asList(featureEnabledCondition, commandDisabledCondition, commandDisallowedCondition, featureModeCondition));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
package dev.sheldan.abstracto.core.command.condition;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.command.execution.CommandContext;
|
||||
import dev.sheldan.abstracto.core.command.models.IncorrectFeatureModeMessage;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.models.database.AFeatureMode;
|
||||
import dev.sheldan.abstracto.core.service.FeatureConfigService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureFlagService;
|
||||
import dev.sheldan.abstracto.core.service.FeatureModeService;
|
||||
import dev.sheldan.abstracto.templating.service.TemplateService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class FeatureModeCondition implements CommandCondition {
|
||||
|
||||
@Autowired
|
||||
private TemplateService templateService;
|
||||
|
||||
@Autowired
|
||||
private FeatureConfigService featureConfigService;
|
||||
|
||||
@Autowired
|
||||
private FeatureFlagService featureFlagService;
|
||||
|
||||
@Autowired
|
||||
private FeatureModeService modeService;
|
||||
|
||||
@Override
|
||||
public ConditionResult shouldExecute(CommandContext context, Command command) {
|
||||
String reason = "";
|
||||
boolean featureModeFits = true;
|
||||
if(!command.getFeatureModeLimitations().isEmpty()){
|
||||
FeatureEnum feature = command.getFeature();
|
||||
if(feature != null) {
|
||||
AFeatureMode featureMode = modeService.getFeatureMode(feature, context.getUserInitiatedContext().getServer());
|
||||
featureModeFits = command.getFeatureModeLimitations().stream().anyMatch(featureMode1 -> featureMode1.getKey().equalsIgnoreCase(featureMode.getMode()));
|
||||
if(!featureModeFits) {
|
||||
IncorrectFeatureModeMessage featureDisabledMessage = IncorrectFeatureModeMessage
|
||||
.builder()
|
||||
.featureConfig(featureConfigService.getFeatureDisplayForFeature(feature))
|
||||
.command(command)
|
||||
.build();
|
||||
reason = templateService.renderTemplate("feature_mode_not_correct_message", featureDisabledMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ConditionResult.builder().reason(reason).result(featureModeFits).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package dev.sheldan.abstracto.core.command.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.command.Command;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@Builder
|
||||
public class IncorrectFeatureModeMessage {
|
||||
private FeatureConfig featureConfig;
|
||||
private Command command;
|
||||
}
|
||||
@@ -1,7 +1,12 @@
|
||||
package dev.sheldan.abstracto.core.listener;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.config.FeatureMode;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public interface FeatureAware {
|
||||
FeatureEnum getFeature();
|
||||
default List<FeatureMode> getFeatureModeLimitations() { return Collections.emptyList();}
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ public class AFeatureMode {
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
@Getter
|
||||
private String mode;
|
||||
|
||||
@Column(name = "created")
|
||||
|
||||
@@ -23,4 +23,7 @@ public interface FeatureModeService {
|
||||
AFeatureMode createMode(FeatureEnum featureEnum, AServer server, FeatureMode mode);
|
||||
AFeatureMode createMode(AFeature feature, AServer server, FeatureMode mode);
|
||||
AFeatureMode createMode(AFeatureFlag featureFlag, FeatureMode mode);
|
||||
|
||||
AFeatureMode getFeatureMode(FeatureEnum featureEnum, AServer server);
|
||||
AFeatureMode getFeatureMode(AFeature feature, AServer server);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user