Bluesky app fork with some witchin' additions 💫

Don't log errors for known app password issues in chat (#9268)

authored by

Eric Bailey and committed by
GitHub
c00b3d10 74cb81b6

+24 -9
+9
src/lib/strings/errors.ts
··· 1 + import {XRPCError} from '@atproto/xrpc' 1 2 import {t} from '@lingui/macro' 2 3 3 4 export function cleanError(str: any): string { ··· 43 44 } 44 45 return false 45 46 } 47 + 48 + export function isErrorMaybeAppPasswordPermissions(e: unknown) { 49 + if (e instanceof XRPCError && e.error === 'TokenInvalid') { 50 + return true 51 + } 52 + const str = String(e) 53 + return str.includes('Bad token scope') || str.includes('Bad token method') 54 + }
+9 -6
src/state/messages/convo/agent.ts
··· 11 11 12 12 import {networkRetry} from '#/lib/async/retry' 13 13 import {DM_SERVICE_HEADERS} from '#/lib/constants' 14 - import {isNetworkError} from '#/lib/strings/errors' 14 + import { 15 + isErrorMaybeAppPasswordPermissions, 16 + isNetworkError, 17 + } from '#/lib/strings/errors' 15 18 import {Logger} from '#/logger' 16 19 import {isNative} from '#/platform/detection' 17 20 import { ··· 485 488 this.dispatch({event: ConvoDispatchEvent.Ready}) 486 489 } 487 490 } catch (e: any) { 488 - if (!isNetworkError(e)) { 491 + if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) { 489 492 logger.error('setup failed', { 490 493 safeMessage: e.message, 491 494 }) ··· 594 597 this.sender = sender || this.sender 595 598 this.recipients = recipients || this.recipients 596 599 } catch (e: any) { 597 - if (!isNetworkError(e)) { 600 + if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) { 598 601 logger.error(`failed to refresh convo`, { 599 602 safeMessage: e.message, 600 603 }) ··· 662 665 } 663 666 } 664 667 } catch (e: any) { 665 - if (!isNetworkError(e)) { 668 + if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) { 666 669 logger.error('failed to fetch message history', { 667 670 safeMessage: e.message, 668 671 }) ··· 938 941 } else { 939 942 this.pendingMessageFailure = 'unrecoverable' 940 943 941 - if (!isNetworkError(e)) { 944 + if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) { 942 945 logger.error(`handleSendMessageFailure received unknown error`, { 943 946 safeMessage: e.message, 944 947 }) ··· 1014 1017 ) 1015 1018 }) 1016 1019 } catch (e: any) { 1017 - if (!isNetworkError(e)) { 1020 + if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) { 1018 1021 logger.error(`failed to delete message`, { 1019 1022 safeMessage: e.message, 1020 1023 })
+6 -3
src/state/messages/events/agent.ts
··· 4 4 5 5 import {networkRetry} from '#/lib/async/retry' 6 6 import {DM_SERVICE_HEADERS} from '#/lib/constants' 7 - import {isNetworkError} from '#/lib/strings/errors' 7 + import { 8 + isErrorMaybeAppPasswordPermissions, 9 + isNetworkError, 10 + } from '#/lib/strings/errors' 8 11 import {Logger} from '#/logger' 9 12 import { 10 13 BACKGROUND_POLL_INTERVAL, ··· 260 263 261 264 this.dispatch({event: MessagesEventBusDispatchEvent.Ready}) 262 265 } catch (e: any) { 263 - if (!isNetworkError(e)) { 266 + if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) { 264 267 logger.error(`init failed`, { 265 268 safeMessage: e.message, 266 269 }) ··· 375 378 this.emitter.emit('event', {type: 'logs', logs: batch}) 376 379 } 377 380 } catch (e: any) { 378 - if (!isNetworkError(e)) { 381 + if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) { 379 382 logger.error(`poll events failed`, { 380 383 safeMessage: e.message, 381 384 })