Don't log errors for known app password issues in chat
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import {XRPCError} from '@atproto/xrpc'
|
||||||
import {t} from '@lingui/macro'
|
import {t} from '@lingui/macro'
|
||||||
|
|
||||||
export function cleanError(str: any): string {
|
export function cleanError(str: any): string {
|
||||||
@@ -43,3 +44,11 @@ export function isNetworkError(e: unknown) {
|
|||||||
}
|
}
|
||||||
return false
|
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')
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,7 +11,10 @@ import {nanoid} from 'nanoid/non-secure'
|
|||||||
|
|
||||||
import {networkRetry} from '#/lib/async/retry'
|
import {networkRetry} from '#/lib/async/retry'
|
||||||
import {DM_SERVICE_HEADERS} from '#/lib/constants'
|
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 {Logger} from '#/logger'
|
||||||
import {isNative} from '#/platform/detection'
|
import {isNative} from '#/platform/detection'
|
||||||
import {
|
import {
|
||||||
@@ -485,7 +488,7 @@ export class Convo {
|
|||||||
this.dispatch({event: ConvoDispatchEvent.Ready})
|
this.dispatch({event: ConvoDispatchEvent.Ready})
|
||||||
}
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (!isNetworkError(e)) {
|
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
|
||||||
logger.error('setup failed', {
|
logger.error('setup failed', {
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
@@ -594,7 +597,7 @@ export class Convo {
|
|||||||
this.sender = sender || this.sender
|
this.sender = sender || this.sender
|
||||||
this.recipients = recipients || this.recipients
|
this.recipients = recipients || this.recipients
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (!isNetworkError(e)) {
|
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
|
||||||
logger.error(`failed to refresh convo`, {
|
logger.error(`failed to refresh convo`, {
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
@@ -662,7 +665,7 @@ export class Convo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (!isNetworkError(e)) {
|
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
|
||||||
logger.error('failed to fetch message history', {
|
logger.error('failed to fetch message history', {
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
@@ -938,7 +941,7 @@ export class Convo {
|
|||||||
} else {
|
} else {
|
||||||
this.pendingMessageFailure = 'unrecoverable'
|
this.pendingMessageFailure = 'unrecoverable'
|
||||||
|
|
||||||
if (!isNetworkError(e)) {
|
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
|
||||||
logger.error(`handleSendMessageFailure received unknown error`, {
|
logger.error(`handleSendMessageFailure received unknown error`, {
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
@@ -1014,7 +1017,7 @@ export class Convo {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (!isNetworkError(e)) {
|
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
|
||||||
logger.error(`failed to delete message`, {
|
logger.error(`failed to delete message`, {
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ import {nanoid} from 'nanoid/non-secure'
|
|||||||
|
|
||||||
import {networkRetry} from '#/lib/async/retry'
|
import {networkRetry} from '#/lib/async/retry'
|
||||||
import {DM_SERVICE_HEADERS} from '#/lib/constants'
|
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 {Logger} from '#/logger'
|
||||||
import {
|
import {
|
||||||
BACKGROUND_POLL_INTERVAL,
|
BACKGROUND_POLL_INTERVAL,
|
||||||
@@ -260,7 +263,7 @@ export class MessagesEventBus {
|
|||||||
|
|
||||||
this.dispatch({event: MessagesEventBusDispatchEvent.Ready})
|
this.dispatch({event: MessagesEventBusDispatchEvent.Ready})
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (!isNetworkError(e)) {
|
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
|
||||||
logger.error(`init failed`, {
|
logger.error(`init failed`, {
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
@@ -375,7 +378,7 @@ export class MessagesEventBus {
|
|||||||
this.emitter.emit('event', {type: 'logs', logs: batch})
|
this.emitter.emit('event', {type: 'logs', logs: batch})
|
||||||
}
|
}
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (!isNetworkError(e)) {
|
if (!isNetworkError(e) && !isErrorMaybeAppPasswordPermissions(e)) {
|
||||||
logger.error(`poll events failed`, {
|
logger.error(`poll events failed`, {
|
||||||
safeMessage: e.message,
|
safeMessage: e.message,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user