Skip to content

Commit 4fb62eb

Browse files
wesdewitteDanielMSchmidt
authored andcommitted
fix(callback): fixed the callback of subscribe so it does stop the sensor
1 parent 1a42909 commit 4fb62eb

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

src/sensors.js

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,33 @@ const listenerKeys = new Map([
1212

1313
function createSensorObservable(sensorType) {
1414
return Observable.create(function subscribe(observer) {
15-
this.unsubscribeCallback = () => {};
16-
17-
RNSensors.isAvailable(sensorType).then(
18-
() => {
19-
DeviceEventEmitter.addListener(listenerKeys.get(sensorType), data => {
20-
observer.next(data);
21-
});
22-
23-
// Register the unsubscribe handler
24-
this.unsubscribeCallback = () => {
25-
RNSensors.stop(sensorType);
26-
};
27-
15+
16+
this.isSensorAvailable = false;
17+
18+
this.unsubscribeCallback = () => {
19+
20+
if (!this.isSensorAvailable) return;
21+
22+
// stop the sensor
23+
RNSensors.stop(sensorType);
24+
};
25+
26+
RNSensors.isAvailable(sensorType).then(
27+
() => {
28+
DeviceEventEmitter.addListener(listenerKeys.get(sensorType), data => {
29+
observer.next(data);
30+
});
31+
this.isSensorAvailable = true;
32+
2833
// Start the sensor manager
2934
RNSensors.start(sensorType);
30-
},
31-
() => {
32-
observer.error(`Sensor ${sensorType} is not available`);
33-
}
34-
);
35-
36-
return this.unsubscribeCallback;
35+
},
36+
() => {
37+
observer.error(`Sensor ${sensorType} is not available`);
38+
}
39+
);
40+
41+
return this.unsubscribeCallback;
3742
}).pipe(makeSingleton());
3843
}
3944

0 commit comments

Comments
 (0)