meteorlxy / vssue

:mailbox: A Vue-powered Issue-based Comment Plugin
https://vssue.js.org
MIT License
773 stars 106 forks source link

[Bug Report] Vssue breaks when there are too many issues for Vssue #24

Closed Ancientwood closed 5 years ago

Ancientwood commented 5 years ago

post 页面指定 vssue-id => 不自动重复创建 post 页面使用 vssue-title => 重复创建 post 页面未指定 vssue 选项 => 重复创建

版本

  "dependencies": {
    "vuepress": "^1.0.0-alpha.44",
    "vuepress-theme-meteorlxy": "^1.0.0-alpha.31"
  }

可能还是这个问题还是版本太旧? https://github.com/meteorlxy/vssue/issues/12

meteorlxy commented 5 years ago

建议升级一下版本试一下,然后最好提供一下复现repo,不然光这么说也不好确认是什么问题

Ancientwood commented 5 years ago

关于版本我看了 vssue 组件里面代码 onTitleChange onOptionsChange onIssueIdChange 的确都没有再调用 init() 的方法,另 测试 repo:

vuepress - https://github.com/Ancientwood/vssue-test 静态页面 - https://github.com/Ancientwood/vssue-test-blog 访问地址 - http://vssue.ancientwood.club/

然后尴尬的是结果我这个测试的repo并没有复现...(我复制了原来的项目然后删掉了所有文章

然后我测试了有问题的repo,vssue 重复创建的情况只在第52篇post之后...

Ancientwood commented 5 years ago

把post全部加回去,开始重复创建了。 https://github.com/Ancientwood/vssue-test/issues

meteorlxy commented 5 years ago

是不是无限重复创建。。。如果是的话,我一直没做处理的问题可能暴露了:sweat_smile:

Ancientwood commented 5 years ago

是无限重复...

meteorlxy commented 5 years ago

这就要说到 Github API 有多么坑爹了……

GitHub 没有提供根据标题查找 issue 的 API,现在的做法是把 issues 列表取下来然后用 js 筛选里面的标题,然后每次取下来的 issues 数量其实有限,现在看来应该是50个……

Ancientwood commented 5 years ago

所以用 title 的话就是用 list-issues-for-a-repository 这个 api 遍历 https://developer.github.com/v3/issues/#list-issues-for-a-repository 这个...好像...没有...分页...

而用 issue id 的话就是用 get-a-single-issue https://developer.github.com/v3/issues/#get-a-single-issue

所以同一个 id 总能找到不会重复创建对吧

meteorlxy commented 5 years ago

目前是这样的。我刚去看了一眼 gitment 和 gitalk ,他们居然是用一个单独的 label 当 id 😅

我开发完 vssue 最大的感觉就是 Github 的 API 真的辣鸡……

meteorlxy commented 5 years ago

Github 的分页非常不好使 https://developer.github.com/v3/#pagination

Ancientwood commented 5 years ago

莫名想到,init的时候创建一个 issue id 为1的 issue,在里面维护所有自动创建了的issue的列表 :(

meteorlxy commented 5 years ago

现在想到的解决方案:

  1. 在 GitHub 中像 gitment 和 gitalk 那样用 label 作为 id (#25),但是会导致现在已经在用 Vssue + GitHub 的项目重新生成 issues 或者手动补充上 label,算是某种 breaking changes。

  2. 在文档里写清楚 GitHub 存在这个问题,然后建议用手动给 options 传入 labels 的方式来解决。

meteorlxy commented 5 years ago

还是决定不引入 breaking changes 了……于是这个问题其实还是应该挪到主题下面解决,哈哈