diff --git a/web/packages/teleport/src/Bots/Edit/EditDialog.tsx b/web/packages/teleport/src/Bots/Edit/EditDialog.tsx
index 29aa5ec958719..cabc33a173b39 100644
--- a/web/packages/teleport/src/Bots/Edit/EditDialog.tsx
+++ b/web/packages/teleport/src/Bots/Edit/EditDialog.tsx
@@ -43,7 +43,7 @@ import {
import Validation from 'shared/components/Validation';
import { requiredField } from 'shared/components/Validation/rules';
-import { editBot, fetchRoles } from 'teleport/services/bot/bot';
+import { editBotMutationFunction, fetchRoles } from 'teleport/services/bot/bot';
import { FlatBot } from 'teleport/services/bot/types';
import useTeleport from 'teleport/useTeleport';
@@ -82,7 +82,7 @@ export function EditDialog(props: {
error: saveError,
isPending: isSubmitting,
} = useMutation({
- mutationFn: editBot,
+ mutationFn: editBotMutationFunction,
onSuccess: newData => {
const key = createGetBotQueryKey({ botName: newData.name });
queryClient.setQueryData(key, newData);
diff --git a/web/packages/teleport/src/lib/locks/useResourceLock.ts b/web/packages/teleport/src/lib/locks/useResourceLock.ts
index 10b4b986afb14..745ff775e2ee7 100644
--- a/web/packages/teleport/src/lib/locks/useResourceLock.ts
+++ b/web/packages/teleport/src/lib/locks/useResourceLock.ts
@@ -21,8 +21,8 @@ import { useCallback } from 'react';
import { LockResourceKind } from 'teleport/LocksV2/NewLock/common';
import {
- createLock,
- deleteLock,
+ createLockMutationFn,
+ deleteLockMutationFn,
listLocks,
} from 'teleport/services/locks/locks';
import { createQueryHook } from 'teleport/services/queryHelpers';
@@ -70,7 +70,7 @@ export function useResourceLock(opts: {
isPending: unlockPending,
error: unlockError,
} = useMutation({
- mutationFn: deleteLock,
+ mutationFn: deleteLockMutationFn,
onSuccess: (_, vars) => {
queryClient.setQueryData(listLocksQueryKey(queryVars), existingLocks => {
return existingLocks?.filter(lock => lock.name !== vars.uuid);
@@ -83,7 +83,7 @@ export function useResourceLock(opts: {
isPending: lockPending,
error: lockError,
} = useMutation({
- mutationFn: createLock,
+ mutationFn: createLockMutationFn,
onSuccess: newLock => {
queryClient.setQueryData(listLocksQueryKey(queryVars), existingLocks => {
return existingLocks ? [...existingLocks, newLock] : [newLock];
@@ -95,7 +95,7 @@ export function useResourceLock(opts: {
// locks may affect other resources
const canUnlock =
hasRemovePermission &&
- data &&
+ !!data &&
data.length > 0 &&
data.reduce(
(acc, lock) =>
diff --git a/web/packages/teleport/src/services/bot/bot.ts b/web/packages/teleport/src/services/bot/bot.ts
index 2d14c30471564..d15a776d06331 100644
--- a/web/packages/teleport/src/services/bot/bot.ts
+++ b/web/packages/teleport/src/services/bot/bot.ts
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+import { MutationFunction } from '@tanstack/react-query';
+
import cfg from 'teleport/config';
import api from 'teleport/services/api';
import {
@@ -140,6 +142,11 @@ export async function fetchRoles(
);
}
+export const editBotMutationFunction: MutationFunction<
+ FlatBot,
+ { botName: string; req: EditBotRequest }
+> = vars => editBot(vars);
+
export async function editBot(
variables: { botName: string; req: EditBotRequest },
signal?: AbortSignal
diff --git a/web/packages/teleport/src/services/locks/locks.ts b/web/packages/teleport/src/services/locks/locks.ts
index 6342c599a4740..d739ec953d76b 100644
--- a/web/packages/teleport/src/services/locks/locks.ts
+++ b/web/packages/teleport/src/services/locks/locks.ts
@@ -16,6 +16,8 @@
* along with this program. If not, see .
*/
+import { MutationFunction } from '@tanstack/react-query';
+
import cfg from 'teleport/config';
import api from 'teleport/services/api';
@@ -65,6 +67,13 @@ export async function listLocks(
}
}
+export const createLockMutationFn: MutationFunction<
+ Lock,
+ CreateLockRequest
+> = vars => {
+ return createLock(vars);
+};
+
export async function createLock(
variables: CreateLockRequest,
signal?: AbortSignal
@@ -77,6 +86,13 @@ export async function createLock(
return makeLock(json);
}
+export const deleteLockMutationFn: MutationFunction<
+ unknown,
+ { uuid: string }
+> = vars => {
+ return deleteLock(vars);
+};
+
export async function deleteLock(
variables: { uuid: string },
signal?: AbortSignal