Add remote timeline
This commit is contained in:
parent
eca0366c21
commit
ac342dde07
|
@ -191,9 +191,11 @@ func (c *Client) GetTimelineHome(ctx context.Context, pg *Pagination) ([]*Status
|
|||
}
|
||||
|
||||
// GetTimelinePublic return statuses from public timeline.
|
||||
func (c *Client) GetTimelinePublic(ctx context.Context, isLocal bool, pg *Pagination) ([]*Status, error) {
|
||||
func (c *Client) GetTimelinePublic(ctx context.Context, isLocal bool, instance string, pg *Pagination) ([]*Status, error) {
|
||||
params := url.Values{}
|
||||
if isLocal {
|
||||
if len(instance) > 0 {
|
||||
params.Set("instance", instance)
|
||||
} else if isLocal {
|
||||
params.Set("local", "true")
|
||||
}
|
||||
|
||||
|
|
|
@ -52,6 +52,8 @@ type RootData struct {
|
|||
type TimelineData struct {
|
||||
*CommonData
|
||||
Title string
|
||||
Type string
|
||||
Instance string
|
||||
Statuses []*mastodon.Status
|
||||
NextLink string
|
||||
PrevLink string
|
||||
|
|
|
@ -158,7 +158,7 @@ func (s *service) NavPage(c *client) (err error) {
|
|||
return s.renderer.Render(rCtx, c, renderer.NavPage, data)
|
||||
}
|
||||
|
||||
func (s *service) TimelinePage(c *client, tType string,
|
||||
func (s *service) TimelinePage(c *client, tType string, instance string,
|
||||
maxID string, minID string) (err error) {
|
||||
|
||||
var nextLink, prevLink, title string
|
||||
|
@ -179,10 +179,15 @@ func (s *service) TimelinePage(c *client, tType string,
|
|||
statuses, err = c.GetTimelineDirect(ctx, &pg)
|
||||
title = "Direct Timeline"
|
||||
case "local":
|
||||
statuses, err = c.GetTimelinePublic(ctx, true, &pg)
|
||||
statuses, err = c.GetTimelinePublic(ctx, true, "", &pg)
|
||||
title = "Local Timeline"
|
||||
case "remote":
|
||||
if len(instance) > 0 {
|
||||
statuses, err = c.GetTimelinePublic(ctx, false, instance, &pg)
|
||||
}
|
||||
title = "Remote Timeline"
|
||||
case "twkn":
|
||||
statuses, err = c.GetTimelinePublic(ctx, false, &pg)
|
||||
statuses, err = c.GetTimelinePublic(ctx, false, "", &pg)
|
||||
title = "The Whole Known Network"
|
||||
}
|
||||
if err != nil {
|
||||
|
@ -196,17 +201,28 @@ func (s *service) TimelinePage(c *client, tType string,
|
|||
}
|
||||
|
||||
if (len(maxID) > 0 || len(minID) > 0) && len(statuses) > 0 {
|
||||
prevLink = fmt.Sprintf("/timeline/%s?min_id=%s", tType,
|
||||
statuses[0].ID)
|
||||
v := make(url.Values)
|
||||
v.Set("min_id", statuses[0].ID)
|
||||
if len(instance) > 0 {
|
||||
v.Set("instance", instance)
|
||||
}
|
||||
prevLink = "/timeline/" + tType + "?" + v.Encode()
|
||||
}
|
||||
|
||||
if len(minID) > 0 || (len(pg.MaxID) > 0 && len(statuses) == 20) {
|
||||
nextLink = fmt.Sprintf("/timeline/%s?max_id=%s", tType, pg.MaxID)
|
||||
v := make(url.Values)
|
||||
v.Set("max_id", pg.MaxID)
|
||||
if len(instance) > 0 {
|
||||
v.Set("instance", instance)
|
||||
}
|
||||
nextLink = "/timeline/" + tType + "?" + v.Encode()
|
||||
}
|
||||
|
||||
commonData := s.getCommonData(c, tType+" timeline ")
|
||||
data := &renderer.TimelineData{
|
||||
Title: title,
|
||||
Type: tType,
|
||||
Instance: instance,
|
||||
Statuses: statuses,
|
||||
NextLink: nextLink,
|
||||
PrevLink: prevLink,
|
||||
|
|
|
@ -190,10 +190,10 @@ func NewHandler(s *service, logger *log.Logger, staticDir string) http.Handler {
|
|||
timelinePage := handle(func(c *client) error {
|
||||
tType, _ := mux.Vars(c.Req)["type"]
|
||||
q := c.Req.URL.Query()
|
||||
instance := q.Get("instance")
|
||||
maxID := q.Get("max_id")
|
||||
minID := q.Get("min_id")
|
||||
return s.TimelinePage(c, tType, maxID, minID)
|
||||
return nil
|
||||
return s.TimelinePage(c, tType, instance, maxID, minID)
|
||||
}, SESSION, HTML)
|
||||
|
||||
defaultTimelinePage := handle(func(c *client) error {
|
||||
|
|
|
@ -17,9 +17,9 @@
|
|||
<a class="nav-link" href="/timeline/home" accesskey="1" title="Home timeline (1)">home</a>
|
||||
<a class="nav-link" href="/timeline/direct" accesskey="2" title="Direct timeline (2)">direct</a>
|
||||
<a class="nav-link" href="/timeline/local" accesskey="3" title="Local timeline (3)">local</a>
|
||||
<a class="nav-link" href="/timeline/twkn" accesskey="4" title="The Whole Known Netwwork (4)">twkn</a>
|
||||
<a class="nav-link" href="/search" accesskey="5" title="Search (5)">search</a>
|
||||
<a class="nav-link" href="/about" accesskey="6" title="About (6)">about</a>
|
||||
<a class="nav-link" href="/timeline/remote" accesskey="4" title="Remote timeline (4)">remote</a>
|
||||
<a class="nav-link" href="/timeline/twkn" accesskey="5" title="The Whole Known Netwwork (5)">twkn</a>
|
||||
<a class="nav-link" href="/search" accesskey="6" title="Search (6)">search</a>
|
||||
</div>
|
||||
<div>
|
||||
<a class="nav-link" href="/settings" target="_top" accesskey="7" title="Settings (7)">settings</a>
|
||||
|
@ -28,6 +28,7 @@
|
|||
<input type="hidden" name="referrer" value="{{$.Ctx.Referrer}}">
|
||||
<input type="submit" value="signout" class="btn-link nav-link" accesskey="8" title="Signout (8)">
|
||||
</form>
|
||||
<a class="nav-link" href="/about" accesskey="9" title="About (9)">about</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<link rel="icon" type="image/png" href="/static/favicon.png">
|
||||
<title>{{.Title}}</title>
|
||||
</head>
|
||||
<frameset cols="420px,*">
|
||||
<frameset cols="424px,*">
|
||||
<frameset rows="316px,*">
|
||||
<frame name="nav" src="/nav">
|
||||
<frame name="notification" src="/notifications">
|
||||
|
|
|
@ -2,6 +2,16 @@
|
|||
{{template "header.tmpl" (WithContext .CommonData $.Ctx)}}
|
||||
<div class="page-title"> {{.Title}} </div>
|
||||
|
||||
{{if eq .Type "remote"}}
|
||||
<form class="search-form" action="/timeline/remote" method="GET">
|
||||
<span class="post-form-field">
|
||||
<label for="instance"> Instance </label>
|
||||
<input id="instance" name="instance" value="{{.Instance}}">
|
||||
</span>
|
||||
<button type="submit"> Submit </button>
|
||||
</form>
|
||||
{{end}}
|
||||
|
||||
{{range .Statuses}}
|
||||
{{template "status.tmpl" (WithContext . $.Ctx)}}
|
||||
{{end}}
|
||||
|
|
Loading…
Reference in New Issue