UNPKG

@gamealytics/web-sdk

Version:

GameAlytics SDK for Web/Node.js - Cross-platform analytics for game developers

54 lines (53 loc) 2.04 kB
"use strict"; 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;