(params: {
error: unknown
timerController: SendMessageTimerController
updater: BatchedMessageUpdater
setIsRetrying: (value: boolean) => void
setStreamStatus: (status: StreamStatus) => void
setCanProcessQueue: (can: boolean) => void
updateChainInProgress: (value: boolean) => void
isProcessingQueueRef?: MutableRefObject<boolean>
isQueuePausedRef?: MutableRefObject<boolean>
})
| 467 | } |
| 468 | |
| 469 | export const handleRunError = (params: { |
| 470 | error: unknown |
| 471 | timerController: SendMessageTimerController |
| 472 | updater: BatchedMessageUpdater |
| 473 | setIsRetrying: (value: boolean) => void |
| 474 | setStreamStatus: (status: StreamStatus) => void |
| 475 | setCanProcessQueue: (can: boolean) => void |
| 476 | updateChainInProgress: (value: boolean) => void |
| 477 | isProcessingQueueRef?: MutableRefObject<boolean> |
| 478 | isQueuePausedRef?: MutableRefObject<boolean> |
| 479 | }) => { |
| 480 | const { |
| 481 | error, |
| 482 | timerController, |
| 483 | updater, |
| 484 | setIsRetrying, |
| 485 | setStreamStatus, |
| 486 | setCanProcessQueue, |
| 487 | updateChainInProgress, |
| 488 | isProcessingQueueRef, |
| 489 | isQueuePausedRef, |
| 490 | } = params |
| 491 | |
| 492 | const errorInfo = getErrorObject(error, { includeRawError: true }) |
| 493 | |
| 494 | logger.error({ error: errorInfo }, 'SDK client.run() failed') |
| 495 | setIsRetrying(false) |
| 496 | finalizeQueueState({ |
| 497 | setStreamStatus, |
| 498 | setCanProcessQueue, |
| 499 | updateChainInProgress, |
| 500 | isProcessingQueueRef, |
| 501 | isQueuePausedRef, |
| 502 | }) |
| 503 | timerController.stop('error') |
| 504 | |
| 505 | if (isOutOfCreditsError(error)) { |
| 506 | updater.setError(OUT_OF_CREDITS_MESSAGE) |
| 507 | useChatStore.getState().setInputMode('outOfCredits') |
| 508 | invalidateActivityQuery(usageQueryKeys.current()) |
| 509 | return |
| 510 | } |
| 511 | |
| 512 | if (isFreeModeUnavailableError(error)) { |
| 513 | updater.setError(getFreeModeUnavailableErrorMessage(error)) |
| 514 | if (IS_FREEBUFF) { |
| 515 | markFreebuffSessionCountryBlocked( |
| 516 | getCountryBlockFromFreeModeError(error) ?? { |
| 517 | countryCode: 'UNKNOWN', |
| 518 | }, |
| 519 | ) |
| 520 | } |
| 521 | return |
| 522 | } |
| 523 | |
| 524 | const gateKind = getFreebuffGateErrorKind(error) |
| 525 | if (gateKind) { |
| 526 | handleFreebuffGateError(gateKind, updater) |
no test coverage detected