/**
* @callback HKCallback
* @property {string} event - Name of event to fire in the window, 'validicOnHealthKitRecordsProcessed'
* @property {Object} payload - The payload of the event.
* @property {number} payload.recordType - Value of ValidicMobile.RecordType indicating type of
* records processed.
* @property {number} payload.count - Number of records processed.
*/
/**
* @callback HKHistoricalFetchCallback
* @property {string} {RecordType} - Number of records fetched of type ValidicMobile.RecordType. The property name is a string
* containing the numeric value from ValidicMobile.RecordType.
*/
// HealthKit related responses
/**
* Callback response from HealthKit.getSubscriptions
* @callback HKSampleTypesCallback
* @property {string[]} sampleTypes - Array of strings representing HealthKit sample types. Values match
* constants defined in ValidicMobile.HealthKit.SampleType.
*/
/**
* Callback response from HealthKit.setSubscriptions
* @callback HKSetSubscriptionsCallback
* @property {string[]} unknownIdentifiers - Array of strings representing HealthKit sample types which
* could not be subscribed to.
*/
document.addEventListener("deviceready", () => {
exports.HealthKit.setHealthKitListener();
});
/**
* @exports HealthKit
* Represents Validic HealthKit functionality.
*/
exports.HealthKit = {
/**
*
* @param {string[]} params - Array of Strings which map to sample types. See {@link HealthKit.SampleType}
* @param {HKSetSubscriptionsCallback} success - Subscriptions were set successfully
* @param {FailCallback} error - Invalid parameters were given
*/
setSubscriptions: function (params, success, error) {
cordova.exec(
success,
error,
"ValidicHealthKit",
"setHealthKitSubscriptions",
[params]
);
},
/**
* @param {HKSampleTypesCallback} success - Response containing array of currently subscribed sample types.
*/
getSubscriptions: function (success) {
cordova.exec(success, null, "ValidicHealthKit", "subscriptions", []);
},
/**
* Indicates the availability of HealthKit
* @param {AvailableCallback} callback - Callback function including whether healthkit is available for the platform
* the application is running on. For Android and iPad this callback will always contain {isAvailable: false}
*/
isHealthKitAvailable: function (callback) {
cordova.exec(
callback,
null,
"ValidicHealthKit",
"isHealthKitAvailable",
[]
);
},
/**
* Initiate new queries against HealthKit.
*/
fetchLatestData: function (success) {
cordova.exec(success, null, "ValidicHealthKit", "fetchLatestData", []);
},
/**
*
* @typedef HistoryOptions
* @param {HistoricalSet[]} historicalSets
* @param {string} from - ISO 8601 Date String in the format yyyy-MM-dd for the start of the history query. Default is 180 days in the past.
* @param {string} to - ISO 8601 Date String in the format yyyy-MM-dd for the end of the history query. Default is today.
*
*/
/**
* Fetch historical data for the specified sets across the specified dates.
* @param {HistoryOptions | HistoricalSet[]} historyOptions - HistoricalSet and Date query options
* @param {HKHistoricalFetchCallback} success - Response containing count of records for each record type keyed by
record type values from ValidicMobile.RecordType.
* @param {FailCallback} error - Error response if invalid historical sets are provided.
*/
fetchHistoricalSets: function (historyOptions, success, error) {
if (Array.isArray(historyOptions)) {
cordova.exec(
success,
error,
"ValidicHealthKit",
"fetchHistoricalSets",
[{ historicalSets: historyOptions }]
);
} else {
cordova.exec(
success,
error,
"ValidicHealthKit",
"fetchHistoricalSets",
[historyOptions]
);
}
},
/**
* Returns sample types associated with a subscription set. See ValidicMobile library documentation for description of sets.
* @param {SubscriptionSet} subscriptionSetID - String representing one of the available subscription sets from SubscriptionSet.
* @param {HKSampleTypesCallback} success - Response containing array of sample types for given subscription set.
* @param {FailCallback} error - Error response if invalid subscription set provided.
*/
getSampleTypesForSubscriptionSet: function (
subscriptionSetID,
success,
error
) {
cordova.exec(
success,
error,
"ValidicHealthKit",
"sampleTypesForSubscriptionSet",
[subscriptionSetID]
);
},
/**
* Returns sample types associated with a record type.
* @deprecated getSampleTypesForRecordType is deprecated, please use getSampleTypesForSubscriptionSet instead.
* @param {RecordType} recordType - Number representing one of the available record types from RecordType.
* @param {HKSampleTypesCallback} success - Response containing array of sample types for given record type.
* @param {FailCallback} error - Error response is invalid subscription set provided.
*/
getSampleTypesForRecordType: function (recordType, success, error) {
console.warn(
"getSampleTypesForRecordType is deprecated, please use getSampleTypesForSubscriptionSet instead."
);
cordova.exec(
success,
error,
"ValidicHealthKit",
"sampleTypesForRecordType",
[recordType]
);
},
/**
* Registers listener for HealthKit records processed event. It is recommended to use event listeners instead.
* @param {HKCallback} success - Function invoked when HealthKit records have been processed and submitted.
*/
setHealthKitListener: function (success) {
var successful = function (obj) {
if (success != null && success != "undefined") {
success(obj);
}
if (obj.hasOwnProperty("event")) {
cordova.fireWindowEvent(obj.event, obj.payload);
}
};
cordova.exec(
successful,
null,
"ValidicHealthKit",
"setHealthKitListener",
[]
);
},
/**
* @enum {string} HealthKit record processed event name.
*/
EventName: {
ON_HEALTHKIT_RECORD_PROCESSED: "validicOnHealthKitRecordsProcessed",
},
/**
* Identifiers for available subscription sets.
* @enum {number}
*/
SubscriptionSet: {
ROUTINE: 0,
DIABETES: 1,
WEIGHT: 2,
FITNESS: 3,
SLEEP: 4,
BASIC_NUTRITION: 5,
REPRODUCTIVE_HEALTH: 6,
BIOMETRICS: 7,
},
/**
* Identifiers for available historical fetch sets.
* @enum {string}
*/
HistoricalSet: {
ROUTINE: "routine",
FITNESS: "fitness",
},
/**
String constants representing HealthKit sample types.
@enum {string}
*/
SampleType: {
HKQuantityTypeIdentifierBodyMassIndex:
"HKQuantityTypeIdentifierBodyMassIndex",
HKQuantityTypeIdentifierBodyFatPercentage:
"HKQuantityTypeIdentifierBodyFatPercentage",
HKQuantityTypeIdentifierHeight: "HKQuantityTypeIdentifierHeight",
HKQuantityTypeIdentifierBodyMass: "HKQuantityTypeIdentifierBodyMass",
HKQuantityTypeIdentifierLeanBodyMass:
"HKQuantityTypeIdentifierLeanBodyMass",
HKQuantityTypeIdentifierStepCount: "HKQuantityTypeIdentifierStepCount",
HKQuantityTypeIdentifierDistanceWalkingRunning:
"HKQuantityTypeIdentifierDistanceWalkingRunning",
HKQuantityTypeIdentifierDistanceCycling:
"HKQuantityTypeIdentifierDistanceCycling",
HKQuantityTypeIdentifierBasalEnergyBurned:
"HKQuantityTypeIdentifierBasalEnergyBurned",
HKQuantityTypeIdentifierActiveEnergyBurned:
"HKQuantityTypeIdentifierActiveEnergyBurned",
HKQuantityTypeIdentifierFlightsClimbed:
"HKQuantityTypeIdentifierFlightsClimbed",
HKQuantityTypeIdentifierNikeFuel: "HKQuantityTypeIdentifierNikeFuel",
HKQuantityTypeIdentifierAppleExerciseTime:
"HKQuantityTypeIdentifierAppleExerciseTime",
HKQuantityTypeIdentifierHeartRate: "HKQuantityTypeIdentifierHeartRate",
HKQuantityTypeIdentifierBodyTemperature:
"HKQuantityTypeIdentifierBodyTemperature",
HKQuantityTypeIdentifierBasalBodyTemperature:
"HKQuantityTypeIdentifierBasalBodyTemperature",
HKQuantityTypeIdentifierBloodPressureSystolic:
"HKQuantityTypeIdentifierBloodPressureSystolic",
HKQuantityTypeIdentifierBloodPressureDiastolic:
"HKQuantityTypeIdentifierBloodPressureDiastolic",
HKQuantityTypeIdentifierRespiratoryRate:
"HKQuantityTypeIdentifierRespiratoryRate",
HKQuantityTypeIdentifierOxygenSaturation:
"HKQuantityTypeIdentifierOxygenSaturation",
HKQuantityTypeIdentifierPeripheralPerfusionIndex:
"HKQuantityTypeIdentifierPeripheralPerfusionIndex",
HKQuantityTypeIdentifierBloodGlucose:
"HKQuantityTypeIdentifierBloodGlucose",
HKQuantityTypeIdentifierNumberOfTimesFallen:
"HKQuantityTypeIdentifierNumberOfTimesFallen",
HKQuantityTypeIdentifierElectrodermalActivity:
"HKQuantityTypeIdentifierElectrodermalActivity",
HKQuantityTypeIdentifierInhalerUsage:
"HKQuantityTypeIdentifierInhalerUsage",
HKQuantityTypeIdentifierBloodAlcoholContent:
"HKQuantityTypeIdentifierBloodAlcoholContent",
HKQuantityTypeIdentifierForcedVitalCapacity:
"HKQuantityTypeIdentifierForcedVitalCapacity",
HKQuantityTypeIdentifierForcedExpiratoryVolume1:
"HKQuantityTypeIdentifierForcedExpiratoryVolume1",
HKQuantityTypeIdentifierPeakExpiratoryFlowRate:
"HKQuantityTypeIdentifierPeakExpiratoryFlowRate",
HKQuantityTypeIdentifierDietaryFatTotal:
"HKQuantityTypeIdentifierDietaryFatTotal",
HKQuantityTypeIdentifierDietaryFatPolyunsaturated:
"HKQuantityTypeIdentifierDietaryFatPolyunsaturated",
HKQuantityTypeIdentifierDietaryFatMonounsaturated:
"HKQuantityTypeIdentifierDietaryFatMonounsaturated",
HKQuantityTypeIdentifierDietaryFatSaturated:
"HKQuantityTypeIdentifierDietaryFatSaturated",
HKQuantityTypeIdentifierDietaryCholesterol:
"HKQuantityTypeIdentifierDietaryCholesterol",
HKQuantityTypeIdentifierDietarySodium:
"HKQuantityTypeIdentifierDietarySodium",
HKQuantityTypeIdentifierDietaryCarbohydrates:
"HKQuantityTypeIdentifierDietaryCarbohydrates",
HKQuantityTypeIdentifierDietaryFiber:
"HKQuantityTypeIdentifierDietaryFiber",
HKQuantityTypeIdentifierDietarySugar:
"HKQuantityTypeIdentifierDietarySugar",
HKQuantityTypeIdentifierDietaryEnergyConsumed:
"HKQuantityTypeIdentifierDietaryEnergyConsumed",
HKQuantityTypeIdentifierDietaryProtein:
"HKQuantityTypeIdentifierDietaryProtein",
HKQuantityTypeIdentifierDietaryVitaminA:
"HKQuantityTypeIdentifierDietaryVitaminA",
HKQuantityTypeIdentifierDietaryVitaminB6:
"HKQuantityTypeIdentifierDietaryVitaminB6",
HKQuantityTypeIdentifierDietaryVitaminB12:
"HKQuantityTypeIdentifierDietaryVitaminB12",
HKQuantityTypeIdentifierDietaryVitaminC:
"HKQuantityTypeIdentifierDietaryVitaminC",
HKQuantityTypeIdentifierDietaryVitaminD:
"HKQuantityTypeIdentifierDietaryVitaminD",
HKQuantityTypeIdentifierDietaryVitaminE:
"HKQuantityTypeIdentifierDietaryVitaminE",
HKQuantityTypeIdentifierDietaryVitaminK:
"HKQuantityTypeIdentifierDietaryVitaminK",
HKQuantityTypeIdentifierDietaryCalcium:
"HKQuantityTypeIdentifierDietaryCalcium",
HKQuantityTypeIdentifierDietaryIron:
"HKQuantityTypeIdentifierDietaryIron",
HKQuantityTypeIdentifierDietaryThiamin:
"HKQuantityTypeIdentifierDietaryThiamin",
HKQuantityTypeIdentifierDietaryRiboflavin:
"HKQuantityTypeIdentifierDietaryRiboflavin",
HKQuantityTypeIdentifierDietaryNiacin:
"HKQuantityTypeIdentifierDietaryNiacin",
HKQuantityTypeIdentifierDietaryFolate:
"HKQuantityTypeIdentifierDietaryFolate",
HKQuantityTypeIdentifierDietaryBiotin:
"HKQuantityTypeIdentifierDietaryBiotin",
HKQuantityTypeIdentifierDietaryPantothenicAcid:
"HKQuantityTypeIdentifierDietaryPantothenicAcid",
HKQuantityTypeIdentifierDietaryPhosphorus:
"HKQuantityTypeIdentifierDietaryPhosphorus",
HKQuantityTypeIdentifierDietaryIodine:
"HKQuantityTypeIdentifierDietaryIodine",
HKQuantityTypeIdentifierDietaryMagnesium:
"HKQuantityTypeIdentifierDietaryMagnesium",
HKQuantityTypeIdentifierDietaryZinc:
"HKQuantityTypeIdentifierDietaryZinc",
HKQuantityTypeIdentifierDietarySelenium:
"HKQuantityTypeIdentifierDietarySelenium",
HKQuantityTypeIdentifierDietaryCopper:
"HKQuantityTypeIdentifierDietaryCopper",
HKQuantityTypeIdentifierDietaryManganese:
"HKQuantityTypeIdentifierDietaryManganese",
HKQuantityTypeIdentifierDietaryChromium:
"HKQuantityTypeIdentifierDietaryChromium",
HKQuantityTypeIdentifierDietaryMolybdenum:
"HKQuantityTypeIdentifierDietaryMolybdenum",
HKQuantityTypeIdentifierDietaryChloride:
"HKQuantityTypeIdentifierDietaryChloride",
HKQuantityTypeIdentifierDietaryPotassium:
"HKQuantityTypeIdentifierDietaryPotassium",
HKQuantityTypeIdentifierDietaryCaffeine:
"HKQuantityTypeIdentifierDietaryCaffeine",
HKQuantityTypeIdentifierDietaryWater:
"HKQuantityTypeIdentifierDietaryWater",
HKQuantityTypeIdentifierUVExposure:
"HKQuantityTypeIdentifierUVExposure",
HKCategoryTypeIdentifierSleepAnalysis:
"HKCategoryTypeIdentifierSleepAnalysis",
HKCategoryTypeIdentifierAppleStandHour:
"HKCategoryTypeIdentifierAppleStandHour",
HKCategoryTypeIdentifierCervicalMucusQuality:
"HKCategoryTypeIdentifierCervicalMucusQuality",
HKCategoryTypeIdentifierOvulationTestResult:
"HKCategoryTypeIdentifierOvulationTestResult",
HKCategoryTypeIdentifierMenstrualFlow:
"HKCategoryTypeIdentifierMenstrualFlow",
HKCategoryTypeIdentifierIntermenstrualBleeding:
"HKCategoryTypeIdentifierIntermenstrualBleeding",
HKCategoryTypeIdentifierSexualActivity:
"HKCategoryTypeIdentifierSexualActivity",
HKQuantityTypeIdentifierPushCount: "HKQuantityTypeIdentifierPushCount",
HKQuantityTypeIdentifierDistanceWheelchair:
"HKQuantityTypeIdentifierDistanceWheelchair",
HKCategoryTypeIdentifierMindfulSession:
"HKCategoryTypeIdentifierMindfulSession",
HKQuantityTypeIdentifierSwimmingStrokeCount:
"HKQuantityTypeIdentifierSwimmingStrokeCount",
HKQuantityTypeIdentifierDistanceSwimming:
"HKQuantityTypeIdentifierDistanceSwimming",
HKCorrelationTypeIdentifierBloodPressure:
"HKCorrelationTypeIdentifierBloodPressure",
HKCorrelationTypeIdentifierFood: "HKCorrelationTypeIdentifierFood",
HKWorkoutTypeIdentifier: "HKWorkoutTypeIdentifier",
},
};