Skip to content

Instantly share code, notes, and snippets.

@rphlfc
Created February 24, 2021 12:29
Show Gist options
  • Save rphlfc/13cdd3019e4fdae1ca37d34247a185e0 to your computer and use it in GitHub Desktop.
Save rphlfc/13cdd3019e4fdae1ca37d34247a185e0 to your computer and use it in GitHub Desktop.
SwiftUI view for downloading an image from Firebase Storage using SDWebImageSwiftUI
//
// FirebaseImage.swift
// AlumniStatusLounge
//
// Created by Raphael Cerqueira on 23/02/21.
//
import SwiftUI
import FirebaseStorage
import SDWebImageSwiftUI
final class Loader: ObservableObject {
@Published var url: URL?
init(_ id: String) {
let ref = Storage.storage().reference().child("images")
ref.child(id).downloadURL { (url, error) in
if let error = error {
print("\(error)")
}
DispatchQueue.main.async {
self.url = url
}
}
}
}
struct FirebaseImage: View {
@StateObject private var imageLoader: Loader
init(id: String) {
_imageLoader = StateObject(wrappedValue: Loader(id))
}
var body: some View {
WebImage(url: imageLoader.url)
.resizable()
.aspectRatio(contentMode: .fill)
.foregroundColor(.gray)
.redacted(reason: imageLoader.url == nil ? .placeholder : .init())
}
}
struct FirebaseImage_Previews : PreviewProvider {
static var previews: some View {
FirebaseImage(id: "image1")
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment