Skip to content

Commit cc06889

Browse files
author
Christian Elies
committed
added tvOS 13 support; fixed mac catalyst support; fixed weird observable object related crash on macOS
1 parent f5feaba commit cc06889

File tree

5 files changed

+40
-10
lines changed

5 files changed

+40
-10
lines changed

Package.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ let package = Package(
77
name: "RemoteImage",
88
platforms: [
99
.iOS(.v13),
10-
.macOS(.v10_15)
10+
.macOS(.v10_15),
11+
.tvOS(.v13)
1112
],
1213
products: [
1314
.library(

Sources/RemoteImage/private/Models/RemoteImageState.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
// Copyright © 2019 Christian Elies. All rights reserved.
77
//
88

9-
import UIKit
9+
import Foundation
1010

1111
enum RemoteImageState {
1212
case error(_ error: Error)
13-
case image(_ image: UIImage)
13+
case image(_ image: RemoteImageType)
1414
case loading
1515
}
1616

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// RemoteImageType.swift
3+
//
4+
//
5+
// Created by Christian Elies on 08.09.19.
6+
//
7+
8+
import Foundation
9+
10+
#if canImport(UIKit) && !targetEnvironment(macCatalyst)
11+
import UIKit
12+
public typealias RemoteImageType = UIImage
13+
#elseif targetEnvironment(macCatalyst)
14+
import AppKit
15+
public typealias RemoteImageType = NSImage
16+
#else
17+
import AppKit
18+
public typealias RemoteImageType = NSImage
19+
#endif

Sources/RemoteImage/public/Services/RemoteImageService.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
//
88

99
import Combine
10-
import UIKit
10+
import Foundation
1111

12-
public final class RemoteImageService: ObservableObject {
12+
public final class RemoteImageService: NSObject, ObservableObject {
1313
private var cancellable: AnyCancellable?
1414

1515
var state: RemoteImageState = .loading {
@@ -18,7 +18,7 @@ public final class RemoteImageService: ObservableObject {
1818
}
1919
}
2020

21-
public static let cache = NSCache<NSURL, UIImage>()
21+
public static let cache = NSCache<NSURL, RemoteImageType>()
2222

2323
public let objectWillChange = PassthroughSubject<Void, Never>()
2424

@@ -34,7 +34,7 @@ public final class RemoteImageService: ObservableObject {
3434
let urlRequest = URLRequest(url: url)
3535

3636
cancellable = urlSession.dataTaskPublisher(for: urlRequest)
37-
.map { UIImage(data: $0.data) }
37+
.map { RemoteImageType(data: $0.data) }
3838
.receive(on: RunLoop.main)
3939
.sink(receiveCompletion: { completion in
4040
switch completion {

Sources/RemoteImage/public/Views/RemoteImage.swift

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,19 @@ public struct RemoteImage<ErrorView: View, ImageView: View, LoadingView: View>:
2323
errorView(error)
2424
)
2525
case .image(let image):
26-
return AnyView(
27-
self.imageView(Image(uiImage: image))
28-
)
26+
#if canImport(UIKit) && !targetEnvironment(macCatalyst)
27+
return AnyView(
28+
self.imageView(Image(uiImage: image))
29+
)
30+
#elseif targetEnvironment(macCatalyst)
31+
return AnyView(
32+
self.imageView(Image(nsImage: image))
33+
)
34+
#else
35+
return AnyView(
36+
Text("Cannot render image: unsupported platform")
37+
)
38+
#endif
2939
case .loading:
3040
return AnyView(
3141
loadingView()

0 commit comments

Comments
 (0)