Add update check, upgrade dependencies and format code and change ver
This commit is contained in:
+136
@@ -0,0 +1,136 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"io"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
"github.com/diamondburned/gotk4/pkg/gtk/v4"
|
||||
"github.com/gen2brain/beeep"
|
||||
"github.com/jasonlovesdoggo/gopen"
|
||||
)
|
||||
|
||||
func updateCheck() error {
|
||||
req, err := http.Get("https://sunglocto.net/lambda_update")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer req.Body.Close()
|
||||
|
||||
p, err := io.ReadAll(req.Body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
newest_version, err := strconv.Atoi(string(p))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
current_version, err := strconv.Atoi(string(lambda_version))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if newest_version > current_version {
|
||||
win := gtk.NewWindow()
|
||||
win.SetDefaultSize(1, 1)
|
||||
box := gtk.NewBox(gtk.OrientationVertical, 5)
|
||||
header := gtk.NewLabel(loadedLocale["updateAvailable"])
|
||||
txt := gtk.NewLabel(fmt.Sprintf(loadedLocale["versionAvailable"], newest_version))
|
||||
btn := gtk.NewButtonWithLabel(loadedLocale["seeSite"])
|
||||
btn.ConnectClicked(func() {
|
||||
gopen.Open("https://sunglocto.net/lambda")
|
||||
win.SetVisible(false)
|
||||
})
|
||||
|
||||
header.AddCSSClass("author")
|
||||
|
||||
box.Append(header)
|
||||
box.Append(txt)
|
||||
box.Append(btn)
|
||||
|
||||
win.SetChild(box)
|
||||
win.SetResizable(false)
|
||||
win.SetVisible(true)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func showInitialConsent() {
|
||||
win := gtk.NewWindow()
|
||||
win.SetDefaultSize(600, 1)
|
||||
win.SetTitle(loadedLocale["updateCheck"])
|
||||
box := gtk.NewBox(gtk.OrientationVertical, 5)
|
||||
textbox := gtk.NewBox(gtk.OrientationVertical, 5)
|
||||
subtextbox := gtk.NewBox(gtk.OrientationHorizontal, 5)
|
||||
header := gtk.NewLabel(loadedLocale["updateCheck"])
|
||||
header.AddCSSClass("author")
|
||||
text := gtk.NewLabel(loadedLocale["updateWarning"])
|
||||
text.SetHAlign(gtk.AlignCenter)
|
||||
textbox.Append(header)
|
||||
|
||||
i := gtk.NewImageFromPaintable(clientAssetsLoad("update"))
|
||||
i.SetPixelSize(50)
|
||||
|
||||
subtextbox.Append(i)
|
||||
subtextbox.Append(text)
|
||||
textbox.Append(subtextbox)
|
||||
|
||||
buttonbox := gtk.NewBox(gtk.OrientationHorizontal, 0)
|
||||
yes := gtk.NewButtonWithLabel(loadedLocale["yes"])
|
||||
yes.SetHExpand(true)
|
||||
|
||||
yes.ConnectClicked(func() {
|
||||
win.SetVisible(false)
|
||||
save("yes")
|
||||
})
|
||||
no := gtk.NewButtonWithLabel(loadedLocale["no"])
|
||||
no.SetHExpand(true)
|
||||
|
||||
no.ConnectClicked(func() {
|
||||
win.SetVisible(false)
|
||||
save("no")
|
||||
})
|
||||
buttonbox.Append(yes)
|
||||
buttonbox.Append(no)
|
||||
|
||||
box.Append(textbox)
|
||||
box.Append(buttonbox)
|
||||
win.SetChild(box)
|
||||
win.SetResizable(false)
|
||||
win.SetVisible(true)
|
||||
|
||||
}
|
||||
|
||||
func save(choice string) {
|
||||
loadedConfig.CheckUpdate = choice
|
||||
var b bytes.Buffer
|
||||
e := toml.NewEncoder(&b)
|
||||
e.Encode(loadedConfig)
|
||||
|
||||
p, err := ensureConfig()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
os.WriteFile(filepath.Join(p, "lambda.toml"), b.Bytes(), 0644)
|
||||
|
||||
fmt.Println("a")
|
||||
// Please add tenary operators to go istg this is painful
|
||||
|
||||
// TODO: This approach may not work for RTL languages OR languages with different structure like CJK
|
||||
willwont := make(map[string]string)
|
||||
willwont["yes"] = loadedLocale["updateWill"]
|
||||
willwont["no"] = loadedLocale["updateWont"]
|
||||
|
||||
beeep.Notify(loadedLocale["attention"], fmt.Sprintf(loadedLocale["updateSave"], willwont[choice]), commentBytes)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user