Пользовательский крючок для получения широты и долготы и имени и версии ОС с использованием TypeScript [закрыто]Javascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Пользовательский крючок для получения широты и долготы и имени и версии ОС с использованием TypeScript [закрыто]

Сообщение Anonymous »

import { useState, useEffect } from "react";

interface GeolocationData {
latitude: number | null;
longitude: number | null;
osName: string;
osVersion: string;
error?: string;
}

const useGeolocationAndOS = (): GeolocationData => {
const [location, setLocation] = useState({
latitude: null,
longitude: null,
osName: "Unknown",
osVersion: "Unknown",
});

useEffect(() => {
// Get OS details
const userAgent = navigator.userAgent;
let osName = "Unknown";
let osVersion = "Unknown";

if (/Windows NT 10/.test(userAgent)) {
osName = "Windows";
osVersion = "10";
} else if (/Windows NT 6\.3/.test(userAgent)) {
osName = "Windows";
osVersion = "8.1";
} else if (/Windows NT 6\.2/.test(userAgent)) {
osName = "Windows";
osVersion = "8";
} else if (/Windows NT 6\.1/.test(userAgent)) {
osName = "Windows";
osVersion = "7";
} else if (/Mac OS X (\d+[_.]\d+)/.test(userAgent)) {
osName = "Mac OS";
osVersion = RegExp.$1.replace("_", ".");
} else if (/Android (\d+\.\d+)/.test(userAgent)) {
osName = "Android";
osVersion = RegExp.$1;
} else if (/iPhone OS (\d+_\d+)/.test(userAgent)) {
osName = "iOS";
osVersion = RegExp.$1.replace("_", ".");
}

setLocation((prev) => ({ ...prev, osName, osVersion }));

// Get Geolocation
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
(position) => {
setLocation((prev) => ({
...prev,
latitude: position.coords.latitude,
longitude: position.coords.longitude,
}));
},
(error) => {
setLocation((prev) => ({ ...prev, error: error.message }));
}
);
} else {
setLocation((prev) => ({ ...prev, error: "Geolocation is not supported" }));
}
}, []);

return location;
};

export default useGeolocationAndOS;


Подробнее здесь: https://stackoverflow.com/questions/794 ... -using-typ
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»