fix(lint): extract terminal display mode predicate

This commit is contained in:
Brennan Benson
2026-07-30 13:29:55 -07:00
parent 03d1e8ff13
commit fbf63753d4
3 changed files with 37 additions and 11 deletions
+4 -11
View File
@@ -244,6 +244,7 @@ import {
getActiveTabIdForHandle,
isFileExistsErrorMessage,
isGestureMouseTrackingMode,
isTerminalPhoneDisplayMode,
MOBILE_SESSION_STATUS_LABELS,
TERMINAL_GESTURE_INPUT_BUCKET_CAPACITY,
TERMINAL_GESTURE_INPUT_FLUSH_DELAY_MS,
@@ -4167,14 +4168,6 @@ export default function SessionScreen() {
})
const closeWithBulkActions = createCloseWithBulkActions(handleCloseSessionTab, bulkCloseActions)
const isPhoneMode = (handle: string | null): boolean => {
if (!handle) {
return false
}
const mode = terminalModes.get(handle)
return mode === 'auto' || mode === 'phone' || mode === undefined
}
const visibleTabs: MobileSessionTab[] = sessionTabs
const activeMarkdownTab = activeSessionTab?.type === 'markdown' ? activeSessionTab : null
const activeFileTab = activeSessionTab?.type === 'file' ? activeSessionTab : null
@@ -4832,12 +4825,12 @@ export default function SessionScreen() {
}
}}
accessibilityLabel={
isPhoneMode(activeHandle)
isTerminalPhoneDisplayMode(activeHandle, terminalModes)
? 'Switch to desktop mode'
: 'Switch to phone mode'
}
>
{isPhoneMode(activeHandle) ? (
{isTerminalPhoneDisplayMode(activeHandle, terminalModes) ? (
<Monitor
size={14}
color={canSend ? colors.textSecondary : colors.textMuted}
@@ -5216,7 +5209,7 @@ export default function SessionScreen() {
nativeChatTranscriptIsLocalReadable,
onDismiss: () => setActionTarget(null),
onToggleChat: toggleTabChatView,
isPhoneMode,
isPhoneMode: (handle) => isTerminalPhoneDisplayMode(handle, terminalModes),
onToggleDisplayMode: (handle) => void toggleDisplayMode(handle),
onRename: setRenameTarget,
onClear: (target) => void handleClearTerminal(target),
@@ -0,0 +1,22 @@
import { describe, expect, it } from 'vitest'
import { isTerminalPhoneDisplayMode } from './mobile-session-route-helpers'
describe('isTerminalPhoneDisplayMode', () => {
it('uses phone mode for automatic, phone, and unreported terminals', () => {
const modes = new Map([
['auto', 'auto'],
['phone', 'phone']
] as const)
expect(isTerminalPhoneDisplayMode('auto', modes)).toBe(true)
expect(isTerminalPhoneDisplayMode('phone', modes)).toBe(true)
expect(isTerminalPhoneDisplayMode('missing', modes)).toBe(true)
})
it('rejects absent handles and desktop terminals', () => {
const modes = new Map([['desktop', 'desktop']] as const)
expect(isTerminalPhoneDisplayMode(null, modes)).toBe(false)
expect(isTerminalPhoneDisplayMode('desktop', modes)).toBe(false)
})
})
@@ -34,6 +34,17 @@ export function isGestureMouseTrackingMode(
return mode === 'x10' || mode === 'vt200' || mode === 'drag' || mode === 'any'
}
export function isTerminalPhoneDisplayMode(
handle: string | null,
terminalModes: ReadonlyMap<string, 'auto' | 'phone' | 'desktop'>
): boolean {
if (!handle) {
return false
}
const mode = terminalModes.get(handle)
return mode === undefined || mode === 'auto' || mode === 'phone'
}
export function getActiveTabIdForHandle(
tabs: ReadonlyArray<{ id: string; type: string; terminal?: string | null }>,
terminalHandle: string | null