1
0
mirror of https://github.com/yattee/yattee.git synced 2024-12-13 22:00:31 +05:30
yattee/Shared/Videos/WatchView.swift
2023-02-05 14:24:16 +01:00

70 lines
1.8 KiB
Swift

import Defaults
import Foundation
import SwiftUI
struct WatchView: View {
var watch: Watch?
var videoID: Video.ID
var duration: Double
@Default(.watchedVideoBadgeColor) private var watchedVideoBadgeColor
var backgroundContext = PersistenceController.shared.container.newBackgroundContext()
var body: some View {
#if os(tvOS)
if finished {
image
}
#else
Button(action: toggleWatch) {
image
}
.opacity(finished ? 1 : 0.4)
.buttonStyle(.plain)
#endif
}
var image: some View {
Image(systemName: imageSystemName)
.foregroundColor(Color(
watchedVideoBadgeColor == .colorSchemeBased ? "WatchProgressBarColor" :
watchedVideoBadgeColor == .red ? "AppRedColor" : "AppBlueColor"
))
.background(backgroundColor)
.clipShape(Circle())
.imageScale(.large)
}
func toggleWatch() {
if finished, let watch {
PlayerModel.shared.removeWatch(watch)
} else {
if let account = AccountsModel.shared.current {
Watch.markAsWatched(videoID: watch?.videoID ?? videoID, account: account, duration: watch?.videoDuration ?? duration, context: backgroundContext)
}
}
FeedModel.shared.calculateUnwatchedFeed()
}
var imageSystemName: String {
finished ? "checkmark.circle.fill" : "circle"
}
var backgroundColor: Color {
finished ? .white : .clear
}
var finished: Bool {
guard let watch else { return false }
return watch.finished
}
}
struct WatchView_Previews: PreviewProvider {
static var previews: some View {
WatchView(videoID: "abc", duration: 10)
}
}