package com.mik.tcpsocket;

import com.getcapacitor.NativePlugin;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;

@NativePlugin()
public class TcpSocketPlugin extends Plugin {
    private Socket socket;
    private PrintWriter printWriter;

    @PluginMethod()
    public void connect(PluginCall call) {
        String ip = call.getString("ip");
        Integer port = call.getInt("port");

        try {
            socket = new Socket(ip, port);

            printWriter = new PrintWriter(
                    new OutputStreamWriter(
                            socket.getOutputStream()));
            printWriter.flush();

            call.success();
        } catch (IOException e) {
            e.printStackTrace();
            call.error("Failed to open!");
        }
    }

    @PluginMethod()
    public void write(PluginCall call) {
        printWriter.print(call.getString("value"));
    }

    @PluginMethod()
    public void close(PluginCall call) {
        try {
            printWriter.flush();
            socket.close();

            call.success();
        } catch (IOException e) {
            e.printStackTrace();
            call.error("Failed to close socket");
        }
    }
}
