mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-04 05:18:25 +00:00 
			
		
		
		
	Resolve TODO: Enable pagination on GiteaDownloader.GetComments() & update another TODO (#16963)
* Update TODO in migrations * Resolve TODO: enable pagination on GiteaDownloader.GetComments()
This commit is contained in:
		@@ -459,49 +459,48 @@ func (g *GiteaDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, err
 | 
			
		||||
func (g *GiteaDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Comment, bool, error) {
 | 
			
		||||
	var allComments = make([]*base.Comment, 0, g.maxPerPage)
 | 
			
		||||
 | 
			
		||||
	// for i := 1; ; i++ {
 | 
			
		||||
	// make sure gitea can shutdown gracefully
 | 
			
		||||
	select {
 | 
			
		||||
	case <-g.ctx.Done():
 | 
			
		||||
		return nil, false, nil
 | 
			
		||||
	default:
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	comments, _, err := g.client.ListIssueComments(g.repoOwner, g.repoName, opts.Context.ForeignID(), gitea_sdk.ListIssueCommentOptions{ListOptions: gitea_sdk.ListOptions{
 | 
			
		||||
		// PageSize: g.maxPerPage,
 | 
			
		||||
		// Page:     i,
 | 
			
		||||
	}})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, false, fmt.Errorf("error while listing comments for issue #%d. Error: %v", opts.Context.ForeignID(), err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, comment := range comments {
 | 
			
		||||
		reactions, err := g.getCommentReactions(comment.ID)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Warn("Unable to load comment reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)
 | 
			
		||||
			if err2 := models.CreateRepositoryNotice(
 | 
			
		||||
				fmt.Sprintf("Unable to load reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)); err2 != nil {
 | 
			
		||||
				log.Error("create repository notice failed: ", err2)
 | 
			
		||||
			}
 | 
			
		||||
	for i := 1; ; i++ {
 | 
			
		||||
		// make sure gitea can shutdown gracefully
 | 
			
		||||
		select {
 | 
			
		||||
		case <-g.ctx.Done():
 | 
			
		||||
			return nil, false, nil
 | 
			
		||||
		default:
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		allComments = append(allComments, &base.Comment{
 | 
			
		||||
			IssueIndex:  opts.Context.LocalID(),
 | 
			
		||||
			PosterID:    comment.Poster.ID,
 | 
			
		||||
			PosterName:  comment.Poster.UserName,
 | 
			
		||||
			PosterEmail: comment.Poster.Email,
 | 
			
		||||
			Content:     comment.Body,
 | 
			
		||||
			Created:     comment.Created,
 | 
			
		||||
			Updated:     comment.Updated,
 | 
			
		||||
			Reactions:   reactions,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
		comments, _, err := g.client.ListIssueComments(g.repoOwner, g.repoName, opts.Context.ForeignID(), gitea_sdk.ListIssueCommentOptions{ListOptions: gitea_sdk.ListOptions{
 | 
			
		||||
			PageSize: g.maxPerPage,
 | 
			
		||||
			Page:     i,
 | 
			
		||||
		}})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, false, fmt.Errorf("error while listing comments for issue #%d. Error: %v", opts.Context.ForeignID(), err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	// TODO enable pagination vor (gitea >= 1.14) when it got implemented
 | 
			
		||||
	// 	if !g.pagination || len(comments) < g.maxPerPage {
 | 
			
		||||
	//		break
 | 
			
		||||
	//	}
 | 
			
		||||
	//}
 | 
			
		||||
		for _, comment := range comments {
 | 
			
		||||
			reactions, err := g.getCommentReactions(comment.ID)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				log.Warn("Unable to load comment reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)
 | 
			
		||||
				if err2 := models.CreateRepositoryNotice(
 | 
			
		||||
					fmt.Sprintf("Unable to load reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)); err2 != nil {
 | 
			
		||||
					log.Error("create repository notice failed: ", err2)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			allComments = append(allComments, &base.Comment{
 | 
			
		||||
				IssueIndex:  opts.Context.LocalID(),
 | 
			
		||||
				PosterID:    comment.Poster.ID,
 | 
			
		||||
				PosterName:  comment.Poster.UserName,
 | 
			
		||||
				PosterEmail: comment.Poster.Email,
 | 
			
		||||
				Content:     comment.Body,
 | 
			
		||||
				Created:     comment.Created,
 | 
			
		||||
				Updated:     comment.Updated,
 | 
			
		||||
				Reactions:   reactions,
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if !g.pagination || len(comments) < g.maxPerPage {
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return allComments, true, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -475,10 +475,7 @@ func Init() error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// isIPPrivate reports whether ip is a private address, according to
 | 
			
		||||
// RFC 1918 (IPv4 addresses) and RFC 4193 (IPv6 addresses).
 | 
			
		||||
// from https://github.com/golang/go/pull/42793
 | 
			
		||||
// TODO remove if https://github.com/golang/go/issues/29146 got resolved
 | 
			
		||||
// TODO: replace with `ip.IsPrivate()` if min go version is bumped to 1.17
 | 
			
		||||
func isIPPrivate(ip net.IP) bool {
 | 
			
		||||
	if ip4 := ip.To4(); ip4 != nil {
 | 
			
		||||
		return ip4[0] == 10 ||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user