制限的なupload identification codeにより、uploaded assetsを使用するtheme componentsを書くのが難しくなります。

皆さん、こんにちは。

最近、Discourseの管理者がフォーラムに3Dモデルのアップロードと表示を有効にできるようにするDiscourseテーマコンポーネント(https://github.com/Beholder-Vision/discourse-insert-model-3d)を作成しました。

最初はすべて順調に進んでいるように見えましたが、アップロードされたモデルの一部が消えたという報告を受け、自分のフォーラムを確認したところ、アップロードされたアセット(3Dモデルとポスター画像)も削除されていることがわかりました(Insert Model 3D - #2 by patrickemin

ドキュメント(https://meta.discourse.org/t/understanding-uploads-images-and-attachments/275735)を読んだとき、アセットは投稿によって参照されているため問題ないだろうと想定していましたが、調査したところ、サーバー上のアップロードを識別する作業を行っていると思われるコード(https://github.com/discourse/discourse/blob/03bb43f7468d3aa6e73bba0805193ae50c7ec2d5/app/models/post.rb#L1137)を見つけました。私の理解では、アップロードされたファイルは、限られた数のHTMLタグのいずれかによって参照されている場合にのみ、投稿によって参照されているとカウントされるようです。したがって、リンクされたアップロードは、`要素のhref属性によって参照されている場合は認識されますが、私の新しいテーマコンポーネントが追加する要素のsrc`属性によって参照されている場合は認識されません。

このコードに詳しい方、私の理解が正しいかどうか確認していただけますでしょうか?もし正しい場合、テーマコンポーネントを作成する人々は、アセットを参照する非表示の<a>リンクを生成することでアセットをアップロードとしてマークできると思いますが、ドキュメント(https://meta.discourse.org/t/understanding-uploads-images-and-attachments/275735)にこの注意点が強調されるように更新されると非常に役立つでしょう。

よろしくお願いいたします。
Alan

「いいね!」 3

JSON解析からパラメータとソースを取得しているため、これを自動で行うのは(少なくとも)難しいと感じています。

根本的なレベルでは、これはAPIにアップロードを投稿に「ハードアタッチ」し、クリーンアップされないようにフラグを立てることを求めているような気がします。

これは他の問題(ハードアタッチされたアップロードをどこで見ることができますか?制限は何ですか?)の扉を開くことになります。

とはいえ、これを解決する唯一のクリーンな方法はハードアタッチのように思えます。

隠しリンクは確かに回避策として機能します。

これは設計どおりに機能していますが、APIがあなたの生活を楽にしていないため、機能リクエストに移行します。

これについてさらに意見を持っている可能性のあるdev-xpチームにフラグを立てます。