From 510d49c89f8f6b1ab32039b8154057f3f96f7845 Mon Sep 17 00:00:00 2001 From: Victor Kachalov Date: Sun, 4 Jun 2023 21:46:58 +0200 Subject: [PATCH] feat: add hasLightSensor react method (android) --- README.md | 6 ++++-- .../AmbientLightSensorModule.java | 6 ++++++ lib/commonjs/index.js | 5 +++++ lib/commonjs/index.js.map | 2 +- lib/module/index.js | 3 +++ lib/module/index.js.map | 2 +- lib/typescript/index.d.ts | 1 + src/index.tsx | 4 ++++ 8 files changed, 25 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f5a7f2f..73a4d35 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,17 @@ npm install react-native-ambient-light-sensor ## Usage ```js -import { startLightSensor, stopLightSensor } from 'react-native-ambient-light-sensor'; +import { hasLightSensor, startLightSensor, stopLightSensor } from 'react-native-ambient-light-sensor'; import { View, Text, DeviceEventEmitter } from 'react-native'; // ... export default function App() { const [result, setResult] = React.useState(); + const [hasSensor, setHasSensor] = React.useState(); useEffect(() => { + hasLightSensor().then(setHasSensor); startLightSensor(); const subscription = DeviceEventEmitter.addListener( @@ -35,7 +37,7 @@ export default function App() { return ( - Light Result Value: {result} + Device has sensor: {hasSensor ? 'YES' : 'NO'}. Light Result Value: {result} ); } diff --git a/android/src/main/java/com/reactnativeambientlightsensor/AmbientLightSensorModule.java b/android/src/main/java/com/reactnativeambientlightsensor/AmbientLightSensorModule.java index f4694fd..a0f8c3e 100644 --- a/android/src/main/java/com/reactnativeambientlightsensor/AmbientLightSensorModule.java +++ b/android/src/main/java/com/reactnativeambientlightsensor/AmbientLightSensorModule.java @@ -61,6 +61,12 @@ public final void onSensorChanged(SensorEvent sensorEvent) { public final void onAccuracyChanged(Sensor sensor, int accuracy) { } + @ReactMethod + public void hasLightSensor(Promise promise) { + boolean hasSensor = mSensorLight != null; + promise.resolve(hasSensor); + } + @ReactMethod public void startLightSensor() { if (mSensorLight == null) { diff --git a/lib/commonjs/index.js b/lib/commonjs/index.js index cd4c419..3e16e7e 100644 --- a/lib/commonjs/index.js +++ b/lib/commonjs/index.js @@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); +exports.hasLightSensor = hasLightSensor; exports.startLightSensor = startLightSensor; exports.stopLightSensor = stopLightSensor; @@ -19,6 +20,10 @@ const AmbientLightSensor = _reactNative.NativeModules.AmbientLightSensor ? _reac }); +async function hasLightSensor() { + return AmbientLightSensor.hasLightSensor(); +} + function startLightSensor() { return AmbientLightSensor.startLightSensor(); } diff --git a/lib/commonjs/index.js.map b/lib/commonjs/index.js.map index 33d2949..3d69cc2 100644 --- a/lib/commonjs/index.js.map +++ b/lib/commonjs/index.js.map @@ -1 +1 @@ -{"version":3,"names":["LINKING_ERROR","Platform","select","ios","default","AmbientLightSensor","NativeModules","Proxy","get","Error","startLightSensor","stopLightSensor"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\r\n\r\nconst LINKING_ERROR =\r\n `The package 'react-native-ambient-light-sensor' doesn't seem to be linked. Make sure: \\n\\n` +\r\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\r\n '- You rebuilt the app after installing the package\\n' +\r\n '- You are not using Expo managed workflow\\n';\r\n\r\nconst AmbientLightSensor = NativeModules.AmbientLightSensor ? NativeModules.AmbientLightSensor : new Proxy(\r\n {},\r\n {\r\n get() {\r\n throw new Error(LINKING_ERROR);\r\n },\r\n }\r\n );\r\n\r\nexport function startLightSensor(): void {\r\n return AmbientLightSensor.startLightSensor();\r\n}\r\n\r\nexport function stopLightSensor(): void {\r\n return AmbientLightSensor.stopLightSensor();\r\n}"],"mappings":";;;;;;;;AAAA;;AAEA,MAAMA,aAAa,GAChB,4FAAD,GACAC,qBAAA,CAASC,MAAT,CAAgB;EAAEC,GAAG,EAAE,gCAAP;EAAyCC,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;AAMA,MAAMC,kBAAkB,GAAGC,0BAAA,CAAcD,kBAAd,GAAoCC,0BAAA,CAAcD,kBAAlD,GAAwE,IAAIE,KAAJ,CAC7F,EAD6F,EAE7F;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAJ,CAAUT,aAAV,CAAN;EACD;;AAHH,CAF6F,CAAnG;;AASO,SAASU,gBAAT,GAAkC;EACvC,OAAOL,kBAAkB,CAACK,gBAAnB,EAAP;AACD;;AAEM,SAASC,eAAT,GAAiC;EACtC,OAAON,kBAAkB,CAACM,eAAnB,EAAP;AACD"} \ No newline at end of file +{"version":3,"names":["LINKING_ERROR","Platform","select","ios","default","AmbientLightSensor","NativeModules","Proxy","get","Error","hasLightSensor","startLightSensor","stopLightSensor"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\r\n\r\nconst LINKING_ERROR =\r\n `The package 'react-native-ambient-light-sensor' doesn't seem to be linked. Make sure: \\n\\n` +\r\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\r\n '- You rebuilt the app after installing the package\\n' +\r\n '- You are not using Expo managed workflow\\n';\r\n\r\nconst AmbientLightSensor = NativeModules.AmbientLightSensor ? NativeModules.AmbientLightSensor : new Proxy(\r\n {},\r\n {\r\n get() {\r\n throw new Error(LINKING_ERROR);\r\n },\r\n }\r\n );\r\n\r\nexport function hasLightSensor(): boolean {\r\n return AmbientLightSensor.hasLightSensor();\r\n}\r\n\r\nexport function startLightSensor(): void {\r\n return AmbientLightSensor.startLightSensor();\r\n}\r\n\r\nexport function stopLightSensor(): void {\r\n return AmbientLightSensor.stopLightSensor();\r\n}"],"mappings":";;;;;;;;;AAAA;;AAEA,MAAMA,aAAa,GAChB,4FAAD,GACAC,qBAAA,CAASC,MAAT,CAAgB;EAAEC,GAAG,EAAE,gCAAP;EAAyCC,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;AAMA,MAAMC,kBAAkB,GAAGC,0BAAA,CAAcD,kBAAd,GAAoCC,0BAAA,CAAcD,kBAAlD,GAAwE,IAAIE,KAAJ,CAC7F,EAD6F,EAE7F;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAJ,CAAUT,aAAV,CAAN;EACD;;AAHH,CAF6F,CAAnG;;AASO,SAASU,cAAT,GAAmC;EACxC,OAAOL,kBAAkB,CAACK,cAAnB,EAAP;AACD;;AAEM,SAASC,gBAAT,GAAkC;EACvC,OAAON,kBAAkB,CAACM,gBAAnB,EAAP;AACD;;AAEM,SAASC,eAAT,GAAiC;EACtC,OAAOP,kBAAkB,CAACO,eAAnB,EAAP;AACD"} \ No newline at end of file diff --git a/lib/module/index.js b/lib/module/index.js index 84ad807..88ab77d 100644 --- a/lib/module/index.js +++ b/lib/module/index.js @@ -9,6 +9,9 @@ const AmbientLightSensor = NativeModules.AmbientLightSensor ? NativeModules.Ambi } }); +export async function hasLightSensor() { + return AmbientLightSensor.hasLightSensor(); +} export function startLightSensor() { return AmbientLightSensor.startLightSensor(); } diff --git a/lib/module/index.js.map b/lib/module/index.js.map index 8c5e76e..e95a335 100644 --- a/lib/module/index.js.map +++ b/lib/module/index.js.map @@ -1 +1 @@ -{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","AmbientLightSensor","Proxy","get","Error","startLightSensor","stopLightSensor"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\r\n\r\nconst LINKING_ERROR =\r\n `The package 'react-native-ambient-light-sensor' doesn't seem to be linked. Make sure: \\n\\n` +\r\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\r\n '- You rebuilt the app after installing the package\\n' +\r\n '- You are not using Expo managed workflow\\n';\r\n\r\nconst AmbientLightSensor = NativeModules.AmbientLightSensor ? NativeModules.AmbientLightSensor : new Proxy(\r\n {},\r\n {\r\n get() {\r\n throw new Error(LINKING_ERROR);\r\n },\r\n }\r\n );\r\n\r\nexport function startLightSensor(): void {\r\n return AmbientLightSensor.startLightSensor();\r\n}\r\n\r\nexport function stopLightSensor(): void {\r\n return AmbientLightSensor.stopLightSensor();\r\n}"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,QAAxB,QAAwC,cAAxC;AAEA,MAAMC,aAAa,GAChB,4FAAD,GACAD,QAAQ,CAACE,MAAT,CAAgB;EAAEC,GAAG,EAAE,gCAAP;EAAyCC,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;AAMA,MAAMC,kBAAkB,GAAGN,aAAa,CAACM,kBAAd,GAAoCN,aAAa,CAACM,kBAAlD,GAAwE,IAAIC,KAAJ,CAC7F,EAD6F,EAE7F;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAJ,CAAUP,aAAV,CAAN;EACD;;AAHH,CAF6F,CAAnG;AASA,OAAO,SAASQ,gBAAT,GAAkC;EACvC,OAAOJ,kBAAkB,CAACI,gBAAnB,EAAP;AACD;AAED,OAAO,SAASC,eAAT,GAAiC;EACtC,OAAOL,kBAAkB,CAACK,eAAnB,EAAP;AACD"} \ No newline at end of file +{"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","AmbientLightSensor","Proxy","get","Error","hasLightSensor","startLightSensor","stopLightSensor"],"sources":["index.tsx"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\r\n\r\nconst LINKING_ERROR =\r\n `The package 'react-native-ambient-light-sensor' doesn't seem to be linked. Make sure: \\n\\n` +\r\n Platform.select({ ios: \"- You have run 'pod install'\\n\", default: '' }) +\r\n '- You rebuilt the app after installing the package\\n' +\r\n '- You are not using Expo managed workflow\\n';\r\n\r\nconst AmbientLightSensor = NativeModules.AmbientLightSensor ? NativeModules.AmbientLightSensor : new Proxy(\r\n {},\r\n {\r\n get() {\r\n throw new Error(LINKING_ERROR);\r\n },\r\n }\r\n );\r\n\r\nexport function hasLightSensor(): boolean {\r\n return AmbientLightSensor.hasLightSensor();\r\n}\r\n\r\nexport function startLightSensor(): void {\r\n return AmbientLightSensor.startLightSensor();\r\n}\r\n\r\nexport function stopLightSensor(): void {\r\n return AmbientLightSensor.stopLightSensor();\r\n}"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,QAAxB,QAAwC,cAAxC;AAEA,MAAMC,aAAa,GAChB,4FAAD,GACAD,QAAQ,CAACE,MAAT,CAAgB;EAAEC,GAAG,EAAE,gCAAP;EAAyCC,OAAO,EAAE;AAAlD,CAAhB,CADA,GAEA,sDAFA,GAGA,6CAJF;AAMA,MAAMC,kBAAkB,GAAGN,aAAa,CAACM,kBAAd,GAAoCN,aAAa,CAACM,kBAAlD,GAAwE,IAAIC,KAAJ,CAC7F,EAD6F,EAE7F;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAJ,CAAUP,aAAV,CAAN;EACD;;AAHH,CAF6F,CAAnG;AASA,OAAO,SAASQ,cAAT,GAAmC;EACxC,OAAOJ,kBAAkB,CAACI,cAAnB,EAAP;AACD;AAED,OAAO,SAASC,gBAAT,GAAkC;EACvC,OAAOL,kBAAkB,CAACK,gBAAnB,EAAP;AACD;AAED,OAAO,SAASC,eAAT,GAAiC;EACtC,OAAON,kBAAkB,CAACM,eAAnB,EAAP;AACD"} \ No newline at end of file diff --git a/lib/typescript/index.d.ts b/lib/typescript/index.d.ts index 9cb1e5a..4a6c118 100644 --- a/lib/typescript/index.d.ts +++ b/lib/typescript/index.d.ts @@ -1,2 +1,3 @@ +export declare async function hasLightSensor(): Promise; export declare function startLightSensor(): void; export declare function stopLightSensor(): void; diff --git a/src/index.tsx b/src/index.tsx index 6b42d41..ecaf6ee 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -15,6 +15,10 @@ const AmbientLightSensor = NativeModules.AmbientLightSensor ? NativeModules.Amb } ); +export async function hasLightSensor(): Promise { + return AmbientLightSensor.hasLightSensor(); +} + export function startLightSensor(): void { return AmbientLightSensor.startLightSensor(); }