diff --git a/src/lib/detect.ts b/src/lib/detect.ts index 561b91be..25dee386 100644 --- a/src/lib/detect.ts +++ b/src/lib/detect.ts @@ -123,9 +123,9 @@ export async function getLocation(ip: string, req: NextApiRequestCollect) { } } -export async function getClientInfo(req: NextApiRequestCollect, { screen }) { +export async function getClientInfo(req: NextApiRequestCollect) { const userAgent = req.headers['user-agent']; - const ip = req.body.payload.ip || getIpAddress(req); + const ip = req.body?.payload?.ip || getIpAddress(req); const location = await getLocation(ip, req); const country = location?.country; const subdivision1 = location?.subdivision1; @@ -133,7 +133,7 @@ export async function getClientInfo(req: NextApiRequestCollect, { screen }) { const city = location?.city; const browser = browserName(userAgent); const os = detectOS(userAgent); - const device = getDevice(screen, os); + const device = getDevice(req.body?.payload?.screen, os); return { userAgent, browser, os, ip, country, subdivision1, subdivision2, city, device }; } diff --git a/src/lib/session.ts b/src/lib/session.ts index 4eab67ff..5f3020e1 100644 --- a/src/lib/session.ts +++ b/src/lib/session.ts @@ -65,7 +65,7 @@ export async function findSession(req: NextApiRequestCollect): Promise<{ await checkUserBlock(website.userId); const { userAgent, browser, os, ip, country, subdivision1, subdivision2, city, device } = - await getClientInfo(req, payload); + await getClientInfo(req); const sessionId = uuid(websiteId, hostname, ip, userAgent); const visitId = uuid(sessionId, visitSalt()); diff --git a/src/pages/api/send.ts b/src/pages/api/send.ts index 0b43f920..df37ebe0 100644 --- a/src/pages/api/send.ts +++ b/src/pages/api/send.ts @@ -104,14 +104,14 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => { await useSession(req, res); const session = req.session; + const iat = Math.floor(new Date().getTime() / 1000); // expire visitId after 30 minutes - session.visitId = - !!session.iat && Math.floor(new Date().getTime() / 1000) - session.iat > 1800 - ? uuid(session.id, visitSalt()) - : session.visitId; + if (session.iat && iat - session.iat > 1800) { + session.visitId = uuid(session.id, visitSalt()); + } - session.iat = Math.floor(new Date().getTime() / 1000); + session.iat = iat; if (type === COLLECTION_TYPE.event) { // eslint-disable-next-line prefer-const