今まではコメント30件、いいね10件、ブクマ5件までしか表示できなかった。それを全件表示する方法を実装した。
対象ページ
他のページにはまだ実装しない。しばらくテストやリファクタリングもしたいので。
修正内容一覧
- コメント種別とリンクを追加した
- リンクの
target
属性値を_blank
にした - コメントのページネーションを追加した(末端までスクロールすると残りを取得する)
- 出欠確認となるrsvpを追加した(未テスト)
- いいね、ブクマ、出欠確認のアイコンや数をクリックするとモーダルダイアログが表示され、残りのユーザをすべて表示する(未テスト)
メンション種別 | 初期最大表示数 |
---|---|
いいね | 10 |
ブクマ | 5 |
出欠確認 | 5 |
コメント(返信,再投稿,メンション) | 30 |
テストデータを作るのが面倒だったので、テストしていない。というか、どんなデータが返ってくるか実物でテストしたい。ので、自然に集まるまで待ちます。よろしければ、いいね等リアクションしていただけると助かります。
知ったこと
rsvp
メンションの種類にはいいね!やブクマのほかにrsvpというのがある。これは出欠確認するものらしい。
``https://webmention.io/api/count?APIの戻り値となるJSONオブジェクトがもつ
count.type`の中にあるプロパティは以下。
count.type | 意味 |
---|---|
rsvp-yes |
参加する |
rsvp-maybe |
たぶん参加する |
rsvp-interested |
興味がある |
rsvp-no |
参加しない |
https://webmention.io/api/mentions.jf2?
APIの戻り値であるwm-property
はrsvp
である。rsvp
というプロパティもあり、その値のパターンは次の通り。
rsvp |
意味 |
---|---|
yes |
参加する |
maybe |
たぶん参加する |
interested |
興味がある |
no |
参加しない |
webmention API のバグ?
webmention APIのうち、引数wm-property[]
で複数指定するAPIが期待どおりに動作しなかった。メモしておく。
以下のようにwm-property[]
キーにメンション種別を指定すると、それだけを取得してくれる。と私は思っている。以下はin-reply-to
,mention-of
,repost-of
の3種だけ取得することを期待した。
https://webmention.io/api/mentions.jf2?target=https://ytyaru.github.io/&wm-property[]=in-reply-to&wm-property[]=mention-of&wm-property[]=repost-of
ところが、結果はゼロ件だった。6件返ってくるはずなのに。
一件ずつやると期待どおりに取得できる。私はこの3つが結合したものを期待している。これらをコメント欄に出力させたい。3回リクエストすればいいことはわかっているのだが、1回のリクエストで済ませたい。
https://webmention.io/api/mentions.jf2?target=https://ytyaru.github.io/&wm-property[]=in-reply-to
https://webmention.io/api/mentions.jf2?target=https://ytyaru.github.io/&wm-property[]=mention-of&
https://webmention.io/api/mentions.jf2?target=https://ytyaru.github.io/&wm-property[]=repost-of
今度は2つのパラメータで試したら、意味不明な結果になった。in-reply-to
とmention-of
を組合せた。なぜか順序を変えただけで結果が変わった。しかもそのどちらも期待値ではない。前者はmention-of
だけが返され、後者はゼロ件だった。私はin-reply-to
とmention-of
の両方入ったやつを期待してたのですが。
https://webmention.io/api/mentions.jf2?target=https://ytyaru.github.io/&wm-property[]=in-reply-to&wm-property[]=mention-of
https://webmention.io/api/mentions.jf2?target=https://ytyaru.github.io/&wm-property[]=mention-of&wm-property[]=in-reply-to
少なくとも、順番が変わったら結果が変わるのはバグだと思う。それとも私が何か勘違いしているのか?
よくわからなかったので、wm-property
での絞り込みをやめて、全件取得することにした。これだと中身にlike-of
(いいね!)なども含まれてしまう。いいねはその性質上、テキスト内容がないため、コメント欄として表示するものではない。返されるデータにも、content.html
が存在しない。それでも一緒くたになって返されてしまう。よって仕方なく、返されたJSONのうちcontent.html
を持っている要素だけを得るようfilter
にかけた。じつは今までもこうして絞り込んでいたのだが、今回はAPIを調べて改善してやろうと思っていたのに、このザマだよ。
所感
ところで、これって個人ブログで書くべきことなんじゃなかろうか……。モナコインのモの字も出てこないし。まあいいや。モナレッジのコンテンツを増やして表出させる機会を増やせば、モナコインだって盛り上がるはず。それにしても個人的かつニッチすぎて貢献できなそうな記事。