Compare commits
4
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8a8bbd1b71 | ||
|
|
b476807a43 | ||
|
|
7f5c05d995 | ||
|
|
ede696ab2a |
@@ -0,0 +1,65 @@
|
||||
import { NextRequest, NextResponse } from "next/server";
|
||||
|
||||
const OPENPANEL_API_URL = process.env.OPENPANEL_API_URL || "https://op.nodecrew.me/api";
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const body = await request.text();
|
||||
const headers: Record<string, string> = {
|
||||
"Content-Type": "application/json",
|
||||
"openpanel-client-id": process.env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID || "",
|
||||
};
|
||||
|
||||
if (process.env.OPENPANEL_CLIENT_SECRET) {
|
||||
headers["openpanel-client-secret"] = process.env.OPENPANEL_CLIENT_SECRET;
|
||||
}
|
||||
|
||||
const response = await fetch(`${OPENPANEL_API_URL}/track`, {
|
||||
method: "POST",
|
||||
headers,
|
||||
body,
|
||||
});
|
||||
|
||||
const data = await response.text();
|
||||
return new NextResponse(data, {
|
||||
status: response.status,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("[OpenPanel Proxy] Error:", error);
|
||||
return new NextResponse(JSON.stringify({ error: "Proxy error" }), {
|
||||
status: 500,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export async function GET(request: NextRequest) {
|
||||
const url = new URL(request.url);
|
||||
const path = url.searchParams.get("path") || "";
|
||||
|
||||
try {
|
||||
const response = await fetch(`${OPENPANEL_API_URL}/track/${path}`, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"openpanel-client-id": process.env.NEXT_PUBLIC_OPENPANEL_CLIENT_ID || "",
|
||||
},
|
||||
});
|
||||
|
||||
const data = await response.text();
|
||||
return new NextResponse(data, {
|
||||
status: response.status,
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Access-Control-Allow-Origin": "*",
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("[OpenPanel Proxy] Error:", error);
|
||||
return new NextResponse(JSON.stringify({ error: "Proxy error" }), {
|
||||
status: 500,
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -100,6 +100,22 @@ export class AnalyticsTracker {
|
||||
newsletterSignedUp(email: string, source: string) {
|
||||
this.track({ type: "newsletter_signup", email, source });
|
||||
}
|
||||
|
||||
// Backward compatibility aliases (old method names)
|
||||
trackProductView = this.productViewed;
|
||||
trackAddToCart = this.addToCart;
|
||||
trackRemoveFromCart = this.removeFromCart;
|
||||
trackCartView = this.cartViewed;
|
||||
trackCheckoutStarted = this.checkoutStarted;
|
||||
trackCheckoutStep = this.checkoutStep;
|
||||
trackOrderCompleted = this.orderCompleted;
|
||||
trackSearch = this.searchPerformed;
|
||||
trackExternalLink = this.externalLinkClicked;
|
||||
trackWishlistAdd = this.wishlistAdded;
|
||||
trackUserLogin = this.userLoggedIn;
|
||||
trackUserRegister = this.userRegistered;
|
||||
trackNewsletterSignup = this.newsletterSignedUp;
|
||||
identifyUser = this.identify;
|
||||
}
|
||||
|
||||
let trackerInstance: AnalyticsTracker | null = null;
|
||||
|
||||
Reference in New Issue
Block a user