package main

import (
	"encoding/json"
	"net"

	"fyne.io/fyne/v2"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/layout"
	"fyne.io/fyne/v2/widget"
	"go.arsenm.dev/itd/internal/types"
)

func notifyTab(parent fyne.Window) *fyne.Container {
	// Create new entry for notification title
	titleEntry := widget.NewEntry()
	titleEntry.SetPlaceHolder("Title")

	// Create multiline entry for notification body
	bodyEntry := widget.NewMultiLineEntry()
	bodyEntry.SetPlaceHolder("Body")

	// Create new button to send notification
	sendBtn := widget.NewButton("Send", func() {
		// Dial itd UNIX socket
		conn, err := net.Dial("unix", SockPath)
		if err != nil {
			guiErr(err, "Error dialing socket", false, parent)
			return
		}
		// Encode notify request on connection
		json.NewEncoder(conn).Encode(types.Request{
			Type: types.ReqTypeNotify,
			Data: types.ReqDataNotify{
				Title: titleEntry.Text,
				Body:  bodyEntry.Text,
			},
		})
	})

	// Return new container containing all elements
	return container.NewVBox(
		layout.NewSpacer(),
		titleEntry,
		bodyEntry,
		sendBtn,
		layout.NewSpacer(),
	)
}
