summaryrefslogtreecommitdiff
path: root/app/services/api/api-problem.ts
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/api/api-problem.ts')
-rw-r--r--app/services/api/api-problem.ts56
1 files changed, 29 insertions, 27 deletions
diff --git a/app/services/api/api-problem.ts b/app/services/api/api-problem.ts
index 9c2aa49..d5b1445 100644
--- a/app/services/api/api-problem.ts
+++ b/app/services/api/api-problem.ts
@@ -1,72 +1,74 @@
-import { ApiResponse } from "apisauce"
+import { ApiResponse } from 'apisauce'
export type GeneralApiProblem =
/**
* Times up.
*/
- | { kind: "timeout"; temporary: true }
+ | { kind: 'timeout'; temporary: true }
/**
* Cannot connect to the server for some reason.
*/
- | { kind: "cannot-connect"; temporary: true }
+ | { kind: 'cannot-connect'; temporary: true }
/**
* The server experienced a problem. Any 5xx error.
*/
- | { kind: "server" }
+ | { kind: 'server' }
/**
* We're not allowed because we haven't identified ourself. This is 401.
*/
- | { kind: "unauthorized" }
+ | { kind: 'unauthorized' }
/**
* We don't have access to perform that request. This is 403.
*/
- | { kind: "forbidden" }
+ | { kind: 'forbidden' }
/**
* Unable to find that resource. This is a 404.
*/
- | { kind: "not-found" }
+ | { kind: 'not-found' }
/**
* All other 4xx series errors.
*/
- | { kind: "rejected" }
+ | { kind: 'rejected' }
/**
* Something truly unexpected happened. Most likely can try again. This is a catch all.
*/
- | { kind: "unknown"; temporary: true }
+ | { kind: 'unknown'; temporary: true }
/**
* The data we received is not in the expected format.
*/
- | { kind: "bad-data" }
+ | { kind: 'bad-data' }
/**
* Attempts to get a common cause of problems from an api response.
*
* @param response The api response.
*/
-export function getGeneralApiProblem(response: ApiResponse<any>): GeneralApiProblem | void {
+export function getGeneralApiProblem(
+ response: ApiResponse<any>,
+): GeneralApiProblem | void {
switch (response.problem) {
- case "CONNECTION_ERROR":
- return { kind: "cannot-connect", temporary: true }
- case "NETWORK_ERROR":
- return { kind: "cannot-connect", temporary: true }
- case "TIMEOUT_ERROR":
- return { kind: "timeout", temporary: true }
- case "SERVER_ERROR":
- return { kind: "server" }
- case "UNKNOWN_ERROR":
- return { kind: "unknown", temporary: true }
- case "CLIENT_ERROR":
+ case 'CONNECTION_ERROR':
+ return { kind: 'cannot-connect', temporary: true }
+ case 'NETWORK_ERROR':
+ return { kind: 'cannot-connect', temporary: true }
+ case 'TIMEOUT_ERROR':
+ return { kind: 'timeout', temporary: true }
+ case 'SERVER_ERROR':
+ return { kind: 'server' }
+ case 'UNKNOWN_ERROR':
+ return { kind: 'unknown', temporary: true }
+ case 'CLIENT_ERROR':
switch (response.status) {
case 401:
- return { kind: "unauthorized" }
+ return { kind: 'unauthorized' }
case 403:
- return { kind: "forbidden" }
+ return { kind: 'forbidden' }
case 404:
- return { kind: "not-found" }
+ return { kind: 'not-found' }
default:
- return { kind: "rejected" }
+ return { kind: 'rejected' }
}
- case "CANCEL_ERROR":
+ case 'CANCEL_ERROR':
return null
}