Skip to content

Commit 38a2470

Browse files
authored
Merge pull request #4098 from dpalou/MOBILE-4470
MOBILE-4470 location: Improve handling approximate location
2 parents 68bd095 + 1e28512 commit 38a2470

File tree

2 files changed

+12
-46
lines changed

2 files changed

+12
-46
lines changed

cordova-plugin-moodleapp/src/ts/plugins/Diagnostic.ts

Lines changed: 11 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,20 @@ export class Diagnostic {
116116
permission.accessFineLocation,
117117
permission.accessBackgroundLocation,
118118
]).then(statuses => {
119+
const coarseStatus = statuses[permission.accessCoarseLocation];
120+
const fineStatus = statuses[permission.accessFineLocation];
119121
const backgroundStatus = typeof statuses[permission.accessBackgroundLocation] !== 'undefined' ?
120122
statuses[permission.accessBackgroundLocation] : true;
121123

122-
let status = this.combinePermissionStatuses({
123-
[permission.accessCoarseLocation]: statuses[permission.accessCoarseLocation],
124-
[permission.accessFineLocation]: statuses[permission.accessFineLocation],
125-
});
126-
if (status === permissionStatus.granted && backgroundStatus !== permissionStatus.granted) {
127-
status = permissionStatus.grantedWhenInUse;
124+
let status: string = permissionStatus.notRequested;
125+
126+
if (coarseStatus === permissionStatus.granted || fineStatus === permissionStatus.granted) {
127+
status = backgroundStatus === permissionStatus.granted ?
128+
permissionStatus.granted : permissionStatus.grantedWhenInUse;
129+
} else if (coarseStatus === permissionStatus.deniedOnce || fineStatus === permissionStatus.deniedOnce) {
130+
status = permissionStatus.deniedOnce;
131+
} else if (coarseStatus === permissionStatus.deniedAlways || fineStatus === permissionStatus.deniedAlways) {
132+
status = permissionStatus.deniedAlways;
128133
}
129134

130135
resolve(status);
@@ -204,45 +209,6 @@ export class Diagnostic {
204209
});
205210
}
206211

207-
/**
208-
* Given a list of permissions and their statuses, returns the combined status.
209-
*
210-
* @param statuses Permissions with statuses.
211-
* @returns Combined status.
212-
*/
213-
protected combinePermissionStatuses(statuses: Record<string, string>): string {
214-
if (this.anyStatusIs(statuses, permissionStatus.deniedAlways)) {
215-
return permissionStatus.deniedAlways;
216-
}
217-
218-
if (this.anyStatusIs(statuses, permissionStatus.deniedOnce)) {
219-
return permissionStatus.deniedOnce;
220-
}
221-
222-
if (this.anyStatusIs(statuses, permissionStatus.granted)) {
223-
return permissionStatus.granted;
224-
}
225-
226-
return permissionStatus.notRequested;
227-
}
228-
229-
/**
230-
* Check if any of the permissions in the statuses object has the specified status.
231-
*
232-
* @param statuses Permissions with status for each permission.
233-
* @param status Status to check.
234-
* @returns True if any permission has the specified status.
235-
*/
236-
protected anyStatusIs(statuses: Record<string, string>, status: string): boolean {
237-
for (const permission in statuses) {
238-
if (statuses[permission] === status) {
239-
return true;
240-
}
241-
}
242-
243-
return false;
244-
}
245-
246212
/**
247213
* Android only. Requests app to be granted authorisation for a runtime permission.
248214
*

src/core/services/geolocation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ export class CoreGeolocationProvider {
125125
case diagnostic.permissionStatus.granted:
126126
case diagnostic.permissionStatus.grantedWhenInUse:
127127
// Location is authorized.
128-
return;
128+
return;
129129

130130
case diagnostic.permissionStatus.deniedOnce:
131131
if (failOnDeniedOnce) {

0 commit comments

Comments
 (0)