File size: 2,500 Bytes
e026dc9 addcf34 e026dc9 addcf34 e026dc9 addcf34 e026dc9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
// Export utilities for downloading/exporting ads
import { downloadImageProxy } from "@/lib/api/endpoints";
export const downloadImage = async (url: string | null | undefined, filename: string | null | undefined, adId?: string): Promise<void> => {
if (!url && !adId) {
throw new Error("No image URL or ad ID provided");
}
try {
// Use proxy endpoint to avoid CORS issues
const blob = await downloadImageProxy({
image_url: url || undefined,
image_id: adId || undefined,
});
const blobUrl = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = blobUrl;
link.download = filename || "image.png";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(blobUrl);
} catch (error) {
console.error("Error downloading image:", error);
throw error;
}
};
export const copyToClipboard = async (text: string): Promise<void> => {
try {
await navigator.clipboard.writeText(text);
} catch (error) {
console.error("Error copying to clipboard:", error);
throw error;
}
};
export const exportAsJSON = (data: any, filename: string): void => {
const jsonString = JSON.stringify(data, null, 2);
const blob = new Blob([jsonString], { type: "application/json" });
const url = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = filename;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
};
export const exportAsCSV = (data: any[], filename: string): void => {
if (data.length === 0) return;
const headers = Object.keys(data[0]);
const csvRows = [
headers.join(","),
...data.map((row) =>
headers.map((header) => {
const value = row[header];
// Escape commas and quotes in CSV
if (typeof value === "string" && (value.includes(",") || value.includes('"'))) {
return `"${value.replace(/"/g, '""')}"`;
}
return value ?? "";
}).join(",")
),
];
const csvString = csvRows.join("\n");
const blob = new Blob([csvString], { type: "text/csv" });
const url = window.URL.createObjectURL(blob);
const link = document.createElement("a");
link.href = url;
link.download = filename;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
};
|