From 3a3625ae6d9127ffa76be3dc8e4b53479810e4f6 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Tue, 18 Nov 2025 00:17:22 +0900 Subject: [PATCH] appview: support star for `sh.tangled.string` Change-Id: uzmtowmlwkvzvmkpvutxzokotnrrtzxv Not sending "XXX starred your string" notif yet. Close: Signed-off-by: Seongmin Lee --- appview/models/string.go | 2 +- appview/pages/pages.go | 14 ++++++++------ .../repoStar.html => fragments/starBtn.html} | 8 ++++---- appview/pages/templates/layouts/repobase.html | 5 ++++- appview/pages/templates/strings/string.html | 12 ++++++++---- .../templates/timeline/fragments/timeline.html | 4 ++-- .../pages/templates/user/fragments/repoCard.html | 3 ++- appview/state/star.go | 16 ++++++---------- appview/strings/strings.go | 16 ++++++++++++++-- 9 files changed, 49 insertions(+), 31 deletions(-) rename appview/pages/templates/{repo/fragments/repoStar.html => fragments/starBtn.html} (72%) diff --git a/appview/models/string.go b/appview/models/string.go index 9993d8a2..718abfcd 100644 --- a/appview/models/string.go +++ b/appview/models/string.go @@ -22,7 +22,7 @@ type String struct { Edited *time.Time } -func (s *String) StringAt() syntax.ATURI { +func (s *String) AtUri() syntax.ATURI { return syntax.ATURI(fmt.Sprintf("at://%s/%s/%s", s.Did, tangled.StringNSID, s.Rkey)) } diff --git a/appview/pages/pages.go b/appview/pages/pages.go index 80e2803b..79281e4b 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -625,14 +625,14 @@ func (p *Pages) EditPinsFragment(w io.Writer, params EditPinsParams) error { return p.executePlain("user/fragments/editPins", w, params) } -type RepoStarFragmentParams struct { +type StarBtnFragmentParams struct { IsStarred bool - RepoAt syntax.ATURI - Stats models.RepoStats + SubjectAt syntax.ATURI + StarCount int } -func (p *Pages) RepoStarFragment(w io.Writer, params RepoStarFragmentParams) error { - return p.executePlain("repo/fragments/repoStar", w, params) +func (p *Pages) StarBtnFragment(w io.Writer, params StarBtnFragmentParams) error { + return p.executePlain("fragments/starBtn", w, params) } type RepoIndexParams struct { @@ -1376,8 +1376,10 @@ type SingleStringParams struct { ShowRendered bool RenderToggle bool RenderedContents template.HTML - String models.String + String *models.String Stats models.StringStats + IsStarred bool + StarCount int Owner identity.Identity } diff --git a/appview/pages/templates/repo/fragments/repoStar.html b/appview/pages/templates/fragments/starBtn.html similarity index 72% rename from appview/pages/templates/repo/fragments/repoStar.html rename to appview/pages/templates/fragments/starBtn.html index 7ca59a95..6ddf9a6a 100644 --- a/appview/pages/templates/repo/fragments/repoStar.html +++ b/appview/pages/templates/fragments/starBtn.html @@ -1,11 +1,11 @@ -{{ define "repo/fragments/repoStar" }} +{{ define "fragments/starBtn" }} diff --git a/appview/pages/templates/layouts/repobase.html b/appview/pages/templates/layouts/repobase.html index 85af97ec..b1242a3d 100644 --- a/appview/pages/templates/layouts/repobase.html +++ b/appview/pages/templates/layouts/repobase.html @@ -49,7 +49,10 @@
- {{ template "repo/fragments/repoStar" .RepoInfo }} + {{ template "fragments/starBtn" + (dict "SubjectAt" .RepoInfo.RepoAt + "IsStarred" .RepoInfo.IsStarred + "StarCount" .RepoInfo.Stats.StarCount) }} / {{ .String.Filename }}
- {{ if and .LoggedInUser (eq .LoggedInUser.Did .String.Did) }} - {{ with .String.Description }} diff --git a/appview/pages/templates/timeline/fragments/timeline.html b/appview/pages/templates/timeline/fragments/timeline.html index 725e4245..a3c40efc 100644 --- a/appview/pages/templates/timeline/fragments/timeline.html +++ b/appview/pages/templates/timeline/fragments/timeline.html @@ -52,7 +52,7 @@ {{ template "repo/fragments/time" $repo.Created }} {{ with $repo }} - {{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "RepoAt" .RepoAt "Stats" (dict "StarCount" $event.StarCount))) }} + {{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "SubjectAt" .RepoAt "StarCount" $event.StarCount)) }} {{ end }} {{ end }} @@ -72,7 +72,7 @@ {{ template "repo/fragments/time" .Created }} {{ with .Repo }} - {{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "RepoAt" .RepoAt "Stats" (dict "StarCount" $event.StarCount))) }} + {{ template "user/fragments/repoCard" (list $root . true true (dict "IsStarred" $event.IsStarred "SubjectAt" .RepoAt "StarCount" $event.StarCount)) }} {{ end }} {{ end }} {{ end }} diff --git a/appview/pages/templates/user/fragments/repoCard.html b/appview/pages/templates/user/fragments/repoCard.html index bd3eb8e1..f4392437 100644 --- a/appview/pages/templates/user/fragments/repoCard.html +++ b/appview/pages/templates/user/fragments/repoCard.html @@ -1,4 +1,5 @@ {{ define "user/fragments/repoCard" }} + {{/* root, repo, fullName [,starButton [,starData]] */}} {{ $root := index . 0 }} {{ $repo := index . 1 }} {{ $fullName := index . 2 }} @@ -29,7 +30,7 @@ {{ if and $starButton $root.LoggedInUser }}
- {{ template "repo/fragments/repoStar" $starData }} + {{ template "fragments/starBtn" $starData }}
{{ end }} diff --git a/appview/state/star.go b/appview/state/star.go index 49c4e96d..8677a759 100644 --- a/appview/state/star.go +++ b/appview/state/star.go @@ -75,12 +75,10 @@ func (s *State) Star(w http.ResponseWriter, r *http.Request) { s.notifier.NewStar(r.Context(), star) - s.pages.RepoStarFragment(w, pages.RepoStarFragmentParams{ + s.pages.StarBtnFragment(w, pages.StarBtnFragmentParams{ IsStarred: true, - RepoAt: subjectUri, - Stats: models.RepoStats{ - StarCount: starCount, - }, + SubjectAt: subjectUri, + StarCount: starCount, }) return @@ -117,12 +115,10 @@ func (s *State) Star(w http.ResponseWriter, r *http.Request) { s.notifier.DeleteStar(r.Context(), star) - s.pages.RepoStarFragment(w, pages.RepoStarFragmentParams{ + s.pages.StarBtnFragment(w, pages.StarBtnFragmentParams{ IsStarred: false, - RepoAt: subjectUri, - Stats: models.RepoStats{ - StarCount: starCount, - }, + SubjectAt: subjectUri, + StarCount: starCount, }) return diff --git a/appview/strings/strings.go b/appview/strings/strings.go index 8a291924..f0029fa6 100644 --- a/appview/strings/strings.go +++ b/appview/strings/strings.go @@ -148,12 +148,24 @@ func (s *Strings) contents(w http.ResponseWriter, r *http.Request) { showRendered = r.URL.Query().Get("code") != "true" } + starCount, err := db.GetStarCount(s.Db, string.AtUri()) + if err != nil { + l.Error("failed to get star count", "err", err) + } + user := s.OAuth.GetUser(r) + isStarred := false + if user != nil { + isStarred = db.GetStarStatus(s.Db, user.Did, string.AtUri()) + } + s.Pages.SingleString(w, pages.SingleStringParams{ - LoggedInUser: s.OAuth.GetUser(r), + LoggedInUser: user, RenderToggle: renderToggle, ShowRendered: showRendered, - String: string, + String: &string, Stats: string.Stats(), + IsStarred: isStarred, + StarCount: starCount, Owner: id, }) } -- 2.43.0