@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
60 lines (53 loc) • 1.59 kB
text/typescript
import { LinkedObject } from '~/utils/linkedObject';
import { queryUsers as queryUsersInternal } from '../internalApi/queryUsers';
/**
* ```js
* import { queryUsers } from '@amityco/ts-sdk-react-native'
* const { data: users, prevPage, nextPage } = await queryUsers({ displayName: 'foo' })
* ```
*
* Queries a paginable list of {@link Amity.User} objects
* Search is performed by displayName such as `.startsWith(search)`
*
* @param query The query parameters
* @returns A page of {@link Amity.User} objects
*
* @category User API
* @async
*/
export const queryUsers = async (
query: Amity.QueryUsers = {},
): Promise<Amity.Cached<Amity.PageToken<Amity.User>>> => {
const { cachedAt, data, paging } = await queryUsersInternal(query);
return {
data: data.map(user => LinkedObject.user(user)),
cachedAt,
paging,
};
};
/**
* ```js
* import { queryUsers } from '@amityco/ts-sdk-react-native'
* const { data: users } = queryUsers.locally({ keyword: 'foo' })
* ```
*
* Queries a paginable list of {@link Amity.User} objects from cache
* Search is performed by displayName such as `.startsWith(search)`
*
* @param query The query parameters
* @returns A page of {@link Amity.User} objects
*
* @category User API
*/
queryUsers.locally = (
query: Parameters<typeof queryUsers>[0] = {},
): Amity.Cached<Amity.PageToken<Amity.User>> | undefined => {
const cache = queryUsersInternal.locally(query);
if (!cache) return;
const { cachedAt, data, paging } = cache;
return {
data: data.map(LinkedObject.user),
cachedAt,
paging,
};
};