Convert to Blazor #6

Merged
danieljsummers merged 7 commits from blazor into main 2020-12-19 02:46:28 +00:00
2 changed files with 6 additions and 3 deletions
Showing only changes of commit 4e5f931c04 - Show all commits

View File

@ -134,7 +134,7 @@ module Profile =
| Ok citId -> | Ok citId ->
match! Profiles.tryFind citId with match! Profiles.tryFind citId with
| Ok (Some profile) -> return! json profile ctx | Ok (Some profile) -> return! json profile ctx
| Ok None -> return! Error.notFound ctx | Ok None -> return! Successful.NO_CONTENT ctx
| Error exn -> return! Error.error exn "Cannot retrieve profile" ctx | Error exn -> return! Error.error exn "Cannot retrieve profile" ctx
| Error _ -> return! Error.notFound ctx | Error _ -> return! Error.notFound ctx
} }

View File

@ -14,6 +14,9 @@ const API_URL = `${location.protocol}//${location.host}/api`
/** Local storage key for the Jobs, Jobs, Jobs access token */ /** Local storage key for the Jobs, Jobs, Jobs access token */
const JJJ_TOKEN = 'jjj-token' const JJJ_TOKEN = 'jjj-token'
/** HTTP status for "No Content"; used by the API to indicate a valid query with no results vs. 404 (invalid URL) */
const NO_CONTENT = 204
/** /**
* A holder for the JSON Web Token (JWT) returned from Jobs, Jobs, Jobs * A holder for the JSON Web Token (JWT) returned from Jobs, Jobs, Jobs
*/ */
@ -65,7 +68,7 @@ export async function doRequest(url: string, method?: string, payload?: string)
if (method === 'POST' && payload) options.body = payload if (method === 'POST' && payload) options.body = payload
const actualUrl = (options.method === 'GET' && payload) ? `url?${payload}` : url const actualUrl = (options.method === 'GET' && payload) ? `url?${payload}` : url
const resp = await fetch(actualUrl, options) const resp = await fetch(actualUrl, options)
if (resp.ok || resp.status === 404) return resp if (resp.ok) return resp
throw new Error(`Error executing API request: ${resp.status} ~ ${resp.statusText}`) throw new Error(`Error executing API request: ${resp.status} ~ ${resp.statusText}`)
} }
@ -89,7 +92,7 @@ export async function jjjAuthorize(nasToken: string): Promise<boolean> {
*/ */
export async function userProfile(): Promise<Profile | undefined> { export async function userProfile(): Promise<Profile | undefined> {
const resp = await doRequest(`${API_URL}/profile`) const resp = await doRequest(`${API_URL}/profile`)
if (resp.status === 404) { if (resp.status === NO_CONTENT) {
return undefined return undefined
} }
const profile = await resp.json() const profile = await resp.json()