const webSocket = new WebSocket('ws://localhost:3006')

const waitForOpenConnection = () => {
    return new Promise((resolve, reject) => {
        const maxNumberOfAttempts = 10
        const intervalTime = 200 //ms

        let currentAttempt = 0
        const interval = setInterval(() => {
            if (currentAttempt > maxNumberOfAttempts - 1) {
                clearInterval(interval)
                reject(new Error('Maximum number of attempts exceeded'))
            } else if (webSocket.readyState === webSocket.OPEN) {
                clearInterval(interval)
                resolve()
            }
            currentAttempt++
        }, intervalTime)
    })
}

async function send() {
    await waitForOpenConnection();
    webSocket.send({})
}

webSocket.onmessage = evt => {
    const root = document.getElementById("root");

    const magic = JSON.parse(evt.data)

    root.innerHTML = ''

    magic
    .map(x => parseInt(x.join(''), 2))
    .forEach(x => {
        const img = document.createElement("img")

        img.setAttribute("src", `./public/${x}.png`)
        img.setAttribute("height", "80")
        img.setAttribute("width", "80")

        root.append(img)
    })
}

async function getHarvest() {
    await send()
}
