From 70af960451c5f4189b11bea1ca186c2aa2470490 Mon Sep 17 00:00:00 2001 From: Anirudh Oppiliappan Date: Wed, 3 Sep 2025 14:59:37 +0300 Subject: [PATCH] appview/{pages,db}: show star/unstar buttons on the timeline Change-Id: qrltzqmlrllnwnprnlwrkolxwnllvkuz Signed-off-by: Anirudh Oppiliappan --- appview/db/timeline.go | 26 +++++++-- .../timeline/fragments/timeline.html | 56 +++++++++++++++++-- 2 files changed, 73 insertions(+), 9 deletions(-) diff --git a/appview/db/timeline.go b/appview/db/timeline.go index b016ef23..5de7e13c 100644 --- a/appview/db/timeline.go +++ b/appview/db/timeline.go @@ -19,6 +19,10 @@ type TimelineEvent struct { *Profile *FollowStats *FollowStatus + + // optional: populate only if event is Repo + IsStarred bool + StarCount int64 } // TODO: this gathers heterogenous events from different sources and aggregates @@ -26,7 +30,7 @@ type TimelineEvent struct { func MakeTimeline(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { var events []TimelineEvent - repos, err := getTimelineRepos(e, limit) + repos, err := getTimelineRepos(e, limit, loggedInUserDid) if err != nil { return nil, err } @@ -57,7 +61,7 @@ func MakeTimeline(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, return events, nil } -func getTimelineRepos(e Execer, limit int) ([]TimelineEvent, error) { +func getTimelineRepos(e Execer, limit int, loggedInUserDid string) ([]TimelineEvent, error) { repos, err := GetRepos(e, limit) if err != nil { return nil, err @@ -93,10 +97,22 @@ func getTimelineRepos(e Execer, limit int) ([]TimelineEvent, error) { } } + var isStarred bool + if loggedInUserDid != "" { + isStarred = GetStarStatus(e, loggedInUserDid, r.RepoAt()) + } + + var starCount int64 + if r.RepoStats != nil { + starCount = int64(r.RepoStats.StarCount) + } + events = append(events, TimelineEvent{ - Repo: &r, - EventAt: r.Created, - Source: source, + Repo: &r, + EventAt: r.Created, + Source: source, + IsStarred: isStarred, + StarCount: starCount, }) } diff --git a/appview/pages/templates/timeline/fragments/timeline.html b/appview/pages/templates/timeline/fragments/timeline.html index 5b46264a..c1374ee0 100644 --- a/appview/pages/templates/timeline/fragments/timeline.html +++ b/appview/pages/templates/timeline/fragments/timeline.html @@ -13,7 +13,7 @@ {{ with $e }}
{{ if .Repo }} - {{ template "timeline/fragments/repoEvent" (list $ .Repo .Source) }} + {{ template "timeline/fragments/repoEvent" (list $ .) }} {{ else if .Star }} {{ template "timeline/fragments/starEvent" (list $ .Star) }} {{ else if .Follow }} @@ -29,8 +29,9 @@ {{ define "timeline/fragments/repoEvent" }} {{ $root := index . 0 }} - {{ $repo := index . 1 }} - {{ $source := index . 2 }} + {{ $event := index . 1 }} + {{ $repo := $event.Repo }} + {{ $source := $event.Source }} {{ $userHandle := resolve $repo.Did }}
{{ template "user/fragments/picHandleLink" $repo.Did }} @@ -51,7 +52,54 @@ {{ template "repo/fragments/time" $repo.Created }}
{{ with $repo }} - {{ template "user/fragments/repoCard" (list $root . true) }} +
+
+
+ {{ if .Source }} + {{ i "git-fork" "w-4 h-4 mr-1.5 shrink-0" }} + {{ else }} + {{ i "book-marked" "w-4 h-4 mr-1.5 shrink-0" }} + {{ end }} + + {{ $repoOwner := resolve .Did }} + {{ $repoOwner }}/{{ .Name }} +
+ + {{ if $root.LoggedInUser }} + {{ template "repo/fragments/repoStar" (dict "IsStarred" $event.IsStarred "RepoAt" .RepoAt "Stats" (dict "StarCount" $event.StarCount)) }} + {{ end }} +
+ + {{ with .Description }} +
+ {{ . | description }} +
+ {{ end }} + + {{ if .RepoStats }} +
+ {{ with .RepoStats.Language }} +
+
+ {{ . }} +
+ {{ end }} + {{ with .RepoStats.IssueCount.Open }} +
+ {{ i "circle-dot" "w-3 h-3" }} + {{ . }} +
+ {{ end }} + {{ with .RepoStats.PullCount.Open }} +
+ {{ i "git-pull-request" "w-3 h-3" }} + {{ . }} +
+ {{ end }} +
+ {{ end }} +
{{ end }} {{ end }} -- 2.43.0