Gitment定制

评论倒序

github issue获取comments的api不支持倒序,替换下原有获取comments的逻辑即可。 具体是这个函数:Gitment.loadComments,改写代码如下:

{
    key: 'loadComments',
    value: function loadComments() {
      var _this8 = this;

      var page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.state.currentPage;
      var reverse = true
      return this.getIssue().then(function (issue) {
        if (!reverse) {
            return _utils.http.get(issue.comments_url, { page: page, per_page: _this8.perPage }, '');
        } else {
            var pageSize = Math.min(Math.max(_this8.perPage, 0), 50)

            var total = issue.comments
            var totalPageCount = Math.floor((total + pageSize - 1) / pageSize)
            console.log(total, totalPageCount)

            var pageNo = Math.min(Math.max(page, 0), totalPageCount)

            var start = (pageNo - 1) * pageSize + 1
            var end = Math.min(pageNo * pageSize, total)
            
            var inverseStart = total + 1 - end
            var inverseEnd = total + 1 - start
            console.log(inverseStart, inverseEnd)

            var inverseStartPageNo = Math.floor((inverseStart - 1) / pageSize + 1)
            console.log(inverseStartPageNo)
            
            var comments_url = issue.comments_url
            return _utils.http.get(comments_url, {
                    page: inverseStartPageNo, 
                    per_page: pageSize 
                }, ''
            ).then(function(startPageComments) {
                var comments = []
                var preCount = (inverseStartPageNo - 1) * pageSize
                var to =  Math.min(startPageComments.length, inverseEnd-preCount)
                for (var i = inverseStart-1-preCount; i < to; i++) {
                    comments.push(startPageComments[i])
                }
                if (startPageComments.length < inverseEnd-preCount) {
                    return _utils.http.get(comments_url, { 
                            page: inverseStartPageNo+1, 
                            per_page: pageSize 
                        }, ''
                    ).then(function(nextPageComments) {
                        var preCount = inverseStartPageNo * pageSize
                        for (var i = 0; i < inverseEnd-preCount; i++) {
                            comments.push(nextPageComments[i])
                        }
                        return comments
                    });
                } else {
                    return comments
                }
            }).then(function(comments) {
                return comments.reverse()
            });
        }
      }).then(function (comments) {
        _this8.state.comments = comments;
        return comments;
      });
    }
  },
2021-03-27 14:49:15 +0800 yajw Copy old posts A