forked from CIT/Vmeda.Online
		
	Merge pull request #3561 from dpalou/MOBILE-4239
MOBILE-4239 geolocation: Add some logging in geolocation service
This commit is contained in:
		
						commit
						15a9c74b28
					
				@ -22,10 +22,17 @@ import { CoreUtils } from './utils/utils';
 | 
			
		||||
import { CorePlatform } from './platform';
 | 
			
		||||
import { CoreSilentError } from '@classes/errors/silenterror';
 | 
			
		||||
import { CoreSubscriptions } from '@singletons/subscriptions';
 | 
			
		||||
import { CoreLogger } from '@singletons/logger';
 | 
			
		||||
 | 
			
		||||
@Injectable({ providedIn: 'root' })
 | 
			
		||||
export class CoreGeolocationProvider {
 | 
			
		||||
 | 
			
		||||
    protected logger: CoreLogger;
 | 
			
		||||
 | 
			
		||||
    constructor() {
 | 
			
		||||
        this.logger = CoreLogger.getInstance('CoreGeolocationProvider');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get current user coordinates.
 | 
			
		||||
     *
 | 
			
		||||
@ -34,16 +41,21 @@ export class CoreGeolocationProvider {
 | 
			
		||||
     */
 | 
			
		||||
    async getCoordinates(): Promise<Coordinates> {
 | 
			
		||||
        try {
 | 
			
		||||
            this.logger.log('Getting coordinates.');
 | 
			
		||||
            await this.authorizeLocation();
 | 
			
		||||
            await this.enableLocation();
 | 
			
		||||
            this.logger.log('Getting coordinates: authorized and enabled.');
 | 
			
		||||
 | 
			
		||||
            const result = await Geolocation.getCurrentPosition({
 | 
			
		||||
                enableHighAccuracy: true,
 | 
			
		||||
                timeout: 30000,
 | 
			
		||||
            });
 | 
			
		||||
            this.logger.log('Coordinates retrieved');
 | 
			
		||||
 | 
			
		||||
            return result.coords;
 | 
			
		||||
        } catch (error) {
 | 
			
		||||
            this.logger.log('Error getting coordinates.', error);
 | 
			
		||||
 | 
			
		||||
            if (this.isCordovaPermissionDeniedError(error)) {
 | 
			
		||||
                throw new CoreGeolocationError(CoreGeolocationErrorReason.PERMISSION_DENIED);
 | 
			
		||||
            }
 | 
			
		||||
@ -94,6 +106,8 @@ export class CoreGeolocationProvider {
 | 
			
		||||
     */
 | 
			
		||||
    protected async doAuthorizeLocation(failOnDeniedOnce: boolean = false): Promise<void> {
 | 
			
		||||
        const authorizationStatus = await Diagnostic.getLocationAuthorizationStatus();
 | 
			
		||||
        this.logger.log(`Authorize location: status ${authorizationStatus}`);
 | 
			
		||||
 | 
			
		||||
        switch (authorizationStatus) {
 | 
			
		||||
            case Diagnostic.permissionStatus.DENIED_ONCE:
 | 
			
		||||
                if (failOnDeniedOnce) {
 | 
			
		||||
@ -101,7 +115,9 @@ export class CoreGeolocationProvider {
 | 
			
		||||
                }
 | 
			
		||||
            // Fall through.
 | 
			
		||||
            case Diagnostic.permissionStatus.NOT_REQUESTED:
 | 
			
		||||
                this.logger.log('Request location authorization.');
 | 
			
		||||
                await this.requestLocationAuthorization();
 | 
			
		||||
                this.logger.log('Location authorization granted.');
 | 
			
		||||
                await CoreApp.waitForResume(500);
 | 
			
		||||
                await this.doAuthorizeLocation(true);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user