Add userinfo in navigation
[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         Statuses    []*mastodon.Status
22         HasNext     bool
23         NextLink    string
24         HasPrev     bool
25         PrevLink    string
26         PostContext model.PostContext
27         NavbarData  *NavbarTemplateData
28 }
29
30 func NewTimelinePageTemplateData(statuses []*mastodon.Status, hasNext bool, nextLink string, hasPrev bool,
31         prevLink string, postContext model.PostContext, navbarData *NavbarTemplateData) *TimelinePageTemplateData {
32         return &TimelinePageTemplateData{
33                 Statuses:    statuses,
34                 HasNext:     hasNext,
35                 NextLink:    nextLink,
36                 HasPrev:     hasPrev,
37                 PrevLink:    prevLink,
38                 PostContext: postContext,
39                 NavbarData:  navbarData,
40         }
41 }
42
43 type ThreadPageTemplateData struct {
44         Statuses    []*mastodon.Status
45         PostContext model.PostContext
46         ReplyMap    map[string][]mastodon.ReplyInfo
47         NavbarData  *NavbarTemplateData
48 }
49
50 func NewThreadPageTemplateData(statuses []*mastodon.Status, postContext model.PostContext, replyMap map[string][]mastodon.ReplyInfo, navbarData *NavbarTemplateData) *ThreadPageTemplateData {
51         return &ThreadPageTemplateData{
52                 Statuses:    statuses,
53                 PostContext: postContext,
54                 ReplyMap:    replyMap,
55                 NavbarData:  navbarData,
56         }
57 }
58
59 type NotificationPageTemplateData struct {
60         Notifications []*mastodon.Notification
61         HasNext       bool
62         NextLink      string
63         NavbarData    *NavbarTemplateData
64 }
65
66 func NewNotificationPageTemplateData(notifications []*mastodon.Notification, hasNext bool, nextLink string, navbarData *NavbarTemplateData) *NotificationPageTemplateData {
67         return &NotificationPageTemplateData{
68                 Notifications: notifications,
69                 HasNext:       hasNext,
70                 NextLink:      nextLink,
71                 NavbarData:    navbarData,
72         }
73 }
74
75 type UserPageTemplateData struct {
76         User       *mastodon.Account
77         Statuses   []*mastodon.Status
78         HasNext    bool
79         NextLink   string
80         NavbarData *NavbarTemplateData
81 }
82
83 func NewUserPageTemplateData(user *mastodon.Account, statuses []*mastodon.Status, hasNext bool, nextLink string, navbarData *NavbarTemplateData) *UserPageTemplateData {
84         return &UserPageTemplateData{
85                 User:       user,
86                 Statuses:   statuses,
87                 HasNext:    hasNext,
88                 NextLink:   nextLink,
89                 NavbarData: navbarData,
90         }
91 }
92
93 type AboutPageTemplateData struct {
94         NavbarData *NavbarTemplateData
95 }
96
97 func NewAboutPageTemplateData(navbarData *NavbarTemplateData) *AboutPageTemplateData {
98         return &AboutPageTemplateData{
99                 NavbarData: navbarData,
100         }
101 }
102
103 type EmojiPageTemplateData struct {
104         NavbarData *NavbarTemplateData
105         Emojis     []*mastodon.Emoji
106 }
107
108 func NewEmojiPageTemplateData(navbarData *NavbarTemplateData, emojis []*mastodon.Emoji) *EmojiPageTemplateData {
109         return &EmojiPageTemplateData{
110                 NavbarData: navbarData,
111                 Emojis:     emojis,
112         }
113 }