diff --git a/web/src/components/save/buttons/DownloadButton.svelte b/web/src/components/save/buttons/DownloadButton.svelte index 171a2f82..96dea5a5 100644 --- a/web/src/components/save/buttons/DownloadButton.svelte +++ b/web/src/components/save/buttons/DownloadButton.svelte @@ -2,15 +2,13 @@ import '@fontsource-variable/noto-sans-mono'; import API from "$lib/api"; + import device from '$lib/device'; export let url: string; $: buttonText = '>>'; $: isDisabled = false; - const ua = navigator.userAgent.toLowerCase(); - const isIOS = ua.includes("iphone os") || (ua.includes("mac os") && navigator.maxTouchPoints > 0); - const changeDownloadButton = (state: string) => { isDisabled = true; switch(state) { @@ -37,7 +35,7 @@ } const downloadFile = (url: string) => { - if (isIOS) { + if (device.isIOS) { return navigator?.share({ url }).catch(() => {}); } else { return window.open(url, '_blank'); diff --git a/web/src/lib/device.ts b/web/src/lib/device.ts new file mode 100644 index 00000000..e3a67feb --- /dev/null +++ b/web/src/lib/device.ts @@ -0,0 +1,13 @@ +const ua = navigator.userAgent.toLowerCase(); + +const isIOS = ua.includes("iphone os") || (ua.includes("mac os") && navigator.maxTouchPoints > 0); +const isAndroid = ua.includes("android") || ua.includes("diordna"); +const isMobile = isIOS || isAndroid; + +const deviceInfo = { + isIOS, + isAndroid, + isMobile, +} + +export default deviceInfo;