Conversation
95816cf to
4fe9e12
Compare
8485f9f to
9b4acd8
Compare
There was a problem hiding this comment.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
ktlint
🚫 [ktlint] standard:multiline-if-else reported by reviewdog 🐶
Missing { ... }
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline after '{'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline before '}'
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline after '{'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline before '}'
🚫 [ktlint] standard:no-unused-imports reported by reviewdog 🐶
Unused import
🚫 [ktlint] standard:string-template reported by reviewdog 🐶
Redundant curly braces
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
Expected a newline
🚫 [ktlint] standard:multiline-if-else reported by reviewdog 🐶
Missing { ... }
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
Expected a newline
🚫 [ktlint] standard:multiline-if-else reported by reviewdog 🐶
Missing { ... }
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:string-template reported by reviewdog 🐶
Redundant curly braces
🚫 [ktlint] standard:max-line-length reported by reviewdog 🐶
Exceeded max line length (140)
🚫 [ktlint] standard:string-template reported by reviewdog 🐶
Redundant curly braces
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Missing newline before ")"
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after ';'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after ';'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
A single line if-statement should be kept simple. The 'THEN' may not be wrapped in a block.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
🚫 [ktlint] standard:string-template reported by reviewdog 🐶
Redundant curly braces
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after ';'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:max-line-length reported by reviewdog 🐶
Exceeded max line length (140)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Missing newline before ")"
🚫 [ktlint] standard:function-naming reported by reviewdog 🐶
Function name should start with a lowercase letter (except factory methods) and use camel case
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:max-line-length reported by reviewdog 🐶
Exceeded max line length (140)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Missing newline before ")"
| if (data.size < 4) return AssetType.IMAGE | ||
|
|
||
| // PNG: 89 50 4E 47 | ||
| if (data[0] == 0x89.toByte() && data[1] == 0x50.toByte() && |
There was a problem hiding this comment.
🚫 [ktlint] standard:condition-wrapping reported by reviewdog 🐶
Newline expected before operand in multiline condition
|
|
||
| // PNG: 89 50 4E 47 | ||
| if (data[0] == 0x89.toByte() && data[1] == 0x50.toByte() && | ||
| data[2] == 0x4E.toByte() && data[3] == 0x47.toByte()) return AssetType.IMAGE |
There was a problem hiding this comment.
🚫 [ktlint] standard:condition-wrapping reported by reviewdog 🐶
Newline expected before operand in multiline condition
|
|
||
| // PNG: 89 50 4E 47 | ||
| if (data[0] == 0x89.toByte() && data[1] == 0x50.toByte() && | ||
| data[2] == 0x4E.toByte() && data[3] == 0x47.toByte()) return AssetType.IMAGE |
There was a problem hiding this comment.
🚫 [ktlint] standard:wrapping reported by reviewdog 🐶
Missing newline before ")"
|
|
||
| // PNG: 89 50 4E 47 | ||
| if (data[0] == 0x89.toByte() && data[1] == 0x50.toByte() && | ||
| data[2] == 0x4E.toByte() && data[3] == 0x47.toByte()) return AssetType.IMAGE |
There was a problem hiding this comment.
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
Expected a newline
|
|
||
| // PNG: 89 50 4E 47 | ||
| if (data[0] == 0x89.toByte() && data[1] == 0x50.toByte() && | ||
| data[2] == 0x4E.toByte() && data[3] == 0x47.toByte()) return AssetType.IMAGE |
There was a problem hiding this comment.
🚫 [ktlint] standard:multiline-if-else reported by reviewdog 🐶
Missing { ... }
| data[2] == 0x33.toByte()) return AssetType.AUDIO | ||
| // TrueType: 00 01 00 00 | ||
| if (data[0] == 0x00.toByte() && data[1] == 0x01.toByte() && | ||
| data[2] == 0x00.toByte() && data[3] == 0x00.toByte()) return AssetType.FONT |
There was a problem hiding this comment.
🚫 [ktlint] standard:multiline-if-else reported by reviewdog 🐶
Missing { ... }
| if (data[0] == 0x00.toByte() && data[1] == 0x01.toByte() && | ||
| data[2] == 0x00.toByte() && data[3] == 0x00.toByte()) return AssetType.FONT | ||
| // OpenType: 4F 54 54 4F ("OTTO") | ||
| if (data[0] == 0x4F.toByte() && data[1] == 0x54.toByte() && |
There was a problem hiding this comment.
🚫 [ktlint] standard:condition-wrapping reported by reviewdog 🐶
Newline expected before operand in multiline condition
| data[2] == 0x00.toByte() && data[3] == 0x00.toByte()) return AssetType.FONT | ||
| // OpenType: 4F 54 54 4F ("OTTO") | ||
| if (data[0] == 0x4F.toByte() && data[1] == 0x54.toByte() && | ||
| data[2] == 0x54.toByte() && data[3] == 0x4F.toByte()) return AssetType.FONT |
There was a problem hiding this comment.
🚫 [ktlint] standard:condition-wrapping reported by reviewdog 🐶
Newline expected before operand in multiline condition
| data[2] == 0x00.toByte() && data[3] == 0x00.toByte()) return AssetType.FONT | ||
| // OpenType: 4F 54 54 4F ("OTTO") | ||
| if (data[0] == 0x4F.toByte() && data[1] == 0x54.toByte() && | ||
| data[2] == 0x54.toByte() && data[3] == 0x4F.toByte()) return AssetType.FONT |
There was a problem hiding this comment.
🚫 [ktlint] standard:wrapping reported by reviewdog 🐶
Missing newline before ")"
| data[2] == 0x00.toByte() && data[3] == 0x00.toByte()) return AssetType.FONT | ||
| // OpenType: 4F 54 54 4F ("OTTO") | ||
| if (data[0] == 0x4F.toByte() && data[1] == 0x54.toByte() && | ||
| data[2] == 0x54.toByte() && data[3] == 0x4F.toByte()) return AssetType.FONT |
There was a problem hiding this comment.
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
Expected a newline
dd06b3a to
a5855c9
Compare
There was a problem hiding this comment.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
ktlint
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
A single line if-statement should be kept simple. The 'THEN' may not be wrapped in a block.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
🚫 [ktlint] standard:string-template reported by reviewdog 🐶
Redundant curly braces
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after ';'
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:max-line-length reported by reviewdog 🐶
Exceeded max line length (140)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Missing newline before ")"
🚫 [ktlint] standard:function-naming reported by reviewdog 🐶
Function name should start with a lowercase letter (except factory methods) and use camel case
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
🚫 [ktlint] standard:max-line-length reported by reviewdog 🐶
Exceeded max line length (140)
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Missing newline before ")"
| data[2] == 0x00.toByte() && data[3] == 0x00.toByte()) return AssetType.FONT | ||
| // OpenType: 4F 54 54 4F ("OTTO") | ||
| if (data[0] == 0x4F.toByte() && data[1] == 0x54.toByte() && | ||
| data[2] == 0x54.toByte() && data[3] == 0x4F.toByte()) return AssetType.FONT |
There was a problem hiding this comment.
🚫 [ktlint] standard:multiline-if-else reported by reviewdog 🐶
Missing { ... }
| import androidx.annotation.Keep | ||
| import app.rive.RiveFile | ||
| import app.rive.ViewModelInstance | ||
| import app.rive.ViewModelInstanceSource |
There was a problem hiding this comment.
🚫 [ktlint] standard:no-unused-imports reported by reviewdog 🐶
Unused import
| layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT) | ||
| surfaceTextureListener = object : TextureView.SurfaceTextureListener { | ||
| override fun onSurfaceTextureAvailable(st: SurfaceTexture, w: Int, h: Int) { | ||
| Log.d(TAG, "onSurfaceTextureAvailable: ${w}x${h} worker=${this@RiveReactNativeView.riveWorker != null}") |
There was a problem hiding this comment.
🚫 [ktlint] standard:string-template reported by reviewdog 🐶
Redundant curly braces
| override fun doFrame(frameTimeNanos: Long) { | ||
| if (!renderLoopRunning) return | ||
|
|
||
| val deltaTime = if (lastFrameTimeNs == 0L) Duration.ZERO |
There was a problem hiding this comment.
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
Expected a newline
| override fun doFrame(frameTimeNanos: Long) { | ||
| if (!renderLoopRunning) return | ||
|
|
||
| val deltaTime = if (lastFrameTimeNs == 0L) Duration.ZERO |
There was a problem hiding this comment.
🚫 [ktlint] standard:multiline-if-else reported by reviewdog 🐶
Missing { ... }
| } | ||
|
|
||
| private fun handlePointerEvent(event: MotionEvent) { | ||
| val worker = riveWorker ?: run { Log.w(TAG, "touch: no worker"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after ';'
| } | ||
|
|
||
| private fun handlePointerEvent(event: MotionEvent) { | ||
| val worker = riveWorker ?: run { Log.w(TAG, "touch: no worker"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
|
|
||
| private fun handlePointerEvent(event: MotionEvent) { | ||
| val worker = riveWorker ?: run { Log.w(TAG, "touch: no worker"); return } | ||
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
|
|
||
| private fun handlePointerEvent(event: MotionEvent) { | ||
| val worker = riveWorker ?: run { Log.w(TAG, "touch: no worker"); return } | ||
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after ';'
|
|
||
| private fun handlePointerEvent(event: MotionEvent) { | ||
| val worker = riveWorker ?: run { Log.w(TAG, "touch: no worker"); return } | ||
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } | ||
| val w = surfaceWidth.toFloat() | ||
| val h = surfaceHeight.toFloat() | ||
| if (w <= 0 || h <= 0) { Log.w(TAG, "touch: invalid surface ${w}x${h}"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:if-else-wrapping reported by reviewdog 🐶
A single line if-statement should be kept simple. The 'THEN' may not be wrapped in a block.
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } | ||
| val w = surfaceWidth.toFloat() | ||
| val h = surfaceHeight.toFloat() | ||
| if (w <= 0 || h <= 0) { Log.w(TAG, "touch: invalid surface ${w}x${h}"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } | ||
| val w = surfaceWidth.toFloat() | ||
| val h = surfaceHeight.toFloat() | ||
| if (w <= 0 || h <= 0) { Log.w(TAG, "touch: invalid surface ${w}x${h}"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:string-template reported by reviewdog 🐶
Redundant curly braces
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } | ||
| val w = surfaceWidth.toFloat() | ||
| val h = surfaceHeight.toFloat() | ||
| if (w <= 0 || h <= 0) { Log.w(TAG, "touch: invalid surface ${w}x${h}"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after ';'
| val smHandle = stateMachineHandle ?: run { Log.w(TAG, "touch: no smHandle"); return } | ||
| val w = surfaceWidth.toFloat() | ||
| val h = surfaceHeight.toFloat() | ||
| if (w <= 0 || h <= 0) { Log.w(TAG, "touch: invalid surface ${w}x${h}"); return } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
| val stateMachine = rememberStateMachine(artboard) | ||
|
|
||
| LaunchedEffect(stateMachine) { | ||
| Log.d("ComposeRiveTest", "artboard=${artboard.artboardHandle} sm=${stateMachine.stateMachineHandle} name=${artboard.name} smName=${stateMachine.name}") |
There was a problem hiding this comment.
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
| val stateMachine = rememberStateMachine(artboard) | ||
|
|
||
| LaunchedEffect(stateMachine) { | ||
| Log.d("ComposeRiveTest", "artboard=${artboard.artboardHandle} sm=${stateMachine.stateMachineHandle} name=${artboard.name} smName=${stateMachine.name}") |
There was a problem hiding this comment.
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
| val stateMachine = rememberStateMachine(artboard) | ||
|
|
||
| LaunchedEffect(stateMachine) { | ||
| Log.d("ComposeRiveTest", "artboard=${artboard.artboardHandle} sm=${stateMachine.stateMachineHandle} name=${artboard.name} smName=${stateMachine.name}") |
There was a problem hiding this comment.
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Argument should be on a separate line (unless all arguments can fit a single line)
| val stateMachine = rememberStateMachine(artboard) | ||
|
|
||
| LaunchedEffect(stateMachine) { | ||
| Log.d("ComposeRiveTest", "artboard=${artboard.artboardHandle} sm=${stateMachine.stateMachineHandle} name=${artboard.name} smName=${stateMachine.name}") |
There was a problem hiding this comment.
🚫 [ktlint] standard:max-line-length reported by reviewdog 🐶
Exceeded max line length (140)
| val stateMachine = rememberStateMachine(artboard) | ||
|
|
||
| LaunchedEffect(stateMachine) { | ||
| Log.d("ComposeRiveTest", "artboard=${artboard.artboardHandle} sm=${stateMachine.stateMachineHandle} name=${artboard.name} smName=${stateMachine.name}") |
There was a problem hiding this comment.
🚫 [ktlint] standard:argument-list-wrapping reported by reviewdog 🐶
Missing newline before ")"
Add new experimental iOS backend (ios/new/) with synchronous API, move legacy backend files to ios/legacy/, add getEnums() support, retry listener streams on missingData, and restore TestComponentOverlay. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering)
Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering)
getEnums() in legacy now throws directing users to the experimental backend instead of creating throwaway Worker+File instances. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering)
…essing Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering)
… binding Each Worker has its own C++ command server with its own m_artboards handle map. Creating separate Workers per file meant artboard handles from one file were invalid on another file's server. Using a shared singleton Worker fixes cross-file artboard property set. Also wires fit/alignment through experimental Fit enum and improves asset type detection with audio/font magic bytes. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
Passing fit to the Rive() constructor breaks layout mode because the MTKView drawable isn't ready yet. Set rive.fit after setupRiveUIView() instead.
Port Flutter data binding tests for VM access, enums, creation variants, list properties, artboard and image properties. Includes new .riv test assets and react-native-harness upgrade to alpha.25.
…ceByIndex Prevents fatal crash when passing negative numbers to Swift APIs expecting unsigned integers.
CocoaPods doesn't embed SPM-resolved dynamic frameworks automatically. Patches the embed script to include RiveRuntime when USE_RIVE_SPM=1.
Move 19 backend-specific files to src/legacy/java/, add Gradle sourceSets switching via USE_RIVE_NEW_API property, prepare empty experimental dirs.
Uses the new handle-based Rive Android SDK (app.rive.*) with CommandQueue, path-based ViewModelInstance property access, and Kotlin Flows for reactivity. Throws UnsupportedOperationException for SMI inputs, text runs, and events. Also fixes Gradle property resolution to use rootProject.findProperty.
Custom TextureView renderer with Choreographer render loop, CommandQueue polling infrastructure, ViewModel resolution and property validation, and example Compose test activities for manual testing.
Also fix viewModelByIndex/ByName on Android legacy to catch SDK exceptions instead of letting them propagate as JniExceptions.
…fferences Fix colorProperty setter Double→Int overflow on Android legacy (toLong().toInt()). Make enum and replaceViewModel tests tolerant of Android SDK behavioral differences.
8134a07 to
ec12673
Compare
| val file = riveFile ?: return Promise.resolved(emptyArray()) | ||
| return Promise.async { | ||
| val enums = file.getEnums() | ||
| enums.map { enum -> |
There was a problem hiding this comment.
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
| try { | ||
| // Find a string property to use as identifier for value comparison | ||
| val testPropName = vmNames.firstNotNullOfOrNull { name -> | ||
| file.getViewModelProperties(name) |
There was a problem hiding this comment.
🚫 [ktlint] standard:chain-method-continuation reported by reviewdog 🐶
Expected newline before '.'
|
|
||
| val artboardValue = try { | ||
| artboardVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { return vmNames.first() } |
There was a problem hiding this comment.
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline after '{'
|
|
||
| val artboardValue = try { | ||
| artboardVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { return vmNames.first() } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
|
|
||
| val artboardValue = try { | ||
| artboardVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { return vmNames.first() } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
|
|
||
| val artboardValue = try { | ||
| artboardVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { return vmNames.first() } |
There was a problem hiding this comment.
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline before '}'
| try { | ||
| val namedValue = try { | ||
| namedVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { continue } |
There was a problem hiding this comment.
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline after '{'
| try { | ||
| val namedValue = try { | ||
| namedVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { continue } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline after '{'
| try { | ||
| val namedValue = try { | ||
| namedVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { continue } |
There was a problem hiding this comment.
🚫 [ktlint] standard:statement-wrapping reported by reviewdog 🐶
Missing newline before '}'
| try { | ||
| val namedValue = try { | ||
| namedVmi.getStringFlow(testPropName).first() | ||
| } catch (_: Exception) { continue } |
There was a problem hiding this comment.
🚫 [ktlint] standard:try-catch-finally-spacing reported by reviewdog 🐶
Expected a newline before '}'
Summary
blockingAsynchelper to bridge async rive-ios API to sync interfacePromise.async {}wrappers (underlying SDK is already sync)useViewModelInstance,useRiveProperty) — no moreuseState+useEffectfor async loadingvaluegetter/setter instead ofgetValue()/setValue()Usage
Without the flags, the legacy backends are used.
TODO
RiveFileAssetsubclasses. Currently inferred from file extensions and magic bytes, but fails for assets with no extension (e.g.referenced_audio-2929340). Fix: add optionaltypein field toResolvedReferencedAsset. This fix is in RN.updateReferencedAssetsdoesn't work in experimental backend. Legacy cachesRiveFileAssetobjects and mutates them in-place (imageAsset.renderImage()). Experimental only hasworker.addGlobalImageAsset()consumed at file load time. ViewModel image properties (imgProp.set()) work fine via data binding — only affects OOB file-level assets.rive::CommandQueue::processMessages()crashes withEXC_BAD_ACCESS. The CADisplayLink fires after the Worker/ViewModelInstance are deallocated. Upstream: rive-ios#418, CDN variant: rive-ios#410valueStreamthrowsmissingDataon empty string — Setting a nested ViewModel string property to""kills the listener permanently. We work around this by restarting the stream on error. Upstream: rive-ios#416play()/pause()/reset()are no-ops — They setisPausedbut nothing reads it. No explicit play/pause, in experimental RiveView.