Skip to content

Commit 16fa61f

Browse files
committed
chore: separate LivekitReactNative and LivekitReactNativeModule files
1 parent 7ebb88b commit 16fa61f

9 files changed

+107
-118
lines changed

example/ios/Podfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1483,6 +1483,6 @@ SPEC CHECKSUMS:
14831483
WebRTC-SDK: dff00a3892bc570b6014e046297782084071657e
14841484
Yoga: ae3c32c514802d30f687a04a6a35b348506d411f
14851485

1486-
PODFILE CHECKSUM: d3828f68293a645b4f8e3fe1e5a20e7aaaebb41b
1486+
PODFILE CHECKSUM: b5aad0c7d12b2ea501eb822f98f00ca01d154bd9
14871487

14881488
COCOAPODS: 1.13.0

ios/LiveKitReactNative.swift renamed to ios/LiveKitReactNativeModule.swift

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,12 @@ public class LivekitReactNativeModule: RCTEventEmitter {
9595
}
9696
}
9797

98-
@objc(getAudioOutputsWithResolver:reject:)
99-
public func getAudioOutputsWithResolver(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock){
98+
@objc(getAudioOutputsWithResolver:withRejecter:)
99+
public func getAudioOutputs(resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock){
100100
resolve(["default", "force_speaker"])
101101
}
102102

103-
@objc(selectAudioOutput:resolve:reject:)
103+
@objc(selectAudioOutput:withResolver:withRejecter:)
104104
public func selectAudioOutput(_ deviceId: String, resolve: RCTPromiseResolveBlock, reject: RCTPromiseRejectBlock) {
105105
let session = AVAudioSession.sharedInstance()
106106
do {
@@ -178,53 +178,53 @@ public class LivekitReactNativeModule: RCTEventEmitter {
178178
session.unlockForConfiguration()
179179
}
180180

181-
// @objc(createVolumeProcessor:trackId:)
182-
// public func createVolumeProcessor(_ pcId: NSNumber, trackId: String) -> String {
183-
// let renderer = VolumeAudioRenderer(intervalMs: 40.0, eventEmitter: self)
184-
// let reactTag = self.audioRendererManager.registerRenderer(renderer)
185-
// renderer.reactTag = reactTag
186-
// self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
187-
//
188-
// return reactTag
189-
// }
190-
//
191-
// @objc(deleteVolumeProcessor:pcId:trackId:)
192-
// public func deleteVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
193-
// self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
194-
// self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
195-
//
196-
// return nil
197-
// }
198-
//
199-
// @objc(createMultibandVolumeProcessor:pcId:trackId:)
200-
// public func createMultibandVolumeProcessor(_ options: NSDictionary, pcId: NSNumber, trackId: String) -> String {
201-
// let bands = (options["bands"] as? NSString)?.integerValue ?? 5
202-
// let minFrequency = (options["minFrequency"] as? NSString)?.floatValue ?? 1000
203-
// let maxFrequency = (options["maxFrequency"] as? NSString)?.floatValue ?? 8000
204-
// let intervalMs = (options["updateInterval"] as? NSString)?.floatValue ?? 40
205-
//
206-
// let renderer = MultibandVolumeAudioRenderer(
207-
// bands: bands,
208-
// minFrequency: minFrequency,
209-
// maxFrequency: maxFrequency,
210-
// intervalMs: intervalMs,
211-
// eventEmitter: self
212-
// )
213-
// let reactTag = self.audioRendererManager.registerRenderer(renderer)
214-
// renderer.reactTag = reactTag
215-
// self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
216-
//
217-
// return reactTag
218-
// }
219-
//
220-
// @objc(deleteMultibandVolumeProcessor:pcId:trackId:)
221-
// public func deleteMultibandVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
222-
// self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
223-
// self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
224-
//
225-
// return nil
226-
// }
227-
//
181+
@objc(createVolumeProcessor:trackId:)
182+
public func createVolumeProcessor(_ pcId: NSNumber, trackId: String) -> String {
183+
let renderer = VolumeAudioRenderer(intervalMs: 40.0, eventEmitter: self)
184+
let reactTag = self.audioRendererManager.registerRenderer(renderer)
185+
renderer.reactTag = reactTag
186+
self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
187+
188+
return reactTag
189+
}
190+
191+
@objc(deleteVolumeProcessor:pcId:trackId:)
192+
public func deleteVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
193+
self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
194+
self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
195+
196+
return nil
197+
}
198+
199+
@objc(createMultibandVolumeProcessor:pcId:trackId:)
200+
public func createMultibandVolumeProcessor(_ options: NSDictionary, pcId: NSNumber, trackId: String) -> String {
201+
let bands = (options["bands"] as? NSString)?.integerValue ?? 5
202+
let minFrequency = (options["minFrequency"] as? NSString)?.floatValue ?? 1000
203+
let maxFrequency = (options["maxFrequency"] as? NSString)?.floatValue ?? 8000
204+
let intervalMs = (options["updateInterval"] as? NSString)?.floatValue ?? 40
205+
206+
let renderer = MultibandVolumeAudioRenderer(
207+
bands: bands,
208+
minFrequency: minFrequency,
209+
maxFrequency: maxFrequency,
210+
intervalMs: intervalMs,
211+
eventEmitter: self
212+
)
213+
let reactTag = self.audioRendererManager.registerRenderer(renderer)
214+
renderer.reactTag = reactTag
215+
self.audioRendererManager.attach(renderer: renderer, pcId: pcId, trackId: trackId)
216+
217+
return reactTag
218+
}
219+
220+
@objc(deleteMultibandVolumeProcessor:pcId:trackId:)
221+
public func deleteMultibandVolumeProcessor(_ reactTag: String, pcId: NSNumber, trackId: String) -> Any? {
222+
self.audioRendererManager.detach(rendererByTag: reactTag, pcId: pcId, trackId: trackId)
223+
self.audioRendererManager.unregisterRenderer(forReactTag: reactTag)
224+
225+
return nil
226+
}
227+
228228
override public func supportedEvents() -> [String]! {
229229
return [
230230
LKEvents.kEventVolumeProcessed,

ios/LivekitReactNative.m

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
2-
#import <React/RCTBridgeModule.h>
3-
#import <React/RCTEventEmitter.h>
41
#import "WebRTCModule.h"
52
#import "WebRTCModuleOptions.h"
63
#import "LivekitReactNative.h"
@@ -17,38 +14,3 @@ +(void)setup {
1714
}
1815

1916
@end
20-
21-
@interface RCT_EXTERN_MODULE(LivekitReactNativeModule, RCTEventEmitter)
22-
23-
RCT_EXTERN_METHOD(configureAudio:(NSDictionary *) config)
24-
RCT_EXTERN_METHOD(startAudioSession)
25-
RCT_EXTERN_METHOD(stopAudioSession)
26-
27-
RCT_EXTERN_METHOD(showAudioRoutePicker)
28-
RCT_EXTERN_METHOD(getAudioOutputsWithResolver:(RCTPromiseResolveBlock)resolve
29-
withRejecter:(RCTPromiseRejectBlock)reject)
30-
RCT_EXTERN_METHOD(selectAudioOutput:(NSString *)deviceId
31-
withResolver:(RCTPromiseResolveBlock)resolve
32-
withRejecter:(RCTPromiseRejectBlock)reject)
33-
34-
35-
/// Configure audio config for WebRTC
36-
RCT_EXTERN_METHOD(setAppleAudioConfiguration:(NSDictionary *) configuration)
37-
38-
39-
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(createVolumeProcessor:(nonnull NSNumber *)pcId
40-
trackId:(nonnull NSString *)trackId)
41-
42-
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(deleteVolumeProcessor:(nonnull NSString *)reactTag
43-
pcId:(nonnull NSNumber *)pcId
44-
trackId:(nonnull NSString *)trackId)
45-
46-
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(createMultibandVolumeProcessor:(NSDictionary *)options
47-
pcId:(nonnull NSNumber *)pcId
48-
trackId:(nonnull NSString *)trackId)
49-
50-
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(deleteMultibandVolumeProcessor:(nonnull NSString *)reactTag
51-
pcId:(nonnull NSNumber *)pcId
52-
trackId:(nonnull NSString *)trackId)
53-
54-
@end

ios/LivekitReactNativeModule.m

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#import <React/RCTBridgeModule.h>
2+
#import <React/RCTEventEmitter.h>
3+
#import "WebRTCModule.h"
4+
5+
@interface RCT_EXTERN_MODULE(LivekitReactNativeModule, RCTEventEmitter)
6+
7+
RCT_EXTERN_METHOD(configureAudio:(NSDictionary *) config)
8+
RCT_EXTERN_METHOD(startAudioSession)
9+
RCT_EXTERN_METHOD(stopAudioSession)
10+
11+
RCT_EXTERN_METHOD(showAudioRoutePicker)
12+
RCT_EXTERN_METHOD(getAudioOutputsWithResolver:(RCTPromiseResolveBlock)resolve
13+
withRejecter:(RCTPromiseRejectBlock)reject)
14+
RCT_EXTERN_METHOD(selectAudioOutput:(NSString *)deviceId
15+
withResolver:(RCTPromiseResolveBlock)resolve
16+
withRejecter:(RCTPromiseRejectBlock)reject)
17+
18+
19+
/// Configure audio config for WebRTC
20+
RCT_EXTERN_METHOD(setAppleAudioConfiguration:(NSDictionary *) configuration)
21+
22+
23+
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(createVolumeProcessor:(nonnull NSNumber *)pcId
24+
trackId:(nonnull NSString *)trackId)
25+
26+
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(deleteVolumeProcessor:(nonnull NSString *)reactTag
27+
pcId:(nonnull NSNumber *)pcId
28+
trackId:(nonnull NSString *)trackId)
29+
30+
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(createMultibandVolumeProcessor:(NSDictionary *)options
31+
pcId:(nonnull NSNumber *)pcId
32+
trackId:(nonnull NSString *)trackId)
33+
34+
RCT_EXTERN__BLOCKING_SYNCHRONOUS_METHOD(deleteMultibandVolumeProcessor:(nonnull NSString *)reactTag
35+
pcId:(nonnull NSNumber *)pcId
36+
trackId:(nonnull NSString *)trackId)
37+
38+
+(BOOL)requiresMainQueueSetup {
39+
return NO;
40+
}
41+
42+
@end

ios/audio/AudioProcessing.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import Accelerate
1818
import AVFoundation
1919
import Foundation
20-
import WebRTC
20+
import livekit_react_native_webrtc
2121

2222
public struct AudioLevel {
2323
/// Linear Scale RMS Value

ios/audio/MultibandVolumeAudioRenderer.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import WebRTC
1+
import livekit_react_native_webrtc
22
import React
33

44
@objc

ios/audio/VolumeAudioRenderer.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import WebRTC
1+
import livekit_react_native_webrtc
22
import React
33

44
@objc

src/LKNativeModule.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ const LINKING_ERROR =
55
'- You rebuilt the app after installing the package\n' +
66
'- You are not using Expo managed workflow\n';
77

8-
const LiveKitModule = NativeModules.LivekitReactNative
9-
? NativeModules.LivekitReactNative
8+
const LiveKitModule = NativeModules.LivekitReactNativeModule
9+
? NativeModules.LivekitReactNativeModule
1010
: new Proxy(
1111
{},
1212
{

src/audio/AudioSession.ts

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,5 @@
1-
import { NativeModules, Platform } from 'react-native';
2-
const LINKING_ERROR =
3-
`The package '@livekit/react-native' doesn't seem to be linked. Make sure: \n\n` +
4-
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
5-
'- You rebuilt the app after installing the package\n' +
6-
'- You are not using Expo managed workflow\n';
7-
8-
const LivekitReactNative = NativeModules.LivekitReactNative
9-
? NativeModules.LivekitReactNative
10-
: new Proxy(
11-
{},
12-
{
13-
get() {
14-
throw new Error(LINKING_ERROR);
15-
},
16-
}
17-
);
1+
import { Platform } from 'react-native';
2+
import LiveKitModule from "../LKNativeModule";
183

194
/**
205
* Configuration for the underlying AudioSession.
@@ -252,21 +237,21 @@ export default class AudioSession {
252237
* See also useIOSAudioManagement for automatic configuration of iOS audio options.
253238
*/
254239
static configureAudio = async (config: AudioConfiguration) => {
255-
await LivekitReactNative.configureAudio(config);
240+
await LiveKitModule.configureAudio(config);
256241
};
257242

258243
/**
259244
* Starts an AudioSession.
260245
*/
261246
static startAudioSession = async () => {
262-
await LivekitReactNative.startAudioSession();
247+
await LiveKitModule.startAudioSession();
263248
};
264249

265250
/**
266251
* Stops the existing AudioSession.
267252
*/
268253
static stopAudioSession = async () => {
269-
await LivekitReactNative.stopAudioSession();
254+
await LiveKitModule.stopAudioSession();
270255
};
271256

272257
/**
@@ -297,7 +282,7 @@ export default class AudioSession {
297282
if (Platform.OS === 'ios') {
298283
return ['default', 'force_speaker'];
299284
} else if (Platform.OS === 'android') {
300-
return (await LivekitReactNative.getAudioOutputs()) as string[];
285+
return (await LiveKitModule.getAudioOutputs()) as string[];
301286
} else {
302287
return [];
303288
}
@@ -311,7 +296,7 @@ export default class AudioSession {
311296
* @param deviceId A deviceId retrieved from {@link getAudioOutputs}
312297
*/
313298
static selectAudioOutput = async (deviceId: string) => {
314-
await LivekitReactNative.selectAudioOutput(deviceId);
299+
await LiveKitModule.selectAudioOutput(deviceId);
315300
};
316301

317302
/**
@@ -321,7 +306,7 @@ export default class AudioSession {
321306
*/
322307
static showAudioRoutePicker = async () => {
323308
if (Platform.OS === 'ios') {
324-
await LivekitReactNative.showAudioRoutePicker();
309+
await LiveKitModule.showAudioRoutePicker();
325310
}
326311
};
327312

@@ -335,7 +320,7 @@ export default class AudioSession {
335320
config: AppleAudioConfiguration
336321
) => {
337322
if (Platform.OS === 'ios') {
338-
await LivekitReactNative.setAppleAudioConfiguration(config);
323+
await LiveKitModule.setAppleAudioConfiguration(config);
339324
}
340325
};
341326
}

0 commit comments

Comments
 (0)