UNPKG

1.07 kBPlain TextView Raw
1import { EventEmitter, UnavailabilityError } from '@unimodules/core';
2import invariant from 'invariant';
3
4import ExponentPedometer from './ExponentPedometer';
5
6const PedometerEventEmitter = new EventEmitter(ExponentPedometer);
7
8type PedometerResult = { steps: number };
9type PedometerUpdateCallback = (result: PedometerResult) => void;
10export interface PedometerListener {
11 remove: () => void;
12}
13
14export function watchStepCount(callback: PedometerUpdateCallback): PedometerListener {
15 return PedometerEventEmitter.addListener('Exponent.pedometerUpdate', callback);
16}
17
18export async function getStepCountAsync(start: Date, end: Date): Promise<PedometerResult> {
19 if (!ExponentPedometer.getStepCountAsync) {
20 throw new UnavailabilityError('ExponentPedometer', 'getStepCountAsync');
21 }
22 invariant(start <= end, 'Pedometer: The start date must precede the end date.');
23 return await ExponentPedometer.getStepCountAsync(start.getTime(), end.getTime());
24}
25
26export async function isAvailableAsync(): Promise<boolean> {
27 return await ExponentPedometer.isAvailableAsync();
28}