39 lines
893 B
TypeScript
39 lines
893 B
TypeScript
import { defineStore } from "pinia";
|
|
|
|
interface GeolocationOptions {
|
|
maximumAge?: number;
|
|
timeout?: number;
|
|
enableHighAccuracy?: boolean;
|
|
}
|
|
export const useStoreLocation = defineStore("location", () => {
|
|
function get(options?: GeolocationOptions): Promise<GeolocationPosition> {
|
|
return new Promise((resolve, reject) => {
|
|
// Check if geolocation is supported by the browser
|
|
if (!navigator.geolocation) {
|
|
reject(new Error("Geolocation is not supported by your browser"));
|
|
return;
|
|
}
|
|
|
|
// Default options if none provided
|
|
const geolocationOptions =
|
|
options ||
|
|
{
|
|
/*
|
|
enableHighAccuracy: true,
|
|
timeout: 60000,
|
|
maximumAge: 0,
|
|
*/
|
|
};
|
|
|
|
// Call the geolocation API
|
|
navigator.geolocation.getCurrentPosition(
|
|
(position) => resolve(position),
|
|
(error) => reject(error),
|
|
geolocationOptions,
|
|
);
|
|
});
|
|
}
|
|
return {
|
|
get,
|
|
};
|
|
});
|