Refactor views

This commit is contained in:
Arkadiusz Fal
2026-02-09 01:13:02 +01:00
parent 8464464199
commit 612dce6b9f
43 changed files with 143 additions and 125 deletions

View File

@@ -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 {

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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?

View File

@@ -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