react-native-flic2 2.0.0-beta.19 → 2.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Flic2.podspec CHANGED
@@ -13,10 +13,20 @@ Pod::Spec.new do |s|
13
13
  s.platforms = { :ios => min_ios_version_supported }
14
14
  s.source = { :git => "https://github.com/X-Guard/react-native-flic2.git", :tag => "#{s.version}" }
15
15
 
16
- s.source_files = "ios/**/*.{h,m,mm,cpp}"
17
- s.private_header_files = "ios/**/*.h"
16
+ install_modules_dependencies(s)
18
17
 
19
- s.ios.vendored_frameworks = 'ios/flic2lib.framework'
18
+ # Keep the root spec codegen-only so consumers can opt into
19
+ # Device/Simulator implementations explicitly.
20
+ s.default_subspecs = []
20
21
 
21
- install_modules_dependencies(s)
22
+ s.subspec "Device" do |sp|
23
+ sp.source_files = "ios/Flic2.{h,mm}"
24
+ sp.private_header_files = "ios/Flic2.h"
25
+ sp.ios.vendored_frameworks = "ios/flic2lib.framework"
26
+ end
27
+
28
+ s.subspec "Simulator" do |sp|
29
+ sp.source_files = "ios/Flic2SimulatorStub.{h,mm}"
30
+ sp.private_header_files = "ios/Flic2SimulatorStub.h"
31
+ end
22
32
  end
@@ -0,0 +1,21 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "Flic2Device"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => min_ios_version_supported }
14
+ s.source = { :git => "https://github.com/X-Guard/react-native-flic2.git", :tag => "#{s.version}" }
15
+
16
+ install_modules_dependencies(s)
17
+
18
+ s.source_files = "ios/Flic2.{h,mm}"
19
+ s.private_header_files = "ios/Flic2.h"
20
+ s.ios.vendored_frameworks = "ios/flic2lib.framework"
21
+ end
@@ -0,0 +1,20 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "Flic2Simulator"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => min_ios_version_supported }
14
+ s.source = { :git => "https://github.com/X-Guard/react-native-flic2.git", :tag => "#{s.version}" }
15
+
16
+ install_modules_dependencies(s)
17
+
18
+ s.source_files = "ios/Flic2SimulatorStub.{h,mm}"
19
+ s.private_header_files = "ios/Flic2SimulatorStub.h"
20
+ end
package/README.md CHANGED
@@ -37,6 +37,10 @@ npm install react-native-flic2
37
37
  cd ios && pod install && cd ..
38
38
  ```
39
39
 
40
+ **Need simulator builds?**
41
+ See `Troubleshooting` -> `Running on iOS Simulator` for a full configuration
42
+ example and launch commands.
43
+
40
44
  2. **Add Bluetooth permissions to `Info.plist`:**
41
45
  Add the following keys to your `ios/YourApp/Info.plist`:
42
46
  ```xml
@@ -791,6 +795,52 @@ const scanForButtons = async () => {
791
795
 
792
796
  ## Troubleshooting
793
797
 
798
+ ### Running on iOS Simulator
799
+
800
+ `flic2lib` is device-only. For simulator builds, use the no-op simulator pod and a
801
+ dedicated simulator build configuration.
802
+
803
+ 1. Add a simulator configuration in Xcode (for example `DebugSimulator`) and a scheme that uses it.
804
+ 2. Map pods by configuration in your app `Podfile`:
805
+
806
+ ```ruby
807
+ # Example
808
+ project 'YourApp.xcodeproj', {
809
+ 'Debug' => :debug,
810
+ 'DebugSimulator' => :debug,
811
+ 'Release' => :release,
812
+ }
813
+
814
+ target 'YourApp' do
815
+ # ... your existing use_react_native! setup
816
+
817
+ pod 'Flic2Device',
818
+ :path => '../node_modules/react-native-flic2',
819
+ :configurations => ['Debug', 'Release']
820
+
821
+ pod 'Flic2Simulator',
822
+ :path => '../node_modules/react-native-flic2',
823
+ :configurations => ['DebugSimulator']
824
+ end
825
+ ```
826
+
827
+ 3. Install pods normally (no env flags):
828
+
829
+ ```sh
830
+ cd ios && bundle exec pod install && cd ..
831
+ ```
832
+
833
+ 4. Launch simulator build (example):
834
+
835
+ ```sh
836
+ npx react-native run-ios --scheme YourAppSimulator --mode DebugSimulator --simulator "iPhone 17"
837
+ ```
838
+
839
+ Expected behavior on simulator:
840
+ - App builds and launches.
841
+ - Flic calls are no-op fallback behavior.
842
+ - Real button communication works only on physical devices.
843
+
794
844
  ### Buttons not connecting
795
845
 
796
846
  - Ensure Bluetooth is enabled on the device
package/ios/Flic2.mm CHANGED
@@ -186,7 +186,7 @@
186
186
  resolve([self buttonToDictionary:button]);
187
187
  }
188
188
 
189
- - (void)setTriggerMode:(NSString *)uuid mode:(NSInteger)mode
189
+ - (void)setTriggerMode:(NSString *)uuid mode:(double)mode
190
190
  resolve:(RCTPromiseResolveBlock)resolve
191
191
  reject:(RCTPromiseRejectBlock)reject
192
192
  {
@@ -197,11 +197,11 @@
197
197
  return;
198
198
  }
199
199
 
200
- button.triggerMode = (FLICButtonTriggerMode)mode;
200
+ button.triggerMode = (FLICButtonTriggerMode)((NSInteger)mode);
201
201
  resolve([self buttonToDictionary:button]);
202
202
  }
203
203
 
204
- - (void)setLatencyMode:(NSString *)uuid mode:(NSInteger)mode
204
+ - (void)setLatencyMode:(NSString *)uuid mode:(double)mode
205
205
  resolve:(RCTPromiseResolveBlock)resolve
206
206
  reject:(RCTPromiseRejectBlock)reject
207
207
  {
@@ -212,7 +212,7 @@
212
212
  return;
213
213
  }
214
214
 
215
- button.latencyMode = (FLICLatencyMode)mode;
215
+ button.latencyMode = (FLICLatencyMode)((NSInteger)mode);
216
216
  resolve([self buttonToDictionary:button]);
217
217
  }
218
218
 
@@ -0,0 +1,5 @@
1
+ #import <Flic2Spec/Flic2Spec.h>
2
+
3
+ @interface Flic2 : NativeFlic2SpecBase <NativeFlic2Spec>
4
+
5
+ @end
@@ -0,0 +1,134 @@
1
+ #import "Flic2SimulatorStub.h"
2
+ #import <React/RCTBridgeModule.h>
3
+
4
+ @implementation Flic2
5
+
6
+ - (void)initialize:(BOOL)background
7
+ resolve:(RCTPromiseResolveBlock)resolve
8
+ reject:(RCTPromiseRejectBlock)reject
9
+ {
10
+ resolve(nil);
11
+ }
12
+
13
+ - (void)getButtons:(RCTPromiseResolveBlock)resolve
14
+ reject:(RCTPromiseRejectBlock)reject
15
+ {
16
+ resolve(@[]);
17
+ }
18
+
19
+ - (void)scanForButtons:(RCTPromiseResolveBlock)resolve
20
+ reject:(RCTPromiseRejectBlock)reject
21
+ {
22
+ resolve(nil);
23
+ }
24
+
25
+ - (void)stopScan:(RCTPromiseResolveBlock)resolve
26
+ reject:(RCTPromiseRejectBlock)reject
27
+ {
28
+ resolve(nil);
29
+ }
30
+
31
+ - (void)forgetButton:(NSString *)uuid
32
+ resolve:(RCTPromiseResolveBlock)resolve
33
+ reject:(RCTPromiseRejectBlock)reject
34
+ {
35
+ resolve(nil);
36
+ }
37
+
38
+ - (void)connectAllKnownButtons:(RCTPromiseResolveBlock)resolve
39
+ reject:(RCTPromiseRejectBlock)reject
40
+ {
41
+ resolve(nil);
42
+ }
43
+
44
+ - (void)disconnectAllKnownButtons:(RCTPromiseResolveBlock)resolve
45
+ reject:(RCTPromiseRejectBlock)reject
46
+ {
47
+ resolve(nil);
48
+ }
49
+
50
+ - (void)forgetAllButtons:(RCTPromiseResolveBlock)resolve
51
+ reject:(RCTPromiseRejectBlock)reject
52
+ {
53
+ resolve(nil);
54
+ }
55
+
56
+ - (void)isScanning:(RCTPromiseResolveBlock)resolve
57
+ reject:(RCTPromiseRejectBlock)reject
58
+ {
59
+ resolve(@(NO));
60
+ }
61
+
62
+ - (void)connectButton:(NSString *)uuid
63
+ resolve:(RCTPromiseResolveBlock)resolve
64
+ reject:(RCTPromiseRejectBlock)reject
65
+ {
66
+ resolve([self emptyButtonDictionary:uuid]);
67
+ }
68
+
69
+ - (void)disconnectButton:(NSString *)uuid
70
+ resolve:(RCTPromiseResolveBlock)resolve
71
+ reject:(RCTPromiseRejectBlock)reject
72
+ {
73
+ resolve([self emptyButtonDictionary:uuid]);
74
+ }
75
+
76
+ - (void)setTriggerMode:(NSString *)uuid mode:(double)mode
77
+ resolve:(RCTPromiseResolveBlock)resolve
78
+ reject:(RCTPromiseRejectBlock)reject
79
+ {
80
+ resolve([self emptyButtonDictionary:uuid]);
81
+ }
82
+
83
+ - (void)setLatencyMode:(NSString *)uuid mode:(double)mode
84
+ resolve:(RCTPromiseResolveBlock)resolve
85
+ reject:(RCTPromiseRejectBlock)reject
86
+ {
87
+ resolve([self emptyButtonDictionary:uuid]);
88
+ }
89
+
90
+ - (void)setNickname:(NSString *)uuid nickname:(NSString *)nickname
91
+ resolve:(RCTPromiseResolveBlock)resolve
92
+ reject:(RCTPromiseRejectBlock)reject
93
+ {
94
+ NSMutableDictionary *button = [[self emptyButtonDictionary:uuid] mutableCopy];
95
+ button[@"nickname"] = nickname ?: @"";
96
+ resolve(button);
97
+ }
98
+
99
+ - (NSDictionary *)emptyButtonDictionary:(NSString *)uuid
100
+ {
101
+ NSString *safeUuid = uuid ?: @"";
102
+ return @{
103
+ @"uuid": safeUuid,
104
+ @"identifier": safeUuid,
105
+ @"name": @"",
106
+ @"nickname": @"",
107
+ @"bluetoothAddress": @"",
108
+ @"serialNumber": @"",
109
+ @"state": @(0),
110
+ @"stateName": @"disconnected",
111
+ @"triggerMode": @(0),
112
+ @"triggerModeName": @"clickAndHold",
113
+ @"latencyMode": @(0),
114
+ @"latencyModeName": @"normal",
115
+ @"pressCount": @(0),
116
+ @"firmwareRevision": @(0),
117
+ @"isReady": @(NO),
118
+ @"batteryVoltage": @(0),
119
+ @"isUnpaired": @(NO)
120
+ };
121
+ }
122
+
123
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
124
+ (const facebook::react::ObjCTurboModule::InitParams &)params
125
+ {
126
+ return std::make_shared<facebook::react::NativeFlic2SpecJSI>(params);
127
+ }
128
+
129
+ + (NSString *)moduleName
130
+ {
131
+ return @"Flic2";
132
+ }
133
+
134
+ @end
@@ -36,5 +36,49 @@ export let ScanResult = /*#__PURE__*/function (ScanResult) {
36
36
 
37
37
  // MARK: - Spec Interface
38
38
 
39
- export default TurboModuleRegistry.getEnforcing('Flic2');
39
+ const createFallbackButton = uuid => ({
40
+ uuid,
41
+ identifier: uuid,
42
+ name: '',
43
+ nickname: '',
44
+ bluetoothAddress: '',
45
+ serialNumber: '',
46
+ state: 0,
47
+ stateName: 'disconnected',
48
+ triggerMode: 0,
49
+ triggerModeName: 'clickAndHold',
50
+ latencyMode: 0,
51
+ latencyModeName: 'normal',
52
+ pressCount: 0,
53
+ firmwareRevision: 0,
54
+ isReady: false,
55
+ batteryVoltage: 0,
56
+ isUnpaired: false
57
+ });
58
+ const fallbackEventEmitter = () => ({
59
+ remove: () => undefined
60
+ });
61
+ const fallbackModule = {
62
+ initialize: async _background => undefined,
63
+ getButtons: async () => [],
64
+ scanForButtons: async () => undefined,
65
+ stopScan: async () => undefined,
66
+ forgetButton: async _uuid => undefined,
67
+ connectAllKnownButtons: async () => undefined,
68
+ disconnectAllKnownButtons: async () => undefined,
69
+ forgetAllButtons: async () => undefined,
70
+ isScanning: async () => false,
71
+ connectButton: async uuid => createFallbackButton(uuid),
72
+ disconnectButton: async uuid => createFallbackButton(uuid),
73
+ setTriggerMode: async (uuid, _mode) => createFallbackButton(uuid),
74
+ setLatencyMode: async (uuid, _mode) => createFallbackButton(uuid),
75
+ setNickname: async (uuid, nickname) => ({
76
+ ...createFallbackButton(uuid),
77
+ nickname
78
+ }),
79
+ onManagerStateChange: fallbackEventEmitter,
80
+ onScanStatusChange: fallbackEventEmitter,
81
+ onButtonEvent: fallbackEventEmitter
82
+ };
83
+ export default TurboModuleRegistry.get('Flic2') ?? fallbackModule;
40
84
  //# sourceMappingURL=NativeFlic2.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","ScanResult","getEnforcing"],"sourceRoot":"../../src","sources":["NativeFlic2.ts"],"mappings":";;AAAA,SACEA,mBAAmB,QAGd,cAAc;;AAErB;;AASA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;;AA+DtB;;AAgDA;;AAKA;;AAwCA,eAAeD,mBAAmB,CAACE,YAAY,CAAO,OAAO,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","ScanResult","createFallbackButton","uuid","identifier","name","nickname","bluetoothAddress","serialNumber","state","stateName","triggerMode","triggerModeName","latencyMode","latencyModeName","pressCount","firmwareRevision","isReady","batteryVoltage","isUnpaired","fallbackEventEmitter","remove","undefined","fallbackModule","initialize","_background","getButtons","scanForButtons","stopScan","forgetButton","_uuid","connectAllKnownButtons","disconnectAllKnownButtons","forgetAllButtons","isScanning","connectButton","disconnectButton","setTriggerMode","_mode","setLatencyMode","setNickname","onManagerStateChange","onScanStatusChange","onButtonEvent","get"],"sourceRoot":"../../src","sources":["NativeFlic2.ts"],"mappings":";;AAAA,SACEA,mBAAmB,QAGd,cAAc;;AAErB;;AASA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;;AA+DtB;;AAgDA;;AAKA;;AAwCA,MAAMC,oBAAoB,GAAIC,IAAY,KAAkB;EAC1DA,IAAI;EACJC,UAAU,EAAED,IAAI;EAChBE,IAAI,EAAE,EAAE;EACRC,QAAQ,EAAE,EAAE;EACZC,gBAAgB,EAAE,EAAE;EACpBC,YAAY,EAAE,EAAE;EAChBC,KAAK,EAAE,CAAC;EACRC,SAAS,EAAE,cAAc;EACzBC,WAAW,EAAE,CAAC;EACdC,eAAe,EAAE,cAAc;EAC/BC,WAAW,EAAE,CAAC;EACdC,eAAe,EAAE,QAAQ;EACzBC,UAAU,EAAE,CAAC;EACbC,gBAAgB,EAAE,CAAC;EACnBC,OAAO,EAAE,KAAK;EACdC,cAAc,EAAE,CAAC;EACjBC,UAAU,EAAE;AACd,CAAC,CAAC;AAEF,MAAMC,oBAAoB,GAAIA,CAAA,MAAO;EAAEC,MAAM,EAAEA,CAAA,KAAMC;AAAU,CAAC,CAA6C;AAE7G,MAAMC,cAAc,GAAG;EACrBC,UAAU,EAAE,MAAOC,WAAoB,IAAKH,SAAS;EACrDI,UAAU,EAAE,MAAAA,CAAA,KAAY,EAAE;EAC1BC,cAAc,EAAE,MAAAA,CAAA,KAAYL,SAAS;EACrCM,QAAQ,EAAE,MAAAA,CAAA,KAAYN,SAAS;EAC/BO,YAAY,EAAE,MAAOC,KAAa,IAAKR,SAAS;EAChDS,sBAAsB,EAAE,MAAAA,CAAA,KAAYT,SAAS;EAC7CU,yBAAyB,EAAE,MAAAA,CAAA,KAAYV,SAAS;EAChDW,gBAAgB,EAAE,MAAAA,CAAA,KAAYX,SAAS;EACvCY,UAAU,EAAE,MAAAA,CAAA,KAAY,KAAK;EAC7BC,aAAa,EAAE,MAAOhC,IAAY,IAAKD,oBAAoB,CAACC,IAAI,CAAC;EACjEiC,gBAAgB,EAAE,MAAOjC,IAAY,IAAKD,oBAAoB,CAACC,IAAI,CAAC;EACpEkC,cAAc,EAAE,MAAAA,CAAOlC,IAAY,EAAEmC,KAAa,KAAKpC,oBAAoB,CAACC,IAAI,CAAC;EACjFoC,cAAc,EAAE,MAAAA,CAAOpC,IAAY,EAAEmC,KAAa,KAAKpC,oBAAoB,CAACC,IAAI,CAAC;EACjFqC,WAAW,EAAE,MAAAA,CAAOrC,IAAY,EAAEG,QAAgB,MAAM;IACtD,GAAGJ,oBAAoB,CAACC,IAAI,CAAC;IAC7BG;EACF,CAAC,CAAC;EACFmC,oBAAoB,EAAErB,oBAAoB;EAC1CsB,kBAAkB,EAAEtB,oBAA6D;EACjFuB,aAAa,EAAEvB;AACjB,CAAS;AAET,eAAepB,mBAAmB,CAAC4C,GAAG,CAAO,OAAO,CAAC,IAAIrB,cAAc","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeFlic2.d.ts","sourceRoot":"","sources":["../../../src/NativeFlic2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NativeFlic2.d.ts","sourceRoot":"","sources":["../../../src/NativeFlic2.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-flic2",
3
- "version": "2.0.0-beta.19",
3
+ "version": "2.0.0-beta.20",
4
4
  "description": "React Native Flic plugin made with the Flic2 SDK (unofficial)",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -169,4 +169,49 @@ export interface Spec extends TurboModule {
169
169
  readonly onButtonEvent: CodegenTypes.EventEmitter<ButtonEvent>;
170
170
  }
171
171
 
172
- export default TurboModuleRegistry.getEnforcing<Spec>('Flic2');
172
+ const createFallbackButton = (uuid: string): FlicButton => ({
173
+ uuid,
174
+ identifier: uuid,
175
+ name: '',
176
+ nickname: '',
177
+ bluetoothAddress: '',
178
+ serialNumber: '',
179
+ state: 0,
180
+ stateName: 'disconnected',
181
+ triggerMode: 0,
182
+ triggerModeName: 'clickAndHold',
183
+ latencyMode: 0,
184
+ latencyModeName: 'normal',
185
+ pressCount: 0,
186
+ firmwareRevision: 0,
187
+ isReady: false,
188
+ batteryVoltage: 0,
189
+ isUnpaired: false,
190
+ });
191
+
192
+ const fallbackEventEmitter = (() => ({ remove: () => undefined })) as unknown as Spec['onManagerStateChange'];
193
+
194
+ const fallbackModule = {
195
+ initialize: async (_background: boolean) => undefined,
196
+ getButtons: async () => [],
197
+ scanForButtons: async () => undefined,
198
+ stopScan: async () => undefined,
199
+ forgetButton: async (_uuid: string) => undefined,
200
+ connectAllKnownButtons: async () => undefined,
201
+ disconnectAllKnownButtons: async () => undefined,
202
+ forgetAllButtons: async () => undefined,
203
+ isScanning: async () => false,
204
+ connectButton: async (uuid: string) => createFallbackButton(uuid),
205
+ disconnectButton: async (uuid: string) => createFallbackButton(uuid),
206
+ setTriggerMode: async (uuid: string, _mode: number) => createFallbackButton(uuid),
207
+ setLatencyMode: async (uuid: string, _mode: number) => createFallbackButton(uuid),
208
+ setNickname: async (uuid: string, nickname: string) => ({
209
+ ...createFallbackButton(uuid),
210
+ nickname,
211
+ }),
212
+ onManagerStateChange: fallbackEventEmitter,
213
+ onScanStatusChange: fallbackEventEmitter as unknown as Spec['onScanStatusChange'],
214
+ onButtonEvent: fallbackEventEmitter as unknown as Spec['onButtonEvent'],
215
+ } as Spec;
216
+
217
+ export default TurboModuleRegistry.get<Spec>('Flic2') ?? fallbackModule;