Details channel avatar performance improvement

This commit is contained in:
Arkadiusz Fal 2023-07-22 19:55:36 +02:00
parent 98d26c37ff
commit 52dad5942e
2 changed files with 26 additions and 31 deletions

View File

@ -19,19 +19,14 @@ struct ChannelAvatarView: View {
ThumbnailView(url: url) ThumbnailView(url: url)
} else { } else {
ZStack { ZStack {
Color(white: 0.6) Color("PlaceholderColor")
.opacity(0.5)
Group { if let video, video.isLocal {
if let video, video.isLocal { Image(systemName: video.localStreamImageSystemName)
Image(systemName: video.localStreamImageSystemName) .foregroundColor(.accentColor)
} else { .font(.system(size: 20))
Image(systemName: "play.rectangle") .contentShape(Rectangle())
}
} }
.foregroundColor(.accentColor)
.font(.system(size: 20))
.contentShape(Rectangle())
} }
.onAppear(perform: updateURL) .onAppear(perform: updateURL)
} }

View File

@ -24,6 +24,7 @@ struct VideoDetails: View {
struct ChannelView: View { struct ChannelView: View {
@ObservedObject private var model = PlayerModel.shared @ObservedObject private var model = PlayerModel.shared
@Binding var detailsVisibility: Bool
var video: Video? { model.videoForDisplay } var video: Video? { model.videoForDisplay }
@ -33,14 +34,19 @@ struct VideoDetails: View {
guard let channel = video?.channel else { return } guard let channel = video?.channel else { return }
NavigationModel.shared.openChannel(channel, navigationStyle: .sidebar) NavigationModel.shared.openChannel(channel, navigationStyle: .sidebar)
} label: { } label: {
ChannelAvatarView( if detailsVisibility {
channel: video?.channel, ChannelAvatarView(
video: video channel: video?.channel,
) video: video
.frame(maxWidth: 40, maxHeight: 40) )
.padding(.trailing, 5) } else {
Circle()
.foregroundColor(Color(white: 0.6).opacity(0.5))
}
} }
.frame(width: 40, height: 40)
.buttonStyle(.plain) .buttonStyle(.plain)
.padding(.trailing, 5)
VStack(alignment: .leading, spacing: 2) { VStack(alignment: .leading, spacing: 2) {
HStack { HStack {
@ -56,18 +62,14 @@ struct VideoDetails: View {
} }
if let video, !video.isLocal { if let video, !video.isLocal {
Group { HStack(spacing: 2) {
Text("") Image(systemName: "person.2.fill")
HStack(spacing: 2) { if let channel = model.videoForDisplay?.channel {
Image(systemName: "person.2.fill") if let subscriptions = channel.subscriptionsString {
Text(subscriptions)
if let channel = model.videoForDisplay?.channel { } else {
if let subscriptions = channel.subscriptionsString { Text("1234").redacted(reason: .placeholder)
Text(subscriptions)
} else {
Text("1234").redacted(reason: .placeholder)
}
} }
} }
} }
@ -94,8 +96,6 @@ struct VideoDetails: View {
HStack(spacing: 4) { HStack(spacing: 4) {
publishedDateSection publishedDateSection
Text("")
HStack(spacing: 4) { HStack(spacing: 4) {
if model.videoBeingOpened != nil || video?.viewsCount != nil { if model.videoBeingOpened != nil || video?.viewsCount != nil {
Image(systemName: "eye") Image(systemName: "eye")
@ -194,7 +194,7 @@ struct VideoDetails: View {
VStack(alignment: .leading, spacing: 0) { VStack(alignment: .leading, spacing: 0) {
TitleView() TitleView()
if video != nil, !video!.isLocal { if video != nil, !video!.isLocal {
ChannelView() ChannelView(detailsVisibility: $detailsVisibility)
.layoutPriority(1) .layoutPriority(1)
.padding(.bottom, 6) .padding(.bottom, 6)
} }