From c6a41ebfee9db496e416e10c322328b855395696 Mon Sep 17 00:00:00 2001 From: Seongmin Lee Date: Mon, 17 Nov 2025 15:17:22 +0000 Subject: [PATCH] appview: support star for `sh.tangled.string` Not sending "XXX starred your string" notif yet. Close: Signed-off-by: Seongmin Lee --- appview/models/string.go | 2 +- appview/pages/pages.go | 14 ++++++++------ appview/state/star.go | 16 ++++++---------- appview/strings/strings.go | 16 ++++++++++++++-- appview/pages/templates/fragments/starBtn.html | 26 ++++++++++++++++++++++++++ appview/pages/templates/layouts/repobase.html | 5 ++++- appview/pages/templates/strings/string.html | 12 ++++++++---- appview/pages/templates/repo/fragments/repoStar.html | 26 -------------------------- appview/pages/templates/timeline/fragments/timeline.html | 4 ++-- appview/pages/templates/user/fragments/repoCard.html | 3 ++- 10 file(s) changed, 71 insertion(s)(+), 53 deletion(s)(-) diff --git a/appview/models/string.go b/appview/models/string.go --- a/appview/models/string.go +++ b/appview/models/string.go @@ -22,7 +22,7 @@ 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 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -625,14 +625,14 @@ 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 @@ 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/state/star.go b/appview/state/star.go --- a/appview/state/star.go +++ b/appview/state/star.go @@ -75,12 +75,10 @@ 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 @@ 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 --- a/appview/strings/strings.go +++ b/appview/strings/strings.go @@ -148,12 +148,24 @@ 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, }) } diff --git a/appview/pages/templates/fragments/starBtn.html b/appview/pages/templates/fragments/starBtn.html new file mode 100644 --- /dev/null +++ b/appview/pages/templates/fragments/starBtn.html @@ -0,0 +1,26 @@ +{{ define "fragments/starBtn" }} + +{{ end }} diff --git a/appview/pages/templates/layouts/repobase.html b/appview/pages/templates/layouts/repobase.html --- 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/repo/fragments/repoStar.html b/appview/pages/templates/repo/fragments/repoStar.html deleted file mode 100644 --- a/appview/pages/templates/repo/fragments/repoStar.html +++ /dev/null @@ -1,26 +0,0 @@ -{{ define "repo/fragments/repoStar" }} - -{{ end }} diff --git a/appview/pages/templates/timeline/fragments/timeline.html b/appview/pages/templates/timeline/fragments/timeline.html --- 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 --- 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 }} -- tangled.sh