Skip to content

Commit 0ef84aa

Browse files
committed
fix(ios): warn on unsupported updateReferencedAssets, add asset types to OOB example
Experimental backend logs a warning when updateReferencedAssets is called since the concurrency API cannot update already-bound artboard assets. Add explicit type fields to OutOfBandAssets example to suppress inference warnings. Bundle kanit_regular.ttf font in expo examples via expo-font.
1 parent 8805e6e commit 0ef84aa

6 files changed

Lines changed: 19 additions & 24 deletions

File tree

example/src/exercisers/OutOfBandAssets.tsx

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,17 @@ export default function OutOfBandAssetsExample() {
2222
referencedAssets: {
2323
'Inter-594377': {
2424
source: require('../../assets/fonts/Inter-594377.ttf'),
25-
// source: {
26-
// fileName: 'Inter-594377.ttf',
27-
// path: 'fonts', // only needed for Android assets
28-
// },
25+
type: 'font',
2926
},
3027
'referenced-image-2929282': {
3128
source: {
3229
uri: uri,
3330
},
34-
// source: {
35-
// fileName: 'referenced-image-2929282.png',
36-
// path: 'images', // only needed for Android assets
37-
// },
31+
type: 'image',
3832
},
3933
'referenced_audio-2929340': {
4034
source: require('../../assets/audio/referenced_audio-2929340.wav'),
41-
// source: {
42-
// fileName: 'referenced_audio-2929340.wav',
43-
// path: 'audio', // only needed for Android assets
44-
// },
35+
type: 'audio',
4536
},
4637
},
4738
}

expo-example/app.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ module.exports = {
4747
assets: ['../example/assets/rive/rewards.riv'],
4848
},
4949
],
50+
[
51+
'expo-font',
52+
{
53+
fonts: ['./assets/kanit_regular.ttf'],
54+
},
55+
],
5056
],
5157
experiments: {
5258
typedRoutes: true,

expo55-example/app.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ module.exports = {
4747
assets: ['../example/assets/rive/rewards.riv'],
4848
},
4949
],
50+
[
51+
'expo-font',
52+
{
53+
fonts: ['./assets/kanit_regular.ttf'],
54+
},
55+
],
5056
],
5157
experiments: {
5258
typedRoutes: true,

ios/new/ExperimentalAssetLoader.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@_spi(RiveExperimental) import RiveRuntime
1+
import RiveRuntime
22
import NitroModules
33

44
enum AssetType {

ios/new/HybridRiveFile.swift

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
@_spi(RiveExperimental) import RiveRuntime
1+
import RiveRuntime
22
import NitroModules
33

44
class HybridRiveFile: HybridRiveFileSpec {
@@ -149,14 +149,7 @@ class HybridRiveFile: HybridRiveFileSpec {
149149
}
150150

151151
func updateReferencedAssets(referencedAssets: ReferencedAssetsType) {
152-
guard let worker = worker else {
153-
RCTLogWarn("HybridRiveFile.updateReferencedAssets: No worker available")
154-
return
155-
}
156-
RCTLogInfo("HybridRiveFile.updateReferencedAssets: Updating \(referencedAssets.data?.count ?? 0) assets (note: existing artboards won't refresh)")
157-
Task { @MainActor in
158-
await ExperimentalAssetLoader.registerAssets(referencedAssets, on: worker)
159-
}
152+
RCTLogWarn("[Rive] updateReferencedAssets is not supported with the experimental backend — already-rendered artboards cannot be updated. Use the legacy backend for runtime asset swapping.")
160153
}
161154

162155
func getEnums() throws -> Promise<[RiveEnumDefinition]> {

ios/new/HybridRiveFileFactory.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,8 @@ final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendabl
2424
let data = try await HTTPDataLoader.shared.downloadData(from: fileURL)
2525
RCTLog("[HybridRiveFileFactory] fromURL: downloaded \(data.count) bytes")
2626
let worker = try await HybridRiveFileFactory.sharedWorkerTask.value
27-
RCTLog("[HybridRiveFileFactory] fromURL: got shared worker, referencedAssets=\(referencedAssets == nil ? "nil" : "\(referencedAssets!.data?.count ?? -1) assets"), keys=\(referencedAssets?.data?.keys.sorted() ?? [])")
27+
RCTLog("[HybridRiveFileFactory] fromURL: got shared worker")
2828
await ExperimentalAssetLoader.registerAssets(referencedAssets, on: worker)
29-
RCTLog("[HybridRiveFileFactory] fromURL: assets registered, creating file...")
3029
let file = try await File(source: .data(data), worker: worker)
3130
RCTLog("[HybridRiveFileFactory] fromURL: created file")
3231
return HybridRiveFile(file: file, worker: worker)

0 commit comments

Comments
 (0)