@@ -33,7 +33,13 @@ class RiveReactNativeView: RCTView, RivePlayerDelegate, RiveStateMachineDelegate
3333 var cachedRiveFile : RiveFile ?
3434 var previousReferencedAssets : NSDictionary ?
3535 var cachedFileAssets : [ String : RiveFileAsset ] = [ : ]
36-
36+
37+ private var weakCustomLoader : ( ( RiveFileAsset , Data , RiveFactory ) -> Bool ) {
38+ return { [ weak self] asset, data, factory in
39+ self ? . customLoader ( asset: asset, data: data, factory: factory) ?? false
40+ }
41+ }
42+
3743 @objc var resourceName : String ? = nil {
3844 didSet {
3945 if ( resourceName != nil ) {
@@ -330,11 +336,11 @@ class RiveReactNativeView: RCTView, RivePlayerDelegate, RiveStateMachineDelegate
330336
331337 let updatedViewModel : RiveViewModel
332338 if let smName = stateMachineName {
333- updatedViewModel = RiveViewModel ( fileName: name, stateMachineName: smName, fit: convertFit ( fit) , alignment: convertAlignment ( alignment) , autoPlay: autoplay, artboardName: artboardName, customLoader: customLoader )
339+ updatedViewModel = RiveViewModel ( fileName: name, stateMachineName: smName, fit: convertFit ( fit) , alignment: convertAlignment ( alignment) , autoPlay: autoplay, artboardName: artboardName, customLoader: weakCustomLoader )
334340 } else if let animName = animationName {
335- updatedViewModel = RiveViewModel ( fileName: name, animationName: animName, fit: convertFit ( fit) , alignment: convertAlignment ( alignment) , autoPlay: autoplay, artboardName: artboardName, customLoader: customLoader )
341+ updatedViewModel = RiveViewModel ( fileName: name, animationName: animName, fit: convertFit ( fit) , alignment: convertAlignment ( alignment) , autoPlay: autoplay, artboardName: artboardName, customLoader: weakCustomLoader )
336342 } else {
337- updatedViewModel = RiveViewModel ( fileName: name, fit: convertFit ( fit) , alignment: convertAlignment ( alignment) , autoPlay: autoplay, artboardName: artboardName, customLoader: customLoader )
343+ updatedViewModel = RiveViewModel ( fileName: name, fit: convertFit ( fit) , alignment: convertAlignment ( alignment) , autoPlay: autoplay, artboardName: artboardName, customLoader: weakCustomLoader )
338344 }
339345 cachedRiveFile = updatedViewModel. riveModel? . riveFile
340346 warnForUnusedAssets ( )
@@ -360,7 +366,7 @@ class RiveReactNativeView: RCTView, RivePlayerDelegate, RiveStateMachineDelegate
360366 return
361367 }
362368 do {
363- let riveFile = try RiveFile ( data: data, loadCdn: true , customAssetLoader: customLoader )
369+ let riveFile = try RiveFile ( data: data, loadCdn: true , customAssetLoader: weakCustomLoader )
364370 self . cachedRiveFile = riveFile
365371 let riveModel = RiveModel ( riveFile: riveFile)
366372 let fit = self . convertFit ( self . fit)
0 commit comments