@amityco/ts-sdk-react-native
Version:
Amity Social Cloud Typescript SDK
54 lines (46 loc) • 1.25 kB
text/typescript
import { convertStoryPayloadToRaw } from '~/storyRepository/utils/convertStoryPayloadToRaw';
import { ingestInCache } from '~/cache/api/ingestInCache';
const saveOptimisticToCache = (payload: Amity.StoryCreatePayload) => {
const optimisticData = convertStoryPayloadToRaw(payload);
ingestInCache(optimisticData);
return optimisticData;
};
export const createOptimisticEvent = (
{
payload,
formData = undefined,
isVideo = false,
}: {
payload: Amity.StoryCreatePayload;
formData?: FormData;
isVideo?: boolean;
},
callback: (optimisticData: Amity.StoryPayload) => void,
) => {
if (formData) {
const files = formData.getAll('files');
const fileObject = (files[0] as File & { uri: string }) || undefined;
if (!fileObject) return;
const optimisticData = {
...payload,
data: {
...payload.data,
fileId: undefined,
fileData: fileObject.uri,
},
};
if (isVideo) {
optimisticData.data.videoFileId = { original: undefined };
}
return callback(saveOptimisticToCache(optimisticData));
}
return callback(
saveOptimisticToCache({
...payload,
data: {
...payload.data,
fileData: null,
},
}),
);
};