Monorepo for Tangled tangled.org

appview: show repo language in profile page

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li defa5091 62e33ca9

verified
Changed files
+23 -78
appview
db
pages
templates
state
+2 -2
appview/db/profile.go
··· 151 *items = append(*items, &issue) 152 } 153 154 - repos, err := GetAllReposByDid(e, forDid) 155 if err != nil { 156 return nil, fmt.Errorf("error getting all repos by did: %w", err) 157 } ··· 586 } 587 588 // ensure all pinned repos are either own repos or collaborating repos 589 - repos, err := GetAllReposByDid(e, profile.Did) 590 if err != nil { 591 log.Printf("getting repos for %s: %s", profile.Did, err) 592 }
··· 151 *items = append(*items, &issue) 152 } 153 154 + repos, err := GetRepos(e, 0, FilterEq("did", forDid)) 155 if err != nil { 156 return nil, fmt.Errorf("error getting all repos by did: %w", err) 157 } ··· 586 } 587 588 // ensure all pinned repos are either own repos or collaborating repos 589 + repos, err := GetRepos(e, 0, FilterEq("did", profile.Did)) 590 if err != nil { 591 log.Printf("getting repos for %s: %s", profile.Did, err) 592 }
-67
appview/db/repos.go
··· 309 return count, nil 310 } 311 312 - func GetAllReposByDid(e Execer, did string) ([]Repo, error) { 313 - var repos []Repo 314 - 315 - rows, err := e.Query( 316 - `select 317 - r.did, 318 - r.name, 319 - r.knot, 320 - r.rkey, 321 - r.description, 322 - r.created, 323 - count(s.id) as star_count, 324 - r.source 325 - from 326 - repos r 327 - left join 328 - stars s on r.at_uri = s.repo_at 329 - where 330 - r.did = ? 331 - group by 332 - r.at_uri 333 - order by r.created desc`, 334 - did) 335 - if err != nil { 336 - return nil, err 337 - } 338 - defer rows.Close() 339 - 340 - for rows.Next() { 341 - var repo Repo 342 - var repoStats RepoStats 343 - var createdAt string 344 - var nullableDescription sql.NullString 345 - var nullableSource sql.NullString 346 - 347 - err := rows.Scan(&repo.Did, &repo.Name, &repo.Knot, &repo.Rkey, &nullableDescription, &createdAt, &repoStats.StarCount, &nullableSource) 348 - if err != nil { 349 - return nil, err 350 - } 351 - 352 - if nullableDescription.Valid { 353 - repo.Description = nullableDescription.String 354 - } 355 - 356 - if nullableSource.Valid { 357 - repo.Source = nullableSource.String 358 - } 359 - 360 - createdAtTime, err := time.Parse(time.RFC3339, createdAt) 361 - if err != nil { 362 - repo.Created = time.Now() 363 - } else { 364 - repo.Created = createdAtTime 365 - } 366 - 367 - repo.RepoStats = &repoStats 368 - 369 - repos = append(repos, repo) 370 - } 371 - 372 - if err := rows.Err(); err != nil { 373 - return nil, err 374 - } 375 - 376 - return repos, nil 377 - } 378 - 379 func GetRepo(e Execer, did, name string) (*Repo, error) { 380 var repo Repo 381 var description, spindle sql.NullString
··· 309 return count, nil 310 } 311 312 func GetRepo(e Execer, did, name string) (*Repo, error) { 313 var repo Repo 314 var description, spindle sql.NullString
+20 -8
appview/pages/templates/user/overview.html
··· 56 </summary> 57 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 58 {{ range . }} 59 - <div class="flex flex-wrap items-center gap-2"> 60 - <span class="text-gray-500 dark:text-gray-400"> 61 - {{ if .Source }} 62 {{ i "git-fork" "w-4 h-4" }} 63 - {{ else }} 64 {{ i "book-plus" "w-4 h-4" }} 65 - {{ end }} 66 </span> 67 - <a href="/{{ resolve .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline"> 68 - {{- .Repo.Name -}} 69 - </a> 70 </div> 71 {{ end }} 72 </div>
··· 56 </summary> 57 <div class="py-2 text-sm flex flex-col gap-3 mb-2"> 58 {{ range . }} 59 + <div class="flex flex-wrap items-center justify-between gap-2"> 60 + <span class="flex items-center gap-2"> 61 + <span class="text-gray-500 dark:text-gray-400"> 62 + {{ if .Source }} 63 {{ i "git-fork" "w-4 h-4" }} 64 + {{ else }} 65 {{ i "book-plus" "w-4 h-4" }} 66 + {{ end }} 67 + </span> 68 + <a href="/{{ resolve .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline"> 69 + {{- .Repo.Name -}} 70 + </a> 71 </span> 72 + 73 + {{ with .Repo.RepoStats }} 74 + {{ with .Language }} 75 + <div class="flex gap-2 items-center text-xs font-mono text-gray-400 "> 76 + <div class="size-2 rounded-full" 77 + style="background: radial-gradient(circle at 35% 35%, color-mix(in srgb, {{ langColor . }} 70%, white), {{ langColor . }} 30%, color-mix(in srgb, {{ langColor . }} 85%, black));"></div> 78 + <span>{{ . }}</span> 79 + </div> 80 + {{end }} 81 + {{end }} 82 </div> 83 {{ end }} 84 </div>
+1 -1
appview/state/profile.go
··· 701 log.Printf("getting profile data for %s: %s", user.Did, err) 702 } 703 704 - repos, err := db.GetAllReposByDid(s.db, user.Did) 705 if err != nil { 706 log.Printf("getting repos for %s: %s", user.Did, err) 707 }
··· 701 log.Printf("getting profile data for %s: %s", user.Did, err) 702 } 703 704 + repos, err := db.GetRepos(s.db, 0, db.FilterEq("did", user.Did)) 705 if err != nil { 706 log.Printf("getting repos for %s: %s", user.Did, err) 707 }