fix: state clear

This commit is contained in:
abelith committed 2026-10-08 16:22:46 +03:00
1 parent ec12f29fdb
commit cb1ed91e05
2 files changed
+12 -10

No files matched your search

+5 -7
View File
@@ -176,17 +176,15 @@ func (d *Dispatcher) handleUpdate(ctx context.Context, upd model.Update) {
}
st = c.State()
if st.State() == state.ClearState {
if st.IsEmpty() {
if err := d.fsmStorage.Delete(ctx, isolation.Scope{UserID: upd.UserID, ChatID: upd.ChatID}); err != nil {
log.Error().Err(err).Send()
return
}
return
}
if st.State() != "" {
if err := d.fsmStorage.Put(ctx, st.Snapshot()); err != nil {
log.Error().Err(err).Send()
return
}
if err := d.fsmStorage.Put(ctx, st.Snapshot()); err != nil {
log.Error().Err(err).Send()
}
}
+7 -3
View File
@@ -11,8 +11,6 @@ var (
ErrKeyNotFound = fmt.Errorf("state: key not found")
)
const ClearState State = "clear"
type State string
type Codec interface {
@@ -41,6 +39,7 @@ type Context struct {
state State
data map[string][]byte
codec Codec
clear bool
}
type Option func(*Context)
@@ -83,10 +82,15 @@ func (sc *Context) Set(state State) {
func (sc *Context) State() State { return sc.state }
func (sc *Context) Clear() {
sc.state = ClearState
sc.state = ""
sc.clear = true
sc.data = make(map[string][]byte)
}
func (sc *Context) IsEmpty() bool {
return sc.state == "" && sc.clear
}
func (sc *Context) Store(key string, val any) error {
b, err := sc.codec.Marshal(val)
if err != nil {