Don't log errors for known app password issues in chat

This commit is contained in:
Eric Bailey
2025-10-23 11:10:07 -05:00
parent d4d5d6d8b9
commit 601468fe3d
3 changed files with 24 additions and 9 deletions
+9
View File
@@ -1,3 +1,4 @@
import {XRPCError} from '@atproto/xrpc'
import {t} from '@lingui/macro'
export function cleanError(str: any): string {
@@ -43,3 +44,11 @@ export function isNetworkError(e: unknown) {
}
return false
}
export function isErrorMaybeAppPasswordPermissions(e: unknown) {
if (e instanceof XRPCError && e.error === 'TokenInvalid') {
return true
}
const str = String(e)
return str.includes('Bad token scope') || str.includes('Bad token method')
}
+9 -6
View File
@@ -11,7 +11,10 @@ import {nanoid} from 'nanoid/non-secure'
import {networkRetry} from '#/lib/async/retry'
import {DM_SERVICE_HEADERS} from '#/lib/constants'
import {isNetworkError} from '#/lib/strings/errors'
import {
isErrorMaybeAppPasswordPermissions,
isNetworkError,
} from '#/lib/strings/errors'
import {Logger} from '#/logger'
import {isNative} from '#/platform/detection'
import {
@@ -485,7 +488,7 @@ export class Convo {
this.dispatch({event: ConvoDispatchEvent.Ready})
}
} catch (e: any) {
if (!isNetworkError(e)) {
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
logger.error('setup failed', {
safeMessage: e.message,
})
@@ -594,7 +597,7 @@ export class Convo {
this.sender = sender || this.sender
this.recipients = recipients || this.recipients
} catch (e: any) {
if (!isNetworkError(e)) {
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
logger.error(`failed to refresh convo`, {
safeMessage: e.message,
})
@@ -662,7 +665,7 @@ export class Convo {
}
}
} catch (e: any) {
if (!isNetworkError(e)) {
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
logger.error('failed to fetch message history', {
safeMessage: e.message,
})
@@ -938,7 +941,7 @@ export class Convo {
} else {
this.pendingMessageFailure = 'unrecoverable'
if (!isNetworkError(e)) {
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
logger.error(`handleSendMessageFailure received unknown error`, {
safeMessage: e.message,
})
@@ -1014,7 +1017,7 @@ export class Convo {
)
})
} catch (e: any) {
if (!isNetworkError(e)) {
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
logger.error(`failed to delete message`, {
safeMessage: e.message,
})
+6 -3
View File
@@ -4,7 +4,10 @@ import {nanoid} from 'nanoid/non-secure'
import {networkRetry} from '#/lib/async/retry'
import {DM_SERVICE_HEADERS} from '#/lib/constants'
import {isNetworkError} from '#/lib/strings/errors'
import {
isErrorMaybeAppPasswordPermissions,
isNetworkError,
} from '#/lib/strings/errors'
import {Logger} from '#/logger'
import {
BACKGROUND_POLL_INTERVAL,
@@ -260,7 +263,7 @@ export class MessagesEventBus {
this.dispatch({event: MessagesEventBusDispatchEvent.Ready})
} catch (e: any) {
if (!isNetworkError(e)) {
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
logger.error(`init failed`, {
safeMessage: e.message,
})
@@ -375,7 +378,7 @@ export class MessagesEventBus {
this.emitter.emit('event', {type: 'logs', logs: batch})
}
} catch (e: any) {
if (!isNetworkError(e)) {
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
logger.error(`poll events failed`, {
safeMessage: e.message,
})