アップロードノードのキャプション表示を優先するよう変更
アップロード中のノードにキャプションが設定されている場合、ファイル名の代わりにそのキャプションを即座に表示するよう変更されました。これにより、拡張機能がキャプションを事前に知っている場合のちらつきを抑制できます。
背景
ActionTextAttachmentUploadNode はアップロード進行中のノードを表示するクラスですが、これまでキャプション表示において一時的なちらつきが発生する問題がありました。拡張機能がアップロードノードを生成した時点で最終的なキャプションを既に把握している場合でも、ノード作成直後はファイル名で表示され、後からキャプションに切り替わるという挙動でした。この「ファイル名→キャプション」への切り替わりがちらつきとして視覚的に現れていました。
PRの説明では、拡張機能がアップロードノードを作成する際に意図したキャプションを既に知っているケースを主なユースケースとして挙げており、その場合に初期表示からキャプションを使用できるようにすることが変更の目的です。
技術的な変更
変更は src/nodes/action_text_attachment_upload_node.js の #createCaption() メソッド内、1行のみです。
変更前:
const nameSpan = createElement("span", { className: "attachment__name", textContent: this.file.name || "" })
変更後:
const nameSpan = createElement("span", { className: "attachment__name", textContent: this.caption || this.file.name || "" })
textContent の解決順序に this.caption を先頭に追加することで、キャプションが設定されていればそれを優先し、なければ従来通り this.file.name にフォールバックします。キャプションもファイル名も取れない場合は空文字列になるため、既存の挙動との後方互換性が保たれています。
設計判断
短絡評価(|| チェーン)を用いた優先順位付けの方式が採用されました。
キャプション表示のロジックをキャプション取得のメカニズムから切り離したシンプルな変更です。#createCaption() メソッドは表示する文字列の決定のみを担い、this.caption がいつ・どのように設定されるかは呼び出し側の責務とする設計を維持しています。1行の追加で済む変更量と、|| による明示的な優先順位の表現が、変更の意図を簡潔に伝えています。
まとめ
1文字の差分ながら、アップロードノードのキャプション表示における「設定済みキャプションがあれば最初からそれを使う」という原則を明確にした変更です。this.caption || this.file.name || "" のフォールバックチェーンにより、既存の動作を損なわずに拡張機能からの事前キャプション指定を活かせるようになりました。