mirror of
https://github.com/yattee/yattee.git
synced 2026-02-20 01:39:46 +00:00
Refactor views
This commit is contained in:
@@ -8,12 +8,12 @@
|
||||
import SwiftUI
|
||||
|
||||
struct ChaptersView: View {
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
|
||||
let chapters: [VideoChapter]
|
||||
let currentTime: TimeInterval
|
||||
let storyboard: Storyboard?
|
||||
let onChapterTap: (VideoChapter) async -> Void
|
||||
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
@State private var sheetsLoaded = false
|
||||
|
||||
var body: some View {
|
||||
|
||||
@@ -19,6 +19,9 @@ private struct PanelHeightKey: PreferenceKey {
|
||||
}
|
||||
|
||||
struct FloatingDetailsPanel: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
@Environment(\.colorScheme) private var systemColorScheme
|
||||
|
||||
let onPinToggle: () -> Void
|
||||
let onAlignmentToggle: () -> Void
|
||||
let isPinned: Bool
|
||||
@@ -33,9 +36,6 @@ struct FloatingDetailsPanel: View {
|
||||
|
||||
// Player controls layout for pill settings
|
||||
let playerControlsLayout: PlayerControlsLayout
|
||||
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
@Environment(\.colorScheme) private var systemColorScheme
|
||||
@State private var isCommentsExpanded: Bool = false
|
||||
@State private var showFormattedDate = false
|
||||
@State private var showOriginalTitle = false
|
||||
|
||||
@@ -12,14 +12,14 @@ import SwiftUI
|
||||
/// A floating button that toggles the panel between left and right sides.
|
||||
/// Mirrors the style of PanelPinButton: 36pt glass circle, same shadow and haptic.
|
||||
struct PanelAlignmentButton: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
|
||||
let panelSide: FloatingPanelSide
|
||||
let onAlignmentToggle: () -> Void
|
||||
|
||||
/// Whether the drag handle is currently active (being dragged or hovered).
|
||||
@Binding var isDragHandleActive: Bool
|
||||
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
|
||||
/// Button diameter
|
||||
private static let buttonSize: CGFloat = 36
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ import SwiftUI
|
||||
/// A floating pin button that appears on the divider edge between player and panel.
|
||||
/// Features auto-hide behavior with 3s timer, reappearing on drag handle interaction.
|
||||
struct PanelPinButton: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
|
||||
let isPinned: Bool
|
||||
let panelSide: FloatingPanelSide
|
||||
let onPinToggle: () -> Void
|
||||
@@ -19,8 +21,6 @@ struct PanelPinButton: View {
|
||||
/// Whether the drag handle is currently active (being dragged or hovered).
|
||||
@Binding var isDragHandleActive: Bool
|
||||
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
|
||||
/// Button diameter
|
||||
private static let buttonSize: CGFloat = 36
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ import SwiftUI
|
||||
#if os(iOS)
|
||||
|
||||
struct PortraitDetailsPanel: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
|
||||
let onChannelTap: (() -> Void)?
|
||||
let playerControlsLayout: PlayerControlsLayout
|
||||
let onFullscreen: (() -> Void)?
|
||||
@@ -19,8 +21,6 @@ struct PortraitDetailsPanel: View {
|
||||
var onDragChanged: ((CGFloat) -> Void)?
|
||||
var onDragEnded: ((CGFloat, CGFloat) -> Void)?
|
||||
var onDragCancelled: (() -> Void)?
|
||||
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
@GestureState private var isDraggingHandle: Bool = false
|
||||
@State private var isCommentsExpanded: Bool = false
|
||||
@State private var showFormattedDate = false
|
||||
|
||||
@@ -8,6 +8,11 @@
|
||||
import SwiftUI
|
||||
|
||||
struct QualitySelectorView: View {
|
||||
// MARK: - Environment
|
||||
|
||||
@Environment(\.dismiss) var dismiss
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
let streams: [Stream]
|
||||
@@ -39,10 +44,7 @@ struct QualitySelectorView: View {
|
||||
/// Whether to show the segmented tab picker (false for focused single-tab mode)
|
||||
var showTabPicker: Bool = true
|
||||
|
||||
// MARK: - Environment & State
|
||||
|
||||
@Environment(\.dismiss) var dismiss
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
// MARK: - State
|
||||
@State var selectedTab: QualitySelectorTab = .video
|
||||
@State var selectedVideoStream: Stream?
|
||||
@State var selectedAudioStream: Stream?
|
||||
|
||||
@@ -13,6 +13,8 @@ import SwiftUI
|
||||
#if os(iOS) || os(macOS)
|
||||
|
||||
struct WideScreenPlayerLayout<PlayerContent: View>: View {
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
|
||||
let playerControlsLayout: PlayerControlsLayout
|
||||
|
||||
@ViewBuilder let playerContent: (
|
||||
@@ -30,8 +32,6 @@ struct WideScreenPlayerLayout<PlayerContent: View>: View {
|
||||
// Callbacks for panel actions
|
||||
let onChannelTap: (() -> Void)?
|
||||
let onFullscreen: (() -> Void)?
|
||||
|
||||
@Environment(\.appEnvironment) private var appEnvironment
|
||||
@State private var controlsVisible = false
|
||||
@State private var isPanelVisible = false // Local state synced with settingsManager
|
||||
@State private var lastVideoId: String? // Track video ID to detect actual video changes
|
||||
|
||||
Reference in New Issue
Block a user