+1
appview/config.go
+1
appview/config.go
···JetstreamEndpoint string `env:"TANGLED_JETSTREAM_ENDPOINT, default=wss://jetstream1.us-east.bsky.network/subscribe"`
···JetstreamEndpoint string `env:"TANGLED_JETSTREAM_ENDPOINT, default=wss://jetstream1.us-east.bsky.network/subscribe"`
+12
-1
appview/db/db.go
+12
-1
appview/db/db.go
······
······
+203
appview/db/email.go
+203
appview/db/email.go
···
···+err := e.QueryRow(query, did).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &createdStr)+err := e.QueryRow(query, did, em).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &createdStr)+func CheckValidVerificationCode(e Execer, did string, email string, code string) (bool, error) {+_, err = e.Exec(query, email.Did, email.Address, email.Verified, email.Primary, email.VerificationCode)+err := rows.Scan(&email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &createdStr)
+69
appview/email/email.go
+69
appview/email/email.go
···
···+pattern := `^[a-zA-Z0-9.!#$%&'*+/=?^_\x60{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$`+pattern := `^[a-zA-Z0-9.!#$%&'*+/=?^_\x60{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$`
+1
appview/pages/pages.go
+1
appview/pages/pages.go
+79
-3
appview/pages/templates/settings.html
+79
-3
appview/pages/templates/settings.html
···············
···············+<form hx-delete="/settings/emails" hx-confirm="Are you sure you wish to delete the email '{{ .Address }}'?">
+4
appview/state/router.go
+4
appview/state/router.go
···
+186
-1
appview/state/settings.go
+186
-1
appview/state/settings.go
······
······+s.pages.Notice(w, "settings-emails-error", "Unable to add email at this moment, try again later.")+s.pages.Notice(w, "settings-emails-error", "This email is already added but not verified. Check your inbox for the verification link.")+s.pages.Notice(w, "settings-emails-error", "Unable to add email at this moment, try again later.")+s.pages.Notice(w, "settings-emails-error", "Unable to add email at this moment, try again later.")+Text: `Click the link below (or copy and paste it into your browser) to verify your email address.+Html: `<p>Click the link (or copy and paste it into your browser) to verify your email address.</p>+<p><a href="` + s.verifyUrl(did, emAddr, code) + `">` + s.verifyUrl(did, emAddr, code) + `</a></p>`,+s.pages.Notice(w, "settings-emails-error", "Unable to send verification email at this moment, try again later.")+s.pages.Notice(w, "settings-emails-error", "Unable to add email at this moment, try again later.")+s.pages.Notice(w, "settings-emails-success", "Click the link in the email we sent you to verify your email address.")+s.pages.Notice(w, "settings-emails-error", "Unable to delete email at this moment, try again later.")+s.pages.Notice(w, "settings-emails-error", "Unable to delete email at this moment, try again later.")+s.pages.Notice(w, "settings-emails-error", "Unable to delete email at this moment, try again later.")+return fmt.Sprintf("%s/settings/emails/verify?did=%s&email=%s&code=%s", appUrl, did, email, code)+s.pages.Notice(w, "settings-emails-error", "Invalid verification code. Please request a new verification email.")+s.pages.Notice(w, "settings-emails-error", "Error updating email verification status. Please try again later.")+s.pages.Notice(w, "settings-emails-error", "Error setting primary email. Please try again later.")
+1
go.mod
+1
go.mod
···
···
+2
go.sum
+2
go.sum
···
···