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