Path: blob/main/internal/window/login/rememberme.go
452 views
package login12import (3"context"45"github.com/diamondburned/chatkit/components/secretdialog"6"github.com/diamondburned/chatkit/kits/secret"7"github.com/diamondburned/gotk4/pkg/gtk/v4"8"github.com/diamondburned/gotkit/gtkutil/cssutil"9)1011type rememberMeBox struct {12*gtk.CheckButton13driver secret.Driver14}1516var rememberMeCSS = cssutil.Applier("login-rememberme", `17.login-rememberme {18margin-bottom: 4px;19}20`)2122func newRememberMeBox(ctx context.Context) *rememberMeBox {23b := rememberMeBox{}2425keyring := secret.KeyringDriver(ctx)2627b.CheckButton = gtk.NewCheckButtonWithLabel("Remember Account")28b.CheckButton.AddCSSClass("login-rememberme")29b.CheckButton.ConnectToggled(func() {30if !b.Active() {31b.driver = nil32return33}3435if keyring.IsAvailable() {36b.driver = keyring37return38}3940secretdialog.PromptPassword(41ctx, secretdialog.PromptEncrypt,42func(ok bool, enc *secret.EncryptedFile) {43if !ok {44// User didn't want this, so untick the box.45b.SetActive(false)46} else {47b.driver = enc48}49},50)51})5253return &b54}5556// SecretDriver returns the secret driver if the user opts to remember the57// session.58func (b *rememberMeBox) SecretDriver() secret.Driver {59return b.driver60}616263