UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

57 lines (45 loc) 1.56 kB
import { v4 as uuid } from "uuid"; import { RequestBuilder } from "@applicaster/zapp-pipes-v2-client"; import { sessionStorage } from "@applicaster/zapp-react-native-bridge/ZappStorage/SessionStorage"; import { getAppUrlScheme } from "@applicaster/zapp-react-native-utils/appDataUtils"; let source: string | null = null; const addSource = async () => { if (source) { return source; } const appUrlScheme = getAppUrlScheme(); const bundleId = await sessionStorage.getItem("bundleIdentifier"); const appVersion = await sessionStorage.getItem("version_name"); if (!appUrlScheme || !bundleId || !appVersion) { throw Error( `Error: Can not create client data addSource: Check appUrlScheme, bundleId, appversion. Item(s) not exist. {appUrlScheme: ${appUrlScheme}, bundleId: ${bundleId}, appVersion: ${appVersion}}` ); } source = `${appUrlScheme}://${bundleId}/versions/${appVersion}`; return source; }; export const createCloudEvent = async ({ type, subject, data }) => { return { specversion: "1.0", type, datacontenttype: "application/json", subject, source: await addSource(), time: new Date().toISOString(), data, id: uuid(), }; }; export const sendCloudEvent = async (cloudEvent: any, url: string) => { if (!url) { throw new Error("Feed locator is missing"); } const requestBuilder = new RequestBuilder(); const response = await requestBuilder .setUrl(url) .setMethod("POST") .addBodyParams(cloudEvent) .call<ZappFeed>(); return response; };