chore(fix): fixes sync response not correctly identifying all errors (#2346)

This commit is contained in:
Mo
2023-07-05 11:28:45 -05:00
committed by GitHub
parent 2a050fd966
commit 0ab6b5c6fe
19 changed files with 81 additions and 49 deletions

View File

@@ -664,7 +664,7 @@ export class SNApiService
})
if (isErrorResponse(response)) {
return ClientDisplayableError.FromError(response.data.error)
return ClientDisplayableError.FromNetworkError(response)
}
const data = response.data
return {

View File

@@ -45,6 +45,7 @@ import {
ChangeCredentialsResponse,
SessionListResponse,
HttpSuccessResponse,
getErrorFromErrorResponse,
} from '@standardnotes/responses'
import { CopyPayloadWithContentOverride, RootKeyWithKeyPairsInterface } from '@standardnotes/models'
import { LegacySession, MapperInterface, Result, Session, SessionToken } from '@standardnotes/domain-core'
@@ -316,7 +317,7 @@ export class SNSessionManager
const result = await this.apiService.getSubscription(this.getSureUser().uuid)
if (isErrorResponse(result)) {
return ClientDisplayableError.FromError(result.data?.error)
return ClientDisplayableError.FromNetworkError(result)
}
const subscription = result.data.subscription
@@ -328,7 +329,7 @@ export class SNSessionManager
const response = await this.apiService.getAvailableSubscriptions()
if (isErrorResponse(response)) {
return ClientDisplayableError.FromError(response.data.error)
return ClientDisplayableError.FromNetworkError(response)
}
return response.data
@@ -418,8 +419,8 @@ export class SNSessionManager
ephemeral,
})
if ('error' in registerResponse.data) {
throw new ApiCallError(registerResponse.data.error.message)
if (isErrorResponse(registerResponse)) {
throw new ApiCallError(getErrorFromErrorResponse(registerResponse).message)
}
await this.handleAuthentication({
@@ -492,8 +493,8 @@ export class SNSessionManager
const result = await this.performSignIn(email, password, strict, ephemeral, minAllowedVersion)
if (
isErrorResponse(result.response) &&
result.response.data.error.tag !== ErrorTag.ClientValidationError &&
result.response.data.error.tag !== ErrorTag.ClientCanceledMfa
getErrorFromErrorResponse(result.response).tag !== ErrorTag.ClientValidationError &&
getErrorFromErrorResponse(result.response).tag !== ErrorTag.ClientCanceledMfa
) {
const cleanedEmail = cleanedEmailString(email)
if (cleanedEmail !== email) {

View File

@@ -1,7 +1,7 @@
import { SettingsList } from './SettingsList'
import { SettingName } from '@standardnotes/settings'
import { API_MESSAGE_INVALID_SESSION } from '@standardnotes/services'
import { HttpStatusCode, isErrorResponse, User } from '@standardnotes/responses'
import { getErrorFromErrorResponse, HttpStatusCode, isErrorResponse, User } from '@standardnotes/responses'
import { SettingsServerInterface } from './SettingsServerInterface'
/**
@@ -34,7 +34,7 @@ export class SettingsGateway {
const response = await this.settingsApi.listSettings(this.userUuid)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
throw new Error(getErrorFromErrorResponse(response).message)
}
if (response.data == undefined || response.data.settings == undefined) {
@@ -53,7 +53,7 @@ export class SettingsGateway {
}
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
throw new Error(getErrorFromErrorResponse(response).message)
}
return response?.data?.setting?.value ?? undefined
@@ -71,7 +71,7 @@ export class SettingsGateway {
}
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
throw new Error(getErrorFromErrorResponse(response).message)
}
return response?.data?.setting?.value ?? undefined
@@ -89,7 +89,7 @@ export class SettingsGateway {
}
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
throw new Error(getErrorFromErrorResponse(response).message)
}
return response.data?.success ?? false
@@ -98,14 +98,14 @@ export class SettingsGateway {
async updateSetting(name: SettingName, payload: string, sensitive: boolean): Promise<void> {
const response = await this.settingsApi.updateSetting(this.userUuid, name.value, payload, sensitive)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
throw new Error(getErrorFromErrorResponse(response).message)
}
}
async deleteSetting(name: SettingName): Promise<void> {
const response = await this.settingsApi.deleteSetting(this.userUuid, name.value)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
throw new Error(getErrorFromErrorResponse(response).message)
}
}

View File

@@ -9,6 +9,7 @@ import {
RawSyncResponse,
UserEventServerHash,
AsymmetricMessageServerHash,
getErrorFromErrorResponse,
} from '@standardnotes/responses'
import {
FilterDisallowedRemotePayloadsAndMap,
@@ -35,8 +36,6 @@ export class ServerSyncResponse {
private successResponseData: RawSyncResponse | undefined
constructor(public rawResponse: HttpResponse<RawSyncResponse>) {
this.rawResponse = rawResponse
if (!isErrorResponse(rawResponse)) {
this.successResponseData = rawResponse.data
}
@@ -101,7 +100,11 @@ export class ServerSyncResponse {
}
public get error(): HttpError | undefined {
return isErrorResponse(this.rawResponse) ? this.rawResponse.data?.error : undefined
if (isErrorResponse(this.rawResponse)) {
return getErrorFromErrorResponse(this.rawResponse)
} else {
return undefined
}
}
public get status(): number {
@@ -123,6 +126,6 @@ export class ServerSyncResponse {
}
public get hasError(): boolean {
return this.error != undefined
return isErrorResponse(this.rawResponse)
}
}