@@ -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 *
0 commit comments