aboutsummaryrefslogtreecommitdiff
path: root/renderer/model.go
blob: 2719dbe680d55f40ed316bf55f714cf9caa8316b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package renderer

import (
	"mastodon"
	"web/model"
)

type NavbarTemplateData struct {
	NotificationCount int
}

func NewNavbarTemplateData(notificationCount int) *NavbarTemplateData {
	return &NavbarTemplateData{
		NotificationCount: notificationCount,
	}
}

type TimelinePageTemplateData struct {
	Statuses    []*mastodon.Status
	HasNext     bool
	NextLink    string
	HasPrev     bool
	PrevLink    string
	PostContext model.PostContext
	NavbarData  *NavbarTemplateData
}

func NewTimelinePageTemplateData(statuses []*mastodon.Status, hasNext bool, nextLink string, hasPrev bool,
	prevLink string, postContext model.PostContext, navbarData *NavbarTemplateData) *TimelinePageTemplateData {
	return &TimelinePageTemplateData{
		Statuses:    statuses,
		HasNext:     hasNext,
		NextLink:    nextLink,
		HasPrev:     hasPrev,
		PrevLink:    prevLink,
		PostContext: postContext,
		NavbarData:  navbarData,
	}
}

type ThreadPageTemplateData struct {
	Statuses    []*mastodon.Status
	PostContext model.PostContext
	ReplyMap    map[string][]mastodon.ReplyInfo
	NavbarData  *NavbarTemplateData
}

func NewThreadPageTemplateData(statuses []*mastodon.Status, postContext model.PostContext, replyMap map[string][]mastodon.ReplyInfo, navbarData *NavbarTemplateData) *ThreadPageTemplateData {
	return &ThreadPageTemplateData{
		Statuses:    statuses,
		PostContext: postContext,
		ReplyMap:    replyMap,
		NavbarData:  navbarData,
	}
}

type NotificationPageTemplateData struct {
	Notifications []*mastodon.Notification
	HasNext       bool
	NextLink      string
	NavbarData    *NavbarTemplateData
}

func NewNotificationPageTemplateData(notifications []*mastodon.Notification, hasNext bool, nextLink string, navbarData *NavbarTemplateData) *NotificationPageTemplateData {
	return &NotificationPageTemplateData{
		Notifications: notifications,
		HasNext:       hasNext,
		NextLink:      nextLink,
		NavbarData:    navbarData,
	}
}

type UserPageTemplateData struct {
	User       *mastodon.Account
	Statuses   []*mastodon.Status
	HasNext    bool
	NextLink   string
	NavbarData *NavbarTemplateData
}

func NewUserPageTemplateData(user *mastodon.Account, statuses []*mastodon.Status, hasNext bool, nextLink string, navbarData *NavbarTemplateData) *UserPageTemplateData {
	return &UserPageTemplateData{
		User:       user,
		Statuses:   statuses,
		HasNext:    hasNext,
		NextLink:   nextLink,
		NavbarData: navbarData,
	}
}

type AboutPageTemplateData struct {
	NavbarData *NavbarTemplateData
}

func NewAboutPageTemplateData(navbarData *NavbarTemplateData) *AboutPageTemplateData {
	return &AboutPageTemplateData{
		NavbarData: navbarData,
	}
}

type EmojiPageTemplateData struct {
	NavbarData *NavbarTemplateData
	Emojis     []*mastodon.Emoji
}

func NewEmojiPageTemplateData(navbarData *NavbarTemplateData, emojis []*mastodon.Emoji) *EmojiPageTemplateData {
	return &EmojiPageTemplateData{
		NavbarData: navbarData,
		Emojis:     emojis,
	}
}