Skip to content

Commit 77e449f

Browse files
Highlight viewed files differently in the PR filetree (#24956)
![image](https://github.com/go-gitea/gitea/assets/1135157/009d8026-15a1-4d18-8548-1c3642978f57) fixes #24566 --------- Co-authored-by: wxiaoguang <[email protected]>
1 parent 083818c commit 77e449f

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

templates/repo/diff/box.tmpl

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
</div>
5050
</div>
5151
<script id="diff-data-script" type="module">
52-
const diffDataFiles = [{{range $i, $file := .Diff.Files}}{Name:"{{$file.Name}}",NameHash:"{{$file.NameHash}}",Type:{{$file.Type}},IsBin:{{$file.IsBin}},Addition:{{$file.Addition}},Deletion:{{$file.Deletion}}},{{end}}];
52+
const diffDataFiles = [{{range $i, $file := .Diff.Files}}{Name:"{{$file.Name}}",NameHash:"{{$file.NameHash}}",Type:{{$file.Type}},IsBin:{{$file.IsBin}},Addition:{{$file.Addition}},Deletion:{{$file.Deletion}},IsViewed:{{$file.IsViewed}}},{{end}}];
5353
const diffData = {
5454
isIncomplete: {{.Diff.IsIncomplete}},
5555
tooManyFilesMessage: "{{$.locale.Tr "repo.diff.too_many_files"}}",

web_src/js/components/DiffFileTreeItem.vue

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/>
1111
<a
1212
v-if="item.isFile"
13-
class="file gt-ellipsis"
13+
:class="['file gt-ellipsis', {'viewed': item.file.IsViewed}]"
1414
:href="item.isFile ? '#diff-' + item.file.NameHash : ''"
1515
>{{ item.name }}</a>
1616
<SvgIcon
@@ -148,4 +148,8 @@ a:hover {
148148
text-decoration: none;
149149
color: var(--color-text);
150150
}
151+
152+
a.file.viewed {
153+
color: var(--color-text-light-3);
154+
}
151155
</style>

web_src/js/features/pull-view-file.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import {diffTreeStore} from '../modules/stores.js';
12
import {setFileFolding} from './file-fold.js';
23

34
const {csrfToken, pageData} = window.config;
@@ -53,9 +54,17 @@ export function initViewedCheckboxListenerFor() {
5354
const hasChangedLabel = form.parentNode.querySelector('.changed-since-last-review');
5455
hasChangedLabel?.remove();
5556

57+
const fileName = checkbox.getAttribute('name');
58+
59+
// check if the file is in our difftreestore and if we find it -> change the IsViewed status
60+
const fileInPageData = diffTreeStore().files.find((x) => x.Name === fileName);
61+
if (fileInPageData) {
62+
fileInPageData.IsViewed = this.checked;
63+
}
64+
5665
// Unfortunately, actual forms cause too many problems, hence another approach is needed
5766
const files = {};
58-
files[checkbox.getAttribute('name')] = this.checked;
67+
files[fileName] = this.checked;
5968
const data = {files};
6069
const headCommitSHA = form.getAttribute('data-headcommit');
6170
if (headCommitSHA) data.headCommitSHA = headCommitSHA;

0 commit comments

Comments
 (0)