package html_components import ( "fmt" . "github.com/labstack/echo/v4" "net/url" "strconv" ) const HeaderHxCurrentUrl = "Hx-Current-Url" func getCurrentUrlHeader(c Context) string { return c.Request().Header.Get(HeaderHxCurrentUrl) } const HeaderFromTable = "From-Table" func HasFromTableHeader(c Context) bool { parsed, err := strconv.ParseBool(c.Request().Header.Get(HeaderFromTable)) return err == nil && parsed } func checkForValidUrl(stringUrl string) string { _, err := url.Parse(stringUrl) if err != nil { return "/" // safe fallback } return stringUrl } func GetCurrentUrl(c Context, defaultPath string) string { currentUrlHeader := getCurrentUrlHeader(c) if currentUrlHeader == "" { return checkForValidUrl(defaultPath) } return currentUrlHeader } func GetCurrentUrlQueryParams(c Context) string { currentUrlHeader := getCurrentUrlHeader(c) if currentUrlHeader == "" { return "" } currentUrl, err := url.Parse(currentUrlHeader) if err != nil { return "" } return fmt.Sprint("?", currentUrl.Query().Encode()) }