Skip to content

Commit 8d8f7b9

Browse files
committed
fix: fix leaking promise on getDuration + NSError() leak rejection
1 parent c836c68 commit 8d8f7b9

2 files changed

Lines changed: 15 additions & 15 deletions

File tree

ios/AudioRecorder.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class AudioRecorder: NSObject, AVAudioRecorderDelegate{
4949

5050
if (path == nil) {
5151
guard let newPath = self.createAudioRecordPath(fileNameFormat: fileNameFormat) else {
52-
reject(Constants.audioWaveforms, "Failed to initialise file URL", NSError())
52+
reject(Constants.audioWaveforms, "Failed to initialise file URL", nil)
5353
return
5454
}
5555
audioUrl = newPath
@@ -62,7 +62,7 @@ public class AudioRecorder: NSObject, AVAudioRecorderDelegate{
6262
try AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playAndRecord, options: options)
6363
try AVAudioSession.sharedInstance().setActive(true)
6464
guard let newPath = audioUrl else {
65-
reject(Constants.audioWaveforms, "Failed to initialise file URL", NSError())
65+
reject(Constants.audioWaveforms, "Failed to initialise file URL", nil)
6666
return
6767
}
6868
audioRecorder = try AVAudioRecorder(url: newPath, settings: settings as [String : Any])
@@ -116,7 +116,7 @@ public class AudioRecorder: NSObject, AVAudioRecorderDelegate{
116116
resolve([asset.url.absoluteString,Int(recordedDuration.seconds * 1000).description])
117117
}
118118
} else {
119-
reject(Constants.audioWaveforms, "Failed to stop recording", NSError())
119+
reject(Constants.audioWaveforms, "Failed to stop recording", nil)
120120
}
121121
audioRecorder = nil
122122
}

ios/AudioWaveform.swift

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class AudioWaveform: RCTEventEmitter {
105105
if(key != nil) {
106106
createOrUpdateExtractor(playerKey: key!, path: path, noOfSamples: noOfSamples, resolve: resolve, rejecter: reject)
107107
} else {
108-
reject(Constants.audioWaveforms,"Can not get waveform data",NSError())
108+
reject(Constants.audioWaveforms,"Can not get waveform data",nil)
109109
}
110110
}
111111

@@ -114,7 +114,7 @@ class AudioWaveform: RCTEventEmitter {
114114
do {
115115
let audioUrl = URL.init(string: path!)
116116
if(audioUrl == nil){
117-
reject(Constants.audioWaveforms, "Failed to initialise Url from provided audio file If path contains `file://` try removing it", NSError())
117+
reject(Constants.audioWaveforms, "Failed to initialise Url from provided audio file If path contains `file://` try removing it", nil)
118118
}
119119
let newExtractor = try WaveformExtractor(url: audioUrl!, channel: self, resolve: resolve, rejecter: reject)
120120
extractors[playerKey] = newExtractor
@@ -130,7 +130,7 @@ class AudioWaveform: RCTEventEmitter {
130130
reject(Constants.audioWaveforms, "Failed to decode audio file", e)
131131
}
132132
} else {
133-
reject(Constants.audioWaveforms, "Audio file path can't be empty or null", NSError())
133+
reject(Constants.audioWaveforms, "Audio file path can't be empty or null", nil)
134134

135135
}
136136
}
@@ -156,7 +156,7 @@ class AudioWaveform: RCTEventEmitter {
156156
resolver: resolve,
157157
rejecter: reject)
158158
} else {
159-
reject(Constants.audioWaveforms, "Can not prepare player", NSError())
159+
reject(Constants.audioWaveforms, "Can not prepare player", nil)
160160
}
161161
}
162162

@@ -168,7 +168,7 @@ class AudioWaveform: RCTEventEmitter {
168168
if(key != nil){
169169
audioPlayers[key!]?.startPlyer(finishMode, speed: speed, result:resolve)
170170
} else {
171-
reject(Constants.audioWaveforms, "Can not start player", NSError())
171+
reject(Constants.audioWaveforms, "Can not start player", nil)
172172
}
173173
}
174174

@@ -177,7 +177,7 @@ class AudioWaveform: RCTEventEmitter {
177177
if(key != nil){
178178
audioPlayers[key!]?.pausePlayer(result: resolve)
179179
} else {
180-
reject(Constants.audioWaveforms, "Can not pause player, Player key is null", NSError())
180+
reject(Constants.audioWaveforms, "Can not pause player, Player key is null", nil)
181181
}
182182
}
183183

@@ -188,7 +188,7 @@ class AudioWaveform: RCTEventEmitter {
188188
audioPlayers[key!] = nil // Release the player after stopping it
189189
resolve(true)
190190
} else {
191-
reject(Constants.audioWaveforms, "Can not stop player, Player key is null", NSError())
191+
reject(Constants.audioWaveforms, "Can not stop player, Player key is null", nil)
192192
}
193193
}
194194

@@ -197,7 +197,7 @@ class AudioWaveform: RCTEventEmitter {
197197
if(key != nil){
198198
audioPlayers[key!]?.seekTo(args?[Constants.progress] as? Double,resolve)
199199
} else {
200-
reject(Constants.audioWaveforms, "Can not seek to postion, Player key is null", NSError())
200+
reject(Constants.audioWaveforms, "Can not seek to postion, Player key is null", nil)
201201
}
202202
}
203203

@@ -206,14 +206,14 @@ class AudioWaveform: RCTEventEmitter {
206206
if(key != nil){
207207
audioPlayers[key!]?.setVolume(args?[Constants.volume] as? Double,resolve)
208208
} else {
209-
reject(Constants.audioWaveforms, "Can not set volume, Player key is null", NSError())
209+
reject(Constants.audioWaveforms, "Can not set volume, Player key is null", nil)
210210
}
211211
}
212212

213213
@objc func getDuration(_ args: NSDictionary?, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: RCTPromiseRejectBlock) -> Void {
214214
let type = args?[Constants.durationType] as? Int
215215
let key = args?[Constants.playerKey] as? String
216-
if(key != nil){
216+
if(key != nil && audioPlayers[key!] != nil){
217217
do{
218218
if(type == 0) {
219219
try audioPlayers[key!]?.getDuration(DurationType.Current,resolve)
@@ -224,7 +224,7 @@ class AudioWaveform: RCTEventEmitter {
224224
reject(Constants.audioWaveforms, "Failed to get duration", e)
225225
}
226226
} else {
227-
reject(Constants.audioWaveforms, "Can not get duration", NSError())
227+
reject(Constants.audioWaveforms, "Can not get duration", nil)
228228
}
229229
}
230230

@@ -263,7 +263,7 @@ class AudioWaveform: RCTEventEmitter {
263263
let status = audioPlayers[key!]?.setPlaybackSpeed(speed)
264264
resolve(status)
265265
} else {
266-
reject(Constants.audioWaveforms, "Can not pause player, Player key is null", NSError())
266+
reject(Constants.audioWaveforms, "Can not pause player, Player key is null", nil)
267267
}
268268
}
269269
}

0 commit comments

Comments
 (0)