forked from tangled.org/core
this repo has no description

add forks to profile timeline

fix bug where forked repo was created twice

Changed files
+55 -16
appview
+17
appview/db/profile.go
···
import (
"fmt"
+
"log"
"sort"
"time"
)
···
*Issue
*Pull
*Repo
+
+
// optional: populate only if Repo is a fork
+
Source *Repo
}
func MakeProfileTimeline(e Execer, forDid string) ([]ProfileTimelineEvent, error) {
···
return timeline, fmt.Errorf("error getting all repos by did: %w", err)
}
+
log.Println(repos)
+
for _, repo := range repos {
+
var sourceRepo *Repo
+
log.Println("name", repo.Name)
+
if repo.Source != "" {
+
log.Println("source", repo.Source)
+
sourceRepo, err = GetRepoByAtUri(e, repo.Source)
+
if err != nil {
+
return nil, err
+
}
+
}
+
timeline = append(timeline, ProfileTimelineEvent{
EventAt: repo.Created,
Type: "repo",
Repo: &repo,
+
Source: sourceRepo,
})
}
+4 -2
appview/db/repos.go
···
if nullableDescription.Valid {
repo.Description = nullableDescription.String
-
} else {
-
repo.Description = ""
+
}
+
+
if nullableSource.Valid {
+
repo.Source = nullableSource.String
}
createdAtTime, err := time.Parse(time.RFC3339, createdAt)
+3 -7
appview/db/timeline.go
···
}
for _, repo := range repos {
+
var sourceRepo *Repo
if repo.Source != "" {
-
sourceRepo, err := GetRepoByAtUri(e, repo.Source)
+
sourceRepo, err = GetRepoByAtUri(e, repo.Source)
if err != nil {
return nil, err
}
-
-
events = append(events, TimelineEvent{
-
Repo: &repo,
-
EventAt: repo.Created,
-
Source: sourceRepo,
-
})
}
events = append(events, TimelineEvent{
Repo: &repo,
EventAt: repo.Created,
+
Source: sourceRepo,
})
}
+8 -6
appview/pages/templates/timeline.html
···
<p class="text-gray-600 dark:text-gray-300">
<a href="/{{ $userHandle }}" class="no-underline hover:underline">{{ $userHandle | truncateAt30 }}</a>
{{ if .Source }}
-
forked
-
<a href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" class="no-underline hover:underline">{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}</a>
-
to
-
<a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
+
forked
+
<a href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" class="no-underline hover:underline">
+
{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}
+
</a>
+
to
+
<a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
{{ else }}
-
created
-
<a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
+
created
+
<a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
{{ end }}
<time class="text-gray-700 dark:text-gray-400 text-xs">{{ .Repo.Created | timeFmt }}</time>
</p>
+18 -1
appview/pages/templates/user/profile.html
···
</div>
{{ else if eq .Type "repo" }}
<div class="px-6 py-2 bg-white dark:bg-gray-800 rounded drop-shadow-sm w-fit flex items-center gap-3">
+
{{ if .Source }}
+
<div class="text-gray-800 dark:text-gray-400 p-1">
+
{{ i "git-fork" "w-5 h-5" }}
+
</div>
+
{{ else }}
<div class="text-gray-800 dark:text-gray-400 p-1">
{{ i "book-plus" "w-5 h-5" }}
</div>
+
{{ end }}
<div>
<p class="text-gray-600 dark:text-gray-300">
-
created <a href="/{{ index $.DidHandleMap .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
+
+
{{ if .Source }}
+
forked
+
<a href="/{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}" class="no-underline hover:underline">
+
{{ index $.DidHandleMap .Source.Did }}/{{ .Source.Name }}
+
</a>
+
to
+
<a href="/{{ didOrHandle $.UserHandle $.UserDid }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
+
{{ else }}
+
created
+
<a href="/{{ index $.DidHandleMap .Repo.Did }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
+
{{ end }}
<time class="text-gray-700 dark:text-gray-400 text-xs ml-2">{{ .Repo.Created | shortTimeFmt }}</time>
</p>
</div>
+5
appview/state/profile.go
···
didsToResolve = append(didsToResolve, r.Did)
}
for _, evt := range timeline {
+
if evt.Repo != nil {
+
if evt.Repo.Source != "" {
+
didsToResolve = append(didsToResolve, evt.Source.Did)
+
}
+
}
didsToResolve = append(didsToResolve, evt.Repo.Did)
}