File tree Expand file tree Collapse file tree 3 files changed +26
-3
lines changed
Sources/ComponentsKit/Components/Avatar Expand file tree Collapse file tree 3 files changed +26
-3
lines changed Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ final class AvatarImageManager: ObservableObject {
55 @Published var avatarImage : UIImage
66
77 private var model : AvatarVM
8- private var remoteImagesCache = NSCache < NSString , UIImage > ( )
8+ private static var remoteImagesCache = NSCache < NSString , UIImage > ( )
99
1010 init ( model: AvatarVM ) {
1111 self . model = model
@@ -27,7 +27,7 @@ final class AvatarImageManager: ObservableObject {
2727
2828 switch model. imageSrc {
2929 case . remote( let url) :
30- if let image = self . remoteImagesCache. object ( forKey: url. absoluteString as NSString ) {
30+ if let image = Self . remoteImagesCache. object ( forKey: url. absoluteString as NSString ) {
3131 self . avatarImage = image
3232 } else {
3333 self . avatarImage = model. placeholderImage ( for: size)
@@ -47,7 +47,7 @@ final class AvatarImageManager: ObservableObject {
4747 let image = UIImage ( data: data)
4848 else { return }
4949
50- self . remoteImagesCache. setObject ( image, forKey: url. absoluteString as NSString )
50+ Self . remoteImagesCache. setObject ( image, forKey: url. absoluteString as NSString )
5151
5252 if url == self . model. imageURL {
5353 self . avatarImage = image
Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ public struct SUAvatar: View {
88 public var model : AvatarVM
99
1010 @StateObject private var imageManager : AvatarImageManager
11+ @Environment ( \. colorScheme) private var colorScheme
1112
1213 // MARK: - Initialization
1314
@@ -37,5 +38,8 @@ public struct SUAvatar: View {
3738 . onChange ( of: self . model) { newValue in
3839 self . imageManager. update ( model: newValue, size: newValue. preferredSize)
3940 }
41+ . onChange ( of: self . colorScheme) { _ in
42+ self . imageManager. update ( model: self . model, size: self . model. preferredSize)
43+ }
4044 }
4145}
Original file line number Diff line number Diff line change @@ -46,6 +46,12 @@ open class UKAvatar: UIImageView, UKComponent {
4646 self . cancellable = self . imageManager. $avatarImage
4747 . receive ( on: DispatchQueue . main)
4848 . sink { self . image = $0 }
49+
50+ if #available( iOS 17 . 0 , * ) {
51+ self . registerForTraitChanges ( [ UITraitUserInterfaceStyle . self] ) { ( view: Self , _: UITraitCollection ) in
52+ view. handleTraitChanges ( )
53+ }
54+ }
4955 }
5056
5157 // MARK: - Style
@@ -89,4 +95,17 @@ open class UKAvatar: UIImageView, UKComponent {
8995 let side = min ( minProvidedSide, minPreferredSide)
9096 return CGSize ( width: side, height: side)
9197 }
98+
99+ open override func traitCollectionDidChange(
100+ _ previousTraitCollection: UITraitCollection ?
101+ ) {
102+ super. traitCollectionDidChange ( previousTraitCollection)
103+ self . handleTraitChanges ( )
104+ }
105+
106+ // MARK: Helpers
107+
108+ @objc private func handleTraitChanges( ) {
109+ self . imageManager. update ( model: self . model, size: self . bounds. size)
110+ }
92111}
You can’t perform that action at this time.
0 commit comments