告知: gnusocial.jpでのQvitterプラグイン/Pleroma FEの復旧

GNUsocial/plugin
概要

2022-08-22の「告知: gnusocial.jpでのQvitterプラグイン/Pleroma FEの無効化 | GNU social JP」で告知していたQvitterのバグを修正して、gnusocial.jpでのQvitterプラグインとPleroma FEを2022-09-25 Suni復旧させたのでお知らせします。

GNU social JP管理人 (gnusocialjp@gnusocial.jp)’s status on Sunday, 25-Sep-2022 15:28:57 JSTGNU social JP管理人GNU social JP管理人
Qvitterのバグを修正して、QvitterプラグインとPleroma FEを再開しました。ひとまずよかったです。
修正

修正内容は以下の3行でした。

diff --git a/actions/qvitter.php b/actions/qvitter.php
index 559a15b..37b13e6 100644
--- a/actions/qvitter.php
+++ b/actions/qvitter.php
@@ -407,6 +407,9 @@ class QvitterAction extends ApiAction
                                 if($disable_keyboard_shortcuts == '1' || $disable_keyboard_shortcuts == 1) {
                                     $disable_keyboard_shortcuts = true;
                                 }
+                                if (is_null($disable_keyboard_shortcuts)) {
+                                    $disable_keyboard_shortcuts = false;
+                                }
                             } catch (Exception $e) {
                                 //
                                 }

Qvitterを有効にして、設定画面から直接UIを変更してトップ画面を表示すると、以下のエラーが出て画面が空白になっていました。

(index):287 Uncaught ReferenceError: NULL is not defined
    at (index):287:183
(anonymous) @ (index):287
misc-functions.js?changed=20220807065055:247 checking localStorage for invalid entries
misc-functions.js?changed=20220807065055:320 0 entries corrected, 0 entries deleted, 0 entries compressed
qvitter.js?changed=20220807065055:790 Uncaught TypeError: Cannot read properties of undefined (reading 'ja')
    at qvitter.js?changed=20220807065055:790:37
    at dispatch (jquery-2.1.4.min.js?changed=20220807065055:34:6466)
    at r.handle (jquery-2.1.4.min.js?changed=20220807065055:34:3241)

変数のNULLアクセスが問題でした。問題発生個所のコードは以下となっていました。

                   window.qvitterProfilePrefs = {"disable_keyboard_shortcuts":null,"disable_qvitter":null,"hide_replies":null};window.disableKeyboardShortcuts = NULL;

この末尾のwindow.disableKeyboardShortcuts = NULL;がダメでした。キーボードショートカットのオン・オフ設定のようで、本来ならばtrue/falseのいずれかの値になるはずがNULLになっていたのが問題でした。

そこで、値がNULLの場合、falseを設定することで一時回避しました。根本的な原因は解明できていませんが、ひとまずこれで問題が再現しなくなるので復旧させるために良しとしました。

QvitterPlus

今回の修正でQvitterとPleroma FEを復旧できました。この間に、GNU socialのプラグインを調査していてQvitterPlusというQvitterをさらに拡張するプラグインを見つけたので、実験的に導入しました。

QvitterPlusで以下の機能を追加できます。

  • 引用投稿
  • トレンド
  • DM
  • カスタムメニュー
  • ピン留め投稿
  • 絵文字ショートコードのパース

このうち、引用投稿とカスタムメニュー、絵文字のみうまく機能しました。そのためこれらのみ有効にしました。

以下のように、投稿の左から2番目に引用投稿のボタンが追加されました。

返信するまでもないがお気持ち表明したい場合に、ボタン一発でリンクが自動挿入された状態で投稿できて便利です。なお、被引用投稿を表示したら引用投稿を表示されることまではできないようです。

左下に任意のリンクのカスタムメニューを追加できるようになりましたので、Web UIの切替方法の記事のリンクを配置しました。こちらのリンクは随時更新します。

Qvitter単体では絵文字のショートコード (例: :ok:) は解釈されませんでしたが、QvitterPlusにより変換されるようになりました。ただし、補完候補は表示されません。

なお、「告知: gnusocial.jpへの絵文字・Markdown対応を含む8プラグインの導入 | GNU social JP」の通り、以前プラグインを大量に導入しました。これらはクラシックUIでしか機能しません。Markdownや絵文字の補完機能などを使いたい場合、クラシックUIに切り替える必要があります。

Markdownについては、クラシックUIでHTMLに変換されたものは、Qvitter UIでも変換後の状態で表示されます。

バグ

Qvitter UI/Pleroma FEではファイルを添付できない問題が発覚しました。

画像類を添付すると、「アップロードに失敗しました。ファイル形式がサポートされていないか、ファイルサイズが大きすぎます。」というエラーが表示されます。

Webブラウザーの開発者ツールを見ると、以下のようにQvitterの画像投稿用のAPIが失敗していました。

jquery-2.1.4.min.js?changed=20220807065055:35          
POST https://x:x@gnusocial.jp/api/statusnet/media/upload 500

クラシックUIでは問題なく表示できるため、QvitterのAPIの問題のようです。こちらは時間を見て対応しますので、対応完了までファイル添付はクラシックUIでお願いします。

結論

QvitterプラグインとPleroma FEの復旧のお知らせでした。

他のサイトの更新や、GNU socialのローカル開発環境の構築などもあり、停止から1か月以上経ってしまいました。

ひとまず致命的だった問題だけを解決して復旧できました。まだまだ問題ありますので、優先順位をつけて継続して取り組んでいきます。

Comments

Copied title and URL