@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
50 lines (43 loc) • 1.28 kB
text/typescript
import { getActiveClient } from '~/client/api';
import { ingestInCache } from '~/cache/api/ingestInCache';
/* begin_public_function
id: poll.create
*/
/**
* ```js
* import { createPoll } from '@amityco/ts-sdk-react-native'
* const created = await createPoll({
* question: 'question',
* answers: [
* { dataType: 'text', data: 'answer1', fileId: 'fileId1' },
* { dataType: 'text', data: 'answer2', fileId: 'fileId2' },
* ],
* closedIn: 1649136484
* }))
* ```
*
* Creates an {@link Amity.Poll}
*
* @param bundle The data necessary to create a new {@link Amity.Poll}
* @returns The newly created {@link Amity.Poll}
*
* @category Poll API
* @async
*/
export const createPoll = async (
bundle: Pick<Amity.Poll, 'title' | 'question' | 'answerType' | 'closedIn'> & {
answers: Pick<Amity.PollAnswer, 'dataType' | 'data'>[];
},
): Promise<Amity.Cached<Amity.Poll>> => {
const client = getActiveClient();
client.log('post/createPoll', bundle);
const { data } = await client.http.post<Amity.PollPayload>('/api/v3/polls', bundle);
const cachedAt = client.cache && Date.now();
if (client.cache) ingestInCache(data, { cachedAt });
const { polls } = data;
return {
data: polls[0],
cachedAt,
};
};
/* end_public_function */