2024-09-11 17:31:40 +00:00
|
|
|
package h
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"encoding/json"
|
2024-09-17 17:13:22 +00:00
|
|
|
"github.com/labstack/echo/v4"
|
2024-09-11 17:31:40 +00:00
|
|
|
"net/url"
|
2024-09-20 01:34:50 +00:00
|
|
|
"strings"
|
2024-09-11 17:31:40 +00:00
|
|
|
)
|
|
|
|
|
|
2024-09-20 01:24:44 +00:00
|
|
|
type Ren interface {
|
2024-09-20 01:34:50 +00:00
|
|
|
Render(builder *strings.Builder)
|
2024-09-11 23:41:21 +00:00
|
|
|
}
|
|
|
|
|
|
2024-09-11 17:31:40 +00:00
|
|
|
func Ternary[T any](value bool, a T, b T) T {
|
|
|
|
|
if value {
|
|
|
|
|
return a
|
|
|
|
|
}
|
|
|
|
|
return b
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func JsonSerialize(data any) string {
|
|
|
|
|
serialized, err := json.Marshal(data)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return ""
|
|
|
|
|
}
|
|
|
|
|
return string(serialized)
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-17 17:13:22 +00:00
|
|
|
func GetQueryParam(ctx echo.Context, key string) string {
|
|
|
|
|
value := ctx.QueryParam(key)
|
2024-09-11 17:31:40 +00:00
|
|
|
if value == "" {
|
2024-09-17 17:13:22 +00:00
|
|
|
current := ctx.Request().Header.Get("Hx-Current-Url")
|
2024-09-11 17:31:40 +00:00
|
|
|
if current != "" {
|
|
|
|
|
u, err := url.Parse(current)
|
|
|
|
|
if err == nil {
|
|
|
|
|
return u.Query().Get(key)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return value
|
|
|
|
|
}
|
2024-09-12 02:06:34 +00:00
|
|
|
|
|
|
|
|
func SetQueryParams(href string, qs map[string]string) string {
|
|
|
|
|
u, err := url.Parse(href)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return href
|
|
|
|
|
}
|
|
|
|
|
q := u.Query()
|
|
|
|
|
for key, value := range qs {
|
|
|
|
|
if value == "" {
|
|
|
|
|
q.Del(key)
|
|
|
|
|
} else {
|
|
|
|
|
q.Set(key, value)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
u.RawQuery = q.Encode()
|
|
|
|
|
return u.String()
|
|
|
|
|
}
|