-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ファイルの閲覧注意フラグをファイル単位で連合するようにし、また、フラグを変更した場合は再投稿時などでリモートにも反映するようにして欲しい #11209
Comments
タイトルと説明が、issue投稿時の意図に即していなかったことに気付いたため、少し修正しました。 |
このふるまいは連合結果を容易に確認できないユーザーには不本意と思われます。 |
bisected: #2348:
|
const displayAsSensitive = (note, file) => (note.fromMastodon && note.isSensitive) ||
file.isSensitive のような形で実現されてほしい。 |
related:
|
const fetchInstanceMetadataService: FederatedInstanceService = todo();
const host: string = todo(note);
const fromMastodon = await fetchInstanceMetadataService.fetch(host)
// 安全性のために`true`へフォールバック
.then(instance => instance.softwareName?.includes("mastodon") ?? true);
const hasSensitiveFlag: (arg: unknown) => arg is { sensitive: unknown } = (x) => typeof(x) === "object" && x !== null && "sensitive" in x;
const files = (await Promise.all(toArray(note.attachment).map(attach => {
// if attach is IApImage, sensitive should be `attach.sensitive` instead of note.sensitive
const markAsSensitive = (fromMastodon && note.sensitive) || (hasSensitiveFlag(attach) && attach.sensitive === true);
return limit(() => this.apImageService.resolveImage(actor, {
...attach,
sensitive: markAsSensitive,
}));
}))); |
個人的にはMisskey/Mastodonを判別する必要は無いと思っています。 |
(確かにそっちの方が相互運用性も高そうですね) |
ということで修正版: function hasSensitiveFlag(obj: unknown): obj is { sensitive: unknown } {
return typeof(obj) === "object" && obj !== null && "sensitive" in obj;
}
const files = (await Promise.all(toArray(note.attachment).map(attach => {
// if attach has property "sensitive" (i.e. `IApImage` returned from `ApRendererService.renderImage`),
// sensitive should be `attach.sensitive` instead of `note.sensitive`
const markAsSensitive = (hasSensitiveFlag(attach) && attach.sensitive === true) || note.sensitive;
return limit(() => this.apImageService.resolveImage(actor, {
...attach,
sensitive: markAsSensitive,
}));
}))); ↑これだと引き続き |
ドライブファイルをid付きのAP Object扱いで公開して (現状はNote.attachmentに付いてるidなしオブジェクト) DriveFile→添付されているNote→送信対象 を出すのがちょっと負荷高そう? |
Summary
今のところ、ファイルの閲覧注意フラグを変更したとしても他のサーバーには(一度届いてから後は)一切反映されません。
これ自体は"ドライブ"システムによりファイルエントリ(?)を再利用することに起因する致し方のないことだと推測出来ます。
ですが、ドライブ画面から閲覧注意フラグを切り替えられる以上、例えば画像の閲覧注意設定を付け忘れて投稿してしまい、それを変更して、ノートを再投稿したとしてもその変更が反映されないのは非直感的で、不便であると思いました。
また、サーバーごとに規約が異なることによるモデレーション上の厄介な点もあります。(リモートで付いているがローカルで付いていない場合の対処)
<追記>
更に、閲覧注意がファイル単位ではなくノート単位で適用されているため、閲覧注意が本来付いていないファイルにも閲覧注意が付与されてしまう問題があります。
<追記終わり>
そこで、現在は以下のようになっているところ、
以下のようにするというのは実現可能でしょうか?
(ファイル単位のフラグ情報を、ActivityPub用のフラグ情報とは別に用意する)
(画像が別のノートで投稿された場合に、フラグの変化が反映されるようにする)
懸念点として新規投稿かRenoteかを区別することが出来るのかどうか(区別することが出来なければ、任意のリモートからのRenoteで更新されてしまいそうです。元サーバーからの更新だけ反映するようにしたとしても、ローカルでモデレーションとして閲覧注意を付与したものが元サーバーからのRenoteで剥がされる可能性があると推測します。)があります。追記: ActivityPub上では、新規投稿はCreate、RenoteはAnnounceとして区別されているので、その点については大丈夫という情報を頂きました。
なお、MisskeyからMastodonへの配送の場合は、ドライブの概念が無いことから(?)再投稿されるとその時点の閲覧注意フラグが反映されるようでした。
参考:
https://misskey.niri.la/notes/9gymuixsfg
https://misskey.niri.la/notes/9gymz1z11e
The text was updated successfully, but these errors were encountered: