@@ -413,17 +413,15 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er
413
413
milestone = issue .Milestone .Title
414
414
}
415
415
416
- var reactions []* base. Reaction
416
+ var reactions []* gitlab. AwardEmoji
417
417
awardPage := 1
418
418
for {
419
419
awards , _ , err := g .client .AwardEmoji .ListIssueAwardEmoji (g .repoID , issue .IID , & gitlab.ListAwardEmojiOptions {Page : awardPage , PerPage : perPage }, gitlab .WithContext (g .ctx ))
420
420
if err != nil {
421
421
return nil , false , fmt .Errorf ("error while listing issue awards: %w" , err )
422
422
}
423
423
424
- for i := range awards {
425
- reactions = append (reactions , g .awardToReaction (awards [i ]))
426
- }
424
+ reactions = append (reactions , awards ... )
427
425
428
426
if len (awards ) < perPage {
429
427
break
@@ -442,7 +440,7 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er
442
440
State : issue .State ,
443
441
Created : * issue .CreatedAt ,
444
442
Labels : labels ,
445
- Reactions : reactions ,
443
+ Reactions : g . awardsToReactions ( reactions ) ,
446
444
Closed : issue .ClosedAt ,
447
445
IsLocked : issue .DiscussionLocked ,
448
446
Updated : * issue .UpdatedAt ,
@@ -577,17 +575,15 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque
577
575
milestone = pr .Milestone .Title
578
576
}
579
577
580
- var reactions []* base. Reaction
578
+ var reactions []* gitlab. AwardEmoji
581
579
awardPage := 1
582
580
for {
583
581
awards , _ , err := g .client .AwardEmoji .ListMergeRequestAwardEmoji (g .repoID , pr .IID , & gitlab.ListAwardEmojiOptions {Page : awardPage , PerPage : perPage }, gitlab .WithContext (g .ctx ))
584
582
if err != nil {
585
583
return nil , false , fmt .Errorf ("error while listing merge requests awards: %w" , err )
586
584
}
587
585
588
- for i := range awards {
589
- reactions = append (reactions , g .awardToReaction (awards [i ]))
590
- }
586
+ reactions = append (reactions , awards ... )
591
587
592
588
if len (awards ) < perPage {
593
589
break
@@ -614,7 +610,7 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque
614
610
MergeCommitSHA : pr .MergeCommitSHA ,
615
611
MergedTime : mergeTime ,
616
612
IsLocked : locked ,
617
- Reactions : reactions ,
613
+ Reactions : g . awardsToReactions ( reactions ) ,
618
614
Head : base.PullRequestBranch {
619
615
Ref : pr .SourceBranch ,
620
616
SHA : pr .SHA ,
@@ -675,10 +671,19 @@ func (g *GitlabDownloader) GetReviews(reviewable base.Reviewable) ([]*base.Revie
675
671
return reviews , nil
676
672
}
677
673
678
- func (g * GitlabDownloader ) awardToReaction (award * gitlab.AwardEmoji ) * base.Reaction {
679
- return & base.Reaction {
680
- UserID : int64 (award .User .ID ),
681
- UserName : award .User .Username ,
682
- Content : award .Name ,
674
+ func (g * GitlabDownloader ) awardsToReactions (awards []* gitlab.AwardEmoji ) []* base.Reaction {
675
+ result := make ([]* base.Reaction , 0 , len (awards ))
676
+ uniqCheck := make (map [string ]struct {})
677
+ for _ , award := range awards {
678
+ uid := fmt .Sprintf ("%s%d" , award .Name , award .User .ID )
679
+ if _ , ok := uniqCheck [uid ]; ! ok {
680
+ result = append (result , & base.Reaction {
681
+ UserID : int64 (award .User .ID ),
682
+ UserName : award .User .Username ,
683
+ Content : award .Name ,
684
+ })
685
+ uniqCheck [uid ] = struct {}{}
686
+ }
683
687
}
688
+ return result
684
689
}
0 commit comments