CI / Build & Quality Checks (push) Skipped
CI / Secret scan (gitleaks) (push) Skipped
CI / Playwright smoke (e2e) (push) Skipped
CI / Build & Quality Checks (pull_request) Successful in 3m31s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 11s
CI / Playwright smoke (e2e) (pull_request) Successful in 18m48s
Landscape, at most 500px tall, touch input (a sideways phone is ~840px wide, the Tablet size class, so the trigger is the screen shape), in this room's joined call, chat closed: the call takes the whole screen. No room header, sidebar or call-status bar; safe-area insets respected. - Taps inside the call frame never reach the app, so while the controls are hidden a transparent layer covers the call: the first tap shows the call bar plus Chat / Exit full screen, which hide again after 4 s without a touch; with them up the call underneath stays usable. - In an Android browser tab the first tap also enters the browser's own full screen (hides the address bar); left again on rotate back, hang up or exit. No effect on iPhone or the installed app. - Exit full screen lasts until the phone is upright again. - The frame is transparent (room wallpaper), so in full screen it gets an opaque base colour under the wallpaper. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
24 lines
678 B
TypeScript
24 lines
678 B
TypeScript
import { atom } from 'jotai';
|
|
import { CallEmbed } from '../plugins/call';
|
|
|
|
const baseCallEmbedAtom = atom<CallEmbed | undefined>(undefined);
|
|
|
|
export const callEmbedAtom = atom<CallEmbed | undefined, [CallEmbed | undefined], void>(
|
|
(get) => get(baseCallEmbedAtom),
|
|
(get, set, callEmbed) => {
|
|
const prevCallEmbed = get(baseCallEmbedAtom);
|
|
if (callEmbed === prevCallEmbed) return;
|
|
|
|
if (prevCallEmbed) {
|
|
prevCallEmbed.dispose();
|
|
}
|
|
|
|
set(baseCallEmbedAtom, callEmbed);
|
|
},
|
|
);
|
|
|
|
export const callChatAtom = atom<boolean>(false);
|
|
|
|
/** [Gitea #126] The call is full screen (phone turned sideways). */
|
|
export const immersiveCallAtom = atom<boolean>(false);
|