1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-14 14:20:32 +05:30
yattee/Shared/Channels/ChannelAvatarView.swift

77 lines
2.4 KiB
Swift
Raw Normal View History

import SwiftUI
struct ChannelAvatarView: View {
var channel: Channel?
var video: Video?
2022-12-11 22:41:56 +05:30
var subscribedBadge = true
@ObservedObject private var accounts = AccountsModel.shared
@ObservedObject private var subscribedChannels = SubscribedChannelsModel.shared
@State private var url: URL?
var body: some View {
ZStack(alignment: .bottomTrailing) {
Group {
Group {
if let url {
ThumbnailView(url: url)
} else {
ZStack {
Color(white: 0.6)
.opacity(0.5)
Group {
if let video, video.isLocal {
Image(systemName: video.localStreamImageSystemName)
} else {
Image(systemName: "play.rectangle")
}
}
.foregroundColor(.accentColor)
.font(.system(size: 20))
.contentShape(Rectangle())
}
.onAppear(perform: updateURL)
}
}
.clipShape(Circle())
2022-12-11 22:41:56 +05:30
if subscribedBadge,
accounts.app.supportsSubscriptions,
accounts.signedIn,
let channel,
subscribedChannels.isSubscribing(channel.id)
{
Image(systemName: "star.circle.fill")
2022-12-11 22:41:56 +05:30
#if os(tvOS)
.background(Color.black)
2022-12-11 22:41:56 +05:30
#else
.background(Color.background)
#endif
.clipShape(Circle())
.foregroundColor(.secondary)
}
}
}
.imageScale(.small)
}
func updateURL() {
DispatchQueue.global(qos: .userInitiated).async {
if let url = channel?.thumbnailURLOrCached {
DispatchQueue.main.async {
self.url = url
}
}
}
}
}
struct ChannelAvatarView_Previews: PreviewProvider {
static var previews: some View {
ChannelAvatarView(channel: Video.fixture.channel)
}
}