Skip to content

Commit

Permalink
removed unowned to remove crashes.
Browse files Browse the repository at this point in the history
  • Loading branch information
Callum Trounce committed Sep 18, 2019
1 parent 2c616d3 commit e1fdf5e
Showing 1 changed file with 36 additions and 33 deletions.
69 changes: 36 additions & 33 deletions Sources/SwURL/RemoteImage/RemoteImage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,43 @@ import Foundation
import SwiftUI
import Combine


class RemoteImage: ObservableObject {

var objectWillChange = PassthroughSubject<Image?, Never>()

var request: Cancellable?

var image: Image? = nil {
willSet {
guard image == nil else { return }
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }
self.objectWillChange.send(self.image)
}
}
}

func load(url: URL) -> Self {
DispatchQueue.global(qos: .userInitiated)
.async { [unowned self] in

self.request = ImageLoader.shared.load(url: url)
.map { cgImage -> Image in
SwURLDebug.log(level: .info, message: "Image successfully retrieved from url: " + url.absoluteString)
return Image.init(cgImage,
scale: 1,
label: Text(url.lastPathComponent))
}.catch { error -> Just<Image?> in
SwURLDebug.log(level: .warning, message: "Failed to load image from url: " + url.absoluteString + "\nReason: " + error.localizedDescription)
return .init(nil)
}.eraseToAnyPublisher()
.assign(to: \RemoteImage.image, on: self)
}

return self
}

var request: Cancellable?

var image: Image? = nil {
willSet {
guard image == nil else { return }
DispatchQueue.main.async { [weak self] in
guard let self = self else { return }
self.objectWillChange.send(self.image)
}
}
}

func load(url: URL) -> Self {
request = ImageLoader.shared.load(url: url)
.map { cgImage -> Image in
SwURLDebug.log(
level: .info,
message: "Image successfully retrieved from url: " + url.absoluteString
)
return Image.init(
cgImage,
scale: 1,
label: Text(url.lastPathComponent)
)
}.catch { error -> Just<Image?> in
SwURLDebug.log(
level: .warning,
message: "Failed to load image from url: " + url.absoluteString + "\nReason: " + error.localizedDescription
)
return .init(nil)
}
.eraseToAnyPublisher()
.assign(to: \RemoteImage.image, on: self)
return self
}
}

0 comments on commit e1fdf5e

Please sign in to comment.