fix: password update response parsing
This commit is contained in:
parent
709d0892b9
commit
37fe85a7b4
@ -103,6 +103,7 @@ export const accessToken: Writable<string | null> = writable(null)
|
||||
export const csrfToken: Writable<string | null> = writable(null)
|
||||
export const isPending: Writable<boolean> = writable(false)
|
||||
export const cError: Writable<string | null> = writable(null)
|
||||
export const cSuccess: Writable<string | null> = writable(null)
|
||||
|
||||
class ApiClient {
|
||||
private viewCookieName: string
|
||||
@ -122,10 +123,11 @@ class ApiClient {
|
||||
|
||||
private async handleRequest<T>(
|
||||
fn: () => Promise<T>,
|
||||
options: { useBearerAuth: boolean }
|
||||
options: { useBearerAuth: boolean; suspendGlobalErr: boolean }
|
||||
): Promise<T | null> {
|
||||
isPending.set(true)
|
||||
cError.set(null)
|
||||
cSuccess.set(null)
|
||||
|
||||
// NOTE: If `handleResponse` is used, errors thrown from it will be caught here
|
||||
|
||||
@ -145,8 +147,17 @@ class ApiClient {
|
||||
|
||||
return await fn()
|
||||
} catch (err) {
|
||||
cError.set(err instanceof Error ? err.message : "Unknown error")
|
||||
console.log(`[ERR] ${get(cError)}`)
|
||||
const errMsg = err instanceof Error ? err.message : "Unknown error"
|
||||
|
||||
// The suspension option is handy when we want to display the error inside a modal instead of in a global notification
|
||||
if (options.suspendGlobalErr) {
|
||||
// Throw the same error to the next handler (should be handled inside the caller component)
|
||||
throw new Error(errMsg)
|
||||
} else {
|
||||
cError.set(errMsg)
|
||||
}
|
||||
|
||||
console.log(`[ERR] ${errMsg}`)
|
||||
} finally {
|
||||
isPending.set(false)
|
||||
}
|
||||
@ -224,7 +235,7 @@ class ApiClient {
|
||||
accessToken.set(newToken)
|
||||
this.lastAtUpdate = new Date()
|
||||
},
|
||||
{ useBearerAuth: false }
|
||||
{ useBearerAuth: false, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -258,7 +269,7 @@ class ApiClient {
|
||||
csrfToken.set(newToken)
|
||||
this.lastCsrfUpdate = new Date()
|
||||
},
|
||||
{ useBearerAuth: false }
|
||||
{ useBearerAuth: false, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -414,7 +425,7 @@ class ApiClient {
|
||||
|
||||
await goto("/login")
|
||||
},
|
||||
{ useBearerAuth: false }
|
||||
{ useBearerAuth: false, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -437,7 +448,7 @@ class ApiClient {
|
||||
|
||||
goto("/")
|
||||
},
|
||||
{ useBearerAuth: false }
|
||||
{ useBearerAuth: false, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -458,10 +469,10 @@ class ApiClient {
|
||||
return
|
||||
}
|
||||
|
||||
await this.handleResponse<void>(response, { useBearerAuth: false })
|
||||
await this.handleResponse<void>(response, { useBearerAuth: true })
|
||||
await this.handleLocalLogout()
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -473,12 +484,12 @@ class ApiClient {
|
||||
...this.getAuthHeader()
|
||||
}
|
||||
})
|
||||
const data = await this.handleResponse<ApiUserResponse>(response, { useBearerAuth: false })
|
||||
const data = await this.handleResponse<ApiUserResponse>(response, { useBearerAuth: true })
|
||||
const user = this.deserializeUser(data)
|
||||
|
||||
currentUser.set(user)
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -498,19 +509,20 @@ class ApiClient {
|
||||
...this.getAuthHeader(),
|
||||
"Content-Type": "application/json"
|
||||
},
|
||||
credentials: "include",
|
||||
body: JSON.stringify(data)
|
||||
})
|
||||
|
||||
const { accessToken: token, user } = await this.handleResponse<{
|
||||
accessToken: string
|
||||
const { access_token: token, user } = await this.handleResponse<{
|
||||
access_token: string
|
||||
user: User
|
||||
}>(response, { useBearerAuth: false })
|
||||
}>(response, { useBearerAuth: true })
|
||||
|
||||
accessToken.set(token)
|
||||
currentUser.set(user || null)
|
||||
this.lastAtUpdate = new Date()
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: true } // Error displayed inside the settings modal
|
||||
)
|
||||
}
|
||||
|
||||
@ -532,10 +544,10 @@ class ApiClient {
|
||||
return
|
||||
}
|
||||
|
||||
await this.handleResponse<void>(response, { useBearerAuth: false })
|
||||
await this.handleResponse<void>(response, { useBearerAuth: true })
|
||||
await this.handleLocalLogout()
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: true } // Error displayed inside the settings modal
|
||||
)
|
||||
}
|
||||
|
||||
@ -556,12 +568,12 @@ class ApiClient {
|
||||
}
|
||||
})
|
||||
|
||||
const users = await this.handleResponse<User[]>(response, { useBearerAuth: false })
|
||||
const users = await this.handleResponse<User[]>(response, { useBearerAuth: true })
|
||||
console.log(`[ADMIN] Got ${users.length} user results`)
|
||||
|
||||
return users
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: true } // Error displayed inside the settings modal
|
||||
)
|
||||
}
|
||||
|
||||
@ -589,9 +601,9 @@ class ApiClient {
|
||||
return
|
||||
}
|
||||
|
||||
await this.handleResponse<void>(response, { useBearerAuth: false })
|
||||
await this.handleResponse<void>(response, { useBearerAuth: true })
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: true } // Error displayed inside the settings modal
|
||||
)
|
||||
}
|
||||
|
||||
@ -609,7 +621,7 @@ class ApiClient {
|
||||
|
||||
let notes: NoteMetadata[] = []
|
||||
let data = await this.handleResponse<ApiNoteMetadataResponse[]>(response, {
|
||||
useBearerAuth: false
|
||||
useBearerAuth: true
|
||||
})
|
||||
|
||||
if (data) {
|
||||
@ -620,7 +632,7 @@ class ApiClient {
|
||||
|
||||
return notes
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -636,9 +648,9 @@ class ApiClient {
|
||||
...this.getAuthHeader()
|
||||
}
|
||||
})
|
||||
return await this.handleResponse<NewNoteResponse>(response, { useBearerAuth: false })
|
||||
return await this.handleResponse<NewNoteResponse>(response, { useBearerAuth: true })
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -665,7 +677,7 @@ class ApiClient {
|
||||
})
|
||||
|
||||
const data = await this.handleResponse<ApiFullNoteResponse>(response, {
|
||||
useBearerAuth: false
|
||||
useBearerAuth: true
|
||||
})
|
||||
const note = this.deserializeFullNote(data)
|
||||
|
||||
@ -675,7 +687,7 @@ class ApiClient {
|
||||
|
||||
return note
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -698,9 +710,9 @@ class ApiClient {
|
||||
return
|
||||
}
|
||||
|
||||
await this.handleResponse<void>(response, { useBearerAuth: false })
|
||||
await this.handleResponse<void>(response, { useBearerAuth: true })
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -728,7 +740,7 @@ class ApiClient {
|
||||
})
|
||||
|
||||
const data = await this.handleResponse<ApiVersionMetadataResponse[]>(response, {
|
||||
useBearerAuth: false
|
||||
useBearerAuth: true
|
||||
})
|
||||
const versions = this.deserializeVersionMetadatas(data)
|
||||
|
||||
@ -737,7 +749,7 @@ class ApiClient {
|
||||
|
||||
return versions
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -764,9 +776,9 @@ class ApiClient {
|
||||
return
|
||||
}
|
||||
|
||||
await this.handleResponse<void>(response, { useBearerAuth: false })
|
||||
await this.handleResponse<void>(response, { useBearerAuth: true })
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
|
||||
@ -798,7 +810,7 @@ class ApiClient {
|
||||
})
|
||||
|
||||
const data = await this.handleResponse<ApiFullVersionResponse>(response, {
|
||||
useBearerAuth: false
|
||||
useBearerAuth: true
|
||||
})
|
||||
const version = this.joinDeserializedVersion(noteID, data)
|
||||
|
||||
@ -811,7 +823,7 @@ class ApiClient {
|
||||
|
||||
return version
|
||||
},
|
||||
{ useBearerAuth: true }
|
||||
{ useBearerAuth: true, suspendGlobalErr: false }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user