added report reminder on admin join
This commit is contained in:
@@ -23,4 +23,8 @@ public class CraftAttackReportRepository extends ReportRepository {
|
|||||||
ReportUrl.class
|
ReportUrl.class
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ReqResp<AllReports> queryAllReports() {
|
||||||
|
return this.get("reports", AllReports.class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,11 @@ public abstract class ReportRepository extends HttpRepository {
|
|||||||
public record ReportUrl(@NotNull String url) {
|
public record ReportUrl(@NotNull String url) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum Status {
|
||||||
|
open,
|
||||||
|
closed,
|
||||||
|
}
|
||||||
|
|
||||||
public record PlayerReports(
|
public record PlayerReports(
|
||||||
List<Report> from_self,
|
List<Report> from_self,
|
||||||
List<Report> to_self
|
List<Report> to_self
|
||||||
@@ -31,11 +36,17 @@ public abstract class ReportRepository extends HttpRepository {
|
|||||||
@Nullable Long created,
|
@Nullable Long created,
|
||||||
@Nullable Status status,
|
@Nullable Status status,
|
||||||
@NotNull String url
|
@NotNull String url
|
||||||
) {
|
) { }
|
||||||
public enum Status {
|
}
|
||||||
open,
|
|
||||||
closed,
|
public record AllReports(List<Report> reports) {
|
||||||
}
|
public record Report(
|
||||||
}
|
@NotNull UUID reporter,
|
||||||
|
@Nullable UUID reported,
|
||||||
|
@NotNull String reason,
|
||||||
|
@Nullable Long created,
|
||||||
|
@Nullable Status status,
|
||||||
|
@NotNull String url
|
||||||
|
) { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report;
|
package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report;
|
||||||
|
|
||||||
import eu.mhsl.craftattack.spawn.common.api.repositories.ReportRepository;
|
import eu.mhsl.craftattack.spawn.common.api.repositories.ReportRepository;
|
||||||
|
import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report.listeners.ReportCreatedListener;
|
||||||
|
import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report.listeners.ReportJoinListener;
|
||||||
import eu.mhsl.craftattack.spawn.core.Main;
|
import eu.mhsl.craftattack.spawn.core.Main;
|
||||||
import eu.mhsl.craftattack.spawn.core.api.client.ReqResp;
|
import eu.mhsl.craftattack.spawn.core.api.client.ReqResp;
|
||||||
import eu.mhsl.craftattack.spawn.common.api.repositories.CraftAttackReportRepository;
|
import eu.mhsl.craftattack.spawn.common.api.repositories.CraftAttackReportRepository;
|
||||||
@@ -133,7 +135,7 @@ public class Report extends Appliance {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Function<List<ReportRepository.PlayerReports.Report>, List<ReportRepository.PlayerReports.Report>> filterClosed = reports -> reports.stream()
|
Function<List<ReportRepository.PlayerReports.Report>, List<ReportRepository.PlayerReports.Report>> filterClosed = reports -> reports.stream()
|
||||||
.filter(report -> Objects.equals(report.status(), ReportRepository.PlayerReports.Report.Status.closed))
|
.filter(report -> Objects.equals(report.status(), ReportRepository.Status.closed))
|
||||||
.toList();
|
.toList();
|
||||||
|
|
||||||
List<ReportRepository.PlayerReports.Report> reportsToOthers = filterClosed.apply(userReports.data().from_self()).reversed();
|
List<ReportRepository.PlayerReports.Report> reportsToOthers = filterClosed.apply(userReports.data().from_self()).reversed();
|
||||||
@@ -179,10 +181,32 @@ public class Report extends Appliance {
|
|||||||
issuer.sendMessage(component.build());
|
issuer.sendMessage(component.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sendReportsInfo(Player player) {
|
||||||
|
ReqResp<ReportRepository.AllReports> allReportsResponse = this.queryRepository(CraftAttackReportRepository.class).queryAllReports();
|
||||||
|
|
||||||
|
if(allReportsResponse.status() != 200) {
|
||||||
|
Main.logger().warning("Failed to request Reports: " + allReportsResponse.status());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ReportRepository.AllReports.Report> allOpenReports = allReportsResponse.data().reports().stream()
|
||||||
|
.filter(report -> report.status() == ReportRepository.Status.open)
|
||||||
|
.toList();
|
||||||
|
|
||||||
|
if(allOpenReports.isEmpty()) return;
|
||||||
|
|
||||||
|
player.sendMessage(
|
||||||
|
Component.text("Hey, es gibt noch ", NamedTextColor.GOLD)
|
||||||
|
.append(Component.text(allOpenReports.size(), NamedTextColor.RED))
|
||||||
|
.append(Component.text(" unbearbeitete Reports!", NamedTextColor.GOLD))
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected @NotNull List<Listener> listeners() {
|
protected @NotNull List<Listener> listeners() {
|
||||||
return List.of(
|
return List.of(
|
||||||
new ReportCreatedListener()
|
new ReportCreatedListener(),
|
||||||
|
new ReportJoinListener()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report;
|
package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report.listeners;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report.Report;
|
||||||
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
|
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
|
||||||
import eu.mhsl.craftattack.spawn.core.event.ReportCreatedEvent;
|
import eu.mhsl.craftattack.spawn.core.event.ReportCreatedEvent;
|
||||||
import net.kyori.adventure.text.Component;
|
import net.kyori.adventure.text.Component;
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report.listeners;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.common.appliances.metaGameplay.report.Report;
|
||||||
|
import eu.mhsl.craftattack.spawn.core.appliance.ApplianceListener;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
|
public class ReportJoinListener extends ApplianceListener<Report> {
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
|
if(!event.getPlayer().hasPermission("admin")) return;
|
||||||
|
this.getAppliance().sendReportsInfo(event.getPlayer());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user