ondc-campaign-sdk
Version:
[](https://www.npmjs.com/package/ondc-campaign-sdk) [](LICENSE) [ • 4.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fetchLiveCampaignProducts = fetchLiveCampaignProducts;
exports.fetchLiveCampaignBasedOnCount = fetchLiveCampaignBasedOnCount;
async function fetchLiveCampaignProducts(withTransaction = false, campignOrder = 1) {
try {
// Get or generate user ID from localStorage
let userId = "";
if (typeof window !== "undefined") {
// Check if userId exists in localStorage
const storedUserId = localStorage.getItem("ondc_user_id");
// If userId doesn't exist, generate a UUID and store it
if (!storedUserId) {
userId = crypto.randomUUID();
localStorage.setItem("ondc_user_id", userId);
}
else {
userId = storedUserId;
}
}
// First fetch the active campaign data
const response = await fetch("https://ondc-sdk.samhita.org/api/campaigns/active?order=" + campignOrder);
if (!response.ok) {
throw new Error("Failed to fetch campaign data");
}
const campaignData = await response.json();
if (!campaignData._id) {
throw new Error("No campaign id found");
}
// If transaction is not required or not in browser, return campaign data only
if (!withTransaction || typeof window === "undefined") {
return campaignData;
}
// Get actual current URL for transaction
const currentUrl = window.location.href;
// Create transaction with campaign_id
const transactionPayload = {
company_url: currentUrl,
user_id: userId,
campaign_id: campaignData._id
};
const transactionResponse = await fetch("https://ondc-sdk.samhita.org/api/transactions/create", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(transactionPayload),
});
if (!transactionResponse.ok) {
throw new Error(transactionResponse.statusText);
}
// Get transaction data
const transactionData = await transactionResponse.json();
return {
campaign: campaignData,
transaction: transactionData,
user_id: userId,
};
}
catch (error) {
console.error("Error fetching campaign products:", error);
return { message: "No active campaign found", error: error };
}
}
async function fetchLiveCampaignBasedOnCount(count, withTransaction = false) {
try {
// Get or generate user ID from localStorage
let userId = "";
if (typeof window !== "undefined") {
// Check if userId exists in localStorage
const storedUserId = localStorage.getItem("ondc_user_id");
// If userId doesn't exist, generate a UUID and store it
if (!storedUserId) {
userId = crypto.randomUUID();
localStorage.setItem("ondc_user_id", userId);
}
else {
userId = storedUserId;
}
}
// First fetch the campaigns data
const response = await fetch("https://ondc-sdk.samhita.org/api/campaigns/active-based-on-count?count=" +
count);
if (!response.ok) {
throw new Error("Failed to fetch campaigns data");
}
const campaignsData = await response.json();
// If transaction is not required or not in browser, return campaigns data only
if (!withTransaction || typeof window === "undefined") {
return campaignsData;
}
// Get actual current URL for transaction
const currentUrl = window.location.href;
// Create transaction without campaign_id since this is for multiple campaigns
const transactionPayload = {
company_url: currentUrl,
user_id: userId,
campaign_id: campaignsData.map((campaign) => campaign._id)
};
const transactionResponse = await fetch("https://ondc-sdk.samhita.org/api/transactions/create", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(transactionPayload),
});
if (!transactionResponse.ok) {
throw new Error(transactionResponse.statusText);
}
// Get transaction data
const transactionData = await transactionResponse.json();
return {
campaigns: campaignsData,
transaction: transactionData,
user_id: userId,
};
}
catch (error) {
console.error("Error fetching campaigns:", error);
return { message: "No active campaigns found", error: error };
}
}