Tusker/Tusker/Screens/Preferences/LocalAccountAvatarView.swift

55 lines
1.6 KiB
Swift

//
// LocalAccountAvatarView.swift
// Tusker
//
// Created by Shadowfacts on 5/10/20.
// Copyright © 2020 Shadowfacts. All rights reserved.
//
import SwiftUI
struct LocalAccountAvatarView: View {
let localAccountInfo: LocalData.UserAccountInfo
@State var avatarImage: UIImage? = nil
@ObservedObject var preferences = Preferences.shared
var body: some View {
let image: Image
if avatarImage == nil {
let imageName: String
switch preferences.avatarStyle {
case .circle:
imageName = "person.crop.circle"
case .roundRect:
imageName = "person.crop.square"
}
image = Image(systemName: imageName).resizable()
} else {
image = Image(uiImage: self.avatarImage!).renderingMode(.original)
}
return image
.resizable()
.frame(width: 30, height: 30)
.cornerRadius(preferences.avatarStyle.cornerRadiusFraction * 30)
.onAppear(perform: self.loadImage)
}
func loadImage() {
let controller = MastodonController.getForAccount(localAccountInfo)
controller.getOwnAccount { (result) in
guard case let .success(account) = result else { return }
_ = ImageCache.avatars.get(account.avatar) { (_, image) in
DispatchQueue.main.async {
self.avatarImage = image
}
}
}
}
}
//struct LocalAccountAvatarView_Previews: PreviewProvider {
// static var previews: some View {
// LocalAccountAvatarView()
// }
//}