git
This commit is contained in:
34
src/lib/analytics/parseUserAgent.ts
Normal file
34
src/lib/analytics/parseUserAgent.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
// پارسر سبک UA — بدون وابستگی خارجی؛ فقط چیزهایی که برای گزارش دستگاه/مرورگر/سیستمعامل
|
||||
// توی آنالیتیکس لازمه (نه یک UA-parser کامل)
|
||||
export type ParsedUserAgent = {
|
||||
device: string;
|
||||
browser: string;
|
||||
os: string;
|
||||
};
|
||||
|
||||
export function parseUserAgent(ua: string): ParsedUserAgent {
|
||||
const s = ua || "";
|
||||
|
||||
let os = "Other";
|
||||
if (/windows/i.test(s)) os = "Windows";
|
||||
else if (/iphone|ipad|ipod/i.test(s)) os = "iOS";
|
||||
else if (/android/i.test(s)) os = "Android";
|
||||
else if (/mac os x/i.test(s)) os = "macOS";
|
||||
else if (/linux/i.test(s)) os = "Linux";
|
||||
|
||||
let browser = "Other";
|
||||
if (/edg\//i.test(s)) browser = "Edge";
|
||||
else if (/samsungbrowser/i.test(s)) browser = "Samsung Internet";
|
||||
else if (/firefox\//i.test(s)) browser = "Firefox";
|
||||
else if (/crios\//i.test(s)) browser = "Chrome (iOS)";
|
||||
else if (/fxios\//i.test(s)) browser = "Firefox (iOS)";
|
||||
else if (/chrome\//i.test(s)) browser = "Chrome";
|
||||
else if (/version\/.+safari/i.test(s)) browser = "Safari";
|
||||
else if (/safari\//i.test(s)) browser = "Safari";
|
||||
|
||||
let device = "Desktop";
|
||||
if (/ipad|tablet/i.test(s)) device = "Tablet";
|
||||
else if (/mobile|iphone|android/i.test(s)) device = "Mobile";
|
||||
|
||||
return { device, browser, os };
|
||||
}
|
||||
Reference in New Issue
Block a user