updates
All checks were successful
build / build (push) Successful in 28s
release-tag / release-image (push) Successful in 17m36s

This commit is contained in:
Tijl 2024-09-04 23:03:23 +02:00
parent 18c3bf3dd8
commit 5ad1da76b1
Signed by: tijl
GPG Key ID: DAE24BFCD722F053
14 changed files with 219 additions and 191 deletions

View File

@ -169,7 +169,7 @@ func questionHandler(c *fiber.Ctx, newGame NullableUUID, prevError NullableStrin
data["Errors"] = gameSession.QuestionsErrors
data["PreviousError"] = prevError.String
data["ShortcutKeys"] = []string{"d", "f", "h", "j", "k"}
return c.Render("apps/flags/question", data, "layouts/base")
return web.Render(c, "apps/flags/question", data, "layouts/base")
}
func sharedGameHandler(c *fiber.Ctx) error {
@ -242,7 +242,7 @@ func createSharedGameData(c *fiber.Ctx, tags []string, maxQuestions int, seconds
data := *web.Common(c)
data["Title"] = "tmp"
data["ShareKey"] = shareKey
return c.Render("apps/flags/shared", data, "layouts/base")
return web.Render(c, "apps/flags/shared", data, "layouts/base")
}
func setupGame(c *fiber.Ctx, tags []string, maxQuestions int, seconds int, gameSeed NullableUUID) error {
@ -291,7 +291,7 @@ func gameEndHandler(c *fiber.Ctx) error {
data := *web.Common(c)
data["Title"] = "tmp"
data["Errors"] = gameSession.QuestionsErrors
return c.Render("apps/flags/end", data, "layouts/base")
return web.Render(c, "apps/flags/end", data, "layouts/base")
}
@ -304,5 +304,5 @@ func gameStartHandler(c *fiber.Ctx) error {
data := *web.Common(c)
data["Title"] = "Flags Game | tijl.dev"
data["SupportedTags"] = supportedTags
return c.Render("apps/flags/start", data, "layouts/base")
return web.Render(c, "apps/flags/start", data, "layouts/base")
}

View File

@ -5,6 +5,8 @@
"max_questions": "Max Questions",
"time_limit": "Time limit (seconds)",
"share_game": "Save",
"deselect_all": "Deselect all",
"select_all": "Select all",
"Asia": "Asia",
"MiddleEast": "Middle East",
"SoutheastAsia": "Southeast Asia",

View File

@ -5,6 +5,8 @@
"time_limit": "Tijdlimit (seconden)",
"max_questions": "Maximaal aantal vragen",
"share_game": "Opslaan",
"deselect_all": "Alles deselecteren",
"select_all": "Alles selecteren",
"Asia": "Azië",
"MiddleEast": "Midden-Oosten",
"SoutheastAsia": "Zuidoost-Azië",

View File

@ -29,7 +29,6 @@ func Setup() {
var uploadDir string = filepath.Join(config.Config.DataLocation, "./uploader")
web.RegisterAppSetupFunc(func(a *fiber.App) {
a.Get("/app/uploader", func(c *fiber.Ctx) error {
_, err := user.GetSession(c)
@ -112,17 +111,19 @@ func Setup() {
return c.Send(decryptedContent)
})
a.Post("/app/uploader", func(c *fiber.Ctx) error {
uid, err := user.GetSession(c)
if err != nil {
return c.SendStatus(http.StatusUnauthorized)
}
expireDays, err := strconv.Atoi(c.FormValue("expire_days"))
if err != nil {return err}
if err != nil {
return err
}
maxDownloads, err := strconv.Atoi(c.FormValue("max_downloads"))
if err != nil {return err}
if err != nil {
return err
}
file, err := c.FormFile("file")
if err != nil {
@ -195,6 +196,5 @@ func Setup() {
return c.Render("apps/uploader/uploaded", data, "layouts/base")
})
}, 1000)
}

View File

@ -9,6 +9,7 @@ import (
type Service struct {
Name string
Slug string
Description string
Url string
InfoUrl string
@ -16,38 +17,46 @@ type Service struct {
Scale float64
}
var services = map[string]Service{
"immich": {
var services = []Service{
{
Name: "Immich",
Slug: "immich",
Description: "...",
Url: "https://fotos.tijl.dev/photos",
InfoUrl: "https://immich.app",
Color: "white",
Scale: 0,
},
"element": {
{
Name: "Element",
Slug: "element",
Description: "...",
Url: "https://element.tijl.dev",
InfoUrl: "https://matrix.org",
Color: "#0DBD8B",
Scale: 0.1,
},
"nextcloud": {
{
Name: "Nextcloud",
Slug: "nextcloud",
Description: "...",
Url: "https://cloud.tijl.dev",
InfoUrl: "https://nextcloud.com",
Color: "#00679e",
Scale: -0.2,
},
{
Name: "Gitea",
Slug: "gitea",
Description: "...",
Url: "https://git.tijl.dev",
InfoUrl: "https://about.gitea.com",
Color: "white",
Scale: -0.2,
},
}
func servicesHandler(c *fiber.Ctx) error {
_, err := user.GetSession(c)
if err != nil {
return c.Next()
}
data := *web.Common(c)
data["Title"] = i18n.Translate(c, "services")
data["Services"] = services
@ -59,9 +68,11 @@ func serviceHandler(c *fiber.Ctx) error {
if err != nil {
return c.Next()
}
/*
if services[c.Params("service")].Url != "" {
return c.Redirect(services[c.Params("service")].Url)
}
*/
return c.Next()
}
@ -70,8 +81,10 @@ func serviceInfoHandler(c *fiber.Ctx) error {
if err != nil {
return c.Next()
}
/*
if services[c.Params("service")].Url != "" {
return c.Redirect(services[c.Params("service")].InfoUrl)
}
*/
return c.Next()
}

View File

@ -70,6 +70,7 @@ func Listen() {
app := fiber.New(fiber.Config{
Views: engine,
DisableStartupMessage: true,
BodyLimit: 4 * 1024 * 1024 * 1024,
})
app.Use(fiberzerolog.New(fiberzerolog.Config{
Logger: &log.Logger,

10
modules/web/render.go Normal file
View File

@ -0,0 +1,10 @@
package web
import "github.com/gofiber/fiber/v2"
func Render(c *fiber.Ctx, template string, data fiber.Map, layout string) error {
if c.Get("HX-Request") != "" && c.Get("HX-Target") == "main-content" {
return c.Render(template, data)
}
return c.Render(template, data, layout)
}

View File

@ -6,7 +6,7 @@
<div>game is over</div>
<form method="post" hx-boost="true">
<form method="post" hx-boost="true" hx-target="#main-content">
<input class="hidden" name="type" value="exit" />
<button type="submit" class="btn">exit</button>
</form>

View File

@ -18,7 +18,7 @@
<span style="font-size: 105px;">{{.Flag}}</span>
</div>
<div hx-boost="true" id="answers" class="flex justify-center flex-wrap">
<div hx-target="#main-content" hx-boost="true" id="answers" class="flex justify-center flex-wrap">
{{range $index, $answer := .Answers}}
<form method="post" class="m-1">
<input class="hidden" name="type" value="answer" />
@ -34,7 +34,7 @@
{{end}}
</div>
<form hx-boost="true" method="post">
<form hx-boost="true" hx-target="#main-content" method="post">
<input class="hidden" name="type" value="exit" />
<button type="submit" class="btn hover:btn-error">Stop</button>
</form>

View File

@ -1,7 +1,7 @@
<div>
<div class="text-center text-2xl my-4">{{.ShareKey}}</div>
<form hx-boost="true" method="get" class="justify-center flex mt-4">
<form hx-target="#main-content" hx-boost="true" method="get" class="justify-center flex mt-4">
<button type="submit" class="btn text-center">OK</button>
</form>
</div>

View File

@ -1,4 +1,4 @@
<div hx-boost="true">
<div hx-target="#main-content" hx-boost="true">
<div id="error-message" class="text-red-500 mb-4"></div>

View File

@ -1,4 +1,4 @@
<form enctype="multipart/form-data" method="post" hx-boost="true">
<form enctype="multipart/form-data" method="post">
<div>
<label class="input input-bordered flex items-center gap-2 mt-2">
Max downloaders

View File

@ -16,7 +16,7 @@
<header>
{{template "partials/menu" .}}
</header>
<main class="mx-6 pt-24 pb-4">
<main id="main-content" class="mx-6 pt-24 pb-4">
{{embed}}
</main>
</body>

View File

@ -5,18 +5,18 @@
<div class="mt-4 flex justify-center">
<div class="flex gap-2">
{{range $key, $value := .Services}}
<a href="#{{$key}}" id="service-{{$key}}" class="group"
{{range .Services}}
<a href="#{{.Slug}}" id="service-{{.Slug}}" class="group"
onmouseover="this.querySelector('img').style.transform='scale({{incfloat .Scale 1.1}})';"
onmouseout="this.querySelector('img').style.transform='scale({{incfloat .Scale 1}})';">
<div class="relative w-24 h-24 rounded-2xl rounded-3xl shadow-2xl" style="background-color: {{.Color}};">
<div class="absolute inset-0 flex items-center justify-center">
<img alt="{{.Name}} logo"
class="text-white transform transition-transform duration-300 drop-shadow-2xl"
style="transform: scale({{incfloat .Scale 1}});" src="/static/assets/{{$key}}.svg" />
style="transform: scale({{incfloat .Scale 1}});" src="/static/assets/{{.Slug}}.svg" />
</div>
</div>
<div id="service-{{$key}}-label" class="w-24 text-center mt-2 rounded-2xl rounded-b-none py-1">
<div id="service-{{.Slug}}-label" class="w-24 text-center mt-2 rounded-2xl rounded-b-none py-1">
{{.Name}}
</div>
</a>
@ -25,13 +25,13 @@
</div>
<div class="card bg-base-300" id="services-info">
{{range $key, $value := .Services}}
<div class="card-body hidden" id="service-{{$key}}-info">
{{range .Services}}
<div class="card-body hidden" id="service-{{.Slug}}-info">
<h2 class="card-title">{{.Name}}</h2>
<p>{{.Description}}</p>
<div class="card-actions justify-end">
<a href="/service/{{$key}}/info" class="btn bg-base-300">Info</a>
<a href="/service/{{$key}}" class="btn btn-primary">Open</a>
<a href="/service/{{.Slug}}/info" class="btn bg-base-300">Info</a>
<a href="/service/{{.Slug}}" class="btn btn-primary">Open</a>
</div>
</div>
{{end}}