@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
57 lines (45 loc) • 1.56 kB
text/typescript
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;
};