Skip to content

Commit dcdde5e

Browse files
committed
fix: clean up legacy files to match upstream, fix Issue159 error type
1 parent be6d334 commit dcdde5e

File tree

10 files changed

+351
-210
lines changed

10 files changed

+351
-210
lines changed

android/src/legacy/java/com/margelo/nitro/rive/HybridRiveFile.kt

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,9 @@ class HybridRiveFile : HybridRiveFileSpec() {
2121
private val weakViews = mutableListOf<WeakReference<HybridRiveView>>()
2222
private val scope = CoroutineScope(Dispatchers.Main + SupervisorJob())
2323

24-
// Deprecated: Use getViewModelNamesAsync instead
2524
override val viewModelCount: Double?
2625
get() = riveFile?.viewModelCount?.toDouble()
2726

28-
override fun getViewModelNamesAsync(): Promise<Array<String>> {
29-
return Promise.async {
30-
val count = riveFile?.viewModelCount ?: return@async emptyArray()
31-
(0 until count).mapNotNull { riveFile?.getViewModelByIndex(it)?.name }.toTypedArray()
32-
}
33-
}
34-
35-
// Deprecated: Use getViewModelNamesAsync + viewModelByNameAsync instead
3627
override fun viewModelByIndex(index: Double): HybridViewModelSpec? {
3728
if (index < 0) return null
3829
return try {
@@ -43,7 +34,6 @@ class HybridRiveFile : HybridRiveFileSpec() {
4334
}
4435
}
4536

46-
// Deprecated: Use viewModelByNameAsync instead
4737
override fun viewModelByName(name: String): HybridViewModelSpec? {
4838
return try {
4939
val vm = riveFile?.getViewModelByName(name) ?: return null
@@ -53,15 +43,6 @@ class HybridRiveFile : HybridRiveFileSpec() {
5343
}
5444
}
5545

56-
// validate is ignored on legacy backend — native getViewModelByName(name) already returns null for unknown names
57-
override fun viewModelByNameAsync(name: String, validate: Boolean?): Promise<HybridViewModelSpec?> {
58-
return Promise.async {
59-
val vm = riveFile?.getViewModelByName(name) ?: return@async null
60-
HybridViewModel(vm)
61-
}
62-
}
63-
64-
// Deprecated: Use defaultArtboardViewModelAsync instead
6546
override fun defaultArtboardViewModel(artboardBy: ArtboardBy?): HybridViewModelSpec? {
6647
try {
6748
val artboard = when (artboardBy?.type) {
@@ -77,30 +58,12 @@ class HybridRiveFile : HybridRiveFileSpec() {
7758
}
7859
}
7960

80-
override fun defaultArtboardViewModelAsync(artboardBy: ArtboardBy?): Promise<HybridViewModelSpec?> {
81-
return Promise.async { defaultArtboardViewModel(artboardBy) }
82-
}
83-
84-
// Deprecated: Use getArtboardCountAsync instead
8561
override val artboardCount: Double
8662
get() = riveFile?.artboardNames?.size?.toDouble() ?: 0.0
8763

88-
override fun getArtboardCountAsync(): Promise<Double> {
89-
return Promise.async {
90-
riveFile?.artboardNames?.size?.toDouble() ?: 0.0
91-
}
92-
}
93-
94-
// Deprecated: Use getArtboardNamesAsync instead
9564
override val artboardNames: Array<String>
9665
get() = riveFile?.artboardNames?.toTypedArray() ?: emptyArray()
9766

98-
override fun getArtboardNamesAsync(): Promise<Array<String>> {
99-
return Promise.async {
100-
riveFile?.artboardNames?.toTypedArray() ?: emptyArray()
101-
}
102-
}
103-
10467
override fun getBindableArtboard(name: String): HybridBindableArtboardSpec {
10568
val file = riveFile ?: throw IllegalStateException("RiveFile not loaded")
10669
val bindable = file.createBindableArtboardByName(name)
@@ -123,6 +86,38 @@ class HybridRiveFile : HybridRiveFileSpec() {
12386
}
12487
}
12588

89+
override fun getViewModelNamesAsync(): Promise<Array<String>> {
90+
return Promise.async {
91+
val file = riveFile ?: return@async emptyArray()
92+
val count = file.viewModelCount
93+
val names = mutableListOf<String>()
94+
for (i in 0 until count) {
95+
try {
96+
val vm = file.getViewModelByIndex(i)
97+
names.add(vm.name)
98+
} catch (_: Exception) {
99+
}
100+
}
101+
names.toTypedArray()
102+
}
103+
}
104+
105+
override fun viewModelByNameAsync(name: String, validate: Boolean?): Promise<HybridViewModelSpec?> {
106+
return Promise.async { viewModelByName(name) }
107+
}
108+
109+
override fun defaultArtboardViewModelAsync(artboardBy: ArtboardBy?): Promise<HybridViewModelSpec?> {
110+
return Promise.async { defaultArtboardViewModel(artboardBy) }
111+
}
112+
113+
override fun getArtboardCountAsync(): Promise<Double> {
114+
return Promise.async { artboardCount }
115+
}
116+
117+
override fun getArtboardNamesAsync(): Promise<Array<String>> {
118+
return Promise.async { artboardNames }
119+
}
120+
126121
override fun updateReferencedAssets(referencedAssets: ReferencedAssetsType) {
127122
val assetsData = referencedAssets.data ?: return
128123
val cache = referencedAssetCache ?: return

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

Lines changed: 16 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,13 @@ import com.margelo.nitro.core.Promise
99
@Keep
1010
@DoNotStrip
1111
class HybridViewModel(private val viewModel: ViewModel) : HybridViewModelSpec() {
12-
// Deprecated: Use getPropertyCountAsync instead
1312
override val propertyCount: Double
1413
get() = viewModel.propertyCount.toDouble()
15-
16-
// Deprecated: Use getInstanceCountAsync instead
1714
override val instanceCount: Double
1815
get() = viewModel.instanceCount.toDouble()
19-
2016
override val modelName: String
2117
get() = viewModel.name
2218

23-
override fun getPropertyCountAsync(): Promise<Double> {
24-
return Promise.async { propertyCount }
25-
}
26-
27-
override fun getInstanceCountAsync(): Promise<Double> {
28-
return Promise.async { instanceCount }
29-
}
30-
31-
// Deprecated: Use createInstanceByNameAsync instead
3219
override fun createInstanceByIndex(index: Double): HybridViewModelInstanceSpec? {
3320
if (index < 0) return null
3421
try {
@@ -39,7 +26,6 @@ class HybridViewModel(private val viewModel: ViewModel) : HybridViewModelSpec()
3926
}
4027
}
4128

42-
// Deprecated: Use createInstanceByNameAsync instead
4329
override fun createInstanceByName(name: String): HybridViewModelInstanceSpec? {
4430
try {
4531
val vmi = viewModel.createInstanceFromName(name)
@@ -49,18 +35,6 @@ class HybridViewModel(private val viewModel: ViewModel) : HybridViewModelSpec()
4935
}
5036
}
5137

52-
override fun createInstanceByNameAsync(name: String): Promise<HybridViewModelInstanceSpec?> {
53-
return Promise.async {
54-
try {
55-
val vmi = viewModel.createInstanceFromName(name)
56-
HybridViewModelInstance(vmi)
57-
} catch (e: ViewModelException) {
58-
null
59-
}
60-
}
61-
}
62-
63-
// Deprecated: Use createDefaultInstanceAsync instead
6438
override fun createDefaultInstance(): HybridViewModelInstanceSpec? {
6539
try {
6640
val vmi = viewModel.createDefaultInstance()
@@ -70,18 +44,6 @@ class HybridViewModel(private val viewModel: ViewModel) : HybridViewModelSpec()
7044
}
7145
}
7246

73-
override fun createDefaultInstanceAsync(): Promise<HybridViewModelInstanceSpec?> {
74-
return Promise.async {
75-
try {
76-
val vmi = viewModel.createDefaultInstance()
77-
HybridViewModelInstance(vmi)
78-
} catch (e: ViewModelException) {
79-
null
80-
}
81-
}
82-
}
83-
84-
// Deprecated: Use createBlankInstanceAsync instead
8547
override fun createInstance(): HybridViewModelInstanceSpec? {
8648
try {
8749
val vmi = viewModel.createBlankInstance()
@@ -91,7 +53,23 @@ class HybridViewModel(private val viewModel: ViewModel) : HybridViewModelSpec()
9153
}
9254
}
9355

56+
override fun createInstanceByNameAsync(name: String): Promise<HybridViewModelInstanceSpec?> {
57+
return Promise.async { createInstanceByName(name) }
58+
}
59+
60+
override fun createDefaultInstanceAsync(): Promise<HybridViewModelInstanceSpec?> {
61+
return Promise.async { createDefaultInstance() }
62+
}
63+
9464
override fun createBlankInstanceAsync(): Promise<HybridViewModelInstanceSpec?> {
9565
return Promise.async { createInstance() }
9666
}
67+
68+
override fun getPropertyCountAsync(): Promise<Double> {
69+
return Promise.async { propertyCount }
70+
}
71+
72+
override fun getInstanceCountAsync(): Promise<Double> {
73+
return Promise.async { instanceCount }
74+
}
9775
}

android/src/legacy/java/com/margelo/nitro/rive/HybridViewModelInstance.kt

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@ import com.margelo.nitro.core.Promise
99
@Keep
1010
@DoNotStrip
1111
class HybridViewModelInstance(val viewModelInstance: ViewModelInstance) : HybridViewModelInstanceSpec() {
12-
companion object {
13-
private const val TAG = "HybridVMI"
14-
}
15-
1612
override val instanceName: String
1713
get() = viewModelInstance.name
1814

15+
// Returns null if ViewModelException is thrown for iOS parity
16+
// (iOS SDK returns nil when property not found, Android SDK throws)
1917
private inline fun <T> getPropertyOrNull(block: () -> T): T? {
2018
return try {
2119
block()
@@ -60,21 +58,16 @@ class HybridViewModelInstance(val viewModelInstance: ViewModelInstance) : Hybrid
6058
HybridViewModelArtboardProperty(viewModelInstance.getArtboardProperty(path))
6159
}
6260

63-
// Deprecated: Use viewModelAsync instead
6461
override fun viewModel(path: String) = getPropertyOrNull {
6562
HybridViewModelInstance(viewModelInstance.getInstanceProperty(path))
6663
}
6764

68-
override fun viewModelAsync(path: String): Promise<HybridViewModelInstanceSpec?> {
69-
return Promise.async {
70-
getPropertyOrNull {
71-
HybridViewModelInstance(viewModelInstance.getInstanceProperty(path))
72-
}
73-
}
74-
}
75-
7665
override fun replaceViewModel(path: String, instance: HybridViewModelInstanceSpec) {
7766
val nativeInstance = (instance as HybridViewModelInstance).viewModelInstance
7867
viewModelInstance.setInstanceProperty(path, nativeInstance)
7968
}
69+
70+
override fun viewModelAsync(path: String): Promise<HybridViewModelInstanceSpec?> {
71+
return Promise.async { viewModel(path) }
72+
}
8073
}

android/src/legacy/java/com/margelo/nitro/rive/HybridViewModelListProperty.kt

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,37 +11,20 @@ import kotlinx.coroutines.flow.map
1111
class HybridViewModelListProperty(private val listProperty: ViewModelListProperty) :
1212
HybridViewModelListPropertySpec(),
1313
BaseHybridViewModelProperty<Unit> by BaseHybridViewModelPropertyImpl() {
14-
// Deprecated: Use getLengthAsync instead
1514
override val length: Double
1615
get() = listProperty.size.toDouble()
1716

18-
override fun getLengthAsync(): Promise<Double> {
19-
return Promise.async { listProperty.size.toDouble() }
20-
}
21-
2217
private fun requireHybridInstance(instance: HybridViewModelInstanceSpec): HybridViewModelInstance {
2318
return instance as? HybridViewModelInstance
2419
?: throw IllegalArgumentException("Expected HybridViewModelInstance but got ${instance::class.simpleName}")
2520
}
2621

27-
// Deprecated: Use getInstanceAtAsync instead
2822
override fun getInstanceAt(index: Double): HybridViewModelInstanceSpec? {
2923
val idx = index.toInt()
3024
if (idx < 0 || idx >= listProperty.size) return null
3125
return HybridViewModelInstance(listProperty.elementAt(idx))
3226
}
3327

34-
override fun getInstanceAtAsync(index: Double): Promise<HybridViewModelInstanceSpec?> {
35-
return Promise.async {
36-
val idx = index.toInt()
37-
if (idx < 0 || idx >= listProperty.size) {
38-
null
39-
} else {
40-
HybridViewModelInstance(listProperty.elementAt(idx))
41-
}
42-
}
43-
}
44-
4528
override fun addInstance(instance: HybridViewModelInstanceSpec) {
4629
val hybridInstance = requireHybridInstance(instance)
4730
listProperty.add(hybridInstance.viewModelInstance)
@@ -74,6 +57,14 @@ class HybridViewModelListProperty(private val listProperty: ViewModelListPropert
7457
return true
7558
}
7659

60+
override fun getLengthAsync(): Promise<Double> {
61+
return Promise.async { length }
62+
}
63+
64+
override fun getInstanceAtAsync(index: Double): Promise<HybridViewModelInstanceSpec?> {
65+
return Promise.async { getInstanceAt(index) }
66+
}
67+
7768
override fun addListener(onChanged: () -> Unit): () -> Unit {
7869
val remover = addListenerInternal { _ -> onChanged() }
7970
ensureValueListenerJob(listProperty.valueFlow.map { })

android/src/legacy/java/com/margelo/nitro/rive/HybridViewModelStringProperty.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import com.margelo.nitro.core.Promise
1010
class HybridViewModelStringProperty(private val viewModelString: ViewModelStringProperty) :
1111
HybridViewModelStringPropertySpec(),
1212
BaseHybridViewModelProperty<String> by BaseHybridViewModelPropertyImpl() {
13-
1413
override var value: String
1514
get() = viewModelString.value
1615
set(value) {

0 commit comments

Comments
 (0)