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) }}
-
+
- {{ end }}
+ {{ end }}
+ {{ template "fragments/starBtn"
+ (dict "SubjectAt" .String.AtUri
+ "IsStarred" .IsStarred
+ "StarCount" .StarCount) }}
+
{{ 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,
})
}