Skip to content

Commit dc5a9df

Browse files
committed
fix(computer-use): read the permission group with the lightweight query hook
usePermissionConfig pulls the block and provider registries into the Desktop settings bundle; the settings gate only needs the user's resolved config.
1 parent 9d1f891 commit dc5a9df

3 files changed

Lines changed: 27 additions & 11 deletions

File tree

‎apps/sim/app/workspace/[workspaceId]/settings/components/desktop/computer-use.test.tsx‎

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,17 @@ const native = vi.hoisted(() => ({
2020
cancel: vi.fn<() => Promise<void>>(),
2121
onActivity: vi.fn<(listener: (activity: ComputerUseActivity | null) => void) => () => void>(),
2222
}))
23-
const permission = vi.hoisted(() => ({ config: {} as Record<string, unknown>, ready: true }))
24-
vi.mock('@/hooks/use-permission-config', () => ({
25-
usePermissionConfig: () => ({ config: permission.config, isPermissionReady: permission.ready }),
23+
const permission = vi.hoisted(() => ({
24+
config: null as Record<string, unknown> | null,
25+
ready: true,
2626
}))
27+
vi.mock('@/ee/access-control/hooks/permission-groups', () => ({
28+
useUserPermissionConfig: () =>
29+
permission.ready
30+
? { isSuccess: true, data: { config: permission.config } }
31+
: { isSuccess: false, data: undefined },
32+
}))
33+
vi.mock('next/navigation', () => ({ useParams: () => ({ workspaceId: 'ws-1' }) }))
2734
vi.mock('@/lib/desktop', () => libDesktopMock)
2835

2936
const initialPermissions = [
@@ -37,7 +44,7 @@ let root: Root
3744
let container: HTMLDivElement
3845

3946
beforeEach(() => {
40-
permission.config = { ...DEFAULT_PERMISSION_GROUP_CONFIG }
47+
permission.config = null
4148
permission.ready = true
4249
permissions = [...initialPermissions]
4350
activity = null

‎apps/sim/app/workspace/[workspaceId]/settings/components/desktop/computer-use.tsx‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
import { useCallback, useEffect, useRef, useState } from 'react'
44
import type { ComputerUseAppPermission } from '@sim/desktop-bridge'
55
import { Chip, ChipSwitch, Label, toast } from '@sim/emcn'
6+
import { useParams } from 'next/navigation'
67
import { ComputerUseActivity } from '@/components/computer-use/activity'
78
import { getDesktopBridge } from '@/lib/desktop'
89
import { CAPABILITY_RULES } from '@/lib/permission-groups/capabilities'
910
import { SettingsSection } from '@/app/workspace/[workspaceId]/settings/components/settings-section/settings-section'
11+
import { useUserPermissionConfig } from '@/ee/access-control/hooks/permission-groups'
1012
import { useComputerUseStatus } from '@/hooks/use-computer-use-status'
11-
import { usePermissionConfig } from '@/hooks/use-permission-config'
1213

1314
export function ComputerUseSettings() {
1415
return (
@@ -22,7 +23,8 @@ export function ComputerUseSettings() {
2223
function ComputerUseSettingsControls() {
2324
const requestVersion = useRef(0)
2425
const bridge = getDesktopBridge()?.computerUse
25-
const { config: permissionConfig, isPermissionReady } = usePermissionConfig()
26+
const { workspaceId } = useParams<{ workspaceId: string }>()
27+
const permission = useUserPermissionConfig(workspaceId)
2628
const { status, setStatus, refresh, error } = useComputerUseStatus()
2729
const [apps, setApps] = useState<ComputerUseAppPermission[]>([])
2830
const [pending, setPending] = useState(false)
@@ -44,8 +46,9 @@ function ComputerUseSettingsControls() {
4446
}, [refreshApps, status?.activeAction])
4547
if (
4648
!bridge ||
47-
!isPermissionReady ||
48-
CAPABILITY_RULES['computer_use.use'].deniedBy(permissionConfig) ||
49+
!permission.isSuccess ||
50+
(permission.data.config !== null &&
51+
CAPABILITY_RULES['computer_use.use'].deniedBy(permission.data.config)) ||
4952
status?.supported === false
5053
)
5154
return null

‎apps/sim/app/workspace/[workspaceId]/settings/components/desktop/desktop.test.tsx‎

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ import { nextNavigationMock } from '@sim/testing/mocks/next-navigation.mock'
88
import { createRoot, type Root } from 'react-dom/client'
99
import { afterEach, describe, expect, it, vi } from 'vitest'
1010

11-
const permission = vi.hoisted(() => ({ config: {} as Record<string, unknown> }))
12-
vi.mock('@/hooks/use-permission-config', () => ({
13-
usePermissionConfig: () => ({ config: permission.config }),
11+
const permission = vi.hoisted(() => ({
12+
config: null as Record<string, unknown> | null,
13+
ready: true,
14+
}))
15+
vi.mock('@/ee/access-control/hooks/permission-groups', () => ({
16+
useUserPermissionConfig: () =>
17+
permission.ready
18+
? { isSuccess: true, data: { config: permission.config } }
19+
: { isSuccess: false, data: undefined },
1420
}))
1521
vi.mock('@sim/emcn', () => ({
1622
...emcnMock,

0 commit comments

Comments
 (0)