appview: remove all occurrences of DidHandleMap #457

merged
opened by oppi.li targeting master from push-wpkykovtqxnx
Changed files
+78 -284
appview
cmd
appview
+7 -7
appview/db/reaction.go
··· 11 12 const ( 13 Like ReactionKind = "👍" 14 - Unlike = "👎" 15 - Laugh = "😆" 16 - Celebration = "🎉" 17 - Confused = "🫤" 18 - Heart = "❤️" 19 - Rocket = "🚀" 20 - Eyes = "👀" 21 ) 22 23 func (rk ReactionKind) String() string {
··· 11 12 const ( 13 Like ReactionKind = "👍" 14 + Unlike ReactionKind = "👎" 15 + Laugh ReactionKind = "😆" 16 + Celebration ReactionKind = "🎉" 17 + Confused ReactionKind = "🫤" 18 + Heart ReactionKind = "❤️" 19 + Rocket ReactionKind = "🚀" 20 + Eyes ReactionKind = "👀" 21 ) 22 23 func (rk ReactionKind) String() string {
-54
appview/issues/issues.go
··· 96 log.Println("failed to resolve issue owner", err) 97 } 98 99 - identsToResolve := make([]string, len(comments)) 100 - for i, comment := range comments { 101 - identsToResolve[i] = comment.OwnerDid 102 - } 103 - resolvedIds := rp.idResolver.ResolveIdents(r.Context(), identsToResolve) 104 - didHandleMap := make(map[string]string) 105 - for _, identity := range resolvedIds { 106 - if !identity.Handle.IsInvalidHandle() { 107 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 108 - } else { 109 - didHandleMap[identity.DID.String()] = identity.DID.String() 110 - } 111 - } 112 - 113 rp.pages.RepoSingleIssue(w, pages.RepoSingleIssueParams{ 114 LoggedInUser: user, 115 RepoInfo: f.RepoInfo(user), ··· 117 Comments: comments, 118 119 IssueOwnerHandle: issueOwnerIdent.Handle.String(), 120 - DidHandleMap: didHandleMap, 121 122 OrderedReactionKinds: db.OrderedReactionKinds, 123 Reactions: reactionCountMap, ··· 371 return 372 } 373 374 - identity, err := rp.idResolver.ResolveIdent(r.Context(), comment.OwnerDid) 375 - if err != nil { 376 - log.Println("failed to resolve did") 377 - return 378 - } 379 - 380 - didHandleMap := make(map[string]string) 381 - if !identity.Handle.IsInvalidHandle() { 382 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 383 - } else { 384 - didHandleMap[identity.DID.String()] = identity.DID.String() 385 - } 386 - 387 rp.pages.SingleIssueCommentFragment(w, pages.SingleIssueCommentParams{ 388 LoggedInUser: user, 389 RepoInfo: f.RepoInfo(user), 390 - DidHandleMap: didHandleMap, 391 Issue: issue, 392 Comment: comment, 393 }) ··· 503 } 504 505 // optimistic update for htmx 506 - didHandleMap := map[string]string{ 507 - user.Did: user.Handle, 508 - } 509 comment.Body = newBody 510 comment.Edited = &edited 511 ··· 513 rp.pages.SingleIssueCommentFragment(w, pages.SingleIssueCommentParams{ 514 LoggedInUser: user, 515 RepoInfo: f.RepoInfo(user), 516 - DidHandleMap: didHandleMap, 517 Issue: issue, 518 Comment: comment, 519 }) ··· 598 } 599 600 // optimistic update for htmx 601 - didHandleMap := map[string]string{ 602 - user.Did: user.Handle, 603 - } 604 comment.Body = "" 605 comment.Deleted = &deleted 606 ··· 608 rp.pages.SingleIssueCommentFragment(w, pages.SingleIssueCommentParams{ 609 LoggedInUser: user, 610 RepoInfo: f.RepoInfo(user), 611 - DidHandleMap: didHandleMap, 612 Issue: issue, 613 Comment: comment, 614 }) 615 - return 616 } 617 618 func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { ··· 648 return 649 } 650 651 - identsToResolve := make([]string, len(issues)) 652 - for i, issue := range issues { 653 - identsToResolve[i] = issue.OwnerDid 654 - } 655 - resolvedIds := rp.idResolver.ResolveIdents(r.Context(), identsToResolve) 656 - didHandleMap := make(map[string]string) 657 - for _, identity := range resolvedIds { 658 - if !identity.Handle.IsInvalidHandle() { 659 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 660 - } else { 661 - didHandleMap[identity.DID.String()] = identity.DID.String() 662 - } 663 - } 664 - 665 rp.pages.RepoIssues(w, pages.RepoIssuesParams{ 666 LoggedInUser: rp.oauth.GetUser(r), 667 RepoInfo: f.RepoInfo(user), 668 Issues: issues, 669 - DidHandleMap: didHandleMap, 670 FilteringByOpen: isOpen, 671 Page: page, 672 }) 673 - return 674 } 675 676 func (rp *Issues) NewIssue(w http.ResponseWriter, r *http.Request) {
··· 96 log.Println("failed to resolve issue owner", err) 97 } 98 99 rp.pages.RepoSingleIssue(w, pages.RepoSingleIssueParams{ 100 LoggedInUser: user, 101 RepoInfo: f.RepoInfo(user), ··· 103 Comments: comments, 104 105 IssueOwnerHandle: issueOwnerIdent.Handle.String(), 106 107 OrderedReactionKinds: db.OrderedReactionKinds, 108 Reactions: reactionCountMap, ··· 356 return 357 } 358 359 rp.pages.SingleIssueCommentFragment(w, pages.SingleIssueCommentParams{ 360 LoggedInUser: user, 361 RepoInfo: f.RepoInfo(user), 362 Issue: issue, 363 Comment: comment, 364 }) ··· 474 } 475 476 // optimistic update for htmx 477 comment.Body = newBody 478 comment.Edited = &edited 479 ··· 481 rp.pages.SingleIssueCommentFragment(w, pages.SingleIssueCommentParams{ 482 LoggedInUser: user, 483 RepoInfo: f.RepoInfo(user), 484 Issue: issue, 485 Comment: comment, 486 }) ··· 565 } 566 567 // optimistic update for htmx 568 comment.Body = "" 569 comment.Deleted = &deleted 570 ··· 572 rp.pages.SingleIssueCommentFragment(w, pages.SingleIssueCommentParams{ 573 LoggedInUser: user, 574 RepoInfo: f.RepoInfo(user), 575 Issue: issue, 576 Comment: comment, 577 }) 578 } 579 580 func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { ··· 610 return 611 } 612 613 rp.pages.RepoIssues(w, pages.RepoIssuesParams{ 614 LoggedInUser: rp.oauth.GetUser(r), 615 RepoInfo: f.RepoInfo(user), 616 Issues: issues, 617 FilteringByOpen: isOpen, 618 Page: page, 619 }) 620 } 621 622 func (rp *Issues) NewIssue(w http.ResponseWriter, r *http.Request) {
-16
appview/knots/knots.go
··· 334 repoByMember[r.Did] = append(repoByMember[r.Did], r) 335 } 336 337 - var didsToResolve []string 338 - for _, m := range members { 339 - didsToResolve = append(didsToResolve, m) 340 - } 341 - didsToResolve = append(didsToResolve, reg.ByDid) 342 - resolvedIds := k.IdResolver.ResolveIdents(r.Context(), didsToResolve) 343 - didHandleMap := make(map[string]string) 344 - for _, identity := range resolvedIds { 345 - if !identity.Handle.IsInvalidHandle() { 346 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 347 - } else { 348 - didHandleMap[identity.DID.String()] = identity.DID.String() 349 - } 350 - } 351 - 352 k.Pages.Knot(w, pages.KnotParams{ 353 LoggedInUser: user, 354 - DidHandleMap: didHandleMap, 355 Registration: reg, 356 Members: members, 357 Repos: repoByMember,
··· 334 repoByMember[r.Did] = append(repoByMember[r.Did], r) 335 } 336 337 k.Pages.Knot(w, pages.KnotParams{ 338 LoggedInUser: user, 339 Registration: reg, 340 Members: members, 341 Repos: repoByMember,
+16 -2
appview/pages/funcmap.go
··· 1 package pages 2 3 import ( 4 "crypto/hmac" 5 "crypto/sha256" 6 "encoding/hex" ··· 28 "split": func(s string) []string { 29 return strings.Split(s, "\n") 30 }, 31 "truncateAt30": func(s string) string { 32 if len(s) <= 30 { 33 return s ··· 74 "negf64": func(a float64) float64 { 75 return -a 76 }, 77 - "cond": func(cond interface{}, a, b string) string { 78 if cond == nil { 79 return b 80 } ··· 167 return html.UnescapeString(s) 168 }, 169 "nl2br": func(text string) template.HTML { 170 - return template.HTML(strings.Replace(template.HTMLEscapeString(text), "\n", "<br>", -1)) 171 }, 172 "unwrapText": func(text string) string { 173 paragraphs := strings.Split(text, "\n\n")
··· 1 package pages 2 3 import ( 4 + "context" 5 "crypto/hmac" 6 "crypto/sha256" 7 "encoding/hex" ··· 29 "split": func(s string) []string { 30 return strings.Split(s, "\n") 31 }, 32 + "resolve": func(s string) string { 33 + identity, err := p.resolver.ResolveIdent(context.Background(), s) 34 + 35 + if err != nil { 36 + return s 37 + } 38 + 39 + if identity.Handle.IsInvalidHandle() { 40 + return "handle.invalid" 41 + } 42 + 43 + return "@" + identity.Handle.String() 44 + }, 45 "truncateAt30": func(s string) string { 46 if len(s) <= 30 { 47 return s ··· 88 "negf64": func(a float64) float64 { 89 return -a 90 }, 91 + "cond": func(cond any, a, b string) string { 92 if cond == nil { 93 return b 94 } ··· 181 return html.UnescapeString(s) 182 }, 183 "nl2br": func(text string) template.HTML { 184 + return template.HTML(strings.ReplaceAll(template.HTMLEscapeString(text), "\n", "<br>")) 185 }, 186 "unwrapText": func(text string) string { 187 paragraphs := strings.Split(text, "\n\n")
+4 -16
appview/pages/pages.go
··· 24 "tangled.sh/tangled.sh/core/appview/pages/markup" 25 "tangled.sh/tangled.sh/core/appview/pages/repoinfo" 26 "tangled.sh/tangled.sh/core/appview/pagination" 27 "tangled.sh/tangled.sh/core/patchutil" 28 "tangled.sh/tangled.sh/core/types" 29 ··· 45 t map[string]*template.Template 46 47 avatar config.AvatarConfig 48 dev bool 49 embedFS embed.FS 50 templateDir string // Path to templates on disk for dev mode 51 rctx *markup.RenderContext 52 } 53 54 - func NewPages(config *config.Config) *Pages { 55 // initialized with safe defaults, can be overriden per use 56 rctx := &markup.RenderContext{ 57 IsDev: config.Core.Dev, ··· 66 avatar: config.Avatar, 67 embedFS: Files, 68 rctx: rctx, 69 templateDir: "appview/pages", 70 } 71 ··· 290 type TimelineParams struct { 291 LoggedInUser *oauth.User 292 Timeline []db.TimelineEvent 293 - DidHandleMap map[string]string 294 } 295 296 func (p *Pages) Timeline(w io.Writer, params TimelineParams) error { ··· 318 319 type KnotParams struct { 320 LoggedInUser *oauth.User 321 - DidHandleMap map[string]string 322 Registration *db.Registration 323 Members []string 324 Repos map[string][]db.Repo ··· 375 Spindle db.Spindle 376 Members []string 377 Repos map[string][]db.Repo 378 - DidHandleMap map[string]string 379 } 380 381 func (p *Pages) SpindleDashboard(w io.Writer, params SpindleDashboardParams) error { ··· 408 ProfileTimeline *db.ProfileTimeline 409 Card ProfileCard 410 Punchcard db.Punchcard 411 - 412 - DidHandleMap map[string]string 413 } 414 415 type ProfileCard struct { ··· 430 LoggedInUser *oauth.User 431 Repos []db.Repo 432 Card ProfileCard 433 - 434 - DidHandleMap map[string]string 435 } 436 437 func (p *Pages) ReposPage(w io.Writer, params ReposPageParams) error { ··· 460 LoggedInUser *oauth.User 461 Profile *db.Profile 462 AllRepos []PinnedRepo 463 - DidHandleMap map[string]string 464 } 465 466 type PinnedRepo struct { ··· 779 RepoInfo repoinfo.RepoInfo 780 Active string 781 Issues []db.Issue 782 - DidHandleMap map[string]string 783 Page pagination.Page 784 FilteringByOpen bool 785 } ··· 796 Issue db.Issue 797 Comments []db.Comment 798 IssueOwnerHandle string 799 - DidHandleMap map[string]string 800 801 OrderedReactionKinds []db.ReactionKind 802 Reactions map[db.ReactionKind]int ··· 850 851 type SingleIssueCommentParams struct { 852 LoggedInUser *oauth.User 853 - DidHandleMap map[string]string 854 RepoInfo repoinfo.RepoInfo 855 Issue *db.Issue 856 Comment *db.Comment ··· 882 RepoInfo repoinfo.RepoInfo 883 Pulls []*db.Pull 884 Active string 885 - DidHandleMap map[string]string 886 FilteringBy db.PullState 887 Stacks map[string]db.Stack 888 Pipelines map[string]db.Pipeline ··· 915 LoggedInUser *oauth.User 916 RepoInfo repoinfo.RepoInfo 917 Active string 918 - DidHandleMap map[string]string 919 Pull *db.Pull 920 Stack db.Stack 921 AbandonedPulls []*db.Pull ··· 935 936 type RepoPullPatchParams struct { 937 LoggedInUser *oauth.User 938 - DidHandleMap map[string]string 939 RepoInfo repoinfo.RepoInfo 940 Pull *db.Pull 941 Stack db.Stack ··· 953 954 type RepoPullInterdiffParams struct { 955 LoggedInUser *oauth.User 956 - DidHandleMap map[string]string 957 RepoInfo repoinfo.RepoInfo 958 Pull *db.Pull 959 Round int
··· 24 "tangled.sh/tangled.sh/core/appview/pages/markup" 25 "tangled.sh/tangled.sh/core/appview/pages/repoinfo" 26 "tangled.sh/tangled.sh/core/appview/pagination" 27 + "tangled.sh/tangled.sh/core/idresolver" 28 "tangled.sh/tangled.sh/core/patchutil" 29 "tangled.sh/tangled.sh/core/types" 30 ··· 46 t map[string]*template.Template 47 48 avatar config.AvatarConfig 49 + resolver *idresolver.Resolver 50 dev bool 51 embedFS embed.FS 52 templateDir string // Path to templates on disk for dev mode 53 rctx *markup.RenderContext 54 } 55 56 + func NewPages(config *config.Config, res *idresolver.Resolver) *Pages { 57 // initialized with safe defaults, can be overriden per use 58 rctx := &markup.RenderContext{ 59 IsDev: config.Core.Dev, ··· 68 avatar: config.Avatar, 69 embedFS: Files, 70 rctx: rctx, 71 + resolver: res, 72 templateDir: "appview/pages", 73 } 74 ··· 293 type TimelineParams struct { 294 LoggedInUser *oauth.User 295 Timeline []db.TimelineEvent 296 } 297 298 func (p *Pages) Timeline(w io.Writer, params TimelineParams) error { ··· 320 321 type KnotParams struct { 322 LoggedInUser *oauth.User 323 Registration *db.Registration 324 Members []string 325 Repos map[string][]db.Repo ··· 376 Spindle db.Spindle 377 Members []string 378 Repos map[string][]db.Repo 379 } 380 381 func (p *Pages) SpindleDashboard(w io.Writer, params SpindleDashboardParams) error { ··· 408 ProfileTimeline *db.ProfileTimeline 409 Card ProfileCard 410 Punchcard db.Punchcard 411 } 412 413 type ProfileCard struct { ··· 428 LoggedInUser *oauth.User 429 Repos []db.Repo 430 Card ProfileCard 431 } 432 433 func (p *Pages) ReposPage(w io.Writer, params ReposPageParams) error { ··· 456 LoggedInUser *oauth.User 457 Profile *db.Profile 458 AllRepos []PinnedRepo 459 } 460 461 type PinnedRepo struct { ··· 774 RepoInfo repoinfo.RepoInfo 775 Active string 776 Issues []db.Issue 777 Page pagination.Page 778 FilteringByOpen bool 779 } ··· 790 Issue db.Issue 791 Comments []db.Comment 792 IssueOwnerHandle string 793 794 OrderedReactionKinds []db.ReactionKind 795 Reactions map[db.ReactionKind]int ··· 843 844 type SingleIssueCommentParams struct { 845 LoggedInUser *oauth.User 846 RepoInfo repoinfo.RepoInfo 847 Issue *db.Issue 848 Comment *db.Comment ··· 874 RepoInfo repoinfo.RepoInfo 875 Pulls []*db.Pull 876 Active string 877 FilteringBy db.PullState 878 Stacks map[string]db.Stack 879 Pipelines map[string]db.Pipeline ··· 906 LoggedInUser *oauth.User 907 RepoInfo repoinfo.RepoInfo 908 Active string 909 Pull *db.Pull 910 Stack db.Stack 911 AbandonedPulls []*db.Pull ··· 925 926 type RepoPullPatchParams struct { 927 LoggedInUser *oauth.User 928 RepoInfo repoinfo.RepoInfo 929 Pull *db.Pull 930 Stack db.Stack ··· 942 943 type RepoPullInterdiffParams struct { 944 LoggedInUser *oauth.User 945 RepoInfo repoinfo.RepoInfo 946 Pull *db.Pull 947 Round int
+3 -4
appview/pages/templates/knots/dashboard.html
··· 38 <div> 39 <div class="flex justify-between items-center"> 40 <div class="flex items-center gap-2"> 41 - {{ i "user" "size-4" }} 42 - {{ $user := index $.DidHandleMap . }} 43 - <a href="/{{ $user }}">{{ $user }} <span class="ml-2 font-mono text-gray-500">{{.}}</span></a> 44 </div> 45 </div> 46 <div class="ml-2 pl-2 pt-2 border-l border-gray-200 dark:border-gray-700"> ··· 48 {{ range $repos }} 49 <div class="flex gap-2 items-center"> 50 {{ i "book-marked" "size-4" }} 51 - <a href="/{{ .Did }}/{{ .Name }}"> 52 {{ .Name }} 53 </a> 54 </div>
··· 38 <div> 39 <div class="flex justify-between items-center"> 40 <div class="flex items-center gap-2"> 41 + {{ template "user/fragments/picHandleLink" . }} 42 + <span class="ml-2 font-mono text-gray-500">{{.}}</span> 43 </div> 44 </div> 45 <div class="ml-2 pl-2 pt-2 border-l border-gray-200 dark:border-gray-700"> ··· 47 {{ range $repos }} 48 <div class="flex gap-2 items-center"> 49 {{ i "book-marked" "size-4" }} 50 + <a href="/{{ resolve .Did }}/{{ .Name }}"> 51 {{ .Name }} 52 </a> 53 </div>
+1 -2
appview/pages/templates/repo/issues/fragments/issueComment.html
··· 2 {{ with .Comment }} 3 <div id="comment-container-{{.CommentId}}"> 4 <div class="flex items-center gap-2 mb-2 text-gray-500 dark:text-gray-400 text-sm flex-wrap"> 5 - {{ $owner := index $.DidHandleMap .OwnerDid }} 6 - {{ template "user/fragments/picHandleLink" $owner }} 7 8 <!-- show user "hats" --> 9 {{ $isIssueAuthor := eq .OwnerDid $.Issue.OwnerDid }}
··· 2 {{ with .Comment }} 3 <div id="comment-container-{{.CommentId}}"> 4 <div class="flex items-center gap-2 mb-2 text-gray-500 dark:text-gray-400 text-sm flex-wrap"> 5 + {{ template "user/fragments/picHandleLink" .OwnerDid }} 6 7 <!-- show user "hats" --> 8 {{ $isIssueAuthor := eq .OwnerDid $.Issue.OwnerDid }}
+1 -1
appview/pages/templates/repo/issues/issue.html
··· 70 {{ if gt $index 0 }} 71 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div> 72 {{ end }} 73 - {{ template "repo/issues/fragments/issueComment" (dict "RepoInfo" $.RepoInfo "LoggedInUser" $.LoggedInUser "DidHandleMap" $.DidHandleMap "Issue" $.Issue "Comment" .)}} 74 </div> 75 {{ end }} 76 </section>
··· 70 {{ if gt $index 0 }} 71 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div> 72 {{ end }} 73 + {{ template "repo/issues/fragments/issueComment" (dict "RepoInfo" $.RepoInfo "LoggedInUser" $.LoggedInUser "Issue" $.Issue "Comment" .)}} 74 </div> 75 {{ end }} 76 </section>
+1 -2
appview/pages/templates/repo/issues/issues.html
··· 65 </span> 66 67 <span class="ml-1"> 68 - {{ $owner := index $.DidHandleMap .OwnerDid }} 69 - {{ template "user/fragments/picHandleLink" $owner }} 70 </span> 71 72 <span class="before:content-['·']">
··· 65 </span> 66 67 <span class="ml-1"> 68 + {{ template "user/fragments/picHandleLink" .OwnerDid }} 69 </span> 70 71 <span class="before:content-['·']">
+2 -2
appview/pages/templates/repo/pipelines/fragments/pipelineSymbol.html
··· 23 </div> 24 {{ else if $allFail }} 25 <div class="flex gap-1 items-center"> 26 - {{ i "x" "size-4 text-red-600" }} 27 <span>0/{{ $total }}</span> 28 </div> 29 {{ else if $allTimeout }} 30 <div class="flex gap-1 items-center"> 31 - {{ i "clock-alert" "size-4 text-orange-400" }} 32 <span>0/{{ $total }}</span> 33 </div> 34 {{ else }}
··· 23 </div> 24 {{ else if $allFail }} 25 <div class="flex gap-1 items-center"> 26 + {{ i "x" "size-4 text-red-500" }} 27 <span>0/{{ $total }}</span> 28 </div> 29 {{ else if $allTimeout }} 30 <div class="flex gap-1 items-center"> 31 + {{ i "clock-alert" "size-4 text-orange-500" }} 32 <span>0/{{ $total }}</span> 33 </div> 34 {{ else }}
+1 -1
appview/pages/templates/repo/pipelines/fragments/workflowSymbol.html
··· 19 {{ $color = "text-gray-600 dark:text-gray-500" }} 20 {{ else if eq $kind "timeout" }} 21 {{ $icon = "clock-alert" }} 22 - {{ $color = "text-orange-400 dark:text-orange-300" }} 23 {{ else }} 24 {{ $icon = "x" }} 25 {{ $color = "text-red-600 dark:text-red-500" }}
··· 19 {{ $color = "text-gray-600 dark:text-gray-500" }} 20 {{ else if eq $kind "timeout" }} 21 {{ $icon = "clock-alert" }} 22 + {{ $color = "text-orange-400 dark:text-orange-500" }} 23 {{ else }} 24 {{ $icon = "x" }} 25 {{ $color = "text-red-600 dark:text-red-500" }}
+2 -2
appview/pages/templates/repo/pulls/fragments/pullHeader.html
··· 17 {{ $icon = "git-merge" }} 18 {{ end }} 19 20 <section class="mt-2"> 21 <div class="flex items-center gap-2"> 22 <div ··· 28 </div> 29 <span class="text-gray-500 dark:text-gray-400 text-sm flex flex-wrap items-center gap-1"> 30 opened by 31 - {{ $owner := index $.DidHandleMap .Pull.OwnerDid }} 32 - {{ template "user/fragments/picHandleLink" $owner }} 33 <span class="select-none before:content-['\00B7']"></span> 34 {{ template "repo/fragments/time" .Pull.Created }} 35
··· 17 {{ $icon = "git-merge" }} 18 {{ end }} 19 20 + {{ $owner := resolve .Pull.OwnerDid }} 21 <section class="mt-2"> 22 <div class="flex items-center gap-2"> 23 <div ··· 29 </div> 30 <span class="text-gray-500 dark:text-gray-400 text-sm flex flex-wrap items-center gap-1"> 31 opened by 32 + {{ template "user/fragments/picHandleLink" .Pull.OwnerDid }} 33 <span class="select-none before:content-['\00B7']"></span> 34 {{ template "repo/fragments/time" .Pull.Created }} 35
+3 -4
appview/pages/templates/repo/pulls/pull.html
··· 47 <!-- round summary --> 48 <div class="rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400"> 49 <span class="gap-1 flex items-center"> 50 - {{ $owner := index $.DidHandleMap $.Pull.OwnerDid }} 51 {{ $re := "re" }} 52 {{ if eq .RoundNumber 0 }} 53 {{ $re = "" }} 54 {{ end }} 55 <span class="hidden md:inline">{{$re}}submitted</span> 56 - by {{ template "user/fragments/picHandleLink" $owner }} 57 <span class="select-none before:content-['\00B7']"></span> 58 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ .RoundNumber }}">{{ template "repo/fragments/shortTime" .Created }}</a> 59 <span class="select-none before:content-['·']"></span> ··· 151 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div> 152 {{ end }} 153 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1"> 154 - {{ $owner := index $.DidHandleMap $c.OwnerDid }} 155 - {{ template "user/fragments/picHandleLink" $owner }} 156 <span class="before:content-['·']"></span> 157 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}">{{ template "repo/fragments/time" $c.Created }}</a> 158 </div>
··· 47 <!-- round summary --> 48 <div class="rounded drop-shadow-sm bg-white dark:bg-gray-800 p-2 text-gray-500 dark:text-gray-400"> 49 <span class="gap-1 flex items-center"> 50 + {{ $owner := resolve $.Pull.OwnerDid }} 51 {{ $re := "re" }} 52 {{ if eq .RoundNumber 0 }} 53 {{ $re = "" }} 54 {{ end }} 55 <span class="hidden md:inline">{{$re}}submitted</span> 56 + by {{ template "user/fragments/picHandleLink" $.Pull.OwnerDid }} 57 <span class="select-none before:content-['\00B7']"></span> 58 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500" href="#round-#{{ .RoundNumber }}">{{ template "repo/fragments/shortTime" .Created }}</a> 59 <span class="select-none before:content-['·']"></span> ··· 151 <div class="absolute left-8 -top-2 w-px h-2 bg-gray-300 dark:bg-gray-600"></div> 152 {{ end }} 153 <div class="text-sm text-gray-500 dark:text-gray-400 flex items-center gap-1"> 154 + {{ template "user/fragments/picHandleLink" $c.OwnerDid }} 155 <span class="before:content-['·']"></span> 156 <a class="text-gray-500 dark:text-gray-400 hover:text-gray-500 dark:hover:text-gray-300" href="#comment-{{.ID}}">{{ template "repo/fragments/time" $c.Created }}</a> 157 </div>
+1 -2
appview/pages/templates/repo/pulls/pulls.html
··· 55 </a> 56 </div> 57 <div class="text-sm text-gray-500 dark:text-gray-400 flex flex-wrap items-center gap-1"> 58 - {{ $owner := index $.DidHandleMap .OwnerDid }} 59 {{ $bgColor := "bg-gray-800 dark:bg-gray-700" }} 60 {{ $icon := "ban" }} 61 ··· 76 </span> 77 78 <span class="ml-1"> 79 - {{ template "user/fragments/picHandleLink" $owner }} 80 </span> 81 82 <span class="before:content-['·']">
··· 55 </a> 56 </div> 57 <div class="text-sm text-gray-500 dark:text-gray-400 flex flex-wrap items-center gap-1"> 58 {{ $bgColor := "bg-gray-800 dark:bg-gray-700" }} 59 {{ $icon := "ban" }} 60 ··· 75 </span> 76 77 <span class="ml-1"> 78 + {{ template "user/fragments/picHandleLink" .OwnerDid }} 79 </span> 80 81 <span class="before:content-['·']">
+2 -4
appview/pages/templates/spindles/dashboard.html
··· 42 <div> 43 <div class="flex justify-between items-center"> 44 <div class="flex items-center gap-2"> 45 - {{ i "user" "size-4" }} 46 - {{ $user := index $.DidHandleMap . }} 47 - <a href="/{{ $user }}">{{ $user }}</a> 48 </div> 49 {{ if ne $.LoggedInUser.Did . }} 50 {{ block "removeMemberButton" (list $ . ) }} {{ end }} ··· 109 hx-post="/spindles/{{ $root.Spindle.Instance }}/remove" 110 hx-swap="none" 111 hx-vals='{"member": "{{$member}}" }' 112 - hx-confirm="Are you sure you want to remove {{ index $root.DidHandleMap $member }} from this instance?" 113 > 114 {{ i "user-minus" "w-4 h-4" }} 115 remove
··· 42 <div> 43 <div class="flex justify-between items-center"> 44 <div class="flex items-center gap-2"> 45 + {{ template "user/fragments/picHandleLink" . }} 46 </div> 47 {{ if ne $.LoggedInUser.Did . }} 48 {{ block "removeMemberButton" (list $ . ) }} {{ end }} ··· 107 hx-post="/spindles/{{ $root.Spindle.Instance }}/remove" 108 hx-swap="none" 109 hx-vals='{"member": "{{$member}}" }' 110 + hx-confirm="Are you sure you want to remove {{ resolve $member }} from this instance?" 111 > 112 {{ i "user-minus" "w-4 h-4" }} 113 remove
+9 -8
appview/pages/templates/timeline.html
··· 76 {{ $root := index . 0 }} 77 {{ $repo := index . 1 }} 78 {{ $source := index . 2 }} 79 - {{ $userHandle := index $root.DidHandleMap $repo.Did }} 80 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm"> 81 - {{ template "user/fragments/picHandleLink" $userHandle }} 82 {{ with $source }} 83 forked 84 - <a href="/{{ index $root.DidHandleMap .Did }}/{{ .Name }}"class="no-underline hover:underline"> 85 - {{ index $root.DidHandleMap .Did }}/{{ .Name }} 86 </a> 87 to 88 <a href="/{{ $userHandle }}/{{ $repo.Name }}" class="no-underline hover:underline">{{ $repo.Name }}</a> ··· 103 {{ $root := index . 0 }} 104 {{ $star := index . 1 }} 105 {{ with $star }} 106 - {{ $starrerHandle := index $root.DidHandleMap .StarredByDid }} 107 - {{ $repoOwnerHandle := index $root.DidHandleMap .Repo.Did }} 108 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm"> 109 {{ template "user/fragments/picHandleLink" $starrerHandle }} 110 starred ··· 126 {{ $profile := index . 2 }} 127 {{ $stat := index . 3 }} 128 129 - {{ $userHandle := index $root.DidHandleMap $follow.UserDid }} 130 - {{ $subjectHandle := index $root.DidHandleMap $follow.SubjectDid }} 131 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm"> 132 {{ template "user/fragments/picHandleLink" $userHandle }} 133 followed
··· 76 {{ $root := index . 0 }} 77 {{ $repo := index . 1 }} 78 {{ $source := index . 2 }} 79 + {{ $userHandle := resolve $repo.Did }} 80 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm"> 81 + {{ template "user/fragments/picHandleLink" $repo.Did }} 82 {{ with $source }} 83 + {{ $sourceDid := resolve .Did }} 84 forked 85 + <a href="/{{ $sourceDid }}/{{ .Name }}"class="no-underline hover:underline"> 86 + {{ $sourceDid }}/{{ .Name }} 87 </a> 88 to 89 <a href="/{{ $userHandle }}/{{ $repo.Name }}" class="no-underline hover:underline">{{ $repo.Name }}</a> ··· 104 {{ $root := index . 0 }} 105 {{ $star := index . 1 }} 106 {{ with $star }} 107 + {{ $starrerHandle := resolve .StarredByDid }} 108 + {{ $repoOwnerHandle := resolve .Repo.Did }} 109 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm"> 110 {{ template "user/fragments/picHandleLink" $starrerHandle }} 111 starred ··· 127 {{ $profile := index . 2 }} 128 {{ $stat := index . 3 }} 129 130 + {{ $userHandle := resolve $follow.UserDid }} 131 + {{ $subjectHandle := resolve $follow.SubjectDid }} 132 <div class="pl-6 py-2 bg-white dark:bg-gray-800 text-gray-600 dark:text-gray-300 flex flex-wrap items-center gap-2 text-sm"> 133 {{ template "user/fragments/picHandleLink" $userHandle }} 134 followed
+1 -1
appview/pages/templates/user/fragments/editPins.html
··· 27 <input type="checkbox" id="repo-{{$idx}}" name="pinnedRepo{{$idx}}" value="{{.RepoAt}}" {{if .IsPinned}}checked{{end}}> 28 <label for="repo-{{$idx}}" class="my-0 py-0 normal-case font-normal w-full"> 29 <div class="flex justify-between items-center w-full"> 30 - <span class="flex-shrink-0 overflow-hidden text-ellipsis ">{{ index $.DidHandleMap .Did }}/{{.Name}}</span> 31 <div class="flex gap-1 items-center"> 32 {{ i "star" "size-4 fill-current" }} 33 <span>{{ .RepoStats.StarCount }}</span>
··· 27 <input type="checkbox" id="repo-{{$idx}}" name="pinnedRepo{{$idx}}" value="{{.RepoAt}}" {{if .IsPinned}}checked{{end}}> 28 <label for="repo-{{$idx}}" class="my-0 py-0 normal-case font-normal w-full"> 29 <div class="flex justify-between items-center w-full"> 30 + <span class="flex-shrink-0 overflow-hidden text-ellipsis ">{{ resolve .Did }}/{{.Name}}</span> 31 <div class="flex gap-1 items-center"> 32 {{ i "star" "size-4 fill-current" }} 33 <span>{{ .RepoStats.StarCount }}</span>
+3 -2
appview/pages/templates/user/fragments/picHandleLink.html
··· 1 {{ define "user/fragments/picHandleLink" }} 2 - <a href="/{{ . }}" class="flex items-center"> 3 - {{ template "user/fragments/picHandle" . }} 4 </a> 5 {{ end }}
··· 1 {{ define "user/fragments/picHandleLink" }} 2 + {{ $resolved := resolve . }} 3 + <a href="/{{ $resolved }}" class="flex items-center"> 4 + {{ template "user/fragments/picHandle" $resolved }} 5 </a> 6 {{ end }}
+3 -2
appview/pages/templates/user/fragments/repoCard.html
··· 6 {{ with $repo }} 7 <div class="py-4 px-6 drop-shadow-sm rounded bg-white dark:bg-gray-800"> 8 <div class="font-medium dark:text-white flex gap-2 items-center"> 9 {{- if $fullName -}} 10 - <a href="/{{ index $root.DidHandleMap .Did }}/{{ .Name }}">{{ index $root.DidHandleMap .Did }}/{{ .Name }}</a> 11 {{- else -}} 12 - <a href="/{{ index $root.DidHandleMap .Did }}/{{ .Name }}">{{ .Name }}</a> 13 {{- end -}} 14 </div> 15 {{ with .Description }}
··· 6 {{ with $repo }} 7 <div class="py-4 px-6 drop-shadow-sm rounded bg-white dark:bg-gray-800"> 8 <div class="font-medium dark:text-white flex gap-2 items-center"> 9 + {{ $repoOwner := resolve .Did }} 10 {{- if $fullName -}} 11 + <a href="/{{ $repoOwner }}/{{ .Name }}">{{ $repoOwner }}/{{ .Name }}</a> 12 {{- else -}} 13 + <a href="/{{ $repoOwner }}/{{ .Name }}">{{ .Name }}</a> 14 {{- end -}} 15 </div> 16 {{ with .Description }}
+13 -20
appview/pages/templates/user/profile.html
··· 50 </div> 51 {{ else }} 52 <div class="flex flex-col gap-1"> 53 - {{ block "repoEvents" (list .RepoEvents $.DidHandleMap) }} {{ end }} 54 - {{ block "issueEvents" (list .IssueEvents $.DidHandleMap) }} {{ end }} 55 - {{ block "pullEvents" (list .PullEvents $.DidHandleMap) }} {{ end }} 56 </div> 57 {{ end }} 58 </div> ··· 66 {{ end }} 67 68 {{ define "repoEvents" }} 69 - {{ $items := index . 0 }} 70 - {{ $handleMap := index . 1 }} 71 - 72 - {{ if gt (len $items) 0 }} 73 <details> 74 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 75 <div class="flex flex-wrap items-center gap-2"> 76 {{ i "book-plus" "w-4 h-4" }} 77 - created {{ len $items }} {{if eq (len $items) 1 }}repository{{else}}repositories{{end}} 78 </div> 79 </summary> 80 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 81 - {{ range $items }} 82 <div class="flex flex-wrap items-center gap-2"> 83 <span class="text-gray-500 dark:text-gray-400"> 84 {{ if .Source }} ··· 87 {{ i "book-plus" "w-4 h-4" }} 88 {{ end }} 89 </span> 90 - <a href="/{{ index $handleMap .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline"> 91 {{- .Repo.Name -}} 92 </a> 93 </div> ··· 98 {{ end }} 99 100 {{ define "issueEvents" }} 101 - {{ $i := index . 0 }} 102 - {{ $items := $i.Items }} 103 - {{ $stats := $i.Stats }} 104 - {{ $handleMap := index . 1 }} 105 106 {{ if gt (len $items) 0 }} 107 <details> ··· 129 </summary> 130 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 131 {{ range $items }} 132 - {{ $repoOwner := index $handleMap .Metadata.Repo.Did }} 133 {{ $repoName := .Metadata.Repo.Name }} 134 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 135 ··· 163 {{ end }} 164 165 {{ define "pullEvents" }} 166 - {{ $i := index . 0 }} 167 - {{ $items := $i.Items }} 168 - {{ $stats := $i.Stats }} 169 - {{ $handleMap := index . 1 }} 170 {{ if gt (len $items) 0 }} 171 <details> 172 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> ··· 200 </summary> 201 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 202 {{ range $items }} 203 - {{ $repoOwner := index $handleMap .Repo.Did }} 204 {{ $repoName := .Repo.Name }} 205 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 206
··· 50 </div> 51 {{ else }} 52 <div class="flex flex-col gap-1"> 53 + {{ block "repoEvents" .RepoEvents }} {{ end }} 54 + {{ block "issueEvents" .IssueEvents }} {{ end }} 55 + {{ block "pullEvents" .PullEvents }} {{ end }} 56 </div> 57 {{ end }} 58 </div> ··· 66 {{ end }} 67 68 {{ define "repoEvents" }} 69 + {{ if gt (len .) 0 }} 70 <details> 71 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> 72 <div class="flex flex-wrap items-center gap-2"> 73 {{ i "book-plus" "w-4 h-4" }} 74 + created {{ len . }} {{if eq (len .) 1 }}repository{{else}}repositories{{end}} 75 </div> 76 </summary> 77 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 78 + {{ range . }} 79 <div class="flex flex-wrap items-center gap-2"> 80 <span class="text-gray-500 dark:text-gray-400"> 81 {{ if .Source }} ··· 84 {{ i "book-plus" "w-4 h-4" }} 85 {{ end }} 86 </span> 87 + <a href="/{{ resolve .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline"> 88 {{- .Repo.Name -}} 89 </a> 90 </div> ··· 95 {{ end }} 96 97 {{ define "issueEvents" }} 98 + {{ $items := .Items }} 99 + {{ $stats := .Stats }} 100 101 {{ if gt (len $items) 0 }} 102 <details> ··· 124 </summary> 125 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 126 {{ range $items }} 127 + {{ $repoOwner := resolve .Metadata.Repo.Did }} 128 {{ $repoName := .Metadata.Repo.Name }} 129 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 130 ··· 158 {{ end }} 159 160 {{ define "pullEvents" }} 161 + {{ $items := .Items }} 162 + {{ $stats := .Stats }} 163 {{ if gt (len $items) 0 }} 164 <details> 165 <summary class="list-none cursor-pointer hover:text-gray-500 hover:dark:text-gray-400"> ··· 193 </summary> 194 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 195 {{ range $items }} 196 + {{ $repoOwner := resolve .Repo.Did }} 197 {{ $repoName := .Repo.Name }} 198 {{ $repoUrl := printf "%s/%s" $repoOwner $repoName }} 199
-61
appview/pulls/pulls.go
··· 151 } 152 } 153 154 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), identsToResolve) 155 - didHandleMap := make(map[string]string) 156 - for _, identity := range resolvedIds { 157 - if !identity.Handle.IsInvalidHandle() { 158 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 159 - } else { 160 - didHandleMap[identity.DID.String()] = identity.DID.String() 161 - } 162 - } 163 - 164 mergeCheckResponse := s.mergeCheck(f, pull, stack) 165 resubmitResult := pages.Unknown 166 if user != nil && user.Did == pull.OwnerDid { ··· 212 s.pages.RepoSinglePull(w, pages.RepoSinglePullParams{ 213 LoggedInUser: user, 214 RepoInfo: repoInfo, 215 - DidHandleMap: didHandleMap, 216 Pull: pull, 217 Stack: stack, 218 AbandonedPulls: abandonedPulls, ··· 377 return 378 } 379 380 - identsToResolve := []string{pull.OwnerDid} 381 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), identsToResolve) 382 - didHandleMap := make(map[string]string) 383 - for _, identity := range resolvedIds { 384 - if !identity.Handle.IsInvalidHandle() { 385 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 386 - } else { 387 - didHandleMap[identity.DID.String()] = identity.DID.String() 388 - } 389 - } 390 - 391 patch := pull.Submissions[roundIdInt].Patch 392 diff := patchutil.AsNiceDiff(patch, pull.TargetBranch) 393 394 s.pages.RepoPullPatchPage(w, pages.RepoPullPatchParams{ 395 LoggedInUser: user, 396 - DidHandleMap: didHandleMap, 397 RepoInfo: f.RepoInfo(user), 398 Pull: pull, 399 Stack: stack, ··· 440 return 441 } 442 443 - identsToResolve := []string{pull.OwnerDid} 444 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), identsToResolve) 445 - didHandleMap := make(map[string]string) 446 - for _, identity := range resolvedIds { 447 - if !identity.Handle.IsInvalidHandle() { 448 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 449 - } else { 450 - didHandleMap[identity.DID.String()] = identity.DID.String() 451 - } 452 - } 453 - 454 currentPatch, err := patchutil.AsDiff(pull.Submissions[roundIdInt].Patch) 455 if err != nil { 456 log.Println("failed to interdiff; current patch malformed") ··· 472 RepoInfo: f.RepoInfo(user), 473 Pull: pull, 474 Round: roundIdInt, 475 - DidHandleMap: didHandleMap, 476 Interdiff: interdiff, 477 DiffOpts: diffOpts, 478 }) ··· 494 return 495 } 496 497 - identsToResolve := []string{pull.OwnerDid} 498 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), identsToResolve) 499 - didHandleMap := make(map[string]string) 500 - for _, identity := range resolvedIds { 501 - if !identity.Handle.IsInvalidHandle() { 502 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 503 - } else { 504 - didHandleMap[identity.DID.String()] = identity.DID.String() 505 - } 506 - } 507 - 508 w.Header().Set("Content-Type", "text/plain; charset=utf-8") 509 w.Write([]byte(pull.Submissions[roundIdInt].Patch)) 510 } ··· 595 m[p.Sha] = p 596 } 597 598 - identsToResolve := make([]string, len(pulls)) 599 - for i, pull := range pulls { 600 - identsToResolve[i] = pull.OwnerDid 601 - } 602 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), identsToResolve) 603 - didHandleMap := make(map[string]string) 604 - for _, identity := range resolvedIds { 605 - if !identity.Handle.IsInvalidHandle() { 606 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 607 - } else { 608 - didHandleMap[identity.DID.String()] = identity.DID.String() 609 - } 610 - } 611 - 612 s.pages.RepoPulls(w, pages.RepoPullsParams{ 613 LoggedInUser: s.oauth.GetUser(r), 614 RepoInfo: f.RepoInfo(user), 615 Pulls: pulls, 616 - DidHandleMap: didHandleMap, 617 FilteringBy: state, 618 Stacks: stacks, 619 Pipelines: m,
··· 151 } 152 } 153 154 mergeCheckResponse := s.mergeCheck(f, pull, stack) 155 resubmitResult := pages.Unknown 156 if user != nil && user.Did == pull.OwnerDid { ··· 202 s.pages.RepoSinglePull(w, pages.RepoSinglePullParams{ 203 LoggedInUser: user, 204 RepoInfo: repoInfo, 205 Pull: pull, 206 Stack: stack, 207 AbandonedPulls: abandonedPulls, ··· 366 return 367 } 368 369 patch := pull.Submissions[roundIdInt].Patch 370 diff := patchutil.AsNiceDiff(patch, pull.TargetBranch) 371 372 s.pages.RepoPullPatchPage(w, pages.RepoPullPatchParams{ 373 LoggedInUser: user, 374 RepoInfo: f.RepoInfo(user), 375 Pull: pull, 376 Stack: stack, ··· 417 return 418 } 419 420 currentPatch, err := patchutil.AsDiff(pull.Submissions[roundIdInt].Patch) 421 if err != nil { 422 log.Println("failed to interdiff; current patch malformed") ··· 438 RepoInfo: f.RepoInfo(user), 439 Pull: pull, 440 Round: roundIdInt, 441 Interdiff: interdiff, 442 DiffOpts: diffOpts, 443 }) ··· 459 return 460 } 461 462 w.Header().Set("Content-Type", "text/plain; charset=utf-8") 463 w.Write([]byte(pull.Submissions[roundIdInt].Patch)) 464 } ··· 549 m[p.Sha] = p 550 } 551 552 s.pages.RepoPulls(w, pages.RepoPullsParams{ 553 LoggedInUser: s.oauth.GetUser(r), 554 RepoInfo: f.RepoInfo(user), 555 Pulls: pulls, 556 FilteringBy: state, 557 Stacks: stacks, 558 Pipelines: m,
-13
appview/spindles/spindles.go
··· 113 return 114 } 115 116 - identsToResolve := make([]string, len(members)) 117 - copy(identsToResolve, members) 118 - resolvedIds := s.IdResolver.ResolveIdents(r.Context(), identsToResolve) 119 - didHandleMap := make(map[string]string) 120 - for _, identity := range resolvedIds { 121 - if !identity.Handle.IsInvalidHandle() { 122 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 123 - } else { 124 - didHandleMap[identity.DID.String()] = identity.DID.String() 125 - } 126 - } 127 - 128 // organize repos by did 129 repoMap := make(map[string][]db.Repo) 130 for _, r := range repos { ··· 136 Spindle: spindle, 137 Members: members, 138 Repos: repoMap, 139 - DidHandleMap: didHandleMap, 140 }) 141 } 142
··· 113 return 114 } 115 116 // organize repos by did 117 repoMap := make(map[string][]db.Repo) 118 for _, r := range repos { ··· 124 Spindle: spindle, 125 Members: members, 126 Repos: repoMap, 127 }) 128 } 129
-27
appview/state/profile.go
··· 108 } 109 } 110 111 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), didsToResolve) 112 - didHandleMap := make(map[string]string) 113 - for _, identity := range resolvedIds { 114 - if !identity.Handle.IsInvalidHandle() { 115 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 116 - } else { 117 - didHandleMap[identity.DID.String()] = identity.DID.String() 118 - } 119 - } 120 - 121 followers, following, err := db.GetFollowerFollowing(s.db, ident.DID.String()) 122 if err != nil { 123 log.Printf("getting follow stats repos for %s: %s", ident.DID.String(), err) ··· 145 LoggedInUser: loggedInUser, 146 Repos: pinnedRepos, 147 CollaboratingRepos: pinnedCollaboratingRepos, 148 - DidHandleMap: didHandleMap, 149 Card: pages.ProfileCard{ 150 UserDid: ident.DID.String(), 151 UserHandle: ident.Handle.String(), ··· 194 s.pages.ReposPage(w, pages.ReposPageParams{ 195 LoggedInUser: loggedInUser, 196 Repos: repos, 197 - DidHandleMap: map[string]string{ident.DID.String(): ident.Handle.String()}, 198 Card: pages.ProfileCard{ 199 UserDid: ident.DID.String(), 200 UserHandle: ident.Handle.String(), ··· 518 }) 519 } 520 521 - var didsToResolve []string 522 - for _, r := range allRepos { 523 - didsToResolve = append(didsToResolve, r.Did) 524 - } 525 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), didsToResolve) 526 - didHandleMap := make(map[string]string) 527 - for _, identity := range resolvedIds { 528 - if !identity.Handle.IsInvalidHandle() { 529 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 530 - } else { 531 - didHandleMap[identity.DID.String()] = identity.DID.String() 532 - } 533 - } 534 - 535 s.pages.EditPinsFragment(w, pages.EditPinsParams{ 536 LoggedInUser: user, 537 Profile: profile, 538 AllRepos: allRepos, 539 - DidHandleMap: didHandleMap, 540 }) 541 }
··· 108 } 109 } 110 111 followers, following, err := db.GetFollowerFollowing(s.db, ident.DID.String()) 112 if err != nil { 113 log.Printf("getting follow stats repos for %s: %s", ident.DID.String(), err) ··· 135 LoggedInUser: loggedInUser, 136 Repos: pinnedRepos, 137 CollaboratingRepos: pinnedCollaboratingRepos, 138 Card: pages.ProfileCard{ 139 UserDid: ident.DID.String(), 140 UserHandle: ident.Handle.String(), ··· 183 s.pages.ReposPage(w, pages.ReposPageParams{ 184 LoggedInUser: loggedInUser, 185 Repos: repos, 186 Card: pages.ProfileCard{ 187 UserDid: ident.DID.String(), 188 UserHandle: ident.Handle.String(), ··· 506 }) 507 } 508 509 s.pages.EditPinsFragment(w, pages.EditPinsParams{ 510 LoggedInUser: user, 511 Profile: profile, 512 AllRepos: allRepos, 513 }) 514 }
+2
appview/state/router.go
··· 5 "strings" 6 7 "github.com/go-chi/chi/v5" 8 "github.com/gorilla/sessions" 9 "tangled.sh/tangled.sh/core/appview/issues" 10 "tangled.sh/tangled.sh/core/appview/knots" ··· 97 98 func (s *State) StandardRouter(mw *middleware.Middleware) http.Handler { 99 r := chi.NewRouter() 100 101 r.Handle("/static/*", s.pages.Static()) 102
··· 5 "strings" 6 7 "github.com/go-chi/chi/v5" 8 + chimw "github.com/go-chi/chi/v5/middleware" 9 "github.com/gorilla/sessions" 10 "tangled.sh/tangled.sh/core/appview/issues" 11 "tangled.sh/tangled.sh/core/appview/knots" ··· 98 99 func (s *State) StandardRouter(mw *middleware.Middleware) http.Handler { 100 r := chi.NewRouter() 101 + r.Mount("/debug", chimw.Profiler()) 102 103 r.Handle("/static/*", s.pages.Static()) 104
+2 -31
appview/state/state.go
··· 61 return nil, fmt.Errorf("failed to create enforcer: %w", err) 62 } 63 64 - pgs := pages.NewPages(config) 65 - 66 res, err := idresolver.RedisResolver(config.Redis.ToURL()) 67 if err != nil { 68 log.Printf("failed to create redis resolver: %v", err) 69 res = idresolver.DefaultResolver() 70 } 71 72 cache := cache.New(config.Redis.Addr) 73 sess := session.New(cache) 74 ··· 180 s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.") 181 } 182 183 - var didsToResolve []string 184 - for _, ev := range timeline { 185 - if ev.Repo != nil { 186 - didsToResolve = append(didsToResolve, ev.Repo.Did) 187 - if ev.Source != nil { 188 - didsToResolve = append(didsToResolve, ev.Source.Did) 189 - } 190 - } 191 - if ev.Follow != nil { 192 - didsToResolve = append(didsToResolve, ev.Follow.UserDid, ev.Follow.SubjectDid) 193 - } 194 - if ev.Star != nil { 195 - didsToResolve = append(didsToResolve, ev.Star.StarredByDid, ev.Star.Repo.Did) 196 - } 197 - } 198 - 199 - resolvedIds := s.idResolver.ResolveIdents(r.Context(), didsToResolve) 200 - didHandleMap := make(map[string]string) 201 - for _, identity := range resolvedIds { 202 - if !identity.Handle.IsInvalidHandle() { 203 - didHandleMap[identity.DID.String()] = fmt.Sprintf("@%s", identity.Handle.String()) 204 - } else { 205 - didHandleMap[identity.DID.String()] = identity.DID.String() 206 - } 207 - } 208 - 209 s.pages.Timeline(w, pages.TimelineParams{ 210 LoggedInUser: user, 211 Timeline: timeline, 212 - DidHandleMap: didHandleMap, 213 }) 214 - 215 - return 216 } 217 218 func (s *State) Keys(w http.ResponseWriter, r *http.Request) {
··· 61 return nil, fmt.Errorf("failed to create enforcer: %w", err) 62 } 63 64 res, err := idresolver.RedisResolver(config.Redis.ToURL()) 65 if err != nil { 66 log.Printf("failed to create redis resolver: %v", err) 67 res = idresolver.DefaultResolver() 68 } 69 70 + pgs := pages.NewPages(config, res) 71 + 72 cache := cache.New(config.Redis.Addr) 73 sess := session.New(cache) 74 ··· 180 s.pages.Notice(w, "timeline", "Uh oh! Failed to load timeline.") 181 } 182 183 s.pages.Timeline(w, pages.TimelineParams{ 184 LoggedInUser: user, 185 Timeline: timeline, 186 }) 187 } 188 189 func (s *State) Keys(w http.ResponseWriter, r *http.Request) {
+1
cmd/appview/main.go
··· 5 "log" 6 "log/slog" 7 "net/http" 8 "os" 9 10 "tangled.sh/tangled.sh/core/appview/config"
··· 5 "log" 6 "log/slog" 7 "net/http" 8 + _ "net/http/pprof" 9 "os" 10 11 "tangled.sh/tangled.sh/core/appview/config"