From a691aee6a3fd5d4f98930295cc2acdda90a0cca1 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 | 9 +++--- .../templates/user/fragments/repoCard.html | 28 ++++++++++++++----- 3 files changed, 47 insertions(+), 16 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..6adb4e10 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,7 @@ {{ template "repo/fragments/time" $repo.Created }}
{{ with $repo }} - {{ template "user/fragments/repoCard" (list $root . true) }} + {{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "RepoAt" .RepoAt "Stats" (dict "StarCount" $event.StarCount))) }} {{ end }} {{ end }} diff --git a/appview/pages/templates/user/fragments/repoCard.html b/appview/pages/templates/user/fragments/repoCard.html index 04b8f5d3..a96a5ef3 100644 --- a/appview/pages/templates/user/fragments/repoCard.html +++ b/appview/pages/templates/user/fragments/repoCard.html @@ -2,22 +2,36 @@ {{ $root := index . 0 }} {{ $repo := index . 1 }} {{ $fullName := index . 2 }} + {{ $starButton := false }} + {{ $starData := dict }} + {{ if gt (len .) 3 }} + {{ $starButton = index . 3 }} + {{ if gt (len .) 4 }} + {{ $starData = index . 4 }} + {{ end }} + {{ end }} {{ with $repo }}
-
+
+
{{ 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 }} - {{- if $fullName -}} - {{ $repoOwner }}/{{ .Name }} - {{- else -}} - {{ .Name }} - {{- end -}} + {{ $repoOwner := resolve .Did }} + {{- if $fullName -}} + {{ $repoOwner }}/{{ .Name }} + {{- else -}} + {{ .Name }} + {{- end -}} +
+ + {{ if and $starButton $root.LoggedInUser }} + {{ template "repo/fragments/repoStar" $starData }} + {{ end }}
{{ with .Description }}
-- 2.43.0