Source: validic-cordova-googlefit/www/validic-cordova-googlefit.js




var exec = require('cordova/exec');
var channel = require('cordova/channel')

channel.onCordovaReady.subscribe(function(){
    exec(
        function(recordSummary){
            cordova.fireDocumentEvent('validic:googlefit:onrecords', recordSummary)
        },
        function(error){
            cordova.fireDocumentEvent('validic:googlefit:onerror',error)
        },
        "ValidicGoogleFit",
        "registerListener",
        []
        )
})
/**
 * Googe Fit integration with the Validic Platform. Using this plugin an application 
 * can request to subscribe to data changes in Google Fit on behalf of the end user.
 * @exports GoogleFit
 */
exports.GoogleFit = {

    /**
     * Permission Result
     * @typedef {Object.<string,boolean>} PermissionResult
     */

    /**
     * @callback PermissionCallback
     * @param {PermissionResult} result
     */
    /**
     * @callback SubscriptionsCallback
     * @param {Array<DataType>} subscriptions
     */
    /**
     * Supported Data Types
     * @enum {string}
     */
    DataType: {
        STEP_COUNT: "com.google.step_count.delta",
        DISTANCE: "com.google.distance.delta",
        NUTRITION: "com.google.nutrition",
        WEIGHT: "com.google.weight",
        HEART_RATE: "com.google.heart_rate.bpm",
        CALORIES_EXPENDED: "com.google.calories.expended",
        MOVE_MINUTES: "com.google.active_minutes"
    },
    /**
     * Support History Types
     * @enum {string}
     */
    HistoryType: {
        SUMMARY: "summary"
    },
    /**
     * Request Permissions for a set of Data Types. If permission has already been granted this will
     * succeed immediately with success. Permission Results will be passed back to the success function.
     * @param {Array<DataType>} dataTypes 
     * @param {PermissionCallback} success 
     * @param {Function} error 
     */
    requestPermissions: function(dataTypes, success, error){
        exec(success, error, "ValidicGoogleFit", "requestPermissions", [dataTypes])
    },
    /**
     * Check if permissions for a set of datatypes has been granted by the end user
     * @param {Array<DataType>} dataTypes 
     * @param {PermissionCallback} success 
     * @param {Function} error 
     */
    hasPermissions: function(dataTypes, success, error){
        exec(success, error, "ValidicGoogleFit", "hasPermissions", [dataTypes])
    },
    /**
     * Subscribe to an array of dataTypes. These types will be persisted and subscribed to receive 
     * data updates from the Google Fit Platform. Data is automatically uploaded to the Validic Platform. 
     * @param {Array<DataType>} dataTypes 
     * @param {Function} success 
     * @param {Function} error 
     */
    subscribe: function(dataTypes, success, error){
        exec(success, error, "ValidicGoogleFit", "subscribe", [dataTypes])
    },
    /**
     * Unsubscribe from a Google Fit Data type
     * @param {DataType} dataType 
     * @param {Function} success 
     * @param {Function} error 
     */
    unsubscribe: function(dataType, success, error){
        exec(success, error, "ValidicGoogleFit", "unsubscribe", [dataType])
    },
    /**
     * Remove all subscriptions and logout Google user
     * @param {Function} callback 
     */
    disconnect: function(callback){
        exec(callback, null, "ValidicGoogleFit", "disconnect", [])
    },
    /**
     * Retrive list of current subscriptions
     * @param {SubscriptionsCallback} callback 
     */
    subscriptions: function(callback){
        exec(callback, null, "ValidicGoogleFit", "subscription", [])
    },
    /**
     * 
     * @param {Array<DataType>} dataTypes 
     * @param {Function} callback 
     * @param {Function} error 
     */
    fetchHistory: function(dataTypes, callback, error){
        exec(callback, error, "ValidicGoogleFit", "fetchHistory", [dataTypes])
    }

}