diff --git a/src/components/PageSponsor.tsx b/src/components/PageSponsor.tsx index 4377fab29..1f44fa3a2 100644 --- a/src/components/PageSponsor.tsx +++ b/src/components/PageSponsor.tsx @@ -4,6 +4,7 @@ import { sponsorHidden } from '../stores/page'; import { useStore } from '@nanostores/react'; import { X } from 'lucide-react'; import { setViewSponsorCookie } from '../lib/jwt'; +import { isMobile } from '../lib/is-mobile'; export type PageSponsorType = { company: string; @@ -50,6 +51,7 @@ export function PageSponsor(props: PageSponsorProps) { `${import.meta.env.PUBLIC_API_URL}/v1-get-sponsor`, { href: window.location.pathname, + mobile: isMobile() ? 'true' : 'false', }, ); @@ -75,9 +77,15 @@ export function PageSponsor(props: PageSponsorProps) { }; const clickSponsor = async (sponsorId: string) => { - const { response, error } = await httpPatch<{ status: 'ok' }>( + const clickUrl = new URL( `${import.meta.env.PUBLIC_API_URL}/v1-view-sponsor/${sponsorId}`, - {}, + ); + + const { response, error } = await httpPatch<{ status: 'ok' }>( + clickUrl.toString(), + { + mobile: isMobile() ? true : false, + }, ); if (error || !response) { diff --git a/src/lib/is-mobile.ts b/src/lib/is-mobile.ts new file mode 100644 index 000000000..914b4b401 --- /dev/null +++ b/src/lib/is-mobile.ts @@ -0,0 +1,27 @@ +export function isAndroid(): boolean { + return ( + typeof navigator !== 'undefined' && /android/i.test(navigator.userAgent) + ); +} + +export function isSmallIOS(): boolean { + return ( + typeof navigator !== 'undefined' && /iPhone|iPod/.test(navigator.userAgent) + ); +} + +export function isLargeIOS(): boolean { + return ( + typeof navigator !== 'undefined' && + (/iPad/.test(navigator.userAgent) || + (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) + ); +} + +export function isIOS(): boolean { + return isSmallIOS() || isLargeIOS(); +} + +export function isMobile(): boolean { + return isAndroid() || isIOS(); +}