Skip to content

Commit 291012d

Browse files
committed
fix
1 parent e174a91 commit 291012d

File tree

4 files changed

+17
-24
lines changed

4 files changed

+17
-24
lines changed

routers/web/repo/pull.go

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -759,12 +759,9 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
759759
// have to load only the diff and not get the viewed information
760760
// as the viewed information is designed to be loaded only on latest PR
761761
// diff and if you're signed in.
762-
shouldGetUserSpecificDiff := false
763-
if !ctx.IsSigned || willShowSpecifiedCommit || willShowSpecifiedCommitRange {
764-
// do nothing
765-
} else {
766-
shouldGetUserSpecificDiff = true
767-
err = gitdiff.SyncUserSpecificDiff(ctx, ctx.Doer.ID, pull, gitRepo, diff, diffOptions, files...)
762+
var reviewState *pull_model.ReviewState
763+
if ctx.IsSigned && !willShowSpecifiedCommit && !willShowSpecifiedCommitRange {
764+
reviewState, err = gitdiff.SyncUserSpecificDiff(ctx, ctx.Doer.ID, pull, gitRepo, diff, diffOptions)
768765
if err != nil {
769766
ctx.ServerError("SyncUserSpecificDiff", err)
770767
return
@@ -823,17 +820,10 @@ func viewPullFiles(ctx *context.Context, specifiedStartCommit, specifiedEndCommi
823820
ctx.ServerError("GetDiffTree", err)
824821
return
825822
}
826-
827-
filesViewedState := make(map[string]pull_model.ViewedState)
828-
if shouldGetUserSpecificDiff {
829-
// This sort of sucks because we already fetch this when getting the diff
830-
review, err := pull_model.GetNewestReviewState(ctx, ctx.Doer.ID, issue.ID)
831-
if err == nil && review != nil && review.UpdatedFiles != nil {
832-
// If there wasn't an error, and we have a review with updated files, use that
833-
filesViewedState = review.UpdatedFiles
834-
}
823+
var filesViewedState map[string]pull_model.ViewedState
824+
if reviewState != nil {
825+
filesViewedState = reviewState.UpdatedFiles
835826
}
836-
// FIXME: filesViewedState is always nil?
837827
ctx.PageData["DiffFileTree"] = transformDiffTreeForWeb(diffTree, filesViewedState)
838828
}
839829

routers/web/repo/treelist.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ type WebDiffFileItem struct {
6767
EntryMode string
6868
IsViewed bool
6969
Children []*WebDiffFileItem
70+
// TODO: add icon support in the future
7071
}
7172

7273
// WebDiffFileTree is used by frontend, check the field names in frontend before changing
@@ -107,7 +108,6 @@ func transformDiffTreeForWeb(diffTree *gitdiff.DiffTree, filesViewedState map[st
107108

108109
for _, file := range diffTree.Files {
109110
item := &WebDiffFileItem{FullName: file.HeadPath, DiffStatus: file.Status}
110-
// FIXME: filesViewedState is always nil?
111111
item.IsViewed = filesViewedState[item.FullName] == pull_model.Viewed
112112
item.NameHash = git.HashFilePathForWebUI(item.FullName)
113113

services/gitdiff/gitdiff.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,10 +1337,13 @@ func GetDiffShortStat(gitRepo *git.Repository, beforeCommitID, afterCommitID str
13371337

13381338
// SyncUserSpecificDiff inserts user-specific data such as which files the user has already viewed on the given diff
13391339
// Additionally, the database is updated asynchronously if files have changed since the last review
1340-
func SyncUserSpecificDiff(ctx context.Context, userID int64, pull *issues_model.PullRequest, gitRepo *git.Repository, diff *Diff, opts *DiffOptions, files ...string) error {
1340+
func SyncUserSpecificDiff(ctx context.Context, userID int64, pull *issues_model.PullRequest, gitRepo *git.Repository, diff *Diff, opts *DiffOptions) (*pull_model.ReviewState, error) {
13411341
review, err := pull_model.GetNewestReviewState(ctx, userID, pull.ID)
1342-
if err != nil || review == nil || review.UpdatedFiles == nil {
1343-
return err
1342+
if err != nil {
1343+
return nil, err
1344+
}
1345+
if len(review.UpdatedFiles) == 0 {
1346+
return review, nil
13441347
}
13451348

13461349
latestCommit := opts.AfterCommitID
@@ -1393,11 +1396,11 @@ outer:
13931396
err := pull_model.UpdateReviewState(ctx, review.UserID, review.PullID, review.CommitSHA, filesChangedSinceLastDiff)
13941397
if err != nil {
13951398
log.Warn("Could not update review for user %d, pull %d, commit %s and the changed files %v: %v", review.UserID, review.PullID, review.CommitSHA, filesChangedSinceLastDiff, err)
1396-
return err
1399+
return nil, err
13971400
}
13981401
}
13991402

1400-
return nil
1403+
return review, err
14011404
}
14021405

14031406
// CommentAsDiff returns c.Patch as *Diff

web_src/js/components/DiffFileTreeItem.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ import {SvgIcon, type SvgName} from '../svg.ts';
33
import {ref} from 'vue';
44
import {type DiffStatus, type DiffTreeEntry, diffTreeStore} from '../modules/diff-file.ts';
55
6-
defineProps<{
6+
const props = defineProps<{
77
item: DiffTreeEntry,
88
}>();
99
1010
const store = diffTreeStore();
11-
const collapsed = ref(false);
11+
const collapsed = ref(props.item.IsViewed);
1212
1313
function getIconForDiffStatus(pType: DiffStatus) {
1414
const diffTypes: Record<DiffStatus, { name: SvgName, classes: Array<string> }> = {

0 commit comments

Comments
 (0)