refactor: http service (#2233)

This commit is contained in:
Mo
2023-02-28 20:43:25 -06:00
committed by GitHub
parent 6e7618b258
commit e7f1d35341
142 changed files with 1116 additions and 1307 deletions

View File

@@ -1,7 +1,7 @@
import { SettingsList } from './SettingsList'
import { SettingName, SensitiveSettingName, SubscriptionSettingName } from '@standardnotes/settings'
import { API_MESSAGE_INVALID_SESSION } from '@standardnotes/services'
import { StatusCode, User } from '@standardnotes/responses'
import { HttpStatusCode, isErrorResponse, User } from '@standardnotes/responses'
import { SettingsServerInterface } from './SettingsServerInterface'
/**
@@ -31,30 +31,29 @@ export class SettingsGateway {
}
async listSettings() {
const { error, data } = await this.settingsApi.listSettings(this.userUuid)
const response = await this.settingsApi.listSettings(this.userUuid)
if (error != undefined) {
throw new Error(error.message)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
}
if (data == undefined || data.settings == undefined) {
if (response.data == undefined || response.data.settings == undefined) {
return new SettingsList([])
}
const settings: SettingsList = new SettingsList(data.settings)
const settings: SettingsList = new SettingsList(response.data.settings)
return settings
}
async getSetting(name: SettingName): Promise<string | undefined> {
const response = await this.settingsApi.getSetting(this.userUuid, name)
// Backend responds with 400 when setting doesn't exist
if (response.status === StatusCode.HttpBadRequest) {
if (response.status === HttpStatusCode.BadRequest) {
return undefined
}
if (response.error != undefined) {
throw new Error(response.error.message)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
}
return response?.data?.setting?.value ?? undefined
@@ -63,12 +62,12 @@ export class SettingsGateway {
async getSubscriptionSetting(name: SubscriptionSettingName): Promise<string | undefined> {
const response = await this.settingsApi.getSubscriptionSetting(this.userUuid, name)
if (response.status === StatusCode.HttpBadRequest) {
if (response.status === HttpStatusCode.BadRequest) {
return undefined
}
if (response.error != undefined) {
throw new Error(response.error.message)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
}
return response?.data?.setting?.value ?? undefined
@@ -77,29 +76,28 @@ export class SettingsGateway {
async getDoesSensitiveSettingExist(name: SensitiveSettingName): Promise<boolean> {
const response = await this.settingsApi.getSetting(this.userUuid, name)
// Backend responds with 400 when setting doesn't exist
if (response.status === StatusCode.HttpBadRequest) {
if (response.status === HttpStatusCode.BadRequest) {
return false
}
if (response.error != undefined) {
throw new Error(response.error.message)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
}
return response.data?.success ?? false
}
async updateSetting(name: SettingName, payload: string, sensitive: boolean): Promise<void> {
const { error } = await this.settingsApi.updateSetting(this.userUuid, name, payload, sensitive)
if (error != undefined) {
throw new Error(error.message)
const response = await this.settingsApi.updateSetting(this.userUuid, name, payload, sensitive)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
}
}
async deleteSetting(name: SettingName): Promise<void> {
const { error } = await this.settingsApi.deleteSetting(this.userUuid, name)
if (error != undefined) {
throw new Error(error.message)
const response = await this.settingsApi.deleteSetting(this.userUuid, name)
if (isErrorResponse(response)) {
throw new Error(response.data?.error.message)
}
}

View File

@@ -1,24 +1,25 @@
import {
DeleteSettingResponse,
GetSettingResponse,
HttpResponse,
ListSettingsResponse,
UpdateSettingResponse,
} from '@standardnotes/responses'
import { UuidString } from '@Lib/Types/UuidString'
export interface SettingsServerInterface {
listSettings(userUuid: UuidString): Promise<ListSettingsResponse>
listSettings(userUuid: UuidString): Promise<HttpResponse<ListSettingsResponse>>
updateSetting(
userUuid: UuidString,
settingName: string,
settingValue: string,
sensitive: boolean,
): Promise<UpdateSettingResponse>
): Promise<HttpResponse<UpdateSettingResponse>>
getSetting(userUuid: UuidString, settingName: string): Promise<GetSettingResponse>
getSetting(userUuid: UuidString, settingName: string): Promise<HttpResponse<GetSettingResponse>>
getSubscriptionSetting(userUuid: UuidString, settingName: string): Promise<GetSettingResponse>
getSubscriptionSetting(userUuid: UuidString, settingName: string): Promise<HttpResponse<GetSettingResponse>>
deleteSetting(userUuid: UuidString, settingName: string): Promise<DeleteSettingResponse>
deleteSetting(userUuid: UuidString, settingName: string): Promise<HttpResponse<DeleteSettingResponse>>
}