this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

add forks to profile timeline

fix bug where forked repo was created twice

Akshay 19ee94f4 0e0fa8c7

+55 -16
+17
appview/db/profile.go
··· 2 2 3 3 import ( 4 4 "fmt" 5 + "log" 5 6 "sort" 6 7 "time" 7 8 ) ··· 12 13 *Issue 13 14 *Pull 14 15 *Repo 16 + 17 + // optional: populate only if Repo is a fork 18 + Source *Repo 15 19 } 16 20 17 21 func MakeProfileTimeline(e Execer, forDid string) ([]ProfileTimelineEvent, error) { ··· 61 65 return timeline, fmt.Errorf("error getting all repos by did: %w", err) 62 66 } 63 67 68 + log.Println(repos) 69 + 64 70 for _, repo := range repos { 71 + var sourceRepo *Repo 72 + log.Println("name", repo.Name) 73 + if repo.Source != "" { 74 + log.Println("source", repo.Source) 75 + sourceRepo, err = GetRepoByAtUri(e, repo.Source) 76 + if err != nil { 77 + return nil, err 78 + } 79 + } 80 + 65 81 timeline = append(timeline, ProfileTimelineEvent{ 66 82 EventAt: repo.Created, 67 83 Type: "repo", 68 84 Repo: &repo, 85 + Source: sourceRepo, 69 86 }) 70 87 } 71 88
+4 -2
appview/db/repos.go
··· 97 97 98 98 if nullableDescription.Valid { 99 99 repo.Description = nullableDescription.String 100 - } else { 101 - repo.Description = "" 100 + } 101 + 102 + if nullableSource.Valid { 103 + repo.Source = nullableSource.String 102 104 } 103 105 104 106 createdAtTime, err := time.Parse(time.RFC3339, createdAt)
+3 -7
appview/db/timeline.go
··· 38 38 } 39 39 40 40 for _, repo := range repos { 41 + var sourceRepo *Repo 41 42 if repo.Source != "" { 42 - sourceRepo, err := GetRepoByAtUri(e, repo.Source) 43 + sourceRepo, err = GetRepoByAtUri(e, repo.Source) 43 44 if err != nil { 44 45 return nil, err 45 46 } 46 - 47 - events = append(events, TimelineEvent{ 48 - Repo: &repo, 49 - EventAt: repo.Created, 50 - Source: sourceRepo, 51 - }) 52 47 } 53 48 54 49 events = append(events, TimelineEvent{ 55 50 Repo: &repo, 56 51 EventAt: repo.Created, 52 + Source: sourceRepo, 57 53 }) 58 54 } 59 55
+8 -6
appview/pages/templates/timeline.html
··· 45 45 <p class="text-gray-600 dark:text-gray-300"> 46 46 <a href="/{{ $userHandle }}" class="no-underline hover:underline">{{ $userHandle | truncateAt30 }}</a> 47 47 {{ if .Source }} 48 - forked 49 - <a href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" class="no-underline hover:underline">{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}</a> 50 - to 51 - <a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 48 + forked 49 + <a href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" class="no-underline hover:underline"> 50 + {{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }} 51 + </a> 52 + to 53 + <a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 52 54 {{ else }} 53 - created 54 - <a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 55 + created 56 + <a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 55 57 {{ end }} 56 58 <time class="text-gray-700 dark:text-gray-400 text-xs">{{ .Repo.Created | timeFmt }}</time> 57 59 </p>
+18 -1
appview/pages/templates/user/profile.html
··· 67 67 </div> 68 68 {{ else if eq .Type "repo" }} 69 69 <div class="px-6 py-2 bg-white dark:bg-gray-800 rounded drop-shadow-sm w-fit flex items-center gap-3"> 70 + {{ if .Source }} 71 + <div class="text-gray-800 dark:text-gray-400 p-1"> 72 + {{ i "git-fork" "w-5 h-5" }} 73 + </div> 74 + {{ else }} 70 75 <div class="text-gray-800 dark:text-gray-400 p-1"> 71 76 {{ i "book-plus" "w-5 h-5" }} 72 77 </div> 78 + {{ end }} 73 79 <div> 74 80 <p class="text-gray-600 dark:text-gray-300"> 75 - created <a href="/{{ index $.DidHandleMap .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 81 + 82 + {{ if .Source }} 83 + forked 84 + <a href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" class="no-underline hover:underline"> 85 + {{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }} 86 + </a> 87 + to 88 + <a href="/{{ didOrHandle $.UserHandle $.UserDid }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 89 + {{ else }} 90 + created 91 + <a href="/{{ index $.DidHandleMap .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a> 92 + {{ end }} 76 93 <time class="text-gray-700 dark:text-gray-400 text-xs ml-2">{{ .Repo.Created | shortTimeFmt }}</time> 77 94 </p> 78 95 </div>
+5
appview/state/profile.go
··· 44 44 didsToResolve = append(didsToResolve, r.Did) 45 45 } 46 46 for _, evt := range timeline { 47 + if evt.Repo != nil { 48 + if evt.Repo.Source != "" { 49 + didsToResolve = append(didsToResolve, evt.Source.Did) 50 + } 51 + } 47 52 didsToResolve = append(didsToResolve, evt.Repo.Did) 48 53 } 49 54