diff --git a/appview/pages/funcmap.go b/appview/pages/funcmap.go index 50f27792..0f424d61 100644 --- a/appview/pages/funcmap.go +++ b/appview/pages/funcmap.go @@ -22,11 +22,11 @@ import ( chromahtml "github.com/alecthomas/chroma/v2/formatters/html" "github.com/alecthomas/chroma/v2/lexers" "github.com/alecthomas/chroma/v2/styles" - "github.com/bluesky-social/indigo/atproto/syntax" "github.com/dustin/go-humanize" "github.com/go-enry/go-enry/v2" "github.com/yuin/goldmark" "tangled.org/core/appview/filetree" + "tangled.org/core/appview/models" "tangled.org/core/appview/pages/markup" "tangled.org/core/crypto" ) @@ -72,6 +72,17 @@ func (p *Pages) funcMap() template.FuncMap { return identity.Handle.String() }, + "ownerSlashRepo": func(repo *models.Repo) string { + ownerId, err := p.resolver.ResolveIdent(context.Background(), repo.Did) + if err != nil { + return repo.DidSlashRepo() + } + handle := ownerId.Handle + if handle != "" && !handle.IsInvalidHandle() { + return string(handle) + "/" + repo.Name + } + return repo.DidSlashRepo() + }, "truncateAt30": func(s string) string { if len(s) <= 30 { return s @@ -141,13 +152,6 @@ func (p *Pages) funcMap() template.FuncMap { return b }, - "didOrHandle": func(did, handle string) string { - if handle != "" && handle != syntax.HandleInvalid.String() { - return handle - } else { - return did - } - }, "assoc": func(values ...string) ([][]string, error) { if len(values)%2 != 0 { return nil, fmt.Errorf("invalid assoc call, must have an even number of arguments") @@ -379,9 +383,25 @@ func (p *Pages) funcMap() template.FuncMap { } } +func (p *Pages) resolveDid(did string) string { + identity, err := p.resolver.ResolveIdent(context.Background(), did) + + if err != nil { + return did + } + + if identity.Handle.IsInvalidHandle() { + return "handle.invalid" + } + + return identity.Handle.String() +} + func (p *Pages) AvatarUrl(handle, size string) string { handle = strings.TrimPrefix(handle, "@") + handle = p.resolveDid(handle) + secret := p.avatar.SharedSecret h := hmac.New(sha256.New, []byte(secret)) h.Write([]byte(handle)) diff --git a/appview/pages/pages.go b/appview/pages/pages.go index 1cd25c66..fdbda92c 100644 --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -492,7 +492,6 @@ func (p *Pages) ForkRepo(w io.Writer, params ForkRepoParams) error { type ProfileCard struct { UserDid string - UserHandle string FollowStatus models.FollowStatus Punchcard *models.Punchcard Profile *models.Profile @@ -841,9 +840,8 @@ func (p *Pages) RepoBlob(w io.Writer, params RepoBlobParams) error { } type Collaborator struct { - Did string - Handle string - Role string + Did string + Role string } type RepoSettingsParams struct { diff --git a/appview/pages/repoinfo/repoinfo.go b/appview/pages/repoinfo/repoinfo.go index 30e3d6fd..d9aaba6b 100644 --- a/appview/pages/repoinfo/repoinfo.go +++ b/appview/pages/repoinfo/repoinfo.go @@ -9,7 +9,7 @@ import ( "tangled.org/core/appview/state/userutil" ) -func (r RepoInfo) Owner() string { +func (r RepoInfo) owner() string { if r.OwnerHandle != "" { return r.OwnerHandle } else { @@ -18,7 +18,7 @@ func (r RepoInfo) Owner() string { } func (r RepoInfo) FullName() string { - return path.Join(r.Owner(), r.Name) + return path.Join(r.owner(), r.Name) } func (r RepoInfo) OwnerWithoutAt() string { diff --git a/appview/pages/templates/layouts/profilebase.html b/appview/pages/templates/layouts/profilebase.html index 7c04eb64..0747a39f 100644 --- a/appview/pages/templates/layouts/profilebase.html +++ b/appview/pages/templates/layouts/profilebase.html @@ -1,18 +1,19 @@ -{{ define "title" }}{{ or .Card.UserHandle .Card.UserDid }}{{ end }} +{{ define "title" }}{{ resolve .Card.UserDid }}{{ end }} {{ define "extrameta" }} - {{ $avatarUrl := fullAvatar .Card.UserHandle }} - + {{ $handle := resolve .Card.UserDid }} + {{ $avatarUrl := fullAvatar $handle }} + - - + + - - + + {{ end }} diff --git a/appview/pages/templates/repo/empty.html b/appview/pages/templates/repo/empty.html index 18623ca5..41269d36 100644 --- a/appview/pages/templates/repo/empty.html +++ b/appview/pages/templates/repo/empty.html @@ -35,7 +35,7 @@
1First, generate a new SSH key pair.
2Then add the public key to your account from the settings page.
-3Configure your remote to git@{{ $knot | stripPort }}:{{ .RepoInfo.OwnerHandle }}/{{ .RepoInfo.Name }}
3Configure your remote to git@{{ $knot | stripPort }}:{{ resolve .RepoInfo.OwnerDid }}/{{ .RepoInfo.Name }}
4Push!
diff --git a/appview/pages/templates/repo/fragments/cloneDropdown.html b/appview/pages/templates/repo/fragments/cloneDropdown.html index 5e7ceaa1..9179aa5a 100644 --- a/appview/pages/templates/repo/fragments/cloneDropdown.html +++ b/appview/pages/templates/repo/fragments/cloneDropdown.html @@ -43,13 +43,14 @@git@{{ $knot | stripPort }}:{{ .RepoInfo.OwnerHandle }}/{{ .RepoInfo.Name }}
+ data-url="git@{{ $knot | stripPort }}:{{ $repoOwnerHandle }}/{{ .RepoInfo.Name }}"
+ >git@{{ $knot | stripPort }}:{{ $repoOwnerHandle }}/{{ .RepoInfo.Name }}