feat: mark embedded session chat as desktop surface
Adds a surface=desktop URL param to embedded session chat links Uses the surface override to classify embedded chat as desktop Covers the new URL parameter in tests
This commit is contained in:
@@ -54,6 +54,7 @@ describe('embedded session chat URL', () => {
|
||||
|
||||
const url = new URL(src);
|
||||
expect(url.searchParams.get('ocPanel')).toBe('session-chat');
|
||||
expect(url.searchParams.get('surface')).toBe('desktop');
|
||||
expect(url.searchParams.get('themeMode')).toBe('system');
|
||||
expect(url.searchParams.get('themeVariant')).toBe('dark');
|
||||
expect(url.searchParams.get('lightThemeId')).toBe('custom-light');
|
||||
|
||||
@@ -30,6 +30,7 @@ export const buildEmbeddedSessionChatURL = (
|
||||
|
||||
const url = new URL(window.location.pathname, window.location.origin);
|
||||
url.searchParams.set('ocPanel', 'session-chat');
|
||||
url.searchParams.set('surface', 'desktop');
|
||||
url.searchParams.set('sessionId', sessionID);
|
||||
if (readOnly) {
|
||||
url.searchParams.set('readOnly', '1');
|
||||
|
||||
@@ -35,9 +35,9 @@ const DEFAULT_DEVICE_INFO: DeviceInfo = {
|
||||
hasTouchOnlyPointer: false,
|
||||
};
|
||||
|
||||
const isEmbeddedSessionChat = (): boolean => {
|
||||
const hasDesktopSurfaceOverride = (): boolean => {
|
||||
if (typeof window === 'undefined') return false;
|
||||
return new URLSearchParams(window.location.search).get('ocPanel') === 'session-chat';
|
||||
return new URLSearchParams(window.location.search).get('surface') === 'desktop';
|
||||
};
|
||||
|
||||
const getNavigatorDeviceHints = (maxTouchPoints: number) => {
|
||||
@@ -109,7 +109,7 @@ export function getDeviceInfo(): DeviceInfo {
|
||||
const noHover = hoverQuery?.matches ?? false;
|
||||
const maxTouchPoints = typeof navigator !== 'undefined' ? navigator.maxTouchPoints ?? 0 : 0;
|
||||
// Desktop panels are desktop surfaces even when their viewport is narrow.
|
||||
const isDesktopShellRuntime = isDesktopShell() || isVSCodeRuntime() || isEmbeddedSessionChat();
|
||||
const isDesktopShellRuntime = isDesktopShell() || isVSCodeRuntime() || hasDesktopSurfaceOverride();
|
||||
const { isExplicitTablet } = getNavigatorDeviceHints(maxTouchPoints);
|
||||
|
||||
const hasTouchInput = prefersCoarsePointer || noHover || maxTouchPoints > 0;
|
||||
|
||||
Reference in New Issue
Block a user