無視ユーザーのトピックを非表示

:information_source: 概要 このコンポーネントを使用すると、無視したユーザーからのトピックを非表示にできます
:hammer_and_wrench: リポジトリ GitHub - Lhcfl/discourse-hide-ignored-user-topics
:question: インストールガイド テーマまたはテーマコンポーネントのインストール方法
:open_book: Discourseテーマ初心者の方へ Discourseテーマの使用方法に関する初心者ガイド

このテーマコンポーネントをインストール

この投稿からインスピレーションを得てください:

このコンポーネントを使用すると、無視したユーザーからのトピックを非表示にできます。

まさにその名前が示すとおりの機能であり、その主な原則は非常にシンプルなので、メインコードを以下に貼り付けます。

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.8.0", (api) => {
  const user = api.getCurrentUser();
  if (user == null) return;
  api.registerValueTransformer(
    "topic-list-item-class",
    ({ value, context }) => {
      if (user.ignored_users.includes(context.topic.creator.username)) {
        value.push("hidden");
      }
      return value;
    }
  );
});
「いいね!」 12

@Lhc_fl

基本的に、このテーマコンポーネントの機能を拡張して、トグルを追加し、さらに非表示オプションを追加できるようにします。

デフォルトの無視は、該当ユーザーの投稿を非表示にします。

無視したユーザーへの返信も非表示にするオプションをこのコンポーネントに追加できますか?過度に敏感な人が、無視したユーザーに他の人が返信しているのを見ることができると不満を言う人もいるためです。

「いいね!」 1

難しいことではありませんが、必要かどうかはわかりません…
無視したユーザーが投稿しました。彼らはそれを見たくありません。次に、このユーザーに返信した人がいます。彼らもそれを見たくありません。次に、この返信に別の人が返信し、さらに返信への返信に返信しました…これらは見られるべきではないのでしょうか?

  • 議論が崩壊する原因となります。まあ、誰かをミュートすれば、その人の投稿を「決して」見ないことになります。しかし、あなたが好きな別のユーザーが、ミュートしたユーザーを投稿で引用したり、その人の@名を参照したり、その人の投稿に返信したりしたらどうなるでしょうか。引用部分だけを抑制しますか?@名を抑制しますか?その人の投稿へのすべての返信も抑制しますか?これにより、会話に大きな穴ができ、多くの厄介な技術的課題が生じます。十分な数の個人的なミュート、ブロック、無視があれば、すべての会話は、部分的に見える声明の奇妙なパッチワークになります。
「いいね!」 3

@Lhc_fl
これは必要です…
AがBを無視したい場合、それはすべてのトピック/投稿を意味し、それは理想的です

  1. Bによるトピックは完全に無視されます。これは良い/完了です

  2. 他の人のトピックで、Bが返信した場合、
    2.1 Bの投稿は非表示にされるべきです。完了
    2.2 Bのアバターは投稿リストページ(参加者)から削除されるべきです。これは難しくなさそうですか?
    2.3 Bの投稿が引用された場合、その部分を削除/非表示にするのが簡単かどうかはわかりません?

この素晴らしい努力に感謝します。これは本当に役立ちます。可能であれば2.2と2.3を検討していただけると幸いです…

「いいね!」 2

私の投稿で述べたように、あるいは投稿に含めたように。いくつかの点では過剰に思えます。メンバーとしては、返信をスキップできるはずです。残念ながら、このスキルを持たない人もいるようです。

個人的には、直接の返信だけで十分だと思います。しかし、これらの過度に敏感なユーザーにとっては、起点から終点までが価値のあるものになるかもしれません。

補足的な別のコンポーネントとしてさえも。過度に敏感なユーザーだけでなく、モデレーターチームにとっても、頭痛の種が一つ減るという価値のあるものになるかもしれません。ユーザーがオン/オフを切り替えられるように、ユーザーフィールドを使用できるかもしれませんね?

ダン

私の場合、コミュニティは貴重なメンバーを失いました。なぜなら、彼は人々をガスライティングしていると彼が思った返信を読み飛ばすことができなかったからです。彼の意見では、彼が問題のあるユーザーを禁止するように要求しました。

明確にしておきますが、このユーザー(過度に敏感な方)は、メンバーとして2〜3年間、問題もなく、強力な貢献者でした。

このコンセプトは、メンタルヘルスの問題を抱える人々を支援するフォーラムにとっても有益となる可能性があります。

これには多くの課題があり、一次または二次的な問題について意見が異なると、物事がうまくいかなくなる可能性があります。

人々を過敏または精神的な問題を抱えていると分類することは、彼らにとって侮辱と見なされる可能性があり、会話がすぐに口論に発展し、誰かがトロールまたは問題のある人物と見なされるようになるのは悲劇的です。

検閲や編集を恐れることなく自由に議論できる場を持つことには大きな価値があるかもしれませんが、それは他人に不必要な問題を引き起こさないためには、特定の種類のフォーラムや場所が必要になるかもしれません。

「いいね!」 2

それが一般的なニーズではないことを願っていますが、私自身、非常に悩まされた人物の存在や意見を思い出させられることを避けるためのツールがなく、必要だと感じたことがあります。私がトリガーされたと言う人もいるかもしれませんし、私がからかわれた、あるいは煽られたと言う人もいるかもしれません。しかし、私は非常に現実的で望まない生理的反応を経験し、フォーラムの活発なメンバーであり続けたいのであれば、その人物の存在を知らずにいたかったでしょう。少なくともしばらくの間は。

だから、私たちは常に屈強な人々に囲まれているわけではなく、あらゆる形態の個人的な表現を高く評価するサブカルチャーにいるわけでもありませんが、時には、参加したり、帰属意識を感じたりする必要がある脆弱な個人でもあります。

編集:これは現実世界でも、職場で起こりました。いつも対立していた人がいて、彼が部屋に入ってくるだけで、心拍数が上がり、闘争・逃走反応を経験しました。彼は攻撃的でも不快でもありませんでした。私に影響を与えていたのは私の反応でした。

「いいね!」 7

ブロックされたユーザーからの自分自身への直接的な返信をブロックできること(少なくとも読めないようにする、または常に読むように提案されること)は、良い一歩だと思います。

正直なところ、ある意味では、ブロックされたユーザーからのすべてのコンテンツをブロックできるべきです。過剰ないたずらなどの場合、それが正当化されないとは考えられません。

「いいね!」 3

これは無視したユーザーからの新しいトピックの通知を非表示にしますか?コードから推測すると、答えはノーですか?

「いいね!」 1

これは新しいトピック専用であり、投稿には適用されません。

「いいね!」 2

はい、デフォルトでは投稿と返信が非表示になります。これは新しいトピックを追加します

「いいね!」 1

プラグインありがとうございます。
残念ながら、各カテゴリの最新トピックを表示するように設定されている場合、カテゴリビューからトピックが非表示にならないようです。
修正可能でしょうか?

「いいね!」 2

このコンポーネントは、Tests-passed のために更新が必要です。

「いいね!」 3

これは動作していますが、トピックのみに限定されており、ホームページの『トピックリスト』部分に隠すアイデアはありますか?

scriptタイプ="text/discourse-plugin"バージョン="1.6.0"

const { alias } = require("@ember/object/computed");

api.modifyClass("component:topic-list-columns", {
    pluginId: "remove-ignored-users-topic",
    attributeBindings: ["data-topic-id", "role", "ariaLevel:aria-level", "data-creator-name"],
    "data-creator-name": alias("topic.creator.username"),
});

if (api.registerValueTransformer()) {
const s = document.createElement("style");

for (const u of api.registerValueTransformer()?.ignored_users) {
    s.innerHTML += `tr.topic-list-columns[data-creator-name="${u}"] { display: none; }`;
}

document.body.appendChild(s);
}

/script

「いいね!」 1

アップグレードされ、新しいDiscourseトピックリストとの互換性が向上しました

「いいね!」 4

@Lhc_fl、これを更新していただきありがとうございます。説明どおりに機能することを確認できました。

ちなみに、この機能は、少なくともオプションとして、あるいはユーザーが無視された場合のデフォルトの動作として、Discourseコアの一部であるべきです。これは、ユーザーが「無視」機能に合理的に期待することです。

「いいね!」 2

小さなバグまたは制限があるようです。このコンポーネントがGlimmerに移植されてから新しいものなのかどうかはわかりません。以前はこの機能に別のコンポーネントを使用していたためです。

問題は、無視されたユーザーが監視中/追跡中のトピックに投稿した場合でも、トピックリストのタイトルの横に新しい投稿の**(1)**が表示されることです。また、投稿はユーザーから非表示になっているため、トピックをクリックして一番下までスクロールしても、トピックリストには新しい投稿の通知が表示されたままになります。新しい投稿が見えないため、既読としてマークされないのだと推測します。

念のためお知らせします。これはフロントエンドで管理者への警告を引き起こしました。

Jagsterさん、これは類似のコンポーネントではないでしょうか?

完全に確実です。