forked from tangled.org/core
this repo has no description

fix email-resend timer

Changed files
+19 -34
appview
db
pages
templates
+17 -32
appview/db/email.go
···
`
var email Email
var createdStr string
-
var lastSent *string
+
var lastSent string
err := e.QueryRow(query, did).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
if err != nil {
return Email{}, err
···
if err != nil {
return Email{}, err
}
-
if lastSent != nil {
-
parsedTime, err := time.Parse(time.RFC3339, *lastSent)
-
if err != nil {
-
return Email{}, err
-
}
-
email.LastSent = &parsedTime
+
parsedTime, err := time.Parse(time.RFC3339, lastSent)
+
if err != nil {
+
return Email{}, err
}
+
email.LastSent = &parsedTime
return email, nil
}
···
`
var email Email
var createdStr string
-
var lastSent *string
+
var lastSent string
err := e.QueryRow(query, did, em).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
if err != nil {
return Email{}, err
···
if err != nil {
return Email{}, err
}
-
if lastSent != nil {
-
parsedTime, err := time.Parse(time.RFC3339, *lastSent)
-
if err != nil {
-
return Email{}, err
-
}
-
email.LastSent = &parsedTime
+
parsedTime, err := time.Parse(time.RFC3339, lastSent)
+
if err != nil {
+
return Email{}, err
}
+
email.LastSent = &parsedTime
return email, nil
}
···
for rows.Next() {
var email Email
var createdStr string
-
var lastSent *string
+
var lastSent string
err := rows.Scan(&email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr)
if err != nil {
return nil, err
···
if err != nil {
return nil, err
}
-
if lastSent != nil {
-
parsedTime, err := time.Parse(time.RFC3339, *lastSent)
-
if err != nil {
-
return nil, err
-
}
-
email.LastSent = &parsedTime
+
parsedTime, err := time.Parse(time.RFC3339, lastSent)
+
if err != nil {
+
return nil, err
}
+
email.LastSent = &parsedTime
emails = append(emails, email)
}
return emails, nil
···
func UpdateVerificationCode(e Execer, did string, email string, code string) error {
query := `
update emails
-
set verification_code = ?
+
set verification_code = ?,
+
last_sent = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
where did = ? and email = ?
`
_, err := e.Exec(query, code, did, email)
return err
}
-
-
func UpdateLastSent(e Execer, did string, email string, lastSent time.Time) error {
-
query := `
-
update emails
-
set last_sent = ?
-
where did = ? and email = ?
-
`
-
_, err := e.Exec(query, lastSent.Format(time.RFC3339), did, email)
-
return err
-
}
+2 -2
appview/pages/templates/settings.html
···
</div>
<div class="flex gap-2 items-center">
{{ if not .Verified }}
-
<a
+
<button
class="btn flex gap-2"
hx-post="/settings/emails/verify/resend"
hx-swap="none"
···
hx-vals='{"email": "{{ .Address }}"}'>
<i class="w-5 h-5" data-lucide="rotate-cw"></i>
<span class="hidden md:inline">resend</span>
-
</a>
+
</button>
{{ end }}
{{ if and (not .Primary) .Verified }}
<a