tangled
alpha
login
or
join now
moth11.net
/
88x31
0
fork
atom
tiny 88x31 lexicon for atproto
0
fork
atom
overview
issues
pulls
pipelines
improved embed api
moth11.net
1 month ago
35d16b37
c07cb22f
+94
-7
3 changed files
expand all
collapse all
unified
split
handler
handler.go
tmpl
embedbase.html
embedcollection.html
+60
-6
handler/handler.go
···
8
8
"log"
9
9
"net/http"
10
10
"os"
11
11
+
"strconv"
11
12
"tangled.org/moth11.net/88x31/db"
12
13
myoauth "tangled.org/moth11.net/88x31/oauth"
13
14
"tangled.org/moth11.net/88x31/types"
···
217
218
}
218
219
219
220
func (h *Handler) getuserlikes(w http.ResponseWriter, r *http.Request) {
220
220
-
did := r.URL.Query().Get("did")
221
221
-
bg := r.URL.Query().Get("bg")
221
221
+
q := r.URL.Query()
222
222
+
did := q.Get("did")
223
223
+
bg := q.Get("bg")
222
224
if len(bg) == 6 {
223
225
bg = fmt.Sprintf("#%s", bg)
224
226
} else {
225
227
bg = "white"
226
228
}
227
227
-
cursor := r.URL.Query().Get("cursor")
229
229
+
cursor := q.Get("cursor")
228
230
var crsr *string
229
231
if cursor != "" {
230
232
crsr = &cursor
231
233
}
234
234
+
attribute := q.Get("attribute")
235
235
+
initialsize := q.Get("initial-size")
236
236
+
isize, err := strconv.ParseFloat(initialsize, 64)
237
237
+
var tisize *float64
238
238
+
if err == nil {
239
239
+
tisize = &isize
240
240
+
}
241
241
+
hoverscale := q.Get("hover-scale")
242
242
+
hsize, err := strconv.ParseFloat(hoverscale, 64)
243
243
+
var thsize *float64
244
244
+
if err == nil {
245
245
+
thsize = &hsize
246
246
+
}
247
247
+
hoverrotate := q.Get("hover-rotate")
248
248
+
hrot, err := strconv.ParseFloat(hoverrotate, 64)
249
249
+
var throt *float64
250
250
+
if err != nil {
251
251
+
throt = &hrot
252
252
+
}
253
253
+
mr := q.Get("margin-right")
254
254
+
marginright, err := strconv.ParseFloat(mr, 64)
255
255
+
if err != nil {
256
256
+
marginright = 2
257
257
+
}
258
258
+
mb := q.Get("margin-bottom")
259
259
+
marginbottom, err := strconv.ParseFloat(mb, 64)
260
260
+
if err != nil {
261
261
+
marginbottom = 2
262
262
+
}
263
263
+
imageRendering := q.Get("image-rendering")
264
264
+
switch imageRendering {
265
265
+
case "auto", "smooth", "crisp-edges", "high-quality":
266
266
+
break
267
267
+
default:
268
268
+
imageRendering = "pixelated"
269
269
+
}
232
270
btns, ncrsr, err := h.db.GetUserLikes(did, 50, crsr, r.Context())
233
271
if err != nil {
234
272
log.Println(err)
···
236
274
return
237
275
}
238
276
type EmbedData struct {
239
239
-
Background string
240
240
-
Buttons []types.ButtonView
241
241
-
Cursor *time.Time
277
277
+
Background string
278
278
+
Buttons []types.ButtonView
279
279
+
Cursor *time.Time
280
280
+
Attribute bool
281
281
+
ImageRendering string
282
282
+
InitialSize *float64
283
283
+
HoverCSS bool
284
284
+
HoverSize *float64
285
285
+
HoverRotate *float64
286
286
+
MarginRight float64
287
287
+
MarginBottom float64
242
288
}
243
289
var ed EmbedData
244
290
ed.Background = bg
245
291
ed.Buttons = btns
246
292
ed.Cursor = ncrsr
293
293
+
ed.Attribute = attribute != ""
294
294
+
ed.ImageRendering = imageRendering
295
295
+
ed.InitialSize = tisize
296
296
+
ed.HoverSize = thsize
297
297
+
ed.HoverRotate = throt
298
298
+
ed.HoverCSS = throt == nil || thsize == nil
299
299
+
ed.MarginRight = marginright
300
300
+
ed.MarginBottom = marginbottom
247
301
err = embedT.ExecuteTemplate(w, "embedbase.html", ed)
248
302
if err != nil {
249
303
log.Println(err)
+26
tmpl/embedbase.html
···
8
8
body {
9
9
margin: 0;
10
10
}
11
11
+
img {
12
12
+
image-rendering: {{.ImageRendering}};
13
13
+
{{if .InitialSize}}
14
14
+
width: calc({{.InitialSize}} * 88px);
15
15
+
height: auto;
16
16
+
{{end}}
17
17
+
{{if .HoverCSS}}
18
18
+
transition: .067s
19
19
+
}
20
20
+
img:hover {
21
21
+
{{if .HoverScale}}
22
22
+
transform: scale({{.HoverScale}});
23
23
+
{{end}}
24
24
+
{{if .HoverRotate}}
25
25
+
rotate: {{.HoverRotate}}deg;
26
26
+
{{end}}
27
27
+
{{end}}
28
28
+
}
29
29
+
30
30
+
.button {
31
31
+
display: inline-block;
32
32
+
margin-right: {{.Margin-Right}}px;
33
33
+
margin-bottom: {{.Margin-Bottom}}px;
34
34
+
}
35
35
+
{{if .Attribute}}
11
36
.special {
12
37
background: linear-gradient(88deg, #f00, #ff0, #0f0, #0ff, #00f, #f0f);
13
38
}
39
39
+
{{end}}
14
40
</style>
15
41
</head>
16
42
<body>
+8
-1
tmpl/embedcollection.html
···
1
1
{{define "content"}}
2
2
+
<div>
2
3
{{range .Buttons}}
3
3
-
<div style="display: inline-block; margin-right: 2px; margin-bottom: 2px">
4
4
+
<div class="button">
4
5
{{template "buttonpart" .}}
6
6
+
</div>
7
7
+
{{end}}
8
8
+
</div>
9
9
+
{{if .Attribute}}
10
10
+
<div>
11
11
+
embedded via <a href="https://88x31.store">88x31.store</a>
5
12
</div>
6
13
{{end}}
7
14
{{end}}