Skip to content

Commit d580977

Browse files
authored
Merge pull request #6 from imalsad/master
Fix xcode init error
2 parents 42bd408 + 29bb4a0 commit d580977

2 files changed

Lines changed: 49 additions & 25 deletions

File tree

ios/RNAPS/RNAPSAdLoaderModule.swift

Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -28,48 +28,50 @@ class RNAPSAdLoaderModule: RCTEventEmitter {
2828
static let ERROR_DOMAIN = "RNAPS"
2929
var adLoaders = Dictionary<NSNumber, DTBAdLoader>()
3030
var hasListeners = false;
31-
31+
3232
//MARK: - Native Module Setup
33-
33+
3434
deinit {
3535
invalidate()
3636
}
3737

3838
@objc static override func requiresMainQueueSetup() -> Bool {
3939
return false
4040
}
41-
41+
4242
@objc override func invalidate() {
4343
super.invalidate()
4444
for adLoader in adLoaders.values {
4545
adLoader.stop()
4646
}
4747
adLoaders.removeAll()
4848
}
49-
49+
5050
@objc override func startObserving() {
5151
hasListeners = true;
5252
}
53-
53+
5454
@objc override func stopObserving() {
5555
hasListeners = false;
5656
}
57-
58-
@objc override func supportedEvents() -> [String] {
57+
58+
// Using '!' for compatibility if superclass requires it, otherwise [String] is fine
59+
@objc override func supportedEvents() -> [String]! {
5960
return [
6061
RNAPSAdLoaderModule.EVENT_SUCCESS,
6162
RNAPSAdLoaderModule.EVENT_FAILURE
6263
]
6364
}
64-
65+
6566
private func sendEvent(name: String, body: Any) {
6667
if (hasListeners) {
6768
sendEvent(withName: name, body: body)
6869
}
6970
}
70-
71+
7172
//MARK: - AdLoadCallback impl
72-
73+
74+
// NOTE: Kept original AdLoadCallback without NSObject inheritance or weak ref based on "minimal" request
7375
private class AdLoadCallback: DTBAdCallback {
7476
let adLoaderModule: RNAPSAdLoaderModule
7577
let loaderId: NSNumber
@@ -82,7 +84,8 @@ class RNAPSAdLoaderModule: RCTEventEmitter {
8284
self.reject = reject
8385
}
8486
func onSuccess(_ adResponse: DTBAdResponse!) {
85-
let response = adResponse.customTargeting() ?? Dictionary()
87+
// Using original optional handling which defaults to empty Dict if nil
88+
let response = adResponse.customTargeting() ?? [:]
8689
adLoaderModule.sendEvent(name: RNAPSAdLoaderModule.EVENT_SUCCESS, body: [
8790
"loaderId": loaderId,
8891
"response": response
@@ -93,13 +96,14 @@ class RNAPSAdLoaderModule: RCTEventEmitter {
9396
self.reject = nil
9497
}
9598
}
96-
99+
97100
func onFailure(_ error: DTBAdError) {
98101
var code = ""
102+
// Using original switch without @unknown default
99103
switch error {
100104
case NETWORK_ERROR:
101105
code = "network_error"
102-
break;
106+
break; // Keep original breaks
103107
case NETWORK_TIMEOUT:
104108
code = "network_timeout"
105109
break;
@@ -112,7 +116,7 @@ class RNAPSAdLoaderModule: RCTEventEmitter {
112116
case REQUEST_ERROR:
113117
code = "request_error"
114118
break;
115-
default:
119+
default: // Use simple default to ensure exhaustiveness
116120
code = "unknown"
117121
}
118122
let message = String(format: "Failed to load APS ad with code: %@", code)
@@ -124,27 +128,43 @@ class RNAPSAdLoaderModule: RCTEventEmitter {
124128
"userInfo": userInfo
125129
])
126130
if let reject = reject {
127-
let error = NSError.init(domain: RNAPSAdLoaderModule.ERROR_DOMAIN, code: 666, userInfo: userInfo)
128-
reject(code, message, error)
131+
// Using original Int conversion and error code
132+
let nsError = NSError.init(domain: RNAPSAdLoaderModule.ERROR_DOMAIN, code: Int(error.rawValue), userInfo: userInfo)
133+
reject(code, message, nsError)
129134
self.resolve = nil
130135
self.reject = nil
131136
}
132137
}
133138
}
134-
139+
135140
//MARK: - Native Methods
136141

137142
@objc(loadAd:forAdType:withOptions:withResolver:withRejecter:)
138143
func loadAd(loaderId: NSNumber, adType: String, options: Dictionary<String, Any>, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) -> Void {
139144
stopAutoRefresh(loaderId: loaderId)
140-
141-
let adLoader = DTBAdLoader()
142145

146+
// --- MINIMAL PATCH START ---
147+
148+
// 1. Extract options needed for size/loader (moved before loader init)
149+
// WARNING: Using original unsafe force-unwrapping as requested! Could crash!
143150
let slotUUID = options["slotUUID"] as! String
144-
let size = options["size"] as? String
151+
let size = options["size"] as? String // Keep optional for interstitial case
152+
153+
// 2. Create AdNetworkInfo (using OTHER as placeholder)
154+
// NOTE: Ensure DTBADNETWORK_OTHER is defined/imported. Change if needed.
155+
let adNetworkInfo = DTBAdNetworkInfo(networkName: DTBADNETWORK_OTHER)
156+
157+
// 3. Initialize AdLoader correctly
158+
let adLoader = DTBAdLoader(adNetworkInfo: adNetworkInfo)
159+
160+
// --- MINIMAL PATCH END ---
161+
162+
163+
// --- Original logic continues below (using original unsafe unwraps!) ---
145164
let adSize: DTBAdSize
146165
switch adType {
147166
case RNAPSAdLoaderModule.AD_TYPE_BANNER:
167+
// WARNING: Original unsafe unwraps! Could crash!
148168
let values = size!.split(separator: "x")
149169
let width = Int(values[0])!
150170
let height = Int(values[1])!
@@ -154,30 +174,33 @@ class RNAPSAdLoaderModule: RCTEventEmitter {
154174
adSize = DTBAdSize(interstitialAdSizeWithSlotUUID: slotUUID)
155175
break
156176
default:
177+
// Original code just returned, no error reject
157178
return
158179
}
159180
adLoader.setAdSizes([adSize])
160181

161182
if let customTargeting = options["customTargeting"] as? Dictionary<String, String> {
183+
// Original loop syntax
162184
for (key, value) in (customTargeting) {
163185
adLoader.putCustomTarget(value, withKey: key)
164186
}
165187
}
166-
188+
167189
let autoRefresh = options["autoRefresh"] as? Bool ?? false
168-
190+
169191
let refreshInterval = options["refreshInterval"] as? Int32 ?? 60
170-
192+
171193
if (autoRefresh) {
172194
adLoader.setAutoRefresh(refreshInterval)
173195
adLoaders.updateValue(adLoader, forKey: loaderId)
174196
}
175197

176198
adLoader.loadAd(AdLoadCallback(adLoaderModule: self, loaderId: loaderId, resolve: resolve, reject: reject))
177199
}
178-
200+
179201
@objc(stopAutoRefresh:)
180202
func stopAutoRefresh(loaderId: NSNumber) {
203+
// Original optional chaining is fine
181204
adLoaders[loaderId]?.stop()
182205
adLoaders.removeValue(forKey: loaderId)
183206
}

ios/RNAPS/RNAPSAdsModule.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ class RNAPSAdsModule: NSObject {
4949
networkName = DTBADNETWORK_AD_GENERATION
5050
break;
5151
case "IRON_SOURCE":
52-
networkName = DTBADNETWORK_IRON_SOURCE
52+
//networkName = DTBADNETWORK_IRON_SOURCE
53+
networkName = DTBADNETWORK_OTHER
5354
break;
5455
case "MAX":
5556
networkName = DTBADNETWORK_MAX

0 commit comments

Comments
 (0)