Fixed Thumbnail Db Entry not loading, added favicon.ico, added going back to menu, if no more Chapters exist, added auto start of default browser with url, added dark mode to main Menu (doesnt save state), added Constructor for Server

This commit is contained in:
Pablu23
2024-02-26 12:09:00 +01:00
parent 23f96e0ab5
commit 8e6169430e
7 changed files with 149 additions and 27 deletions

View File

@@ -1,34 +1,59 @@
package main
import (
"bytes"
"fmt"
"net/http"
"os"
"os/signal"
"sync"
"mangaGetter/internal/database"
"mangaGetter/internal/provider"
"mangaGetter/internal/server"
"net/http"
"os"
"os/exec"
"os/signal"
"path/filepath"
"runtime"
"time"
)
func main() {
db := database.NewDatabase("db.sqlite", true)
err := db.Open()
dir, err := os.UserCacheDir()
if err != nil {
fmt.Println(nil)
return
}
s := server.Server{
ImageBuffers: make(map[string]*bytes.Buffer),
NextReady: make(chan bool),
PrevReady: make(chan bool),
Provider: &provider.Bato{},
DbMgr: &db,
Mutex: &sync.Mutex{},
dirPath := filepath.Join(dir, "MangaGetter")
filePath := filepath.Join(dirPath, "db.sqlite")
if _, err := os.Stat(dirPath); os.IsNotExist(err) {
err = os.Mkdir(dirPath, os.ModePerm)
if err != nil {
fmt.Println(err)
return
}
}
if _, err := os.Stat(filePath); os.IsNotExist(err) {
f, err := os.Create(filePath)
if err != nil {
fmt.Println(err)
return
}
err = f.Close()
if err != nil {
fmt.Println(err)
return
}
}
db := database.NewDatabase(filePath, true)
err = db.Open()
if err != nil {
fmt.Println(err)
return
}
s := server.New(&provider.Bato{}, &db)
c := make(chan os.Signal, 1)
signal.Notify(c, os.Interrupt)
@@ -48,6 +73,14 @@ func main() {
http.HandleFunc("POST /exit", s.HandleExit)
http.HandleFunc("POST /delete", s.HandleDelete)
go func() {
time.Sleep(300 * time.Millisecond)
err := open("http://localhost:8000")
if err != nil {
fmt.Println(err)
}
}()
fmt.Println("Server starting...")
err = http.ListenAndServe(":8000", nil)
if err != nil {
@@ -56,6 +89,23 @@ func main() {
}
}
func open(url string) error {
var cmd string
var args []string
switch runtime.GOOS {
case "windows":
cmd = "cmd"
args = []string{"/c", "start"}
case "darwin":
cmd = "open"
default: // "linux", "freebsd", "openbsd", "netbsd"
cmd = "xdg-open"
}
args = append(args, url)
return exec.Command(cmd, args...).Start()
}
func Close(db *database.Manager) {
fmt.Println("Attempting to save and close DB")
err := db.Save()