diff --git a/appview/models/repo.go b/appview/models/repo.go index 01ec43fb..7c1fc96e 100644 --- a/appview/models/repo.go +++ b/appview/models/repo.go @@ -7,6 +7,7 @@ import ( "github.com/bluesky-social/indigo/atproto/syntax" securejoin "github.com/cyphar/filepath-securejoin" + enry "github.com/go-enry/go-enry/v2" "tangled.org/core/api/tangled" ) @@ -114,6 +115,20 @@ type RepoStats struct { ForkCount int } +// returns the first file extension for the language ("ts" for typescript) as +// an uppercase string +func (s *RepoStats) LangShortName() string { + if s == nil || s.Language == "" { + return "" + } + exts := enry.GetLanguageExtensions(s.Language) + if len(exts) > 0 { + // extensions include the leading dot, e.g. ".ts" -> "TS" + return strings.ToUpper(strings.TrimPrefix(exts[0], ".")) + } + return s.Language +} + type IssueCount struct { Open int Closed int diff --git a/appview/pages/pages.go b/appview/pages/pages.go index fab2c2e8..3db60f14 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -407,6 +407,7 @@ type TimelineParams struct { GfiLabel *models.LabelDefinition BlueskyPosts []models.BskyPost VouchSuggestions []models.VouchSuggestion + Notifications []*models.NotificationWithEntity // ShowNewsletter controls whether the newsletter widget/CTA is rendered. // For logged-in users it reflects their newsletter_preferences row; for // anonymous visitors it is always true (dismissal falls back to diff --git a/appview/pages/templates/timeline/fragments/announcements.html b/appview/pages/templates/timeline/fragments/announcements.html index 3f79e39d..f281fb9c 100644 --- a/appview/pages/templates/timeline/fragments/announcements.html +++ b/appview/pages/templates/timeline/fragments/announcements.html @@ -1,10 +1,10 @@ {{ define "timeline/fragments/announcements" }} -