From 4ddf8d0d565474cf97b6c60a8873f76e3d815ec0 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Wed, 25 Dec 2024 21:01:15 -0800 Subject: [PATCH 1/3] Added option to exclude hash. --- src/pages/api/send.ts | 7 +++---- src/tracker/index.js | 16 ++++++++++------ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/pages/api/send.ts b/src/pages/api/send.ts index ddaaca94fc..e2a450b723 100644 --- a/src/pages/api/send.ts +++ b/src/pages/api/send.ts @@ -7,7 +7,6 @@ import { methodNotAllowed, ok, safeDecodeURI, - send, } from 'next-basics'; import { COLLECTION_TYPE, HOSTNAME_REGEX, IP_REGEX } from 'lib/constants'; import { secret, visitSalt, uuid } from 'lib/crypto'; @@ -103,7 +102,7 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => { const session = req.session; - if (!session?.id) { + if (!session?.id || !session?.websiteId) { return; } @@ -162,9 +161,9 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => { }); } - const token = createToken(session, secret()); + const cache = createToken(session, secret()); - return send(res, token); + return ok(res, { cache }); } return methodNotAllowed(res); diff --git a/src/tracker/index.js b/src/tracker/index.js index 9fa560e6dc..14a5cb6842 100644 --- a/src/tracker/index.js +++ b/src/tracker/index.js @@ -21,6 +21,7 @@ const tag = attr(_data + 'tag'); const autoTrack = attr(_data + 'auto-track') !== _false; const excludeSearch = attr(_data + 'exclude-search') === _true; + const excludeHash = attr(_data + 'exclude-hash') === _true; const domain = attr(_data + 'domains') || ''; const domains = domain.split(',').map(n => n.trim()); const host = @@ -53,13 +54,12 @@ const parseURL = url => { try { - // use location.origin as the base to handle cases where the url is a relative path const { pathname, search, hash } = new URL(url, location.href); - url = pathname + search + hash; + + return pathname + (excludeSearch ? '' : search) + (excludeHash ? '' : hash); } catch (e) { - /* empty */ + return url; } - return excludeSearch ? url.split('?')[0] : url; }; const getPayload = () => ({ @@ -194,6 +194,7 @@ /* Tracking functions */ const trackingDisabled = () => + disabled || !website || (localStorage && localStorage.getItem('umami.disabled')) || (domain && !domains.includes(hostname)); @@ -215,9 +216,11 @@ body: JSON.stringify({ type, payload }), headers, }); - const text = await res.text(); - return (cache = text); + const data = await res.json(); + + disabled = res.status === 429; + cache = data?.cache; } catch (e) { /* empty */ } @@ -264,6 +267,7 @@ let title = document.title; let cache; let initialized; + let disabled = false; if (autoTrack && !trackingDisabled()) { if (document.readyState === 'complete') { From 6a60a266a3ada2ad941b01f12a1caf6025631a36 Mon Sep 17 00:00:00 2001 From: Mohamad Jahani Date: Thu, 26 Dec 2024 19:58:26 +0330 Subject: [PATCH 2/3] chore(translation): update fa translation and fix all issues --- src/lang/fa-IR.json | 414 ++++++++++++++++++++++---------------------- 1 file changed, 207 insertions(+), 207 deletions(-) diff --git a/src/lang/fa-IR.json b/src/lang/fa-IR.json index d5b480218c..493ca48754 100644 --- a/src/lang/fa-IR.json +++ b/src/lang/fa-IR.json @@ -1,279 +1,279 @@ { - "label.access-code": "Access code", + "label.access-code": "کد دسترسی", "label.actions": "اقدامات", - "label.activity": "Activity log", - "label.add": "Add", - "label.add-description": "Add description", - "label.add-member": "Add member", - "label.add-step": "Add step", + "label.activity": "فعالیت", + "label.add": "افزودن", + "label.add-description": "افزودن توضیحات", + "label.add-member": "افزودن عضو", + "label.add-step": "افزودن قدم", "label.add-website": "افزودن وب‌سایت", "label.admin": "مدیر", - "label.after": "After", + "label.after": "بعد", "label.all": "همه", - "label.all-time": "همه زمان", - "label.analytics": "Analytics", - "label.average": "Average", - "label.back": "برگشت", - "label.before": "Before", - "label.bounce-rate": "نرخ Bounce", - "label.breakdown": "Breakdown", - "label.browser": "Browser", - "label.browsers": "مروگرها", + "label.all-time": "تمامی زمان‌ها", + "label.analytics": "تجزیه و تحلیل", + "label.average": "میانگین", + "label.back": "بازگشت", + "label.before": "قبل از", + "label.bounce-rate": "نرخ ریزش", + "label.breakdown": "تفکیک", + "label.browser": "مرورگر", + "label.browsers": "مرورگرها", "label.cancel": "انصراف", "label.change-password": "تغییر رمز", - "label.cities": "Cities", - "label.city": "City", - "label.clear-all": "Clear all", - "label.compare": "Compare", - "label.confirm": "Confirm", - "label.confirm-password": "تایید رمز", - "label.contains": "Contains", - "label.continue": "Continue", - "label.count": "Count", + "label.cities": "شهرها", + "label.city": "شهر", + "label.clear-all": "پاک کردن همه", + "label.compare": "مقایسه", + "label.confirm": "تأیید", + "label.confirm-password": "تأیید رمز", + "label.contains": "شامل", + "label.continue": "ادامه", + "label.count": "تعداد", "label.countries": "کشورها", - "label.country": "Country", - "label.create": "Create", - "label.create-report": "Create report", - "label.create-team": "Create team", - "label.create-user": "Create user", - "label.created": "Created", - "label.created-by": "Created By", - "label.current": "Current", + "label.country": "کشور", + "label.create": "ایجاد", + "label.create-report": "ایجاد گزارش", + "label.create-team": "ایجاد تیم", + "label.create-user": "ایجاد کاربر", + "label.created": "ایجاد شد", + "label.created-by": "ایجاد شده توسط", + "label.current": "فعلی", "label.current-password": "رمز فعلی", "label.custom-range": "محدوده‌ی دلخواه", "label.dashboard": "داشبورد", - "label.data": "Data", - "label.date": "Date", + "label.data": "داده", + "label.date": "تاریخ", "label.date-range": "محدوده‌ی تاریخ", - "label.day": "Day", - "label.default-date-range": "محدوده‌ی پیشفرض تاریخ", + "label.day": "روز", + "label.default-date-range": "محدوده‌ی پیش‌فرض تاریخ", "label.delete": "حذف", - "label.delete-report": "Delete report", - "label.delete-team": "Delete team", - "label.delete-user": "Delete user", + "label.delete-report": "حذف گزارش", + "label.delete-team": "حذف تیم", + "label.delete-user": "حذف کاربر", "label.delete-website": "حذف وب‌سایت", - "label.description": "Description", + "label.description": "توضیحات", "label.desktop": "دسکتاپ", - "label.details": "Details", - "label.device": "Device", + "label.details": "جزئیات", + "label.device": "دستگاه", "label.devices": "دستگاه‌ها", "label.dismiss": "رد کردن", - "label.does-not-contain": "Does not contain", + "label.does-not-contain": "شامل نمی‌شود", "label.domain": "دامنه", - "label.dropoff": "Dropoff", + "label.dropoff": "رها کردن", "label.edit": "ویرایش", - "label.edit-dashboard": "Edit dashboard", - "label.edit-member": "Edit member", - "label.enable-share-url": "فعال کردن اشتراک گذاری URL", - "label.end-step": "End Step", - "label.entry": "Entry URL", - "label.event": "Event", - "label.event-data": "Event data", + "label.edit-dashboard": "ویرایش داشبورد", + "label.edit-member": "ویرایش عضو", + "label.enable-share-url": "فعال کردن اشتراک گذاری آدرس اینترنتی", + "label.end-step": "قدم پایانی", + "label.entry": "آدرس اینترنتی ورودی", + "label.event": "رویداد", + "label.event-data": "داده‌های رویداد", "label.events": "رویدادها", - "label.exit": "Exit URL", - "label.false": "False", - "label.field": "Field", - "label.fields": "Fields", - "label.filter": "Filter", + "label.exit": "آدرس اینترنتی خروجی", + "label.false": "نادرست", + "label.field": "فیلد", + "label.fields": "فیلد‌ها", + "label.filter": "فیلتر", "label.filter-combined": "ترکیب شده", "label.filter-raw": "خام", - "label.filters": "Filters", - "label.first-seen": "First seen", - "label.funnel": "Funnel", - "label.funnel-description": "Understand the conversion and drop-off rate of users.", - "label.goal": "Goal", - "label.goals": "Goals", - "label.goals-description": "Track your goals for pageviews and events.", - "label.greater-than": "Greater than", - "label.greater-than-equals": "Greater than or equals", - "label.host": "Host", - "label.hosts": "Hosts", - "label.insights": "Insights", - "label.insights-description": "Dive deeper into your data by using segments and filters.", - "label.is": "Is", - "label.is-not": "Is not", - "label.is-not-set": "Is not set", - "label.is-set": "Is set", - "label.join": "Join", - "label.join-team": "Join team", - "label.journey": "Journey", - "label.journey-description": "Understand how users navigate through your website.", + "label.filters": "فیلترها", + "label.first-seen": "اولین بار دیده شده", + "label.funnel": "فانل", + "label.funnel-description": "نرخ تبدیل و رها کردن کاربران را درک کنید.", + "label.goal": "هدف", + "label.goals": "اهداف", + "label.goals-description": "اهداف خود را برای بازدید از صفحه و رویدادها دنبال کنید.", + "label.greater-than": "بزرگ‌تر از", + "label.greater-than-equals": "بزرگ‌تر یا مساوی", + "label.host": "هاست", + "label.hosts": "هاست‌ها", + "label.insights": "بینش", + "label.insights-description": "با استفاده از بخش‌ها و فیلترها، در داده‌های خود عمیق‌تر شوید.", + "label.is": "برابر است با", + "label.is-not": "برابر نیست با", + "label.is-not-set": "تعیین نشده", + "label.is-set": "تعیین شده", + "label.join": "پیوستن", + "label.join-team": "پیوستن به تیم", + "label.journey": "مسیر", + "label.journey-description": "درک کنید که کاربران چگونه در وب‌سایت شما حرکت می کنند.", "label.language": "زبان", "label.languages": "زبان‌ها", "label.laptop": "لپ‌تاپ", - "label.last-days": "لیست {x} روز گذشته", - "label.last-hours": "لیست {x} ساعت گذشته", - "label.last-months": "Last {x} months", - "label.last-seen": "Last seen", - "label.leave": "Leave", - "label.leave-team": "Leave team", - "label.less-than": "Less than", - "label.less-than-equals": "Less than or equals", + "label.last-days": "{x} روز گذشته", + "label.last-hours": "{x} ساعت گذشته", + "label.last-months": "{x} ماه گذشته", + "label.last-seen": "آخرین بار دیده شده", + "label.leave": "ترک کردن", + "label.leave-team": "ترک تیم", + "label.less-than": "کمتر از", + "label.less-than-equals": "کمتر یا مساوی", "label.login": "ورود", "label.logout": "خروج", - "label.manage": "Manage", - "label.manager": "Manager", - "label.max": "Max", - "label.member": "Member", - "label.members": "Members", - "label.min": "Min", + "label.manage": "مدیریت", + "label.manager": "مدیر", + "label.max": "حداکثر", + "label.member": "عضو", + "label.members": "اعضا", + "label.min": "حداقل", "label.mobile": "موبایل", "label.more": "بیشتر", - "label.my-account": "My account", - "label.my-websites": "My websites", + "label.my-account": "حساب کاربری من", + "label.my-websites": "وب‌سایت‌های من", "label.name": "نام", "label.new-password": "رمز جدید", - "label.none": "None", + "label.none": "هیچ", "label.number-of-records": "{x} {x, plural, one {record} other {records}}", - "label.ok": "OK", - "label.os": "OS", - "label.overview": "Overview", - "label.owner": "ایجاد شده توسط", - "label.page-of": "Page {current} of {total}", + "label.ok": "تایید", + "label.os": "سیستم عامل", + "label.overview": "بررسی کلی", + "label.owner": "مالک", + "label.page-of": "صفحه {current} از {total}", "label.page-views": "بازدید صفحه", - "label.pageTitle": "Page title", + "label.pageTitle": "عنوان صفحه", "label.pages": "صفحه‌ها", "label.password": "رمز", - "label.path": "Path", - "label.paths": "Paths", + "label.path": "مسیر", + "label.paths": "مسیرها", "label.powered-by": "قدرت گرفته توسط {name}", - "label.previous": "Previous", - "label.previous-period": "Previous period", - "label.previous-year": "Previous year", + "label.previous": "قبلی", + "label.previous-period": "دوره‌ی قبل", + "label.previous-year": "سال قبل", "label.profile": "پروفایل", - "label.properties": "Properties", - "label.property": "Property", - "label.queries": "Queries", - "label.query": "Query", - "label.query-parameters": "Query parameters", + "label.properties": "ویژگی‌ها", + "label.property": "ویژگی", + "label.queries": "کوئری‌ها", + "label.query": "کوئری", + "label.query-parameters": "پارامترهای کوئری", "label.realtime": "آمار زنده", - "label.referrer": "Referrer", + "label.referrer": "ارجاع دهنده", "label.referrers": "ارجاع دهندگان", "label.refresh": "به‌روزرسانی", - "label.regenerate": "Regenerate", - "label.region": "Region", - "label.regions": "Regions", - "label.remove": "Remove", - "label.remove-member": "Remove member", - "label.reports": "Reports", + "label.regenerate": "تولید مجدد", + "label.region": "منطقه", + "label.regions": "مناطق", + "label.remove": "حذف", + "label.remove-member": "حذف عضو", + "label.reports": "گزارش‌ها", "label.required": "ضروری", "label.reset": "بازنشانی", - "label.reset-website": "بازنشانی آمار", - "label.retention": "Retention", - "label.retention-description": "Measure your website stickiness by tracking how often users return.", - "label.revenue": "Revenue", - "label.revenue-description": "Look into your revenue across time.", - "label.revenue-property": "Revenue Property", - "label.role": "Role", - "label.run-query": "Run query", + "label.reset-website": "بازنشانی وب‌سایت", + "label.retention": "نرخ بازگشت", + "label.retention-description": "چسبندگی وب‌سایت خود را با دنبال کردن تعداد دفعات بازگشت کاربران اندازه‌گیری کنید.", + "label.revenue": "درآمد", + "label.revenue-description": "به درآمد خود در طول زمان نگاه کنید.", + "label.revenue-property": "ویژگی درآمد", + "label.role": "نقش", + "label.run-query": "اجرای کوئری", "label.save": "ذخیره", - "label.screens": "Screens", - "label.search": "Search", - "label.select": "Select", - "label.select-date": "Select date", - "label.select-role": "Select role", - "label.select-website": "Select website", - "label.session": "Session", - "label.sessions": "Sessions", + "label.screens": "صفحه", + "label.search": "جستجو", + "label.select": "انتخاب", + "label.select-date": "انتخاب تاریخ", + "label.select-role": "انتخاب نقش", + "label.select-website": "انتخاب وب‌سایت", + "label.session": "نشست", + "label.sessions": "نشست‌ها", "label.settings": "تنظیمات", - "label.share-url": "به اشتراک گذاری URL", + "label.share-url": "به اشتراک گذاری آدرس اینترنتی", "label.single-day": "یک روز", - "label.start-step": "Start Step", - "label.steps": "Steps", - "label.sum": "Sum", + "label.start-step": "قدم شروع", + "label.steps": "قدم‌ها", + "label.sum": "جمع", "label.tablet": "تبلت", - "label.team": "Team", - "label.team-id": "Team ID", - "label.team-manager": "Team manager", - "label.team-member": "Team member", - "label.team-name": "Team name", - "label.team-owner": "Team owner", - "label.team-view-only": "Team view only", - "label.team-websites": "Team websites", - "label.teams": "Teams", + "label.team": "تیم", + "label.team-id": "شناسه تیم", + "label.team-manager": "مدیر تیم", + "label.team-member": "عضو تیم", + "label.team-name": "نام تیم", + "label.team-owner": "مالک تیم", + "label.team-view-only": "فقط مشاهده‌ی تیم", + "label.team-websites": "وب‌سایت‌های تیم", + "label.teams": "تیم‌ها", "label.theme": "تم", "label.this-month": "این ماه", "label.this-week": "این هفته", "label.this-year": "امسال", "label.timezone": "منطقه‌ی زمانی", - "label.title": "Title", + "label.title": "عنوان", "label.today": "امروز", - "label.toggle-charts": "Toggle charts", - "label.total": "Total", - "label.total-records": "Total records", + "label.toggle-charts": "نمایش / عدم نمایش نمودارها", + "label.total": "جمع", + "label.total-records": "جمع رکوردها", "label.tracking-code": "کد رهگیری", - "label.transactions": "Transactions", - "label.transfer": "Transfer", - "label.transfer-website": "Transfer website", - "label.true": "True", - "label.type": "Type", - "label.unique": "Unique", + "label.transactions": "تراکنش‌ها", + "label.transfer": "انتقال", + "label.transfer-website": "انتقال وب‌سایت", + "label.true": "درست", + "label.type": "نوع", + "label.unique": "یکتا", "label.unique-visitors": "بازدیدکننده‌های یکتا", - "label.uniqueCustomers": "Unique Customers", + "label.uniqueCustomers": "مشتریان یکتا", "label.unknown": "ناشناخته", - "label.untitled": "Untitled", - "label.update": "Update", - "label.url": "URL", - "label.urls": "URLs", - "label.user": "User", - "label.user-property": "User Property", + "label.untitled": "بدون عنوان", + "label.update": "به‌روزرسانی", + "label.url": "آدرس اینترنتی", + "label.urls": "آدرس‌های اینترنتی", + "label.user": "کاربر", + "label.user-property": "ویژگی کاربر", "label.username": "نام کاربری", - "label.users": "Users", + "label.users": "کاربران", "label.utm": "UTM", - "label.utm-description": "Track your campaigns through UTM parameters.", - "label.value": "Value", - "label.view": "View", + "label.utm-description": "با استفاده از پارامترهای UTM، کمپین‌های خود را بررسی کنید.", + "label.value": "مقدار", + "label.view": "مشاهده", "label.view-details": "مشاهده‌ی جزئیات", - "label.view-only": "View only", + "label.view-only": "فقط مشاهده", "label.views": "بازدید", - "label.views-per-visit": "Views per visit", + "label.views-per-visit": "نمایش‌ها در هر بازدید", "label.visit-duration": "میانگین زمان بازدید", "label.visitors": "بازدیدکننده", - "label.visits": "Visits", - "label.website": "Website", - "label.website-id": "Website ID", + "label.visits": "بازدیدها", + "label.website": "وب‌سایت", + "label.website-id": "شناسه وب‌سایت", "label.websites": "وب‌سایت‌ها", - "label.window": "Window", - "label.yesterday": "Yesterday", - "message.action-confirmation": "Type {confirmation} in the box below to confirm.", - "message.active-users": "{x} هم اکنون {x, plural, one {یک} other {از میان}}", - "message.collected-data": "Collected data", - "message.confirm-delete": "آیا مطمئن هستید می‌خواهید {target} را حذف کنید?", - "message.confirm-leave": "Are you sure you want to leave {target}?", - "message.confirm-remove": "Are you sure you want to remove {target}?", - "message.confirm-reset": "آیا از بازنشانی آمار {target} مطمئن هستید?", - "message.delete-team-warning": "Deleting a team will also delete all team websites.", - "message.delete-website-warning": "همه‌ی داده‌های مرتبط هم حذف خواهد شد.", + "label.window": "پنجره", + "label.yesterday": "دیروز", + "message.action-confirmation": "برای تأیید این عملیات، لطفاً {confirmation} را تایپ کنید.", + "message.active-users": "{x} فعلی {x, plural, one {یک} other {از میان}}", + "message.collected-data": "داده‌های جمع‌آوری شده", + "message.confirm-delete": "آیا مطمئن هستید می‌خواهید {target} را حذف کنید؟", + "message.confirm-leave": "آیا مطمئن هستید می‌خواهید از {target} خارج شوید؟", + "message.confirm-remove": "آیا مطمئن هستید می‌خواهید {target} را حذف کنید؟", + "message.confirm-reset": "آیا مطمئن هستید می‌خواهید {target} را بازنشانی کنید؟", + "message.delete-team-warning": "با حذف تیم، تمامی وب‌سایت‌های تیم هم حذف خواهند شد.", + "message.delete-website-warning": "همه‌ی داده‌های وب‌سایت هم حذف خواهد شد.", "message.error": "مشکلی پیش آمده است.", - "message.event-log": "{event} on {url}", + "message.event-log": "{event} در {url}", "message.go-to-settings": "رفتن به تنظیمات", "message.incorrect-username-password": "نام کاربری / رمز نادرست است.", - "message.invalid-domain": "دامنه‌ی نامعتبر", - "message.min-password-length": "Minimum length of {n} characters", - "message.new-version-available": "A new version of Umami {version} is available!", + "message.invalid-domain": "دامنه نامعتبر است.", + "message.min-password-length": "حداقل طول {n} کاراکتر است.", + "message.new-version-available": "نسخه‌ی جدیدی از Umami {version} در دسترس است.", "message.no-data-available": "اطلاعاتی موجود نیست.", - "message.no-event-data": "No event data is available.", + "message.no-event-data": "هیچ داده‌ای برای این رویداد وجود ندارد.", "message.no-match-password": "رمزها یکسان نیستند", - "message.no-results-found": "No results were found.", - "message.no-team-websites": "This team does not have any websites.", - "message.no-teams": "You have not created any teams.", - "message.no-users": "There are no users.", + "message.no-results-found": "نتیجه‌ای یافت نشد.", + "message.no-team-websites": "هیچ وب‌سایتی برای این تیم وجود ندارد.", + "message.no-teams": "شما هیچ تیمی را ایجاد نکرده‌اید.", + "message.no-users": "هیچ کاربری وجود ندارد.", "message.no-websites-configured": "شما هیچ وب‌سایتی را پیکربندی نکرده‌اید.", "message.page-not-found": "صفحه یافت نشد.", - "message.reset-website": "To reset this website, type {confirmation} in the box below to confirm.", - "message.reset-website-warning": "تمامی آمارهای این وب‌سایت حذف خواهد شد اما tracking code بدون تغییر باقی می‌ماند.", - "message.saved": "با موفقیت ذخیره شد.", - "message.share-url": "این URL به اشتراک گذاشته شده عمومی برای {target} است.", - "message.team-already-member": "You are already a member of the team.", - "message.team-not-found": "Team not found.", - "message.team-websites-info": "Websites can be viewed by anyone on the team.", + "message.reset-website": "برای بازنشانی وب‌سایت، لطفاً {confirmation} را تایپ کنید.", + "message.reset-website-warning": "تمامی آمارهای این وب‌سایت حذف خواهد شد اما کدهای رهگیری بدون تغییر باقی می‌ماند.", + "message.saved": "ذخیره شد.", + "message.share-url": "آمار وب‌سایت شما به صورت عمومی در آدرس زیر قابل مشاهده است.", + "message.team-already-member": "شما از قبل عضو این تیم هستید.", + "message.team-not-found": "تیم یافت نشد.", + "message.team-websites-info": "وب‌سایت‌ها توسط تمامی اعضای تیم قابل مشاهده هستند.", "message.tracking-code": "کد رهگیری", - "message.transfer-team-website-to-user": "Transfer this website to your account?", - "message.transfer-user-website-to-team": "Select the team to transfer this website to.", - "message.transfer-website": "Transfer website ownership to your account or another team.", - "message.triggered-event": "Triggered event", - "message.user-deleted": "User deleted.", - "message.viewed-page": "Viewed page", + "message.transfer-team-website-to-user": "آیا می‌خواهید این وب‌سایت را به حساب خود منتقل کنید؟", + "message.transfer-user-website-to-team": "تیم مورد نظر را برای انتقال وب‌سایت انتخاب کنید.", + "message.transfer-website": "مالکیت وب‌سایت را به حساب خودت یا یک تیم دیگر منتقل کنید.", + "message.triggered-event": "رویداد فعال شده", + "message.user-deleted": "کاربر حذف شد.", + "message.viewed-page": "صفحه مشاهده شد", "message.visitor-log": "بازدیدکننده از کشور {country} با مروگر {browser} در {os} {device}", - "message.visitors-dropped-off": "Visitors dropped off" + "message.visitors-dropped-off": "ریزش بازدیدکننده‌ها" } From 64312d259d82fb155c1b9b13aa11bce41537b7d3 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Sat, 28 Dec 2024 02:03:25 -0800 Subject: [PATCH 3/3] Return proper response. --- src/pages/api/send.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/api/send.ts b/src/pages/api/send.ts index e2a450b723..cbcacae515 100644 --- a/src/pages/api/send.ts +++ b/src/pages/api/send.ts @@ -103,7 +103,7 @@ export default async (req: NextApiRequestCollect, res: NextApiResponse) => { const session = req.session; if (!session?.id || !session?.websiteId) { - return; + return ok(res, {}); } const iat = Math.floor(new Date().getTime() / 1000);