Skip to content

Commit b478654

Browse files
committed
on the diff page also remains consistent
1 parent a1a0bd7 commit b478654

File tree

6 files changed

+25
-24
lines changed

6 files changed

+25
-24
lines changed

routers/web/repo/commit.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ func Diff(ctx *context.Context) {
370370
return
371371
}
372372

373-
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(diffTree, nil)
373+
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(ctx, commit, diffTree, nil)
374374
}
375375

376376
statuses, _, err := git_model.GetLatestCommitStatus(ctx, ctx.Repo.Repository.ID, commitID, db.ListOptionsAll)

routers/web/repo/compare.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -638,20 +638,20 @@ func PrepareCompareDiff(
638638
ctx.Data["Diff"] = diff
639639
ctx.Data["DiffNotAvailable"] = diffShortStat.NumFiles == 0
640640

641+
headCommit, err := ci.HeadGitRepo.GetCommit(headCommitID)
642+
if err != nil {
643+
ctx.ServerError("GetCommit", err)
644+
return false
645+
}
646+
641647
if !fileOnly {
642648
diffTree, err := gitdiff.GetDiffTree(ctx, ci.HeadGitRepo, false, beforeCommitID, headCommitID)
643649
if err != nil {
644650
ctx.ServerError("GetDiffTree", err)
645651
return false
646652
}
647653

648-
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(diffTree, nil)
649-
}
650-
651-
headCommit, err := ci.HeadGitRepo.GetCommit(headCommitID)
652-
if err != nil {
653-
ctx.ServerError("GetCommit", err)
654-
return false
654+
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(ctx, headCommit, diffTree, nil)
655655
}
656656

657657
baseGitRepo := ctx.Repo.GitRepo

routers/web/repo/pull.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -816,6 +816,12 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
816816
}
817817
}
818818

819+
commit, err := gitRepo.GetCommit(endCommitID)
820+
if err != nil {
821+
ctx.ServerError("GetCommit", err)
822+
return
823+
}
824+
819825
if !fileOnly {
820826
// note: use mergeBase is set to false because we already have the merge base from the pull request info
821827
diffTree, err := gitdiff.GetDiffTree(ctx, gitRepo, false, startCommitID, endCommitID)
@@ -834,7 +840,7 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
834840
}
835841
}
836842

837-
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(diffTree, filesViewedState)
843+
ctx.PageData["DiffFiles"] = transformDiffTreeForUI(ctx, commit, diffTree, filesViewedState)
838844
}
839845

840846
ctx.Data["Diff"] = diff
@@ -845,11 +851,6 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
845851
ctx.ServerError("GetCommit", err)
846852
return
847853
}
848-
commit, err := gitRepo.GetCommit(endCommitID)
849-
if err != nil {
850-
ctx.ServerError("GetCommit", err)
851-
return
852-
}
853854

854855
if ctx.IsSigned && ctx.Doer != nil {
855856
if ctx.Data["CanMarkConversation"], err = issues_model.CanMarkConversation(ctx, issue, ctx.Doer); err != nil {

routers/web/repo/treelist.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@
44
package repo
55

66
import (
7+
"html/template"
78
"net/http"
89

910
pull_model "code.gitea.io/gitea/models/pull"
1011
"code.gitea.io/gitea/modules/base"
1112
"code.gitea.io/gitea/modules/git"
13+
"code.gitea.io/gitea/modules/reqctx"
14+
"code.gitea.io/gitea/modules/templates"
1215
"code.gitea.io/gitea/services/context"
1316
"code.gitea.io/gitea/services/gitdiff"
1417
files_service "code.gitea.io/gitea/services/repository/files"
@@ -59,24 +62,27 @@ func isExcludedEntry(entry *git.TreeEntry) bool {
5962
type FileDiffFile struct {
6063
Name string
6164
NameHash string
65+
FileIcon template.HTML
6266
IsSubmodule bool
6367
IsViewed bool
6468
Status string
6569
}
6670

6771
// transformDiffTreeForUI transforms a DiffTree into a slice of FileDiffFile for UI rendering
6872
// it also takes a map of file names to their viewed state, which is used to mark files as viewed
69-
func transformDiffTreeForUI(diffTree *gitdiff.DiffTree, filesViewedState map[string]pull_model.ViewedState) []FileDiffFile {
73+
func transformDiffTreeForUI(ctx *context.Context, commit *git.Commit, diffTree *gitdiff.DiffTree, filesViewedState map[string]pull_model.ViewedState) []FileDiffFile {
7074
files := make([]FileDiffFile, 0, len(diffTree.Files))
7175

7276
for _, file := range diffTree.Files {
7377
nameHash := git.HashFilePathForWebUI(file.HeadPath)
7478
isSubmodule := file.HeadMode == git.EntryModeCommit
7579
isViewed := filesViewedState[file.HeadPath] == pull_model.Viewed
80+
entry, _ := commit.GetTreeEntryByPath(file.HeadPath)
7681

7782
files = append(files, FileDiffFile{
7883
Name: file.HeadPath,
7984
NameHash: nameHash,
85+
FileIcon: templates.NewRenderUtils(reqctx.FromContext(ctx)).RenderFileIcon(entry),
8086
IsSubmodule: isSubmodule,
8187
IsViewed: isViewed,
8288
Status: file.Status,

web_src/js/components/DiffFileTreeItem.vue

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import {SvgIcon, type SvgName} from '../svg.ts';
33
import {diffTreeStore} from '../modules/stores.ts';
44
import {ref} from 'vue';
5-
import type {Item, File, FileStatus} from '../utils/filetree.ts';
5+
import type {Item, FileStatus} from '../utils/filetree.ts';
66
77
defineProps<{
88
item: Item,
@@ -22,13 +22,6 @@ function getIconForDiffStatus(pType: FileStatus) {
2222
};
2323
return diffTypes[pType];
2424
}
25-
26-
function fileIcon(file: File) {
27-
if (file.IsSubmodule) {
28-
return 'octicon-file-submodule';
29-
}
30-
return 'octicon-file';
31-
}
3225
</script>
3326

3427
<template>
@@ -39,7 +32,7 @@ function fileIcon(file: File) {
3932
:title="item.name" :href="'#diff-' + item.file.NameHash"
4033
>
4134
<!-- file -->
42-
<SvgIcon :name="fileIcon(item.file)"/>
35+
<span class="item-icon" v-html="item.file.FileIcon"/>
4336
<span class="gt-ellipsis tw-flex-1">{{ item.name }}</span>
4437
<SvgIcon
4538
:name="getIconForDiffStatus(item.file.Status).name"

web_src/js/utils/filetree.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export type FileStatus = 'added' | 'modified' | 'deleted' | 'renamed' | 'copied'
55
export type File = {
66
Name: string;
77
NameHash: string;
8+
FileIcon: string;
89
Status: FileStatus;
910
IsViewed: boolean;
1011
IsSubmodule: boolean;

0 commit comments

Comments
 (0)