From 6fea807991eec3376c2ccdb1d1f8a50a2c2ebd5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Spie=C3=9F?= Date: Mon, 26 Feb 2024 18:51:30 +0100 Subject: [PATCH] Allow map and delay operators to set reason --- .../restaction/AuditableRestAction.java | 96 ++++++++++++++++++- .../operator/RestActionOperator.java | 16 +++- 2 files changed, 108 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/dv8tion/jda/api/requests/restaction/AuditableRestAction.java b/src/main/java/net/dv8tion/jda/api/requests/restaction/AuditableRestAction.java index f595ffa49c..693deb391f 100644 --- a/src/main/java/net/dv8tion/jda/api/requests/restaction/AuditableRestAction.java +++ b/src/main/java/net/dv8tion/jda/api/requests/restaction/AuditableRestAction.java @@ -21,11 +21,14 @@ import net.dv8tion.jda.api.entities.UserSnowflake; import net.dv8tion.jda.api.requests.RestAction; import net.dv8tion.jda.api.requests.restaction.pagination.AuditLogPaginationAction; +import net.dv8tion.jda.api.utils.Result; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.time.Duration; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import java.util.function.BooleanSupplier; +import java.util.function.*; /** * Extension of RestAction to allow setting a reason. @@ -94,4 +97,95 @@ default AuditableRestAction deadline(long timestamp) { return (AuditableRestAction) RestAction.super.deadline(timestamp); } + + @Nonnull + @Override + default AuditableRestAction map(@Nonnull Function map) + { + return (AuditableRestAction) RestAction.super.map(map); + } + + @Nonnull + @Override + default AuditableRestAction flatMap(@Nonnull Function> flatMap) + { + return (AuditableRestAction) RestAction.super.flatMap(flatMap); + } + + @Nonnull + @Override + default AuditableRestAction flatMap(@Nullable Predicate condition, @Nonnull Function> flatMap) + { + return (AuditableRestAction) RestAction.super.flatMap(condition, flatMap); + } + + @Nonnull + @Override + default AuditableRestAction> mapToResult() + { + return (AuditableRestAction>) RestAction.super.mapToResult(); + } + + @Nonnull + @Override + default AuditableRestAction onSuccess(@Nonnull Consumer consumer) + { + return (AuditableRestAction) RestAction.super.onSuccess(consumer); + } + + @Nonnull + @Override + default AuditableRestAction onErrorMap(@Nonnull Function map) + { + return (AuditableRestAction) RestAction.super.onErrorMap(map); + } + + @Nonnull + @Override + default AuditableRestAction onErrorMap(@Nullable Predicate condition, @Nonnull Function map) + { + return (AuditableRestAction) RestAction.super.onErrorMap(condition, map); + } + + @Nonnull + @Override + default AuditableRestAction onErrorFlatMap(@Nonnull Function> map) + { + return (AuditableRestAction) RestAction.super.onErrorFlatMap(map); + } + + @Nonnull + @Override + default AuditableRestAction onErrorFlatMap(@Nullable Predicate condition, @Nonnull Function> map) + { + return (AuditableRestAction) RestAction.super.onErrorFlatMap(condition, map); + } + + @Nonnull + @Override + default AuditableRestAction delay(@Nonnull Duration duration) + { + return (AuditableRestAction) RestAction.super.delay(duration); + } + + @Nonnull + @Override + default AuditableRestAction delay(@Nonnull Duration duration, @Nullable ScheduledExecutorService scheduler) + { + return (AuditableRestAction) RestAction.super.delay(duration, scheduler); + } + + @Nonnull + @Override + default AuditableRestAction delay(long delay, @Nonnull TimeUnit unit) + { + return (AuditableRestAction) RestAction.super.delay(delay, unit); + } + + @Nonnull + @Override + default AuditableRestAction delay(long delay, @Nonnull TimeUnit unit, @Nullable ScheduledExecutorService scheduler) + { + return (AuditableRestAction) RestAction.super.delay(delay, unit, scheduler); + } } diff --git a/src/main/java/net/dv8tion/jda/internal/requests/restaction/operator/RestActionOperator.java b/src/main/java/net/dv8tion/jda/internal/requests/restaction/operator/RestActionOperator.java index 83099c5c18..25f7228df2 100644 --- a/src/main/java/net/dv8tion/jda/internal/requests/restaction/operator/RestActionOperator.java +++ b/src/main/java/net/dv8tion/jda/internal/requests/restaction/operator/RestActionOperator.java @@ -19,13 +19,14 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.exceptions.ContextException; import net.dv8tion.jda.api.requests.RestAction; +import net.dv8tion.jda.api.requests.restaction.AuditableRestAction; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.function.BooleanSupplier; import java.util.function.Consumer; -public abstract class RestActionOperator implements RestAction +public abstract class RestActionOperator implements AuditableRestAction { protected BooleanSupplier check; protected long deadline = -1; @@ -70,6 +71,15 @@ protected void handle(RestAction action, Consumer failure, }, catcher); } + @Nonnull + @Override + public AuditableRestAction reason(@Nullable String reason) + { + if (action instanceof AuditableRestAction) + ((AuditableRestAction) action).reason(reason); + return this; + } + @Nonnull @Override public JDA getJDA() @@ -79,7 +89,7 @@ public JDA getJDA() @Nonnull @Override - public RestAction setCheck(@Nullable BooleanSupplier checks) + public AuditableRestAction setCheck(@Nullable BooleanSupplier checks) { this.check = checks; action.setCheck(checks); @@ -95,7 +105,7 @@ public BooleanSupplier getCheck() @Nonnull @Override - public RestAction deadline(long timestamp) + public AuditableRestAction deadline(long timestamp) { this.deadline = timestamp; action.deadline(timestamp);