@gamealytics/web-sdk
Version:
GameAlytics SDK for Web/Node.js - Cross-platform analytics for game developers
54 lines (53 loc) • 2.04 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.PermissionManager = void 0;
/**
* Simplified permission manager for GameAlytics Web SDK
* - Internet permission: Available by default in browsers, no check needed
* - Storage permission: localStorage/sessionStorage available by default, no check needed
* - Location permission: Optional, adds latitude/longitude to events if available
* - No automatic permission requests - SDK ready only if permissions available
*/
class PermissionManager {
/**
* Check if geolocation is available and permitted (optional)
*/
static hasLocationPermission() {
return 'geolocation' in navigator;
}
/**
* Initialize location services if permissions are available
*/
static initializeLocation() {
if (!this.locationInitialized && this.hasLocationPermission()) {
navigator.geolocation.getCurrentPosition((position) => {
this.currentLocation = position;
}, (error) => {
// Silent failure - location is optional
console.debug('GameAlytics SDK: Location access denied or unavailable');
}, {
enableHighAccuracy: false,
timeout: 10000,
maximumAge: 300000 // 5 minutes
});
this.locationInitialized = true;
}
}
/**
* Get location data to add to events (if available)
*/
static getLocationData() {
const locationData = {};
if (this.hasLocationPermission()) {
this.initializeLocation();
if (this.currentLocation) {
locationData.latitude = this.currentLocation.coords.latitude.toString();
locationData.longitude = this.currentLocation.coords.longitude.toString();
}
}
return locationData;
}
}
exports.PermissionManager = PermissionManager;
PermissionManager.currentLocation = null;
PermissionManager.locationInitialized = false;
;