12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package widget
- import (
- "context"
- "html/template"
- "time"
- "github.com/glanceapp/glance/internal/assets"
- "github.com/glanceapp/glance/internal/feed"
- )
- type Repository struct {
- widgetBase `yaml:",inline"`
- RequestedRepository string `yaml:"repository"`
- Token OptionalEnvString `yaml:"token"`
- PullRequestsLimit int `yaml:"pull-requests-limit"`
- IssuesLimit int `yaml:"issues-limit"`
- RepositoryDetails feed.RepositoryDetails
- }
- func (widget *Repository) Initialize() error {
- widget.withTitle("Repository").withCacheDuration(1 * time.Hour)
- if widget.PullRequestsLimit == 0 || widget.PullRequestsLimit < -1 {
- widget.PullRequestsLimit = 3
- }
- if widget.IssuesLimit == 0 || widget.IssuesLimit < -1 {
- widget.IssuesLimit = 3
- }
- return nil
- }
- func (widget *Repository) Update(ctx context.Context) {
- details, err := feed.FetchRepositoryDetailsFromGithub(
- widget.RequestedRepository,
- string(widget.Token),
- widget.PullRequestsLimit,
- widget.IssuesLimit,
- )
- if !widget.canContinueUpdateAfterHandlingErr(err) {
- return
- }
- widget.RepositoryDetails = details
- }
- func (widget *Repository) Render() template.HTML {
- return widget.render(widget, assets.RepositoryTemplate)
- }
|