diff --git a/handlers/application/menuhandler.go b/handlers/application/menuhandler.go index d82a417..28f6854 100644 --- a/handlers/application/menuhandler.go +++ b/handlers/application/menuhandler.go @@ -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) } diff --git a/handlers/application/menuhandler_test.go b/handlers/application/menuhandler_test.go index cf5b4a5..3244ce4 100644 --- a/handlers/application/menuhandler_test.go +++ b/handlers/application/menuhandler_test.go @@ -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") }) } } diff --git a/store/db/db.go b/store/db/db.go index b70cc5e..2ccd9e6 100644 --- a/store/db/db.go +++ b/store/db/db.go @@ -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 (