From ae970802cfcf0789d5d17c952b4f07cbe9769399 Mon Sep 17 00:00:00 2001 From: Raffaele Sena Date: Tue, 22 Nov 2022 11:23:26 -0800 Subject: [PATCH] Add command timeline-tag to search for statuses matching the tag. Since `search` only return the list of tags matching the search, this is helpful to actually see the statuses for a particular tag. --- cmd/mstdn/cmd_timeline.go | 22 ++++++++++++++++++++++ cmd/mstdn/main.go | 11 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/cmd/mstdn/cmd_timeline.go b/cmd/mstdn/cmd_timeline.go index 987a5c4..6272af4 100644 --- a/cmd/mstdn/cmd_timeline.go +++ b/cmd/mstdn/cmd_timeline.go @@ -2,6 +2,8 @@ package main import ( "context" + "errors" + "strings" "github.com/mattn/go-mastodon" "github.com/urfave/cli/v2" @@ -66,3 +68,23 @@ func cmdTimelineDirect(c *cli.Context) error { } return nil } + +func cmdTimelineHashtag(c *cli.Context) error { + if !c.Args().Present() { + return errors.New("arguments required") + } + local := c.Bool("local") + tag := strings.TrimLeft(argstr(c), "#") + + client := c.App.Metadata["client"].(*mastodon.Client) + config := c.App.Metadata["config"].(*mastodon.Config) + timeline, err := client.GetTimelineHashtag(context.Background(), tag, local, nil) + if err != nil { + return err + } + s := newScreen(config) + for i := len(timeline) - 1; i >= 0; i-- { + s.displayStatus(c.App.Writer, timeline[i]) + } + return nil +} diff --git a/cmd/mstdn/main.go b/cmd/mstdn/main.go index db17144..a52cf10 100644 --- a/cmd/mstdn/main.go +++ b/cmd/mstdn/main.go @@ -255,6 +255,17 @@ func makeApp() *cli.App { Usage: "show timeline direct", Action: cmdTimelineDirect, }, + { + Name: "timeline-tag", + Flags: []cli.Flag{ + cli.BoolFlag{ + Name: "local", + Usage: "local tags only", + }, + }, + Usage: "show tagged timeline", + Action: cmdTimelineHashtag, + }, { Name: "notification", Usage: "show notification",