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