package org.dimdev.vanillafix.bugs.mixins.client;

import io.netty.channel.Channel;
import net.minecraft.network.EnumConnectionState;
import net.minecraft.network.NetworkManager;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(NetworkManager.class)
public final class MixinNetworkManager {

    @Shadow private Channel channel;

    /**
     * @reason forces reading of the channel when we enable autoread
     * Fixes issue with stuck "Logging in..." screen
     */
    @Inject(method = "setConnectionState", at = @At(value = "INVOKE", target = "Lio/netty/channel/ChannelConfig;setAutoRead(Z)Lio/netty/channel/ChannelConfig;", shift = At.Shift.AFTER))
    private void onAutoReadEnabled(EnumConnectionState newState, CallbackInfo ci) {
        this.channel.read();
    }
}