Merge pull request 'Store initial language selection' (#3) from lash/initial-language into master

Reviewed-on: #3
This commit is contained in:
lash 2025-01-15 08:42:51 +01:00
commit 0a7152d6b8
3 changed files with 31 additions and 1 deletions

View File

@ -2187,6 +2187,23 @@ func (h *MenuHandlers) resetIncorrectPINAttempts(ctx context.Context, sessionId
return nil
}
func (h *MenuHandlers) persistInitialLanguageCode(ctx context.Context, sessionId string, code string) error {
store := h.userdataStore
_, err := store.ReadEntry(ctx, sessionId, storedb.DATA_INITIAL_LANGUAGE_CODE)
if err == nil {
return nil
}
if !db.IsNotFound(err) {
return err
}
err = store.WriteEntry(ctx, sessionId, storedb.DATA_INITIAL_LANGUAGE_CODE, []byte(code))
if err != nil {
logg.ErrorCtxf(ctx, "failed to persist initial language code", "key", storedb.DATA_INITIAL_LANGUAGE_CODE, "value", code, "error", err)
return err
}
return nil
}
// persistLanguageCode persists the selected ISO 639 language code
func (h *MenuHandlers) persistLanguageCode(ctx context.Context, code string) error {
store := h.userdataStore
@ -2199,5 +2216,5 @@ func (h *MenuHandlers) persistLanguageCode(ctx context.Context, code string) err
logg.ErrorCtxf(ctx, "failed to persist language code", "key", storedb.DATA_SELECTED_LANGUAGE_CODE, "value", code, "error", err)
return err
}
return nil
return h.persistInitialLanguageCode(ctx, sessionId, code)
}

View File

@ -825,6 +825,17 @@ func TestSetLanguage(t *testing.T) {
// Assert that the Result FlagSet has the required flags after language switch
assert.Equal(t, res, tt.expectedResult, "Result should match expected result")
code, err := store.ReadEntry(ctx, sessionId, storedb.DATA_SELECTED_LANGUAGE_CODE)
if err != nil {
t.Error(err)
}
assert.Equal(t, string(code), tt.expectedResult.Content)
code, err = store.ReadEntry(ctx, sessionId, storedb.DATA_INITIAL_LANGUAGE_CODE)
if err != nil {
t.Error(err)
}
assert.Equal(t, string(code), "eng")
})
}
}

View File

@ -59,6 +59,8 @@ const (
DATA_INCORRECT_PIN_ATTEMPTS
//ISO 639 code for the selected language.
DATA_SELECTED_LANGUAGE_CODE
//ISO 639 code for the language initially selected.
DATA_INITIAL_LANGUAGE_CODE
)
const (