@@ -286,7 +286,10 @@ public struct AnimatedImage : PlatformViewRepresentable {
286
286
return view
287
287
}
288
288
289
- private func updateViewForName( _ name: String , view: AnimatedImageViewWrapper , context: Context ) {
289
+ private func updateViewForName( _ name: String ? , view: AnimatedImageViewWrapper , context: Context ) {
290
+ guard let name = name, name != context. coordinator. imageLoading. imageName else {
291
+ return
292
+ }
290
293
var image : PlatformImage ?
291
294
#if os(macOS)
292
295
image = SDAnimatedImage ( named: name, in: imageModel. bundle)
@@ -306,7 +309,10 @@ public struct AnimatedImage : PlatformViewRepresentable {
306
309
view. wrapped. image = image
307
310
}
308
311
309
- private func updateViewForData( _ data: Data , view: AnimatedImageViewWrapper , context: Context ) {
312
+ private func updateViewForData( _ data: Data ? , view: AnimatedImageViewWrapper , context: Context ) {
313
+ guard let data = data, data != context. coordinator. imageLoading. imageData else {
314
+ return
315
+ }
310
316
var image : PlatformImage ? = SDAnimatedImage ( data: data, scale: imageModel. scale)
311
317
if image == nil {
312
318
// For static image, use UIImage as defaults
@@ -344,14 +350,15 @@ public struct AnimatedImage : PlatformViewRepresentable {
344
350
// Refresh image, imageModel is the Source of Truth, switch the type
345
351
// Although we have Source of Truth, we can check the previous value, to avoid re-generate SDAnimatedImage, which is performance-cost.
346
352
let kind = imageModel. kind
347
- if kind == . name, let name = imageModel. name, name != context. coordinator. imageLoading. imageName {
348
- updateViewForName ( name, view: view, context: context)
349
- } else if kind == . data, let data = imageModel. data, data != context. coordinator. imageLoading. imageData {
350
- updateViewForData ( data, view: view, context: context)
351
- } else if kind == . url {
353
+ switch kind {
354
+ case . name:
355
+ updateViewForName ( imageModel. name, view: view, context: context)
356
+ case . data:
357
+ updateViewForData ( imageModel. data, view: view, context: context)
358
+ case . url:
352
359
updateViewForURL ( imageModel. url, view: view, context: context)
353
- } else {
354
- fatalError ( " Unsupported model kind: \( kind ) " )
360
+ case . unknown :
361
+ break // impossible
355
362
}
356
363
357
364
#if os(macOS)
0 commit comments