feat(session): add flash messages spanning redirects

This commit is contained in:
dualfroz committed 2026-08-26 11:40:00 +02:00
1 parent dd759f6a58
commit 56c01089db
1 file changed
+50
+50
View File
@@ -0,0 +1,50 @@
module Prism
class Flash
SessionKey = '_flash'.freeze
def initialize(session)
@session = session
loaded = session[SessionKey]
@current = loaded ? Params.from(loaded) : Params.new
@pending = Params.new
session.delete(SessionKey)
end
def [](key)
@current[key]
end
def []=(key, value)
@pending[key] = value
end
def now
@current
end
def keep(key = nil)
if key
@pending[key] = @current[key] if @current.key?(key)
else
@current.each { |name, value| @pending[name] = value }
end
end
def discard(key = nil)
key ? @current.delete(key) : @current.clear
end
def empty?
@current.empty?
end
def to_h
@current.to_h
end
def sweep
@session.delete(SessionKey)
@session[SessionKey] = @pending.to_h unless @pending.empty?
end
end
end