1 // Copyright 2022-present 650 Industries. All rights reserved.
2 
3 import ExpoModulesCore
4 import SDWebImage
5 
6 public final class ImageModule: Module {
7   lazy var prefetcher = SDWebImagePrefetcher.shared
8 
9   public func definition() -> ModuleDefinition {
10     Name("ExpoImage")
11 
12     View(ImageView.self) {
13       Events(
14         "onLoadStart",
15         "onProgress",
16         "onError",
17         "onLoad"
18       )
19 
20       Prop("source") { (view, source: ImageSource) in
21         view.source = source
22       }
23 
24       Prop("resizeMode") { (view, resizeMode: ImageResizeMode) in
25         view.resizeMode = resizeMode
26       }
27 
28       Prop("transition") { (view, transition: ImageTransition?) in
29         view.transition = transition
30       }
31     }
32 
33     Function("clearMemoryCache") {
34       SDImageCache.shared.clearMemory()
35     }
36 
37     Function("clearDiskCache") {
38       SDImageCache.shared.clearDisk()
39     }
40   }
41 }
42