概要
モバイルで permission_request を受信した際、PermissionSheet が即時に表示されないことがあります。
表示されない場合でも、キーボードの表示/非表示を切り替えると保留中だった PermissionSheet が表示されます。
影響
権限リクエスト自体は到着しているのに UI 上で見えず、ユーザーが承認・拒否できない状態になります。
結果として、別のレイアウト更新イベントが起きるまで操作が詰まります。
再現手順
- モバイルのターミナル画面を開く。
- デスクトップまたはセッション側から permission request を発生させる。
PermissionSheet が表示されないケースがあることを確認する。
- キーボードを表示または非表示にする。
- それまで表示されていなかった
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 の承認/拒否フローが壊れない。
概要
モバイルで
permission_requestを受信した際、PermissionSheetが即時に表示されないことがあります。表示されない場合でも、キーボードの表示/非表示を切り替えると保留中だった
PermissionSheetが表示されます。影響
権限リクエスト自体は到着しているのに UI 上で見えず、ユーザーが承認・拒否できない状態になります。
結果として、別のレイアウト更新イベントが起きるまで操作が詰まります。
再現手順
PermissionSheetが表示されないケースがあることを確認する。PermissionSheetが表示されることを確認する。期待される挙動
permission_requestを受信したら、PermissionSheetが毎回即時かつ安定して表示される。実際の挙動
state 上は permission request を受け取っているが、
PermissionSheetが可視状態にならないことがある。キーボードの表示状態が変わると、レイアウト更新を契機に表示される。
補足
TerminalScreenではpermission_request受信時にpendingPermissionを更新し、その state を元に常にPermissionSheetを描画しています。関連コード:
packages/mobile/src/screens/TerminalScreen.tsxpackages/mobile/src/components/PermissionSheet.tsx以下の組み合わせでレイアウト更新が不安定になっている可能性があります。
useKeyboardHeight()に基づくSafeAreaViewの bottom paddingPermissionSheetの absolute 配置PermissionSheet側でのbottom: keyboardHeightオフセット疑わしい箇所
TerminalScreenの bottom padding と全体レイアウトPermissionSheetの absolute positioning と keyboard offset の扱い受け入れ条件
permission_requestを受信したら毎回即時にPermissionSheetが表示される。PermissionSheetの表示可否に影響しない。