refactor: use /threads/listPostsThreaded

fix/workaround/#26
SukkaW 6 years ago
parent a5d7709f28
commit 458a152d3e

@ -201,12 +201,9 @@
function loadDsqjs() {
(() => {
// 在 #disqus_thread 中填充 DisqusJS Container
/*
*/
$$('disqus_thread').innerHTML = ` <div id="dsqjs">
$$('disqus_thread').innerHTML = `
<div id="dsqjs">
<section>
<div id="dsqjs-msg"></div>
</section>
@ -221,12 +218,12 @@
</li>
</ul>
<div class="dsqjs-order">
<input class="dsqjs-order-radio" id="order-popular" type="radio" name="comment-order" value="popular">
<label class="dsqjs-order-label" for="order-popular" title="按评分高低排序">最佳</label>
<input class="dsqjs-order-radio" id="order-desc" type="radio" name="comment-order" value="desc">
<label class="dsqjs-order-label" for="order-desc" title="按从新到旧排序">最新</label>
<input class="dsqjs-order-radio" id="order-asc" type="radio" name="comment-order" value="asc">
<label class="dsqjs-order-label" for="order-asc" title="按从旧到新排序">最早</label>
<input class="dsqjs-order-radio" id="dsqjs-order-popular" type="radio" name="comment-order" value="popular">
<label class="dsqjs-order-label" for="dsqjs-order-popular" title="按评分高低排序">最佳</label>
<input class="dsqjs-order-radio" id="dsqjs-order-desc" type="radio" name="comment-order" value="desc">
<label class="dsqjs-order-label" for="dsqjs-order-desc" title="按从新到旧排序">最新</label>
<input class="dsqjs-order-radio" id="dsqjs-order-asc" type="radio" name="comment-order" value="asc">
<label class="dsqjs-order-label" for="dsqjs-order-asc" title="按从旧到新排序">最早</label>
</div>
</nav>
</header>
@ -332,8 +329,25 @@
*
* https://github.com/SukkaW/DisqusJS/issues/6
* 可以使用 include=deleted 来获得已被删除评论列表
*
* https://blog.fooleap.org/disqus-api-comments-order-by-desc.html
* 处理评论嵌套问题使用了一个隐藏 API /threads/listPostsThreaded
* 用法和 /threads/listPosts 相似 /threads/post 的区别也只有 include 字段不同
* 这个能够返回已删除评论所以也不需要 include=deleted
* sort 字段提供三个取值
* - desc 升序
* - asc 降序
* - popular最热
* 这个 API 的问题在于被嵌套的评论总是降序看起来很不习惯
*
* 只获取一次使用 popular 排序的评论之后在本地进行排序
* 1. 将存在 parent 的使用 createdAt 进行降序升序并存放在 disqusjs.comment.popular
* 2. 将全部评论再进行升序排序存放在 disqusjs.comment.desc
* 3. 将没有 parent 的条目进行升序排列存放在 disqusjs.comment.asc
* 每次加载翻页评论的时候 concat 并进行重排序
* 用户切换排序方式的时候直接取出进行重新渲染
*/
let url = `${disqusjs.config.api}3.0/posts/list.json?forum=${disqusjs.config.shortname}&thread=${disqusjs.page.id}${cursor}&include=approved&include=deleted&api_key=${apikey()}`;
let url = `${disqusjs.config.api}3.0/threads/listPostsThreaded?forum=${disqusjs.config.shortname}&thread=${disqusjs.page.id}${cursor}&api_key=${apikey()}&order=desc`;
get(url, (res) => {
if (res.code === 0 && res.response.length > 0) {
// 解禁 加载更多评论

Loading…
Cancel
Save