56 lines
970 B
Go
56 lines
970 B
Go
package session
|
|
|
|
type FlashMessage struct {
|
|
Type string `json:"type"`
|
|
Message string `json:"message"`
|
|
}
|
|
|
|
func (s *Session) SetFlash(key string, value any) {
|
|
if s.Data == nil {
|
|
s.Data = make(map[string]any)
|
|
}
|
|
|
|
flashData, ok := s.Data["_flash"].(map[string]any)
|
|
if !ok {
|
|
flashData = make(map[string]any)
|
|
}
|
|
flashData[key] = value
|
|
s.Data["_flash"] = flashData
|
|
}
|
|
|
|
func (s *Session) GetFlash(key string) (any, bool) {
|
|
if s.Data == nil {
|
|
return nil, false
|
|
}
|
|
|
|
flashData, ok := s.Data["_flash"].(map[string]any)
|
|
if !ok {
|
|
return nil, false
|
|
}
|
|
|
|
value, exists := flashData[key]
|
|
if exists {
|
|
delete(flashData, key)
|
|
if len(flashData) == 0 {
|
|
delete(s.Data, "_flash")
|
|
} else {
|
|
s.Data["_flash"] = flashData
|
|
}
|
|
}
|
|
|
|
return value, exists
|
|
}
|
|
|
|
func (s *Session) GetAllFlash() map[string]any {
|
|
if s.Data == nil {
|
|
return nil
|
|
}
|
|
|
|
flashData, ok := s.Data["_flash"].(map[string]any)
|
|
if !ok {
|
|
return nil
|
|
}
|
|
|
|
delete(s.Data, "_flash")
|
|
return flashData
|
|
} |