A vibe coded tangled fork which supports pijul.
1package models
2
3import (
4 "time"
5
6 "github.com/bluesky-social/indigo/atproto/syntax"
7 "tangled.org/core/api/tangled"
8)
9
10type ReactionKind string
11
12const (
13 Like ReactionKind = "👍"
14 Unlike ReactionKind = "👎"
15 Laugh ReactionKind = "😆"
16 Celebration ReactionKind = "🎉"
17 Confused ReactionKind = "🫤"
18 Heart ReactionKind = "❤️"
19 Rocket ReactionKind = "🚀"
20 Eyes ReactionKind = "👀"
21)
22
23func (rk ReactionKind) String() string {
24 return string(rk)
25}
26
27var OrderedReactionKinds = []ReactionKind{
28 Like,
29 Unlike,
30 Laugh,
31 Celebration,
32 Confused,
33 Heart,
34 Rocket,
35 Eyes,
36}
37
38func ParseReactionKind(raw string) (ReactionKind, bool) {
39 k, ok := (map[string]ReactionKind{
40 "👍": Like,
41 "👎": Unlike,
42 "😆": Laugh,
43 "🎉": Celebration,
44 "🫤": Confused,
45 "❤️": Heart,
46 "🚀": Rocket,
47 "👀": Eyes,
48 })[raw]
49 return k, ok
50}
51
52type Reaction struct {
53 ReactedByDid string
54 ThreadAt syntax.ATURI
55 Created time.Time
56 Rkey string
57 Kind ReactionKind
58}
59
60func (r *Reaction) AsRecord() tangled.FeedReaction {
61 return tangled.FeedReaction{
62 Subject: r.ThreadAt.String(),
63 Reaction: r.Kind.String(),
64 CreatedAt: r.Created.Format(time.RFC3339),
65 }
66}
67
68type ReactionDisplayData struct {
69 Count int
70 Users []string
71}