Files
goTorrent/public/static/js/includes.go

102 lines
3.2 KiB
Go

d := dom.GetWindow().Document() //getting the dom to manipulate it
logTextArea := d.GetElementByID("loggerData")
torrentLinkSubmit := d.GetElementByID("torrentLinkSubmit")
magnetLink := d.GetElementByID("magnetLink")
addTorrentModal := d.GetElementByID("addTorrentModal")
addTorrentLinkBtn := d.GetElementByID("addTorrentLink") // Get the button that opens the modal
addTorrentFileModal := d.GetElementByID("addTorrentFile")
addTorrentFileModalClose := d.GetElementsByClassName("addTorrentFileModalClose")
addTorrentModalClose := d.GetElementsByClassName("addTorrentModalClose") // Get the <span> element that closes the modal
//add magnet link modal
addTorrentLinkBtn.AddEventListener("click", false, func(event dom.Event){
addTorrentModal.SetAttribute("display", "block")
})
//close torrent link modal
addTorrentModalClose[0].AddEventListener("click", false, func(event dom.Event){
addTorrentModal.SetAttribute("display", "none")
})
//show torrent file modal
addTorrentFileModal.AddEventListener("click", false, func(event dom.Event){
addTorrentFileModal.SetAttribute("display", "block")
})
//hide torrent file modal
addTorrentFileModalClose[0].AddEventListener("click", false, func(event dom.Event){
addTorrentFileModal.SetAttribute("display", "none")
})
// When the user clicks anywhere outside of the modal, close it
d.AddEventListener("click", false, func(event dom.Event){
addTorrentModal.SetAttribute("display", "none")
addTorrentLinkBtn.SetAttribute("display", "none")
})
//websocket logic
conn, err := websocketjs.New("ws://192.168.1.141:8000/websocket") // Blocks until connection is established.
if err != nil {
println("Error creating client websocket connection") // handle error
}
onOpen := func(ev *js.Object){
err := conn.Send("ping!") //on startup send the ping message
if err != nil {
println("Cannot send ping message")
}
}
onMessage := func(ev *js.Object){
messageData := ev.Get("data").String()
if messageData == "pong"{ //if the server says a pong, send a ping back
time.Sleep(6 * time.Second)
conn.Send("ping")
} else {
clientData, err := json.Unmarshal(messageData)
if err != nil {
println("Error unmarshalling server message")
}
logTextArea.SetInnerHTML(logTextArea.InnerHTML() + "</br>" + "Client Update Event....")
logTextArea.SetInnerHTML(logTextArea.InnerHTML() + "</br>" + clientData.String())
}
}
onClose := func(ev *js.Object){
logTextArea.SetInnerHTML(logTextArea.InnerHTML() + "</br>" + "Connection closed")
}
onError := func(ev *js.Object){
logTextArea.SetInnerHTML(logTextArea.InnerHTML() + "</br>" + "Error opening websocket")
}
conn.AddEventListener("open", false, onOpen)
conn.AddEventListener("message", false, onMessage)
conn.AddEventListener("close", false, onClose)
conn.AddEventListener("error", false, onError)
err = conn.Close()
torrentLinkSubmit.AddEventListener("click", false, func(event dom.Event){ //listening to the submit button for magnet link
conn.Send(magnetLink.TextContent())
logTextArea.SetInnerHTML(logTextArea.InnerHTML() + "</br>" + "Adding Magnet Link: " + magnetLink.TextContent()) //adding the magnet link to the log
addTorrentModal.SetAttribute("display", "none")
magnetLink.SetTextContent("")
})
}