use-platform-os hook optimization to not cause re renders (#5453)

This commit is contained in:
rahulramesha 2024-08-30 19:05:22 +05:30 committed by GitHub
parent 4598b1b49d
commit c1d3da0cab
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 33 deletions

View file

@ -1,15 +1,6 @@
import { useEffect, useState } from "react";
export const usePlatformOS = () => {
// states
const [isMobile, setIsMobile] = useState(false);
useEffect(() => {
const userAgent = window.navigator.userAgent;
const isMobile = /iPhone|iPad|iPod|Android/i.test(userAgent);
if (isMobile) setIsMobile(isMobile);
}, []);
return { isMobile };
};

View file

@ -1,29 +1,20 @@
"use client";
import { useEffect, useState } from "react";
export const usePlatformOS = () => {
const [isMobile, setIsMobile] = useState(false);
const [platform, setPlatform] = useState("");
useEffect(() => {
const userAgent = window.navigator.userAgent;
const isMobile = /iPhone|iPad|iPod|Android/i.test(userAgent);
let detectedPlatform = "";
let platform = "";
if (isMobile) {
setIsMobile(isMobile)
} else {
if (!isMobile) {
if (userAgent.indexOf("Win") !== -1) {
detectedPlatform = "Windows";
platform = "Windows";
} else if (userAgent.indexOf("Mac") !== -1) {
detectedPlatform = "MacOS";
platform = "MacOS";
} else if (userAgent.indexOf("Linux") !== -1) {
detectedPlatform = "Linux";
platform = "Linux";
} else {
detectedPlatform = "Unknown";
platform = "Unknown";
}
}
};
setPlatform(detectedPlatform);
}, []);
return { isMobile, platform };
};