be777f6e83552b87e92bda6c8c6050f11839f1a3
[bloat] / renderer / model.go
1 package renderer
2
3 import (
4         "mastodon"
5         "web/model"
6 )
7
8 type NavbarTemplateData struct {
9         User              *mastodon.Account
10         NotificationCount int
11 }
12
13 func NewNavbarTemplateData(notificationCount int, user *mastodon.Account) *NavbarTemplateData {
14         return &NavbarTemplateData{
15                 NotificationCount: notificationCount,
16                 User:              user,
17         }
18 }
19
20 type TimelinePageTemplateData struct {
21         Title       string
22         Statuses    []*mastodon.Status
23         HasNext     bool
24         NextLink    string
25         HasPrev     bool
26         PrevLink    string
27         PostContext model.PostContext
28         NavbarData  *NavbarTemplateData
29 }
30
31 func NewTimelinePageTemplateData(title string, statuses []*mastodon.Status, hasNext bool, nextLink string, hasPrev bool,
32         prevLink string, postContext model.PostContext, navbarData *NavbarTemplateData) *TimelinePageTemplateData {
33         return &TimelinePageTemplateData{
34                 Title:       title,
35                 Statuses:    statuses,
36                 HasNext:     hasNext,
37                 NextLink:    nextLink,
38                 HasPrev:     hasPrev,
39                 PrevLink:    prevLink,
40                 PostContext: postContext,
41                 NavbarData:  navbarData,
42         }
43 }
44
45 type ThreadPageTemplateData struct {
46         Statuses    []*mastodon.Status
47         PostContext model.PostContext
48         ReplyMap    map[string][]mastodon.ReplyInfo
49         NavbarData  *NavbarTemplateData
50 }
51
52 func NewThreadPageTemplateData(statuses []*mastodon.Status, postContext model.PostContext, replyMap map[string][]mastodon.ReplyInfo, navbarData *NavbarTemplateData) *ThreadPageTemplateData {
53         return &ThreadPageTemplateData{
54                 Statuses:    statuses,
55                 PostContext: postContext,
56                 ReplyMap:    replyMap,
57                 NavbarData:  navbarData,
58         }
59 }
60
61 type NotificationPageTemplateData struct {
62         Notifications []*mastodon.Notification
63         HasNext       bool
64         NextLink      string
65         NavbarData    *NavbarTemplateData
66 }
67
68 func NewNotificationPageTemplateData(notifications []*mastodon.Notification, hasNext bool, nextLink string, navbarData *NavbarTemplateData) *NotificationPageTemplateData {
69         return &NotificationPageTemplateData{
70                 Notifications: notifications,
71                 HasNext:       hasNext,
72                 NextLink:      nextLink,
73                 NavbarData:    navbarData,
74         }
75 }
76
77 type UserPageTemplateData struct {
78         User       *mastodon.Account
79         Statuses   []*mastodon.Status
80         HasNext    bool
81         NextLink   string
82         NavbarData *NavbarTemplateData
83 }
84
85 func NewUserPageTemplateData(user *mastodon.Account, statuses []*mastodon.Status, hasNext bool, nextLink string, navbarData *NavbarTemplateData) *UserPageTemplateData {
86         return &UserPageTemplateData{
87                 User:       user,
88                 Statuses:   statuses,
89                 HasNext:    hasNext,
90                 NextLink:   nextLink,
91                 NavbarData: navbarData,
92         }
93 }
94
95 type AboutPageTemplateData struct {
96         NavbarData *NavbarTemplateData
97 }
98
99 func NewAboutPageTemplateData(navbarData *NavbarTemplateData) *AboutPageTemplateData {
100         return &AboutPageTemplateData{
101                 NavbarData: navbarData,
102         }
103 }
104
105 type EmojiPageTemplateData struct {
106         NavbarData *NavbarTemplateData
107         Emojis     []*mastodon.Emoji
108 }
109
110 func NewEmojiPageTemplateData(navbarData *NavbarTemplateData, emojis []*mastodon.Emoji) *EmojiPageTemplateData {
111         return &EmojiPageTemplateData{
112                 NavbarData: navbarData,
113                 Emojis:     emojis,
114         }
115 }