Skip to content

Commit fe41524

Browse files
committed
feat: getBoundViewModelInstance
1 parent d888d84 commit fe41524

14 files changed

Lines changed: 81 additions & 11 deletions

File tree

android/src/main/java/com/margelo/nitro/rive/HybridRiveView.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@ class HybridRiveView(val context: ThemedReactContext) : HybridRiveViewSpec() {
7474
view.bindViewModelInstance(hybridVmi.viewModelInstance)
7575
}
7676

77+
override fun getBoundViewModelInstance(): HybridViewModelInstanceSpec? {
78+
val viewModelInstance = view.getBoundViewModelInstance() ?: return null
79+
return HybridViewModelInstance(viewModelInstance)
80+
}
81+
7782
override fun play() = executeOnUiThread { view.play() }
7883

7984
override fun pause() = executeOnUiThread { view.pause() }

android/src/main/java/com/rive/RiveReactNativeView.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,15 @@ class RiveReactNativeView(context: ThemedReactContext) : FrameLayout(context) {
8686
}
8787
}
8888

89+
fun getBoundViewModelInstance(): ViewModelInstance? {
90+
val stateMachines = riveAnimationView?.controller?.stateMachines
91+
return if (!stateMachines.isNullOrEmpty()) {
92+
stateMachines.first().viewModelInstance
93+
} else {
94+
null
95+
}
96+
}
97+
8998
fun play() = riveAnimationView?.play()
9099

91100
fun pause() = riveAnimationView?.pause();

ios/HybridRiveView.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@ class HybridRiveView : HybridRiveViewSpec {
3636
guard let viewModelInstance = (viewModelInstance as? HybridViewModelInstance)?.viewModelInstance else { return }
3737
try getRiveView().bindViewModelInstance(viewModelInstance: viewModelInstance)
3838
}
39-
39+
40+
func getBoundViewModelInstance() throws -> (any HybridViewModelInstanceSpec)? {
41+
guard let viewModelInstance = try getRiveView().getBoundViewModelInstance() else { return nil }
42+
return HybridViewModelInstance(viewModelInstance: viewModelInstance)
43+
}
44+
4045
func play() throws { try getRiveView().play() }
4146

4247
func pause() throws { try getRiveView().pause() }

ios/RiveReactNativeView.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,11 @@ class RiveReactNativeView: UIView, RiveStateMachineDelegate {
7676
func bindViewModelInstance(viewModelInstance: RiveDataBindingViewModel.Instance) {
7777
baseViewModel?.riveModel?.stateMachine?.bind(viewModelInstance: viewModelInstance)
7878
}
79-
79+
80+
func getBoundViewModelInstance() -> RiveDataBindingViewModel.Instance? {
81+
return baseViewModel?.riveModel?.stateMachine?.viewModelInstance
82+
}
83+
8084
func play() {
8185
baseViewModel?.play()
8286
}

nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/ios/Rive-Swift-Cxx-Bridge.hpp

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/ios/c++/HybridRiveViewSpecSwift.hpp

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/ios/swift/HybridRiveViewSpec.swift

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)