134 lines
4.9 KiB
TypeScript
134 lines
4.9 KiB
TypeScript
// (C) Copyright 2015 Moodle Pty Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
// (C) Copyright 2015 Moodle Pty Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
// (C) Copyright 2015 Moodle Pty Ltd.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
/**
|
|
* Checks whether device hardware features are enabled or available to the app, e.g. camera, GPS, wifi
|
|
*/
|
|
export class Diagnostic {
|
|
|
|
/**
|
|
* Constants for requesting and reporting the various permission states.
|
|
*/
|
|
declare permissionStatus: typeof permissionStatus;
|
|
|
|
/**
|
|
* ANDROID ONLY
|
|
* "Dangerous" permissions that need to be requested at run-time (Android 6.0/API 23 and above)
|
|
* See http://developer.android.com/guide/topics/security/permissions.html#perm-groups
|
|
*
|
|
*/
|
|
declare permission: typeof permission;
|
|
|
|
constructor() {
|
|
this.permissionStatus = permissionStatus;
|
|
this.permission = permission;
|
|
}
|
|
|
|
isLocationEnabled(): Promise<boolean> {
|
|
return new Promise<boolean>((resolve, reject) => cordova.exec(resolve, reject, 'Diagnostic_Location', 'isLocationEnabled'));
|
|
}
|
|
|
|
switchToLocationSettings(): Promise<void> {
|
|
return new Promise<void>((resolve, reject) =>
|
|
cordova.exec(resolve, reject, 'Diagnostic_Location', 'switchToLocationSettings'));
|
|
}
|
|
|
|
switchToSettings(): Promise<void> {
|
|
return new Promise<void>((resolve, reject) => cordova.exec(resolve, reject, 'Diagnostic', 'switchToSettings'));
|
|
}
|
|
|
|
getLocationAuthorizationStatus(): Promise<unknown> {
|
|
return new Promise<unknown>((resolve, reject) =>
|
|
cordova.exec(resolve, reject, 'Diagnostic_Location', 'getLocationAuthorizationStatus'));
|
|
}
|
|
|
|
requestLocationAuthorization(): Promise<void> {
|
|
return new Promise<void>((resolve, reject) =>
|
|
cordova.exec(resolve, reject, 'Diagnostic_Location', 'requestLocationAuthorization'));
|
|
}
|
|
|
|
requestMicrophoneAuthorization(): Promise<string> {
|
|
return new Promise<string>((resolve, reject) =>
|
|
cordova.exec(resolve, reject, 'Diagnostic_Microphone', 'requestMicrophoneAuthorization'));
|
|
}
|
|
|
|
}
|
|
|
|
const permission = {
|
|
acceptHandover: 'ACCEPT_HANDOVER',
|
|
accessBackgroundLocation: 'ACCESS_BACKGROUND_LOCATION',
|
|
accessCoarseLocation: 'ACCESS_COARSE_LOCATION',
|
|
accessFineLocation: 'ACCESS_FINE_LOCATION',
|
|
accessMediaLocation: 'ACCESS_MEDIA_LOCATION',
|
|
bodySensors: 'BODY_SENSORS',
|
|
bodySensorsBackground: 'BODY_SENSORS_BACKGROUND',
|
|
getAccounts: 'GET_ACCOUNTS',
|
|
readExternalStorage: 'READ_EXTERNAL_STORAGE',
|
|
readMediaAudio: 'READ_MEDIA_AUDIO',
|
|
readMediaImages: 'READ_MEDIA_IMAGES',
|
|
readMediaVideo: 'READ_MEDIA_VIDEO',
|
|
readPhoneState: 'READ_PHONE_STATE',
|
|
readSms: 'READ_SMS',
|
|
receiveMms: 'RECEIVE_MMS',
|
|
receiveSms: 'RECEIVE_SMS',
|
|
receiveWapPush: 'RECEIVE_WAP_PUSH',
|
|
recordAudio: 'RECORD_AUDIO',
|
|
sendSms: 'SEND_SMS',
|
|
useSip: 'USE_SIP',
|
|
uwbRanging: 'UWB_RANGING',
|
|
writeExternalStorage: 'WRITE_EXTERNAL_STORAGE',
|
|
} as const;
|
|
|
|
const permissionStatus = {
|
|
// Android only
|
|
deniedOnce: 'DENIED_ONCE',
|
|
|
|
// iOS only
|
|
restricted: 'restricted',
|
|
ephimeral: 'ephemeral',
|
|
provisional: 'provisional',
|
|
|
|
// Both iOS and Android
|
|
granted: 'authorized' || 'GRANTED',
|
|
grantedWhenInUse: 'authorized_when_in_use',
|
|
notRequested: 'not_determined' || 'NOT_REQUESTED',
|
|
deniedAlways: 'denied_always' || 'DENIED_ALWAYS',
|
|
} as const;
|