Monorepo for Tangled tangled.org

fix email-resend timer

Changed files
+19 -34
appview
db
pages
templates
+17 -32
appview/db/email.go
··· 24 24 ` 25 25 var email Email 26 26 var createdStr string 27 - var lastSent *string 27 + var lastSent string 28 28 err := e.QueryRow(query, did).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr) 29 29 if err != nil { 30 30 return Email{}, err ··· 33 33 if err != nil { 34 34 return Email{}, err 35 35 } 36 - if lastSent != nil { 37 - parsedTime, err := time.Parse(time.RFC3339, *lastSent) 38 - if err != nil { 39 - return Email{}, err 40 - } 41 - email.LastSent = &parsedTime 36 + parsedTime, err := time.Parse(time.RFC3339, lastSent) 37 + if err != nil { 38 + return Email{}, err 42 39 } 40 + email.LastSent = &parsedTime 43 41 return email, nil 44 42 } 45 43 ··· 51 49 ` 52 50 var email Email 53 51 var createdStr string 54 - var lastSent *string 52 + var lastSent string 55 53 err := e.QueryRow(query, did, em).Scan(&email.ID, &email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr) 56 54 if err != nil { 57 55 return Email{}, err ··· 60 58 if err != nil { 61 59 return Email{}, err 62 60 } 63 - if lastSent != nil { 64 - parsedTime, err := time.Parse(time.RFC3339, *lastSent) 65 - if err != nil { 66 - return Email{}, err 67 - } 68 - email.LastSent = &parsedTime 61 + parsedTime, err := time.Parse(time.RFC3339, lastSent) 62 + if err != nil { 63 + return Email{}, err 69 64 } 65 + email.LastSent = &parsedTime 70 66 return email, nil 71 67 } 72 68 ··· 260 256 for rows.Next() { 261 257 var email Email 262 258 var createdStr string 263 - var lastSent *string 259 + var lastSent string 264 260 err := rows.Scan(&email.Did, &email.Address, &email.Verified, &email.Primary, &email.VerificationCode, &lastSent, &createdStr) 265 261 if err != nil { 266 262 return nil, err ··· 269 265 if err != nil { 270 266 return nil, err 271 267 } 272 - if lastSent != nil { 273 - parsedTime, err := time.Parse(time.RFC3339, *lastSent) 274 - if err != nil { 275 - return nil, err 276 - } 277 - email.LastSent = &parsedTime 268 + parsedTime, err := time.Parse(time.RFC3339, lastSent) 269 + if err != nil { 270 + return nil, err 278 271 } 272 + email.LastSent = &parsedTime 279 273 emails = append(emails, email) 280 274 } 281 275 return emails, nil ··· 284 278 func UpdateVerificationCode(e Execer, did string, email string, code string) error { 285 279 query := ` 286 280 update emails 287 - set verification_code = ? 281 + set verification_code = ?, 282 + last_sent = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') 288 283 where did = ? and email = ? 289 284 ` 290 285 _, err := e.Exec(query, code, did, email) 291 286 return err 292 287 } 293 - 294 - func UpdateLastSent(e Execer, did string, email string, lastSent time.Time) error { 295 - query := ` 296 - update emails 297 - set last_sent = ? 298 - where did = ? and email = ? 299 - ` 300 - _, err := e.Exec(query, lastSent.Format(time.RFC3339), did, email) 301 - return err 302 - }
+2 -2
appview/pages/templates/settings.html
··· 108 108 </div> 109 109 <div class="flex gap-2 items-center"> 110 110 {{ if not .Verified }} 111 - <a 111 + <button 112 112 class="btn flex gap-2" 113 113 hx-post="/settings/emails/verify/resend" 114 114 hx-swap="none" ··· 116 116 hx-vals='{"email": "{{ .Address }}"}'> 117 117 <i class="w-5 h-5" data-lucide="rotate-cw"></i> 118 118 <span class="hidden md:inline">resend</span> 119 - </a> 119 + </button> 120 120 {{ end }} 121 121 {{ if and (not .Primary) .Verified }} 122 122 <a