@sanity/client
Version:
Client for retrieving, creating and patching data from Sanity.io
52 lines (46 loc) • 1.59 kB
text/typescript
import {type Observable} from 'rxjs'
import {_request, _requestObservable} from '../data/dataMethods'
import type {ObservableSanityClient, SanityClient} from '../SanityClient'
import type {CurrentSanityUser, HttpRequest, SanityUser} from '../types'
/** @public */
export class ObservableUsersClient {
#client: ObservableSanityClient
#httpRequest: HttpRequest
constructor(client: ObservableSanityClient, httpRequest: HttpRequest) {
this.#client = client
this.#httpRequest = httpRequest
}
/**
* Fetch a user by user ID
*
* @param id - User ID of the user to fetch. If `me` is provided, a minimal response including the users role is returned.
*/
getById<T extends string>(id: T): Observable<T extends 'me' ? CurrentSanityUser : SanityUser> {
return _requestObservable<T extends 'me' ? CurrentSanityUser : SanityUser>(
this.#client,
this.#httpRequest,
{url: `/users/${id}`},
)
}
}
/** @public */
export class UsersClient {
#client: SanityClient
#httpRequest: HttpRequest
constructor(client: SanityClient, httpRequest: HttpRequest) {
this.#client = client
this.#httpRequest = httpRequest
}
/**
* Fetch a user by user ID
*
* @param id - User ID of the user to fetch. If `me` is provided, a minimal response including the users role is returned.
*/
getById<T extends string>(id: T): Promise<T extends 'me' ? CurrentSanityUser : SanityUser> {
return _request<T extends 'me' ? CurrentSanityUser : SanityUser>(
this.#client,
this.#httpRequest,
{url: `/users/${id}`},
)
}
}