+17
appview/db/profile.go
+17
appview/db/profile.go
···
2
3
import (
4
"fmt"
5
"sort"
6
"time"
7
)
···
12
*Issue
13
*Pull
14
*Repo
15
}
16
17
func MakeProfileTimeline(e Execer, forDid string) ([]ProfileTimelineEvent, error) {
···
61
return timeline, fmt.Errorf("error getting all repos by did: %w", err)
62
}
63
64
for _, repo := range repos {
65
timeline = append(timeline, ProfileTimelineEvent{
66
EventAt: repo.Created,
67
Type: "repo",
68
Repo: &repo,
69
})
70
}
71
···
2
3
import (
4
"fmt"
5
+
"log"
6
"sort"
7
"time"
8
)
···
13
*Issue
14
*Pull
15
*Repo
16
+
17
+
// optional: populate only if Repo is a fork
18
+
Source *Repo
19
}
20
21
func MakeProfileTimeline(e Execer, forDid string) ([]ProfileTimelineEvent, error) {
···
65
return timeline, fmt.Errorf("error getting all repos by did: %w", err)
66
}
67
68
+
log.Println(repos)
69
+
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
+
81
timeline = append(timeline, ProfileTimelineEvent{
82
EventAt: repo.Created,
83
Type: "repo",
84
Repo: &repo,
85
+
Source: sourceRepo,
86
})
87
}
88
+4
-2
appview/db/repos.go
+4
-2
appview/db/repos.go
+3
-7
appview/db/timeline.go
+3
-7
appview/db/timeline.go
···
38
}
39
40
for _, repo := range repos {
41
if repo.Source != "" {
42
-
sourceRepo, err := GetRepoByAtUri(e, repo.Source)
43
if err != nil {
44
return nil, err
45
}
46
-
47
-
events = append(events, TimelineEvent{
48
-
Repo: &repo,
49
-
EventAt: repo.Created,
50
-
Source: sourceRepo,
51
-
})
52
}
53
54
events = append(events, TimelineEvent{
55
Repo: &repo,
56
EventAt: repo.Created,
57
})
58
}
59
···
38
}
39
40
for _, repo := range repos {
41
+
var sourceRepo *Repo
42
if repo.Source != "" {
43
+
sourceRepo, err = GetRepoByAtUri(e, repo.Source)
44
if err != nil {
45
return nil, err
46
}
47
}
48
49
events = append(events, TimelineEvent{
50
Repo: &repo,
51
EventAt: repo.Created,
52
+
Source: sourceRepo,
53
})
54
}
55
+8
-6
appview/pages/templates/timeline.html
+8
-6
appview/pages/templates/timeline.html
···
45
<p class="text-gray-600 dark:text-gray-300">
46
<a href="/{{ $userHandle }}" class="no-underline hover:underline">{{ $userHandle | truncateAt30 }}</a>
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>
52
{{ else }}
53
-
created
54
-
<a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
55
{{ end }}
56
<time class="text-gray-700 dark:text-gray-400 text-xs">{{ .Repo.Created | timeFmt }}</time>
57
</p>
···
45
<p class="text-gray-600 dark:text-gray-300">
46
<a href="/{{ $userHandle }}" class="no-underline hover:underline">{{ $userHandle | truncateAt30 }}</a>
47
{{ if .Source }}
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>
54
{{ else }}
55
+
created
56
+
<a href="/{{ $userHandle }}/{{ .Repo.Name }}" class="no-underline hover:underline">{{ .Repo.Name }}</a>
57
{{ end }}
58
<time class="text-gray-700 dark:text-gray-400 text-xs">{{ .Repo.Created | timeFmt }}</time>
59
</p>
+18
-1
appview/pages/templates/user/profile.html
+18
-1
appview/pages/templates/user/profile.html
···
67
</div>
68
{{ else if eq .Type "repo" }}
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
<div class="text-gray-800 dark:text-gray-400 p-1">
71
{{ i "book-plus" "w-5 h-5" }}
72
</div>
73
<div>
74
<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>
76
<time class="text-gray-700 dark:text-gray-400 text-xs ml-2">{{ .Repo.Created | shortTimeFmt }}</time>
77
</p>
78
</div>
···
67
</div>
68
{{ else if eq .Type "repo" }}
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 }}
75
<div class="text-gray-800 dark:text-gray-400 p-1">
76
{{ i "book-plus" "w-5 h-5" }}
77
</div>
78
+
{{ end }}
79
<div>
80
<p class="text-gray-600 dark:text-gray-300">
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 }}
93
<time class="text-gray-700 dark:text-gray-400 text-xs ml-2">{{ .Repo.Created | shortTimeFmt }}</time>
94
</p>
95
</div>
+5
appview/state/profile.go
+5
appview/state/profile.go