+17
-32
appview/db/email.go
+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
+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