Add Periphery configuration, remove unused code

This commit is contained in:
Arkadiusz Fal
2021-09-29 16:29:17 +02:00
parent 1b1be1aefe
commit e270b7b213
28 changed files with 400 additions and 242 deletions

View File

@@ -5,9 +5,11 @@ import SwiftUI
struct AppSidebarNavigation: View {
@EnvironmentObject<InvidiousAPI> private var api
@EnvironmentObject<NavigationModel> private var navigation
@State private var didApplyPrimaryViewWorkAround = false
#if os(iOS)
@EnvironmentObject<NavigationModel> private var navigation
@State private var didApplyPrimaryViewWorkAround = false
#endif
var body: some View {
#if os(iOS)

View File

@@ -2,7 +2,6 @@ import Defaults
import SwiftUI
struct AppSidebarRecents: View {
@EnvironmentObject<NavigationModel> private var navigation
@EnvironmentObject<RecentsModel> private var recents
@Default(.recentlyOpened) private var recentItems

View File

@@ -26,12 +26,4 @@ struct AppSidebarSubscriptions: View {
subscriptions.load()
}
}
var unsubscribeAlertTitle: String {
if let channel = navigation.channelToUnsubscribe {
return "Unsubscribe from \(channel.name)"
}
return "Unknown channel"
}
}

View File

@@ -6,10 +6,6 @@ struct ContentView: View {
@StateObject private var playback = PlaybackModel()
@StateObject private var recents = RecentsModel()
@EnvironmentObject<InvidiousAPI> private var api
@EnvironmentObject<InstancesModel> private var instances
@EnvironmentObject<PlaylistsModel> private var playlists
#if os(iOS)
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
#endif

View File

@@ -19,7 +19,6 @@ struct VideoPlayerView: View {
#endif
@EnvironmentObject<InvidiousAPI> private var api
@EnvironmentObject<NavigationModel> private var navigation
@EnvironmentObject<PlaybackModel> private var playback
var resource: Resource {

View File

@@ -90,7 +90,6 @@ struct AddToPlaylistView: View {
VStack(alignment: formAlignment) {
#if os(tvOS)
selectPlaylistButton
#else
Picker("Playlist", selection: $model.selectedPlaylistID) {
@@ -132,14 +131,6 @@ struct AddToPlaylistView: View {
.padding(.horizontal)
}
private var footerAlignment: HorizontalAlignment {
#if os(tvOS)
.trailing
#else
.leading
#endif
}
private var selectPlaylistButton: some View {
Button(model.currentPlaylist?.title ?? "Select playlist") {
guard model.currentPlaylist != nil else {

View File

@@ -42,12 +42,8 @@ struct PlaylistFormView: View {
.padding(.leading, 10)
.focused($focused)
Picker("Visibility", selection: $visibility) {
ForEach(Playlist.Visibility.allCases, id: \.self) { visibility in
Text(visibility.name)
}
}
.pickerStyle(.segmented)
visibilityFormItem
.pickerStyle(.segmented)
}
HStack {
@@ -126,7 +122,7 @@ struct PlaylistFormView: View {
Text("Visibility")
.frame(maxWidth: .infinity, alignment: .leading)
visibilityButton
visibilityFormItem
}
.padding(.top, 10)
@@ -189,7 +185,7 @@ struct PlaylistFormView: View {
editing ? api.playlist(playlist.id) : api.playlists
}
var visibilityButton: some View {
var visibilityFormItem: some View {
#if os(macOS)
Picker("Visibility", selection: $visibility) {
ForEach(Playlist.Visibility.allCases) { visibility in

View File

@@ -5,18 +5,12 @@ import SwiftUI
struct PlaylistsView: View {
@EnvironmentObject<PlaylistsModel> private var model
@EnvironmentObject<InvidiousAPI> private var api
@EnvironmentObject<NavigationModel> private var navigation
@State private var showingNewPlaylist = false
@State private var createdPlaylist: Playlist?
@State private var showingEditPlaylist = false
@State private var editedPlaylist: Playlist?
@State private var showingAddToPlaylist = false
@State private var videoIDToAddToPlaylist = ""
@Namespace private var focusNamespace
var videos: [Video] {
@@ -98,34 +92,38 @@ struct PlaylistsView: View {
}
#endif
}
.focusScope(focusNamespace)
#if os(tvOS)
.focusScope(focusNamespace)
#endif
.onAppear {
model.load()
}
}
var toolbar: some View {
HStack {
if model.isEmpty {
Text("No Playlists")
.foregroundColor(.secondary)
} else {
Text("Current Playlist")
.foregroundColor(.secondary)
#if os(tvOS)
var toolbar: some View {
HStack {
if model.isEmpty {
Text("No Playlists")
.foregroundColor(.secondary)
} else {
Text("Current Playlist")
.foregroundColor(.secondary)
selectPlaylistButton
selectPlaylistButton
}
if model.currentPlaylist != nil {
editPlaylistButton
}
Spacer()
newPlaylistButton
.padding(.leading, 40)
}
if model.currentPlaylist != nil {
editPlaylistButton
}
Spacer()
newPlaylistButton
.padding(.leading, 40)
}
}
#endif
func hintText(_ text: String) -> some View {
VStack {

View File

@@ -3,11 +3,15 @@ import Foundation
import SwiftUI
struct SettingsView: View {
private enum Tabs: Hashable {
case playback, instances
}
#if os(macOS)
private enum Tabs: Hashable {
case playback, instances
}
#endif
@Environment(\.dismiss) private var dismiss
#if os(iOS)
@Environment(\.dismiss) private var dismiss
#endif
var body: some View {
#if os(macOS)

View File

@@ -78,13 +78,15 @@ struct TrendingCountry: View {
#endif
}
var searchPlacement: SearchFieldPlacement {
#if os(iOS)
.navigationBarDrawer(displayMode: .always)
#else
.automatic
#endif
}
#if !os(macOS)
var searchPlacement: SearchFieldPlacement {
#if os(iOS)
.navigationBarDrawer(displayMode: .always)
#else
.automatic
#endif
}
#endif
func selectCountryAndDismiss(_ country: Country? = nil) {
if let selected = country ?? selection {

View File

@@ -6,10 +6,10 @@ struct VideoView: View {
#if os(iOS)
@Environment(\.verticalSizeClass) private var verticalSizeClass
@Environment(\.horizontalCells) private var horizontalCells
#endif
@Environment(\.inNavigationView) private var inNavigationView
@Environment(\.horizontalCells) private var horizontalCells
var video: Video
@@ -48,73 +48,75 @@ struct VideoView: View {
#endif
}
var horizontalRow: some View {
HStack(alignment: .top, spacing: 2) {
Section {
#if os(iOS)
var horizontalRow: some View {
HStack(alignment: .top, spacing: 2) {
Section {
#if os(tvOS)
thumbnailImage(quality: .medium)
#else
thumbnail
#endif
}
.frame(maxWidth: 320)
VStack(alignment: .leading, spacing: 0) {
videoDetail(video.title, lineLimit: 5)
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
videoDetail(video.author)
if additionalDetailsAvailable {
Spacer()
HStack {
if let date = video.publishedDate {
VStack {
Image(systemName: "calendar")
Text(date)
}
}
if video.views != 0 {
VStack {
Image(systemName: "eye")
Text(video.viewsCount!)
}
}
}
.foregroundColor(.secondary)
}
}
.padding()
.frame(minHeight: 180)
#if os(tvOS)
thumbnailImage(quality: .medium)
#else
thumbnail
if video.playTime != nil || video.live || video.upcoming {
Spacer()
VStack(alignment: .center) {
Spacer()
if let time = video.playTime {
HStack(spacing: 4) {
Image(systemName: "clock")
Text(time)
.fontWeight(.bold)
}
.foregroundColor(.secondary)
} else if video.live {
DetailBadge(text: "Live", style: .outstanding)
} else if video.upcoming {
DetailBadge(text: "Upcoming", style: .informational)
}
Spacer()
}
}
#endif
}
.frame(maxWidth: 320)
VStack(alignment: .leading, spacing: 0) {
videoDetail(video.title, lineLimit: 5)
.frame(minWidth: 0, maxWidth: .infinity, alignment: .leading)
videoDetail(video.author)
if additionalDetailsAvailable {
Spacer()
HStack {
if let date = video.publishedDate {
VStack {
Image(systemName: "calendar")
Text(date)
}
}
if video.views != 0 {
VStack {
Image(systemName: "eye")
Text(video.viewsCount!)
}
}
}
.foregroundColor(.secondary)
}
}
.padding()
.frame(minHeight: 180)
#if os(tvOS)
if video.playTime != nil || video.live || video.upcoming {
Spacer()
VStack(alignment: .center) {
Spacer()
if let time = video.playTime {
HStack(spacing: 4) {
Image(systemName: "clock")
Text(time)
.fontWeight(.bold)
}
.foregroundColor(.secondary)
} else if video.live {
DetailBadge(text: "Live", style: .outstanding)
} else if video.upcoming {
DetailBadge(text: "Upcoming", style: .informational)
}
Spacer()
}
}
#endif
}
}
#endif
var verticalRow: some View {
VStack(alignment: .leading, spacing: 0) {

View File

@@ -89,18 +89,6 @@ struct ChannelVideosView: View {
return resource
}
#if !os(tvOS)
var subscriptionToolbarItemPlacement: ToolbarItemPlacement {
#if os(iOS)
if horizontalSizeClass == .regular {
return .primaryAction // swiftlint:disable:this implicit_return
}
#endif
return .automatic
}
#endif
var subscriptionToggleButton: some View {
Group {
if subscriptions.isSubscribing(channel.id) {

View File

@@ -12,8 +12,10 @@ struct SearchView: View {
@State private var presentingClearConfirmation = false
@State private var recentsChanged = false
@State private var searchDebounce = Debounce()
@State private var recentsDebounce = Debounce()
#if os(tvOS)
@State private var searchDebounce = Debounce()
@State private var recentsDebounce = Debounce()
#endif
@Environment(\.navigationStyle) private var navigationStyle
@@ -183,11 +185,11 @@ struct SearchView: View {
}
#if os(iOS)
.swipeActions(edge: .trailing) {
clearButton(item)
deleteButton(item)
}
#elseif os(tvOS)
.contextMenu {
clearButton(item)
deleteButton(item)
}
#endif
}
@@ -204,14 +206,16 @@ struct SearchView: View {
#endif
}
func clearButton(_ item: RecentItem) -> some View {
Button(role: .destructive) {
recents.close(item)
recentsChanged.toggle()
} label: {
Label("Delete", systemImage: "trash")
#if !os(macOS)
func deleteButton(_ item: RecentItem) -> some View {
Button(role: .destructive) {
recents.close(item)
recentsChanged.toggle()
} label: {
Label("Delete", systemImage: "trash")
}
}
}
#endif
var clearAllButton: some View {
Button("Clear All", role: .destructive) {

View File

@@ -7,7 +7,9 @@ struct SignInRequiredView<Content: View>: View {
@EnvironmentObject<InvidiousAPI> private var api
@Default(.instances) private var instances
@EnvironmentObject<NavigationModel> private var navigation
#if !os(macOS)
@EnvironmentObject<NavigationModel> private var navigation
#endif
init(title: String, @ViewBuilder content: @escaping () -> Content) {
self.title = title

View File

@@ -2,7 +2,6 @@ import Defaults
import SwiftUI
struct VideoContextMenuView: View {
@EnvironmentObject<InvidiousAPI> private var api
@EnvironmentObject<NavigationModel> private var navigation
@EnvironmentObject<PlaylistsModel> private var playlists
@EnvironmentObject<RecentsModel> private var recents

View File

@@ -4,7 +4,6 @@ import SwiftUI
struct WatchNowView: View {
@EnvironmentObject<InvidiousAPI> private var api
@EnvironmentObject<NavigationModel> private var navigation
var body: some View {
ScrollView(.vertical, showsIndicators: false) {
@@ -21,7 +20,7 @@ struct WatchNowView: View {
// TODO: adding sections to view
// ===================
// WatchNowPlaylistSection(id: "IVPLmRFYLGYZpq61SpujNw3EKbzzGNvoDmH")
// WatchNowSection(resource: InvidiousAPI.shared.channelVideos("UCBJycsmduvYEL83R_U4JriQ"), label: "MKBHD")
// WatchNowSection(resource: api.channelVideos("UCBJycsmduvYEL83R_U4JriQ"), label: "MKBHD")
}
}
}