diff options
author | r <r@freesoftwareextremist.com> | 2020-01-31 03:38:49 +0000 |
---|---|---|
committer | r <r@freesoftwareextremist.com> | 2020-01-31 03:38:49 +0000 |
commit | a981085260af2623bd4988e4b9c0052e2e3035eb (patch) | |
tree | 8b1f2f35274a2e5fee77f2498f0b7569dca18b7e /service/service.go | |
parent | 6a6cc744b7d9ed1b57dc2e88cd22e73275d5dcbe (diff) | |
download | bloat-a981085260af2623bd4988e4b9c0052e2e3035eb.tar.gz bloat-a981085260af2623bd4988e4b9c0052e2e3035eb.zip |
Update user page
- Use the same page to display status and user list
- Add media only status list
Diffstat (limited to 'service/service.go')
-rw-r--r-- | service/service.go | 125 |
1 files changed, 46 insertions, 79 deletions
diff --git a/service/service.go b/service/service.go index fe025b8..ae480d1 100644 --- a/service/service.go +++ b/service/service.go @@ -25,10 +25,9 @@ type Service interface { ServeThreadPage(ctx context.Context, c *model.Client, id string, reply bool) (err error) ServeLikedByPage(ctx context.Context, c *model.Client, id string) (err error) ServeRetweetedByPage(ctx context.Context, c *model.Client, id string) (err error) - ServeFollowingPage(ctx context.Context, c *model.Client, id string, maxID string, minID string) (err error) - ServeFollowersPage(ctx context.Context, c *model.Client, id string, maxID string, minID string) (err error) ServeNotificationPage(ctx context.Context, c *model.Client, maxID string, minID string) (err error) - ServeUserPage(ctx context.Context, c *model.Client, id string, maxID string, minID string) (err error) + ServeUserPage(ctx context.Context, c *model.Client, id string, pageType string, + maxID string, minID string) (err error) ServeAboutPage(ctx context.Context, c *model.Client) (err error) ServeEmojiPage(ctx context.Context, c *model.Client) (err error) ServeSearchPage(ctx context.Context, c *model.Client, q string, qType string, offset int) (err error) @@ -407,73 +406,6 @@ func (svc *service) ServeRetweetedByPage(ctx context.Context, c *model.Client, return svc.renderer.RenderRetweetedByPage(rCtx, c.Writer, data) } -func (svc *service) ServeFollowingPage(ctx context.Context, c *model.Client, - id string, maxID string, minID string) (err error) { - - var nextLink string - var pg = mastodon.Pagination{ - MaxID: maxID, - MinID: minID, - Limit: 20, - } - - followings, err := c.GetAccountFollowing(ctx, id, &pg) - if err != nil { - return - } - - if len(followings) == 20 && len(pg.MaxID) > 0 { - nextLink = "/following/" + id + "?max_id=" + pg.MaxID - } - - commonData, err := svc.getCommonData(ctx, c, "following") - if err != nil { - return - } - - data := &renderer.FollowingData{ - CommonData: commonData, - Users: followings, - NextLink: nextLink, - } - - rCtx := getRendererContext(c) - return svc.renderer.RenderFollowingPage(rCtx, c.Writer, data) -} - -func (svc *service) ServeFollowersPage(ctx context.Context, c *model.Client, - id string, maxID string, minID string) (err error) { - - var nextLink string - var pg = mastodon.Pagination{ - MaxID: maxID, - MinID: minID, - Limit: 20, - } - - followers, err := c.GetAccountFollowers(ctx, id, &pg) - if err != nil { - return - } - - if len(followers) == 20 && len(pg.MaxID) > 0 { - nextLink = "/followers/" + id + "?max_id=" + pg.MaxID - } - - commonData, err := svc.getCommonData(ctx, c, "followers") - if err != nil { - return - } - - data := &renderer.FollowersData{ - CommonData: commonData, - Users: followers, - NextLink: nextLink, - } - rCtx := getRendererContext(c) - return svc.renderer.RenderFollowersPage(rCtx, c.Writer, data) -} - func (svc *service) ServeNotificationPage(ctx context.Context, c *model.Client, maxID string, minID string) (err error) { @@ -522,10 +454,11 @@ func (svc *service) ServeNotificationPage(ctx context.Context, c *model.Client, } func (svc *service) ServeUserPage(ctx context.Context, c *model.Client, - id string, maxID string, minID string) (err error) { + id string, pageType string, maxID string, minID string) (err error) { var nextLink string - + var statuses []*mastodon.Status + var users []*mastodon.Account var pg = mastodon.Pagination{ MaxID: maxID, MinID: minID, @@ -537,13 +470,45 @@ func (svc *service) ServeUserPage(ctx context.Context, c *model.Client, return } - statuses, err := c.GetAccountStatuses(ctx, id, &pg) - if err != nil { - return - } - - if len(pg.MaxID) > 0 { - nextLink = "/user/" + id + "?max_id=" + pg.MaxID + switch pageType { + case "": + statuses, err = c.GetAccountStatuses(ctx, id, false, &pg) + if err != nil { + return + } + if len(statuses) == 20 && len(pg.MaxID) > 0 { + nextLink = fmt.Sprintf("/user/%s?max_id=%s", id, + pg.MaxID) + } + case "following": + users, err = c.GetAccountFollowing(ctx, id, &pg) + if err != nil { + return + } + if len(users) == 20 && len(pg.MaxID) > 0 { + nextLink = fmt.Sprintf("/user/%s/following?max_id=%s", + id, pg.MaxID) + } + case "followers": + users, err = c.GetAccountFollowers(ctx, id, &pg) + if err != nil { + return + } + if len(users) == 20 && len(pg.MaxID) > 0 { + nextLink = fmt.Sprintf("/user/%s/followers?max_id=%s", + id, pg.MaxID) + } + case "media": + statuses, err = c.GetAccountStatuses(ctx, id, true, &pg) + if err != nil { + return + } + if len(statuses) == 20 && len(pg.MaxID) > 0 { + nextLink = fmt.Sprintf("/user/%s/media?max_id=%s", + id, pg.MaxID) + } + default: + return errInvalidArgument } commonData, err := svc.getCommonData(ctx, c, user.DisplayName) @@ -553,6 +518,8 @@ func (svc *service) ServeUserPage(ctx context.Context, c *model.Client, data := &renderer.UserData{ User: user, + Type: pageType, + Users: users, Statuses: statuses, NextLink: nextLink, CommonData: commonData, |