Project

General

Profile

提案 #1439

イベントリスナーを一括で有効・無効にする機能

Added by toshi_a 初音 10 days ago.

Status:
分類待ち
Priority:
通常
Target version:
プラグイン名:
ブランチ:

Description

ストリーミングAPI設定など、特定の条件下でのみ有効になるイベントハンドラ(on_*, filter_*, subscribe, collection, generate)のまとまりを定義したい。

原案A

userconfig_if(:streaming_enable) do
  subscribe(:event) ...
  on_event ...
end

UserConfig[:streaming_enable] がfalse→trueになったときにブロックを一度実行。ブロック内で定義されたハンドラに専用のタグを付けておく。
false→trueになったとき、そのタグを持ったハンドラを全てdetachする。

原案B

sw = switch do
  subscribe(:event) ...
  on_event ...
end

on_userconfig_modify do |name, val|
  val ? sw.on : sw.off
end

汎用的なもの。onとoffメソッドは冪等に振る舞う。

原案C

tag = handler_tag do
  subscribe(:event) ...
  on_event ...
end

on_userconfig_modify do |name, val|
  val ? tag.enable : tag.disable
end

原案Bを、既存機能であるhandler_tagに有効化/無効化オプションを付けて実現するもの。
ブロックはその中で定義されたハンドラにタグを付与するだけなので、

タグがついているものに有効フラグがつくのはわかりやすいが、ネストされた場合は有効フラグのANDを取りたいので、タグ機能とは相性が悪いかもしれない。


Related issues

Blocks バグ #1436: REST API取得の度にboostが通知される実装待ちtoshi_a 初音Actions
Blocks バグ #1438: Mastodon: ストリーミングAPIを無効にする設定をしてもストリーミング接続される実装待ちtoshi_a 初音Actions
#1

Updated by toshi_a 初音 9 days ago

  • Blocks バグ #1436: REST API取得の度にboostが通知される added
#2

Updated by toshi_a 初音 9 days ago

  • Blocks バグ #1438: Mastodon: ストリーミングAPIを無効にする設定をしてもストリーミング接続される added

Also available in: Atom PDF