Skip to content

Commit 6244b2e

Browse files
authored
feat: add getPropertyCountAsync and getInstanceCountAsync and deprecate propertyCount and instanceCount (#198)
## Summary - Add `getPropertyCountAsync()` and `getInstanceCountAsync()` async methods to `ViewModel` - Deprecate sync `propertyCount` and `instanceCount` properties — the experimental Rive runtime requires async calls, and sync versions use blocking wrappers that can deadlock on the main thread - Legacy implementations wrap the existing sync getters in `Promise.async` - Update harness test to use async methods ## Test plan - [x] Run `databinding-advanced` harness tests on iOS and Android
1 parent e9779d2 commit 6244b2e

File tree

12 files changed

+130
-9
lines changed

12 files changed

+130
-9
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,14 @@ class HybridViewModel(private val viewModel: ViewModel) : HybridViewModelSpec()
5353
}
5454
}
5555

56+
override fun getPropertyCountAsync(): Promise<Double> {
57+
return Promise.async { propertyCount }
58+
}
59+
60+
override fun getInstanceCountAsync(): Promise<Double> {
61+
return Promise.async { instanceCount }
62+
}
63+
5664
override fun createInstanceByNameAsync(name: String): Promise<HybridViewModelInstanceSpec?> {
5765
return Promise.async { createInstanceByName(name) }
5866
}

example/__tests__/databinding-advanced.harness.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,8 @@ describe('ViewModel Properties Metadata', () => {
7373
const file = await loadFile(DATABINDING);
7474
const vm = file.viewModelByName('Person');
7575
expectDefined(vm);
76-
// Legacy returns 8/2, experimental returns 0/0
77-
expect(vm.propertyCount).toBeGreaterThanOrEqual(0);
78-
expect(vm.instanceCount).toBeGreaterThanOrEqual(0);
76+
expect(await vm.getPropertyCountAsync()).toBeGreaterThanOrEqual(0);
77+
expect(await vm.getInstanceCountAsync()).toBeGreaterThanOrEqual(0);
7978
});
8079
});
8180

ios/HybridViewModel.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ class HybridViewModel: HybridViewModelSpec {
4141
return HybridViewModelInstance(viewModelInstance: vmi)
4242
}
4343

44+
func getPropertyCountAsync() throws -> Promise<Double> {
45+
return Promise.async { self.propertyCount }
46+
}
47+
48+
func getInstanceCountAsync() throws -> Promise<Double> {
49+
return Promise.async { self.instanceCount }
50+
}
51+
4452
func createInstanceByNameAsync(name: String) throws -> Promise<(any HybridViewModelInstanceSpec)?> {
4553
return Promise.async { try self.createInstanceByName(name: name) }
4654
}

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

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

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

Lines changed: 2 additions & 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/HybridViewModelSpec.kt

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/c++/HybridViewModelSpecSwift.hpp

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

nitrogen/generated/ios/swift/HybridViewModelSpec.swift

Lines changed: 2 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/HybridViewModelSpec_cxx.swift

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

nitrogen/generated/shared/c++/HybridViewModelSpec.cpp

Lines changed: 2 additions & 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)