saasitone/msg/msg.go

50 lines
1.0 KiB
Go
Raw Normal View History

2021-12-03 03:11:01 -08:00
package msg
import (
"github.com/gorilla/sessions"
"github.com/labstack/echo-contrib/session"
"github.com/labstack/echo/v4"
)
type Type string
const (
Success Type = "success"
Info Type = "info"
Warning Type = "warning"
Danger Type = "danger"
)
// TODO: Error handling
func getSession(c echo.Context) *sessions.Session {
sess, _ := session.Get("msg", c)
return sess
}
// Set adds a new message into the cookie storage.
func Set(c echo.Context, typ Type, value string) {
sess := getSession(c)
sess.AddFlash(value, string(typ))
_ = sess.Save(c.Request(), c.Response())
}
// Get gets flash messages from the cookie storage.
func Get(c echo.Context, typ Type) []string {
sess := getSession(c)
fm := sess.Flashes(string(typ))
// If we have some messages.
if len(fm) > 0 {
_ = sess.Save(c.Request(), c.Response())
// Initiate a strings slice to return messages.
var flashes []string
for _, fl := range fm {
// Add message to the slice.
flashes = append(flashes, fl.(string))
}
return flashes
}
return nil
}