mirror of
				https://gitea.com/gitea/tea.git
				synced 2025-10-31 01:05:26 +01:00 
			
		
		
		
	Implement notification subcommands (#389)
- [x] enhance notification listing - add `--states` and `--type` filters - toggle per-user or per-repo listing via `--mine` flag - print more fields - [x] add subcommands to mark notifications as read, unread, pinned, unpinned. operates on - all notifications matching the `--state` and `--mine` filter flags, or - a notification specified by ID. - [ ] ~~add a `--fields` flag for notifications listing.~~ *not in this PR* - [ ] ~~interactive mode~~ *not in this PR*. this would go well together with #324 fixes #243, fixes #155 based on initial work in #283 and #386, but opening a new PR for @6543 to review as I changed quite a lot --- ### ⚠️ breaking ⚠️ - `tea notifications --all` has moved to `tea notifications --mine` - `tea notifications` now only works with the context of a remote repo. To run this outside of a local git dir, run either `tea n --mine` or `tea n --repo <my/repo>` --- Co-authored-by: Karl Heinz Marbaise <kama@soebes.de> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: Norwin Roosen <git@nroo.de> Reviewed-on: https://gitea.com/gitea/tea/pulls/389 Reviewed-by: 6543 <6543@obermui.de> Reviewed-by: Alexey 〒erentyev <axifive@noreply.gitea.io> Co-authored-by: Norwin <noerw@noreply.gitea.io> Co-committed-by: Norwin <noerw@noreply.gitea.io>
This commit is contained in:
		| @@ -5,11 +5,8 @@ | ||||
| package cmd | ||||
|  | ||||
| import ( | ||||
| 	"code.gitea.io/tea/cmd/flags" | ||||
| 	"code.gitea.io/tea/modules/context" | ||||
| 	"code.gitea.io/tea/modules/print" | ||||
| 	"code.gitea.io/tea/cmd/notifications" | ||||
|  | ||||
| 	"code.gitea.io/sdk/gitea" | ||||
| 	"github.com/urfave/cli/v2" | ||||
| ) | ||||
|  | ||||
| @@ -19,65 +16,14 @@ var CmdNotifications = cli.Command{ | ||||
| 	Aliases:     []string{"notification", "n"}, | ||||
| 	Category:    catHelpers, | ||||
| 	Usage:       "Show notifications", | ||||
| 	Description: "Show notifications, by default based of the current repo and unread one", | ||||
| 	Action:      runNotifications, | ||||
| 	Flags: append([]cli.Flag{ | ||||
| 		&cli.BoolFlag{ | ||||
| 			Name:    "all", | ||||
| 			Aliases: []string{"a"}, | ||||
| 			Usage:   "show all notifications of related gitea instance", | ||||
| 		}, | ||||
| 		&cli.BoolFlag{ | ||||
| 			Name:    "read", | ||||
| 			Aliases: []string{"rd"}, | ||||
| 			Usage:   "show read notifications instead unread", | ||||
| 		}, | ||||
| 		&cli.BoolFlag{ | ||||
| 			Name:    "pinned", | ||||
| 			Aliases: []string{"pd"}, | ||||
| 			Usage:   "show pinned notifications instead unread", | ||||
| 		}, | ||||
| 		&flags.PaginationPageFlag, | ||||
| 		&flags.PaginationLimitFlag, | ||||
| 	}, flags.AllDefaultFlags...), | ||||
| } | ||||
|  | ||||
| func runNotifications(cmd *cli.Context) error { | ||||
| 	var news []*gitea.NotificationThread | ||||
| 	var err error | ||||
|  | ||||
| 	ctx := context.InitCommand(cmd) | ||||
| 	client := ctx.Login.Client() | ||||
|  | ||||
| 	listOpts := ctx.GetListOptions() | ||||
| 	if listOpts.Page == 0 { | ||||
| 		listOpts.Page = 1 | ||||
| 	} | ||||
|  | ||||
| 	var status []gitea.NotifyStatus | ||||
| 	if ctx.Bool("read") { | ||||
| 		status = []gitea.NotifyStatus{gitea.NotifyStatusRead} | ||||
| 	} | ||||
| 	if ctx.Bool("pinned") { | ||||
| 		status = append(status, gitea.NotifyStatusPinned) | ||||
| 	} | ||||
|  | ||||
| 	if ctx.Bool("all") { | ||||
| 		news, _, err = client.ListNotifications(gitea.ListNotificationOptions{ | ||||
| 			ListOptions: listOpts, | ||||
| 			Status:      status, | ||||
| 		}) | ||||
| 	} else { | ||||
| 		ctx.Ensure(context.CtxRequirement{RemoteRepo: true}) | ||||
| 		news, _, err = client.ListRepoNotifications(ctx.Owner, ctx.Repo, gitea.ListNotificationOptions{ | ||||
| 			ListOptions: listOpts, | ||||
| 			Status:      status, | ||||
| 		}) | ||||
| 	} | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	print.NotificationsList(news, ctx.Output, ctx.Bool("all")) | ||||
| 	return nil | ||||
| 	Description: "Show notifications, by default based on the current repo if available", | ||||
| 	Action:      notifications.RunNotificationsList, | ||||
| 	Subcommands: []*cli.Command{ | ||||
| 		¬ifications.CmdNotificationsList, | ||||
| 		¬ifications.CmdNotificationsMarkRead, | ||||
| 		¬ifications.CmdNotificationsMarkUnread, | ||||
| 		¬ifications.CmdNotificationsMarkPinned, | ||||
| 		¬ifications.CmdNotificationsUnpin, | ||||
| 	}, | ||||
| 	Flags: notifications.CmdNotificationsList.Flags, | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Norwin
					Norwin