MCPcopy Index your code
hub / github.com/coder/coder / editChatMessage

Function editChatMessage

site/src/api/queries/chats.ts:1255–1337  ·  view source on GitHub ↗
(queryClient: QueryClient, chatId: string)

Source from the content-addressed store, hash-verified

1253};
1254
1255export const editChatMessage = (queryClient: QueryClient, chatId: string) => ({
1256 mutationFn: ({ messageId, req }: EditChatMessageMutationArgs) =>
1257 API.experimental.editChatMessage(chatId, messageId, req),
1258 onMutate: async ({
1259 messageId,
1260 optimisticMessage,
1261 }: EditChatMessageMutationArgs): Promise<EditChatMessageMutationContext> => {
1262 // Cancel in-flight refetches so they don't overwrite the
1263 // optimistic update before the mutation completes.
1264 await queryClient.cancelQueries({
1265 queryKey: chatMessagesKey(chatId),
1266 exact: true,
1267 });
1268
1269 const previousData = queryClient.getQueryData<
1270 InfiniteData<TypesGen.ChatMessagesResponse>
1271 >(chatMessagesKey(chatId));
1272
1273 queryClient.setQueryData<
1274 InfiniteData<TypesGen.ChatMessagesResponse> | undefined
1275 >(chatMessagesKey(chatId), (current) =>
1276 projectEditedConversationIntoCache({
1277 currentData: current,
1278 editedMessageId: messageId,
1279 replacementMessage: optimisticMessage,
1280 queuedMessages: [],
1281 }),
1282 );
1283
1284 return { previousData };
1285 },
1286 onError: (
1287 _error: unknown,
1288 _variables: EditChatMessageMutationArgs,
1289 context: EditChatMessageMutationContext | undefined,
1290 ) => {
1291 // Restore the cache on failure so the user sees the
1292 // original messages again.
1293 if (context?.previousData) {
1294 queryClient.setQueryData(chatMessagesKey(chatId), context.previousData);
1295 }
1296 // Invalidate messages as a safety net: the restored snapshot
1297 // may be missing WebSocket-delivered messages that arrived
1298 // during the mutation's flight time.
1299 void queryClient.invalidateQueries({
1300 queryKey: chatMessagesKey(chatId),
1301 exact: true,
1302 });
1303 },
1304 onSuccess: (
1305 response: TypesGen.EditChatMessageResponse,
1306 variables: EditChatMessageMutationArgs,
1307 ) => {
1308 queryClient.setQueryData<
1309 InfiniteData<TypesGen.ChatMessagesResponse> | undefined
1310 >(chatMessagesKey(chatId), (current) =>
1311 reconcileEditedMessageInCache({
1312 currentData: current,

Callers 2

AgentChatPageFunction · 0.90
chats.test.tsFile · 0.90

Calls 6

chatMessagesKeyFunction · 0.85
chatKeyFunction · 0.85
chatPromptsKeyFunction · 0.85
invalidateChatDebugRunsFunction · 0.85

Tested by

no test coverage detected