@ovalmoney/react-native-fitness
Version:
A React Native package that gives you access to Apple kit and Google Fit data.
184 lines (158 loc) • 4.76 kB
TypeScript
export const Platform = 'AppleHealth' | 'GoogleFit';
const Errors = {
ErrorHKNotAvailable: -100,
ErrorMethodNotAvailable: -99,
ErrorDateNotCorrect: -98,
ErrorNoEvents: -97,
ErrorEmptyPermissions: -96,
} as const;
export declare type Errors = typeof Errors[keyof typeof Errors];
const PermissionKinds = {
Steps: 0,
Distances: 1,
Calories: 2,
HeartRate: 3,
Activity: 4,
SleepAnalysis: 5,
} as const;
export declare type PermissionKinds = typeof PermissionKinds[keyof typeof PermissionKinds];
const PermissionAccesses = {
Read: 0,
Write: 1,
} as const;
export declare type PermissionAccesses = typeof PermissionAccesses[keyof typeof PermissionAccesses];
export declare type Permission = {
kind: PermissionKinds,
access: PermissionAccesses,
}
/**
* Check if given permissions are granted or not.
*
* @param permissions Permission[]
* @return Promise<boolean>
*/
export declare function isAuthorized(permissions: Permission[]): Promise<boolean>
/**
* Ask permission and return if user granted or not (Android), while, due to
* Apple's privacy model, always true is returned in iOS.
*
* @param permissions Permission[]
* @return Promise<boolean>
*/
export declare function requestPermissions(permissions: Permission[]): Promise<boolean>
/**
* Disconnect from Google Fit.
*
* @return Promise<boolean>
*/
export declare function disconnect(): Promise<boolean>
/**
* Log out from Google account.
*
* @return Promise<boolean>
*/
export declare function logout(): Promise<boolean>
/**
* Data interval.
*
* @type string
*/
export declare type Interval = 'days' | 'hour' | 'minute'
export declare interface Request {
startDate: string
endDate?: string
interval?: Interval
}
export declare interface StepRecord {
startDate: string
endDate: string
quantity: number
}
/**
* Fetch steps on a given period of time.
*
* If startDate is not provided an error will be thrown.
* If endDate is not provided, the current date will be used.
* Set interval to decide how detailed the returned data is, set it to hour or minute otherwise it defaults to days.
*
* @param request Request
* @return Promise<StepRecord[]>
*/
export declare function getSteps(request: Request): Promise<StepRecord[]>
export declare interface DistanceRecord {
startDate: string
endDate: string
quantity: number
}
/**
* Fetch distance in meters on a given period of time.
*
* If startDate is not provided an error will be thrown.
* If endDate is not provided, the current date will be used.
* Set interval to decide how detailed the returned data is, set it to hour or minute otherwise it defaults to days.
*
* @param request Request
* @return Promise<DistanceRecord[]>
*/
export declare function getDistances(request: Request): Promise<DistanceRecord[]>
export declare interface CaloriesRecord {
startDate: string
endDate: string
quantity: number
}
/**
* Fetch calories burnt in kilocalories on a given period of time.
*
* If startDate is not provided an error will be thrown.
* If endDate is not provided, the current date will be used.
* Set interval to decide how detailed the returned data is, set it to hour or minute otherwise it defaults to days.
*
* @param request Request
* @return Promise<CalorieRecord[]>
*/
export declare function getCalories(request: Request): Promise<CaloriesRecord[]>
export declare interface HeartRateRecord {
startDate: string
endDate: string
quantity: number
}
/**
* Fetch heart rate bpm on a given period of time.
*
* If startDate is not provided an error will be thrown.
* If endDate is not provided, the current date will be used.
* Set interval to decide how detailed the returned data is, set it to hour or minute otherwise it defaults to days.
*
* @param request Request
* @return Promise<HeartRateRecord[]>
*/
export declare function getHeartRate(request: Request): Promise<HeartRateRecord[]>
export declare interface SleepAnalysisRequest {
startDate: string
endDate: string
}
export declare interface SleepAnalysisRecord {
startDate: string
endDate: string
value: number
sourceName: string
sourceId: string
}
/**
* Fetch sleep analysis data on a given period of time.
*
* It requires an Object with startDate and endDate attributes as string.
* If startDate is not provided an error will be thrown.
*
* @param request SleepAnalysisRequest
* @return Promise<SleepAnalysisRecord[]>
*/
export declare function getSleepAnalysis(request: SleepAnalysisRequest): Promise<SleepAnalysisRecord[]>
/**
* Available only on Android.
*
* Subscribe only to steps from the Google Fit store.
*
* @return Promise<boolean>
*/
export declare function subscribeToSteps(): Promise<boolean>