Files
Compass/web/lib/api.ts
Martin Braquet ba9b3cfb06 Add pretty formatting (#29)
* Test

* Add pretty formatting

* Fix Tests

* Fix Tests

* Fix Tests

* Fix

* Add pretty formatting fix

* Fix

* Test

* Fix tests

* Clean typeckech

* Add prettier check

* Fix api tsconfig

* Fix api tsconfig

* Fix tsconfig

* Fix

* Fix

* Prettier
2026-02-20 17:32:27 +01:00

35 lines
969 B
TypeScript

import {API, APIParams, APIPath} from 'common/api/schema'
import {typedAPICall} from 'common/util/api'
import {sleep} from 'common/util/time'
import {auth} from './firebase/users'
export async function api<P extends APIPath>(
path: P,
params: APIParams<P> = {}
) {
// If the api is authed and the user is not loaded, wait for the user to load.
if (API[path].authed && !auth.currentUser) {
let i = 0
while (!auth.currentUser) {
i++
await sleep(i * 10)
if (i > 300) {
console.error('User did not load after 300 iterations')
break
}
}
console.debug('User loaded after', i, 'iterations')
}
return typedAPICall(path, params, auth.currentUser)
}
function curriedAPI<P extends APIPath>(path: P) {
return (params: APIParams<P>) => api(path, params)
}
export const updateProfile = curriedAPI('update-profile')
export const updateUser = curriedAPI('me/update')
export const report = curriedAPI('report')