mirror of
https://github.com/langgenius/dify.git
synced 2026-07-26 06:08:38 +08:00
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import type { MyPermissionsResponse } from '@dify/contracts/api/console/workspaces/types.gen'
|
|
import type { QueryClient } from '@tanstack/react-query'
|
|
|
|
const currentWorkspacePermissionsQueryKey = [
|
|
['console', 'workspaces', 'current', 'rbac', 'myPermissions', 'get'],
|
|
{ type: 'query' },
|
|
] as const
|
|
|
|
const createWorkspacePermissionsFixture = (
|
|
permissionKeys: readonly string[] = [],
|
|
): MyPermissionsResponse => ({
|
|
workspace: {
|
|
permission_keys: [...permissionKeys],
|
|
},
|
|
app: {
|
|
default_permission_keys: [],
|
|
overrides: [],
|
|
},
|
|
dataset: {
|
|
default_permission_keys: [],
|
|
overrides: [],
|
|
},
|
|
})
|
|
|
|
export const seedWorkspacePermissionsQuery = (
|
|
queryClient: QueryClient,
|
|
permissionKeys: readonly string[] = [],
|
|
) => {
|
|
const data = createWorkspacePermissionsFixture(permissionKeys)
|
|
queryClient.setQueryData(currentWorkspacePermissionsQueryKey, data)
|
|
return data
|
|
}
|
|
|
|
export const ensureWorkspacePermissionsQuery = (
|
|
queryClient: QueryClient,
|
|
permissionKeys: readonly string[] = [],
|
|
) => {
|
|
const existingPermissions = queryClient.getQueryData<MyPermissionsResponse>(
|
|
currentWorkspacePermissionsQueryKey,
|
|
)
|
|
if (existingPermissions === undefined)
|
|
return seedWorkspacePermissionsQuery(queryClient, permissionKeys)
|
|
|
|
return existingPermissions
|
|
}
|