Monorepo for Tangled tangled.org

appview: move template-specific constants to global funcmap #945

merged opened by boltless.me targeting master from sl/rusppvknyzsy

Constants those are mainly used to define a template shouldn't be managed from http handlers. Define constant values in const funcmap so we can easily access them without depending on template params.

This change will make more sense with following change rusppvkn

Signed-off-by: Seongmin Lee git@boltless.me

Labels

None yet.

assignee

None yet.

Participants 1
AT URI
at://did:plc:xasnlahkri4ewmbuzly2rlc5/sh.tangled.repo.pull/3mc5ynswap222
+57 -116
Diff #1
+8 -9
appview/issues/issues.go
··· 129 129 } 130 130 131 131 rp.pages.RepoSingleIssue(w, pages.RepoSingleIssueParams{ 132 - LoggedInUser: user, 133 - RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 134 - Issue: issue, 135 - CommentList: issue.CommentList(), 136 - Backlinks: backlinks, 137 - OrderedReactionKinds: models.OrderedReactionKinds, 138 - Reactions: reactionMap, 139 - UserReacted: userReactions, 140 - LabelDefs: defs, 132 + LoggedInUser: user, 133 + RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 134 + Issue: issue, 135 + CommentList: issue.CommentList(), 136 + Backlinks: backlinks, 137 + Reactions: reactionMap, 138 + UserReacted: userReactions, 139 + LabelDefs: defs, 141 140 }) 142 141 } 143 142
-15
appview/knots/knots.go
··· 40 40 Knotstream *eventconsumer.Consumer 41 41 } 42 42 43 - type tab = map[string]any 44 - 45 - var ( 46 - knotsTabs []tab = []tab{ 47 - {"Name": "profile", "Icon": "user"}, 48 - {"Name": "keys", "Icon": "key"}, 49 - {"Name": "emails", "Icon": "mail"}, 50 - {"Name": "notifications", "Icon": "bell"}, 51 - {"Name": "knots", "Icon": "volleyball"}, 52 - {"Name": "spindles", "Icon": "spool"}, 53 - } 54 - ) 55 - 56 43 func (k *Knots) Router() http.Handler { 57 44 r := chi.NewRouter() 58 45 ··· 84 71 k.Pages.Knots(w, pages.KnotsParams{ 85 72 LoggedInUser: user, 86 73 Registrations: registrations, 87 - Tabs: knotsTabs, 88 74 Tab: "knots", 89 75 }) 90 76 } ··· 148 134 Members: members, 149 135 Repos: repoMap, 150 136 IsOwner: true, 151 - Tabs: knotsTabs, 152 137 Tab: "knots", 153 138 }) 154 139 }
+22
appview/pages/funcmap.go
··· 32 32 "tangled.org/core/crypto" 33 33 ) 34 34 35 + type tab map[string]string 36 + 35 37 func (p *Pages) funcMap() template.FuncMap { 36 38 return template.FuncMap{ 37 39 "split": func(s string) []string { ··· 385 387 } 386 388 return fp 387 389 }, 390 + // constant values used to define a template 391 + "const": func() map[string]any { 392 + return map[string]any{ 393 + "OrderedReactionKinds": models.OrderedReactionKinds, 394 + // would be great to have ordered maps right about now 395 + "UserSettingsTabs": []tab{ 396 + {"Name": "profile", "Icon": "user"}, 397 + {"Name": "keys", "Icon": "key"}, 398 + {"Name": "emails", "Icon": "mail"}, 399 + {"Name": "notifications", "Icon": "bell"}, 400 + {"Name": "knots", "Icon": "volleyball"}, 401 + {"Name": "spindles", "Icon": "spool"}, 402 + }, 403 + "RepoSettingsTabs": []tab{ 404 + {"Name": "general", "Icon": "sliders-horizontal"}, 405 + {"Name": "access", "Icon": "users"}, 406 + {"Name": "pipelines", "Icon": "layers-2"}, 407 + }, 408 + } 409 + }, 388 410 } 389 411 } 390 412
+19 -35
appview/pages/pages.go
··· 336 336 337 337 type UserProfileSettingsParams struct { 338 338 LoggedInUser *oauth.User 339 - Tabs []map[string]any 340 339 Tab string 341 340 } 342 341 ··· 375 374 type UserKeysSettingsParams struct { 376 375 LoggedInUser *oauth.User 377 376 PubKeys []models.PublicKey 378 - Tabs []map[string]any 379 377 Tab string 380 378 } 381 379 ··· 386 384 type UserEmailsSettingsParams struct { 387 385 LoggedInUser *oauth.User 388 386 Emails []models.Email 389 - Tabs []map[string]any 390 387 Tab string 391 388 } 392 389 ··· 397 394 type UserNotificationSettingsParams struct { 398 395 LoggedInUser *oauth.User 399 396 Preferences *models.NotificationPreferences 400 - Tabs []map[string]any 401 397 Tab string 402 398 } 403 399 ··· 417 413 type KnotsParams struct { 418 414 LoggedInUser *oauth.User 419 415 Registrations []models.Registration 420 - Tabs []map[string]any 421 416 Tab string 422 417 } 423 418 ··· 431 426 Members []string 432 427 Repos map[string][]models.Repo 433 428 IsOwner bool 434 - Tabs []map[string]any 435 429 Tab string 436 430 } 437 431 ··· 450 444 type SpindlesParams struct { 451 445 LoggedInUser *oauth.User 452 446 Spindles []models.Spindle 453 - Tabs []map[string]any 454 447 Tab string 455 448 } 456 449 ··· 460 453 461 454 type SpindleListingParams struct { 462 455 models.Spindle 463 - Tabs []map[string]any 464 - Tab string 456 + Tab string 465 457 } 466 458 467 459 func (p *Pages) SpindleListing(w io.Writer, params SpindleListingParams) error { ··· 473 465 Spindle models.Spindle 474 466 Members []string 475 467 Repos map[string][]models.Repo 476 - Tabs []map[string]any 477 468 Tab string 478 469 } 479 470 ··· 881 872 SubscribedLabels map[string]struct{} 882 873 ShouldSubscribeAll bool 883 874 Active string 884 - Tabs []map[string]any 885 875 Tab string 886 876 Branches []types.Branch 887 877 } ··· 895 885 LoggedInUser *oauth.User 896 886 RepoInfo repoinfo.RepoInfo 897 887 Active string 898 - Tabs []map[string]any 899 888 Tab string 900 889 Collaborators []Collaborator 901 890 } ··· 909 898 LoggedInUser *oauth.User 910 899 RepoInfo repoinfo.RepoInfo 911 900 Active string 912 - Tabs []map[string]any 913 901 Tab string 914 902 Spindles []string 915 903 CurrentSpindle string ··· 947 935 Backlinks []models.RichReferenceLink 948 936 LabelDefs map[string]*models.LabelDefinition 949 937 950 - OrderedReactionKinds []models.ReactionKind 951 - Reactions map[models.ReactionKind]models.ReactionDisplayData 952 - UserReacted map[models.ReactionKind]bool 938 + Reactions map[models.ReactionKind]models.ReactionDisplayData 939 + UserReacted map[models.ReactionKind]bool 953 940 } 954 941 955 942 func (p *Pages) RepoSingleIssue(w io.Writer, params RepoSingleIssueParams) error { ··· 1104 1091 ResubmitCheck ResubmitResult 1105 1092 Pipelines map[string]models.Pipeline 1106 1093 1107 - OrderedReactionKinds []models.ReactionKind 1108 - Reactions map[models.ReactionKind]models.ReactionDisplayData 1109 - UserReacted map[models.ReactionKind]bool 1094 + Reactions map[models.ReactionKind]models.ReactionDisplayData 1095 + UserReacted map[models.ReactionKind]bool 1110 1096 1111 1097 LabelDefs map[string]*models.LabelDefinition 1112 1098 } ··· 1117 1103 } 1118 1104 1119 1105 type RepoPullPatchParams struct { 1120 - LoggedInUser *oauth.User 1121 - RepoInfo repoinfo.RepoInfo 1122 - Pull *models.Pull 1123 - Stack models.Stack 1124 - Diff *types.NiceDiff 1125 - Round int 1126 - Submission *models.PullSubmission 1127 - OrderedReactionKinds []models.ReactionKind 1128 - DiffOpts types.DiffOpts 1106 + LoggedInUser *oauth.User 1107 + RepoInfo repoinfo.RepoInfo 1108 + Pull *models.Pull 1109 + Stack models.Stack 1110 + Diff *types.NiceDiff 1111 + Round int 1112 + Submission *models.PullSubmission 1113 + DiffOpts types.DiffOpts 1129 1114 } 1130 1115 1131 1116 // this name is a mouthful ··· 1134 1119 } 1135 1120 1136 1121 type RepoPullInterdiffParams struct { 1137 - LoggedInUser *oauth.User 1138 - RepoInfo repoinfo.RepoInfo 1139 - Pull *models.Pull 1140 - Round int 1141 - Interdiff *patchutil.InterdiffResult 1142 - OrderedReactionKinds []models.ReactionKind 1143 - DiffOpts types.DiffOpts 1122 + LoggedInUser *oauth.User 1123 + RepoInfo repoinfo.RepoInfo 1124 + Pull *models.Pull 1125 + Round int 1126 + Interdiff *patchutil.InterdiffResult 1127 + DiffOpts types.DiffOpts 1144 1128 } 1145 1129 1146 1130 // this name is a mouthful
+2 -2
appview/pages/templates/repo/issues/issue.html
··· 109 109 110 110 {{ define "issueReactions" }} 111 111 <div class="flex items-center gap-2"> 112 - {{ template "repo/fragments/reactionsPopUp" .OrderedReactionKinds }} 113 - {{ range $kind := .OrderedReactionKinds }} 112 + {{ template "repo/fragments/reactionsPopUp" const.OrderedReactionKinds }} 113 + {{ range $kind := const.OrderedReactionKinds }} 114 114 {{ $reactionData := index $.Reactions $kind }} 115 115 {{ 116 116 template "repo/fragments/reaction"
+1 -1
appview/pages/templates/repo/pulls/fragments/pullHeader.html
··· 64 64 </article> 65 65 {{ end }} 66 66 67 - {{ with .OrderedReactionKinds }} 67 + {{ with const.OrderedReactionKinds }} 68 68 <div class="flex items-center gap-2 mt-2"> 69 69 {{ template "repo/fragments/reactionsPopUp" . }} 70 70 {{ range $kind := . }}
+1 -2
appview/pages/templates/repo/settings/fragments/sidebar.html
··· 1 1 {{ define "repo/settings/fragments/sidebar" }} 2 2 {{ $active := .Tab }} 3 - {{ $tabs := .Tabs }} 4 3 <div class="sticky top-2 grid grid-cols-1 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700 shadow-inner"> 5 4 {{ $activeTab := "bg-white dark:bg-gray-700 drop-shadow-sm" }} 6 5 {{ $inactiveTab := "bg-gray-100 dark:bg-gray-800" }} 7 - {{ range $tabs }} 6 + {{ range const.RepoSettingsTabs }} 8 7 <a href="/{{ $.RepoInfo.FullName }}/settings?tab={{.Name}}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25"> 9 8 <div class="flex gap-3 items-center p-2 {{ if eq .Name $active }} {{ $activeTab }} {{ else }} {{ $inactiveTab }} {{ end }}"> 10 9 {{ i .Icon "size-4" }}
+2 -3
appview/pages/templates/user/settings/fragments/sidebar.html
··· 1 1 {{ define "user/settings/fragments/sidebar" }} 2 2 {{ $active := .Tab }} 3 - {{ $tabs := .Tabs }} 4 3 <div class="sticky top-2 grid grid-cols-1 rounded border border-gray-200 dark:border-gray-700 divide-y divide-gray-200 dark:divide-gray-700 shadow-inner"> 5 4 {{ $activeTab := "bg-white dark:bg-gray-700 drop-shadow-sm" }} 6 5 {{ $inactiveTab := "bg-gray-100 dark:bg-gray-800" }} 7 - {{ range $tabs }} 6 + {{ range const.UserSettingsTabs }} 8 7 <a href="/settings/{{.Name}}" class="no-underline hover:no-underline hover:bg-gray-100/25 hover:dark:bg-gray-700/25"> 9 8 <div class="flex gap-3 items-center p-2 {{ if eq .Name $active }} {{ $activeTab }} {{ else }} {{ $inactiveTab }} {{ end }}"> 10 9 {{ i .Icon "size-4" }} ··· 13 12 </a> 14 13 {{ end }} 15 14 </div> 16 - {{ end }} 15 + {{ end }}
+2 -3
appview/pulls/pulls.go
··· 244 244 ResubmitCheck: resubmitResult, 245 245 Pipelines: m, 246 246 247 - OrderedReactionKinds: models.OrderedReactionKinds, 248 - Reactions: reactionMap, 249 - UserReacted: userReactions, 247 + Reactions: reactionMap, 248 + UserReacted: userReactions, 250 249 251 250 LabelDefs: defs, 252 251 })
-14
appview/repo/settings.go
··· 22 22 indigoxrpc "github.com/bluesky-social/indigo/xrpc" 23 23 ) 24 24 25 - type tab = map[string]any 26 - 27 - var ( 28 - // would be great to have ordered maps right about now 29 - settingsTabs []tab = []tab{ 30 - {"Name": "general", "Icon": "sliders-horizontal"}, 31 - {"Name": "access", "Icon": "users"}, 32 - {"Name": "pipelines", "Icon": "layers-2"}, 33 - } 34 - ) 35 - 36 25 func (rp *Repo) SetDefaultBranch(w http.ResponseWriter, r *http.Request) { 37 26 l := rp.logger.With("handler", "SetDefaultBranch") 38 27 ··· 262 251 DefaultLabels: defaultLabels, 263 252 SubscribedLabels: subscribedLabels, 264 253 ShouldSubscribeAll: shouldSubscribeAll, 265 - Tabs: settingsTabs, 266 254 Tab: "general", 267 255 }) 268 256 } ··· 308 296 rp.pages.RepoAccessSettings(w, pages.RepoAccessSettingsParams{ 309 297 LoggedInUser: user, 310 298 RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 311 - Tabs: settingsTabs, 312 299 Tab: "access", 313 300 Collaborators: collaborators, 314 301 }) ··· 369 356 rp.pages.RepoPipelineSettings(w, pages.RepoPipelineSettingsParams{ 370 357 LoggedInUser: user, 371 358 RepoInfo: rp.repoResolver.GetRepoInfo(r, user), 372 - Tabs: settingsTabs, 373 359 Tab: "pipelines", 374 360 Spindles: spindles, 375 361 CurrentSpindle: f.Spindle,
-17
appview/settings/settings.go
··· 35 35 Config *config.Config 36 36 } 37 37 38 - type tab = map[string]any 39 - 40 - var ( 41 - settingsTabs []tab = []tab{ 42 - {"Name": "profile", "Icon": "user"}, 43 - {"Name": "keys", "Icon": "key"}, 44 - {"Name": "emails", "Icon": "mail"}, 45 - {"Name": "notifications", "Icon": "bell"}, 46 - {"Name": "knots", "Icon": "volleyball"}, 47 - {"Name": "spindles", "Icon": "spool"}, 48 - } 49 - ) 50 - 51 38 func (s *Settings) Router() http.Handler { 52 39 r := chi.NewRouter() 53 40 ··· 85 72 86 73 s.Pages.UserProfileSettings(w, pages.UserProfileSettingsParams{ 87 74 LoggedInUser: user, 88 - Tabs: settingsTabs, 89 75 Tab: "profile", 90 76 }) 91 77 } ··· 104 90 s.Pages.UserNotificationSettings(w, pages.UserNotificationSettingsParams{ 105 91 LoggedInUser: user, 106 92 Preferences: prefs, 107 - Tabs: settingsTabs, 108 93 Tab: "notifications", 109 94 }) 110 95 } ··· 146 131 s.Pages.UserKeysSettings(w, pages.UserKeysSettingsParams{ 147 132 LoggedInUser: user, 148 133 PubKeys: pubKeys, 149 - Tabs: settingsTabs, 150 134 Tab: "keys", 151 135 }) 152 136 } ··· 161 145 s.Pages.UserEmailsSettings(w, pages.UserEmailsSettingsParams{ 162 146 LoggedInUser: user, 163 147 Emails: emails, 164 - Tabs: settingsTabs, 165 148 Tab: "emails", 166 149 }) 167 150 }
-15
appview/spindles/spindles.go
··· 39 39 Logger *slog.Logger 40 40 } 41 41 42 - type tab = map[string]any 43 - 44 - var ( 45 - spindlesTabs []tab = []tab{ 46 - {"Name": "profile", "Icon": "user"}, 47 - {"Name": "keys", "Icon": "key"}, 48 - {"Name": "emails", "Icon": "mail"}, 49 - {"Name": "notifications", "Icon": "bell"}, 50 - {"Name": "knots", "Icon": "volleyball"}, 51 - {"Name": "spindles", "Icon": "spool"}, 52 - } 53 - ) 54 - 55 42 func (s *Spindles) Router() http.Handler { 56 43 r := chi.NewRouter() 57 44 ··· 83 70 s.Pages.Spindles(w, pages.SpindlesParams{ 84 71 LoggedInUser: user, 85 72 Spindles: all, 86 - Tabs: spindlesTabs, 87 73 Tab: "spindles", 88 74 }) 89 75 } ··· 143 129 Spindle: spindle, 144 130 Members: members, 145 131 Repos: repoMap, 146 - Tabs: spindlesTabs, 147 132 Tab: "spindles", 148 133 }) 149 134 }

History

4 rounds 0 comments
sign up or login to add to the discussion
1 commit
expand
appview: move template-specific constants to global funcmap
3/3 success
expand
expand 0 comments
pull request successfully merged
1 commit
expand
appview: move template-specific constants to global funcmap
3/3 success
expand
expand 0 comments
1 commit
expand
appview: move template-specific constants to global funcmap
3/3 success
expand
expand 0 comments
1 commit
expand
appview: move template-specific constants to global funcmap
3/3 failed
expand
expand 0 comments