Files
yattee/Yattee/Views/Player/Gestures/GestureSeekPreviewView.swift
Arkadiusz Fal 4770bbe3b9 Remove dead code found by Periphery on all platforms
Delete declarations that Periphery reports unused on every platform that
compiles them (iOS, macOS, tvOS), including nine views used only by their
own previews. Platform-gated code still used on another platform, device-
only MPV render paths, migration models, CloudKit record names, App
Intents metadata and unused parameters are kept.
2026-10-08 23:57:56 +02:00

78 lines
2.0 KiB
Swift

//
// GestureSeekPreviewView.swift
// Yattee
//
// Seek preview overlay shown during drag-to-seek gesture.
//
#if os(iOS)
import SwiftUI
/// Preview overlay shown during drag-to-seek gesture.
/// Shows only the storyboard thumbnail with timestamp overlay.
struct GestureSeekPreviewView: View {
let storyboard: Storyboard?
let seekTime: TimeInterval
let storyboardService: StoryboardService
let buttonBackground: ButtonBackgroundStyle
let chapters: [VideoChapter]
let isActive: Bool
var availableWidth: CGFloat = 320
@State private var opacity: Double = 0
private var currentChapter: VideoChapter? {
chapters.last { $0.startTime <= seekTime }
}
var body: some View {
VStack(spacing: 6) {
if let chapter = currentChapter {
ChapterCapsuleView(
title: chapter.title,
buttonBackground: buttonBackground
)
.frame(maxWidth: availableWidth - 16)
}
if let storyboard {
SeekPreviewView(
storyboard: storyboard,
seekTime: seekTime,
storyboardService: storyboardService,
buttonBackground: buttonBackground
)
}
}
.opacity(opacity)
.onChange(of: isActive) { _, active in
withAnimation(.easeInOut(duration: 0.2)) {
opacity = active ? 1 : 0
}
}
.onAppear {
if isActive {
withAnimation(.easeOut(duration: 0.15)) {
opacity = 1
}
}
}
}
}
#Preview {
ZStack {
Color.black
GestureSeekPreviewView(
storyboard: nil,
seekTime: 180,
storyboardService: StoryboardService(),
buttonBackground: .regularGlass,
chapters: [],
isActive: true
)
}
}
#endif