yattee/Model/WatchNextViewModel.swift
2023-02-05 14:24:14 +01:00

48 lines
1.1 KiB
Swift

import Foundation
import SwiftUI
final class WatchNextViewModel: ObservableObject {
static let animation = Animation.easeIn(duration: 0.25)
static let shared = WatchNextViewModel()
@Published var item: PlayerQueueItem?
@Published var presentingOutro = true
@Published var isAutoplaying = true
var timer: Timer?
func prepareForEmptyPlayerPlaceholder(_ item: PlayerQueueItem? = nil) {
self.item = item
}
func prepareForNextItem(_ item: PlayerQueueItem? = nil, timer: Timer? = nil) {
self.item = item
self.timer?.invalidate()
self.timer = timer
isAutoplaying = true
withAnimation(Self.animation) {
presentingOutro = true
}
}
func cancelAutoplay() {
timer?.invalidate()
isAutoplaying = false
}
func open() {
withAnimation(Self.animation) {
presentingOutro = true
}
}
func close() {
withAnimation(Self.animation) {
presentingOutro = false
}
}
func resetItem() {
item = nil
}
}