()
| 134 | } |
| 135 | |
| 136 | function AppInner() { |
| 137 | // Get workspace state from context |
| 138 | const { |
| 139 | workspaceMetadata, |
| 140 | loading, |
| 141 | setWorkspaceMetadata, |
| 142 | removeWorkspace, |
| 143 | updateWorkspaceTitle, |
| 144 | selectedWorkspace, |
| 145 | setSelectedWorkspace, |
| 146 | pendingNewWorkspaceProject, |
| 147 | pendingNewWorkspaceSubProjectPath, |
| 148 | pendingNewWorkspaceDraftId, |
| 149 | beginWorkspaceCreation, |
| 150 | } = useWorkspaceContext(); |
| 151 | const { |
| 152 | currentWorkspaceId, |
| 153 | currentSettingsSection, |
| 154 | isAnalyticsOpen, |
| 155 | navigateToAnalytics, |
| 156 | navigateFromAnalytics, |
| 157 | } = useRouter(); |
| 158 | const { themePreference, setTheme, toggleTheme } = useTheme(); |
| 159 | const { open: openSettings, isOpen: isSettingsOpen } = useSettings(); |
| 160 | const { confirm: confirmDialog } = useConfirmDialog(); |
| 161 | const setThemePreference = useCallback( |
| 162 | (nextTheme: ThemePreference) => { |
| 163 | setTheme(nextTheme); |
| 164 | }, |
| 165 | [setTheme] |
| 166 | ); |
| 167 | const { layoutPresets, applySlotToWorkspace, saveCurrentWorkspaceToSlot } = useUILayouts(); |
| 168 | const { getMinOverride: getMinThinkingOverride } = useMinThinkingLevels(); |
| 169 | const { api, status, error, authenticate, retry } = useAPI(); |
| 170 | |
| 171 | const { |
| 172 | userProjects, |
| 173 | refreshProjects, |
| 174 | removeProject, |
| 175 | openProjectCreateModal, |
| 176 | projectCreateInitialPath, |
| 177 | isProjectCreateModalOpen, |
| 178 | closeProjectCreateModal, |
| 179 | addProject, |
| 180 | } = useProjectContext(); |
| 181 | |
| 182 | // Auto-collapse sidebar on mobile by default |
| 183 | const isMobile = typeof window !== "undefined" && window.innerWidth <= 768; |
| 184 | const [sidebarCollapsed, setSidebarCollapsed] = usePersistedState( |
| 185 | LEFT_SIDEBAR_COLLAPSED_KEY, |
| 186 | isMobile, |
| 187 | { |
| 188 | listener: true, |
| 189 | } |
| 190 | ); |
| 191 | |
| 192 | const [isMultiProjectWorkspaceModalOpen, setMultiProjectWorkspaceModalOpen] = useState(false); |
| 193 | const multiProjectWorkspacesEnabled = useExperimentValue(EXPERIMENT_IDS.MULTI_PROJECT_WORKSPACES); |
nothing calls this directly
no test coverage detected