Skip to content

mobile: PermissionSheet が即時表示されず、キーボード表示切り替えで出現することがある #118

Description

@dashi296

概要

モバイルで permission_request を受信した際、PermissionSheet が即時に表示されないことがあります。
表示されない場合でも、キーボードの表示/非表示を切り替えると保留中だった PermissionSheet が表示されます。

影響

権限リクエスト自体は到着しているのに UI 上で見えず、ユーザーが承認・拒否できない状態になります。
結果として、別のレイアウト更新イベントが起きるまで操作が詰まります。

再現手順

  1. モバイルのターミナル画面を開く。
  2. デスクトップまたはセッション側から permission request を発生させる。
  3. PermissionSheet が表示されないケースがあることを確認する。
  4. キーボードを表示または非表示にする。
  5. それまで表示されていなかった PermissionSheet が表示されることを確認する。

期待される挙動

permission_request を受信したら、PermissionSheet が毎回即時かつ安定して表示される。

実際の挙動

state 上は permission request を受け取っているが、PermissionSheet が可視状態にならないことがある。
キーボードの表示状態が変わると、レイアウト更新を契機に表示される。

補足

TerminalScreen では permission_request 受信時に pendingPermission を更新し、その state を元に常に PermissionSheet を描画しています。

関連コード:

  • packages/mobile/src/screens/TerminalScreen.tsx
  • packages/mobile/src/components/PermissionSheet.tsx

以下の組み合わせでレイアウト更新が不安定になっている可能性があります。

  • useKeyboardHeight() に基づく SafeAreaView の bottom padding
  • PermissionSheet の absolute 配置
  • PermissionSheet 側での bottom: keyboardHeight オフセット
  • キーボードイベント後にのみ可視化される点

疑わしい箇所

  • TerminalScreen の bottom padding と全体レイアウト
  • PermissionSheet の absolute positioning と keyboard offset の扱い

受け入れ条件

  • permission_request を受信したら毎回即時に PermissionSheet が表示される。
  • キーボードの表示/非表示が、PermissionSheet の表示可否に影響しない。
  • 既存の permission request の承認/拒否フローが壊れない。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions