summaryrefslogtreecommitdiff
path: root/internal/ui/session/session.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <f@miniflux.net> 2023-08-10 19:46:45 -0700
committerGravatar Frédéric Guillot <f@miniflux.net> 2023-08-10 20:29:34 -0700
commit168a870c025bfef6efdeb46e166e79a16093c157 (patch)
tree4d8ab69c7e3ef03a7ade06e7b5e5053429a64c3b /internal/ui/session/session.go
parentc2349032552891745cbbc3d2a9e772845a0239f4 (diff)
downloadv2-168a870c025bfef6efdeb46e166e79a16093c157.tar.gz
v2-168a870c025bfef6efdeb46e166e79a16093c157.tar.zst
v2-168a870c025bfef6efdeb46e166e79a16093c157.zip
Move internal packages to an internal folder
For reference: https://go.dev/doc/go1.4#internalpackages
Diffstat (limited to 'internal/ui/session/session.go')
-rw-r--r--internal/ui/session/session.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/internal/ui/session/session.go b/internal/ui/session/session.go
new file mode 100644
index 00000000..9b656682
--- /dev/null
+++ b/internal/ui/session/session.go
@@ -0,0 +1,68 @@
+// SPDX-FileCopyrightText: Copyright The Miniflux Authors. All rights reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package session // import "miniflux.app/v2/internal/ui/session"
+
+import (
+ "miniflux.app/v2/internal/crypto"
+ "miniflux.app/v2/internal/storage"
+)
+
+// Session handles session data.
+type Session struct {
+ store *storage.Storage
+ sessionID string
+}
+
+// NewOAuth2State generates a new OAuth2 state and stores the value into the database.
+func (s *Session) NewOAuth2State() string {
+ state := crypto.GenerateRandomString(32)
+ s.store.UpdateAppSessionField(s.sessionID, "oauth2_state", state)
+ return state
+}
+
+// NewFlashMessage creates a new flash message.
+func (s *Session) NewFlashMessage(message string) {
+ s.store.UpdateAppSessionField(s.sessionID, "flash_message", message)
+}
+
+// FlashMessage returns the current flash message if any.
+func (s *Session) FlashMessage(message string) string {
+ if message != "" {
+ s.store.UpdateAppSessionField(s.sessionID, "flash_message", "")
+ }
+ return message
+}
+
+// NewFlashErrorMessage creates a new flash error message.
+func (s *Session) NewFlashErrorMessage(message string) {
+ s.store.UpdateAppSessionField(s.sessionID, "flash_error_message", message)
+}
+
+// FlashErrorMessage returns the last flash error message if any.
+func (s *Session) FlashErrorMessage(message string) string {
+ if message != "" {
+ s.store.UpdateAppSessionField(s.sessionID, "flash_error_message", "")
+ }
+ return message
+}
+
+// SetLanguage updates the language field in session.
+func (s *Session) SetLanguage(language string) {
+ s.store.UpdateAppSessionField(s.sessionID, "language", language)
+}
+
+// SetTheme updates the theme field in session.
+func (s *Session) SetTheme(theme string) {
+ s.store.UpdateAppSessionField(s.sessionID, "theme", theme)
+}
+
+// SetPocketRequestToken updates Pocket Request Token.
+func (s *Session) SetPocketRequestToken(requestToken string) {
+ s.store.UpdateAppSessionField(s.sessionID, "pocket_request_token", requestToken)
+}
+
+// New returns a new session handler.
+func New(store *storage.Storage, sessionID string) *Session {
+ return &Session{store, sessionID}
+}