Просмотр исходного кода

Stop double-capturing cloud telemetry (#5211)

Matt Rubens 6 месяцев назад
Родитель
Сommit
8bb7ef083f
1 измененных файлов с 12 добавлено и 7 удалено
  1. 12 7
      src/core/task/Task.ts

+ 12 - 7
src/core/task/Task.ts

@@ -375,13 +375,18 @@ export class Task extends EventEmitter<ClineEvents> {
 		await provider?.postMessageToWebview({ type: "messageUpdated", clineMessage: message })
 		this.emit("message", { action: "updated", message })
 
-		const shouldCaptureMessage = message.partial !== true && CloudService.isEnabled()
-
-		if (shouldCaptureMessage) {
-			CloudService.instance.captureEvent({
-				event: TelemetryEventName.TASK_MESSAGE,
-				properties: { taskId: this.taskId, message },
-			})
+		// Only check for telemetry if the message is complete and CloudService is enabled
+		if (message.partial !== true && CloudService.isEnabled()) {
+			// Now check if this message was already captured
+			const previousMessage = this.clineMessages.find((m) => m.ts === message.ts)
+			const wasAlreadyCaptured = previousMessage && previousMessage.partial !== true
+
+			if (!wasAlreadyCaptured) {
+				CloudService.instance.captureEvent({
+					event: TelemetryEventName.TASK_MESSAGE,
+					properties: { taskId: this.taskId, message },
+				})
+			}
 		}
 	}