// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.server.core.modules.accesscontrol.ban;

import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import com.google.gson.JsonParseException;
import java.time.Instant;
import java.util.UUID;
import javax.annotation.Nonnull;
import com.google.gson.JsonObject;

public class InfiniteBan extends AbstractBan
{
    @Nonnull
    public static InfiniteBan fromJsonObject(@Nonnull final JsonObject object) throws JsonParseException {
        try {
            final UUID target = UUID.fromString(object.get("target").getAsString());
            final UUID by = UUID.fromString(object.get("by").getAsString());
            final Instant timestamp = Instant.ofEpochMilli(object.get("timestamp").getAsLong());
            String reason = null;
            if (object.has("reason")) {
                reason = object.get("reason").getAsString();
            }
            return new InfiniteBan(target, by, timestamp, reason);
        }
        catch (final Throwable throwable) {
            throw new JsonParseException(throwable);
        }
    }
    
    public InfiniteBan(final UUID target, final UUID by, final Instant timestamp, final String reason) {
        super(target, by, timestamp, reason);
    }
    
    @Override
    public boolean isInEffect() {
        return true;
    }
    
    @Nonnull
    @Override
    public String getType() {
        return "infinite";
    }
    
    @Nonnull
    @Override
    public CompletableFuture<Optional<String>> getDisconnectReason(final UUID uuid) {
        final StringBuilder message = new StringBuilder("You are permanently banned!");
        this.reason.ifPresent(s -> message.append(" Reason: ").append(s));
        return CompletableFuture.completedFuture(Optional.of(message.toString()));
    }
}
