Skip to content

配信画面が、開いたまま編集した配信セット・スライドの中身を取り直さない #374

Description

@kojira

何が起きるか

配信画面タブ(/events/:id/live/screen。OBS がウィンドウキャプチャする画面)を開いたまま、別のタブでいま使っている配信セットのシーンやスライドの中身を編集しても、配信画面に反映されません。 反映させるには配信画面タブの再読み込みが要ります。

本番のイベント中に踏む可能性があります。 「本番直前にシーンの文字を直したのに、投影が古いまま」という形です。

原因

apps/web/src/api/liveControlHooks.ts の2つのクエリに refetchInterval がありません。

フック ポーリング 取り直す条件
useEventLiveState ありLIVE_POLL_MS = 1秒、refetchIntervalInBackground: true 常時
useEventLiveSetContent なし queryKey に含む liveSetId が変わったときだけ
useEventLiveDeck なし queryKey に含む deckId が変わったときだけ

つまり「どのセット / どのスライドを映すか」の切り替えは1秒で届くのに、「そのセット / スライドの中身」は届きません。コントロール画面でセットやスライドを選び直せば queryKey が変わるので取り直されますが、同じものを編集した場合は変わらないので気づきにくい経路です。

変更前も同じ挙動です

#367(i18n 第2段階)の変更とは無関係の既存の挙動です。#367 では文言を辞書へ寄せただけで、これらのフックには触れていません。作業中に見つけたので切り出しています。

直し方の候補

  • useEventLiveSetContent / useEventLiveDeck にも refetchInterval を付ける。ただし中身は状態より重いので、1秒ではなく粗い間隔にするか、updatedAtlive-state に載せて変わったときだけ取り直すのがよさそうです(1秒ポーリングのたびにシーン一式とスライド一式を運ばせたくない)
  • 編集側(LiveSetEditorPage / DeckEditorPage)は自動保存なので、保存のたびに配信画面が取り直すと編集中の中途半端な状態が投影に出ます。粗い間隔か、明示的な「配信に反映」のほうが安全かもしれません

どちらにするかは、本番運用でどちらが怖いか(古いまま出る / 編集中が出る)で決めるのがよさそうです。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions