diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 61d5ac1d..8f7c94ec 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -164,31 +164,24 @@ 5377CBF3263B596A003A4E83 /* JellyfinPlayer */ = { isa = PBXGroup; children = ( - 621338B12660A06F00A81A2A /* SwiftUI */, 621338912660106C00A81A2A /* Extensions */, - 6273DD4A265F4794009C1D0B /* Domains */, 6273DD46265F419B009C1D0B /* APIs */, AE8C3157265D6F5E008AA076 /* Resources */, AE8C3152265D607B008AA076 /* ViewModels */, AE8C3151265D6075008AA076 /* Models */, AE8C3150265D5FE1008AA076 /* Views */, 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */, + 5377CC02263B596B003A4E83 /* Info.plist */, 5377CBF6263B596A003A4E83 /* ContentView.swift */, 5377CBF8263B596B003A4E83 /* Assets.xcassets */, 5377CBFD263B596B003A4E83 /* PersistenceController.swift */, - 5377CC02263B596B003A4E83 /* Info.plist */, - 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */, 5377CBFA263B596B003A4E83 /* Preview Content */, 5338F74D263B61370014BF09 /* ConnectToServerView.swift */, 5389276D263C25100035E14B /* ContinueWatchingView.swift */, 5389276F263C25230035E14B /* NextUpView.swift */, - 53892771263C8C6F0035E14B /* LoadingView.swift */, - 53892776263CBB000035E14B /* JellyApiTypings.swift */, - 5389277B263CC3DB0035E14B /* BlurHashDecode.swift */, 53FF7F29263CF3F500585C35 /* LatestMediaView.swift */, 53DF641D263D9C0600A7CD1A /* LibraryView.swift */, 53E4E646263F6CF100F67C6B /* LibraryFilterView.swift */, - 53E4E648263F725B00F67C6B /* MultiSelector.swift */, 535BAE9E2649E569005FA86D /* ItemView.swift */, 53A089CF264DA9DA00D57806 /* MovieItemView.swift */, 53EE24E5265060780068F029 /* LibrarySearchView.swift */, @@ -217,72 +210,27 @@ name = Frameworks; sourceTree = ""; }; - 6213388B265F776B00A81A2A /* Library */ = { - isa = PBXGroup; - children = ( - 6213388C265F777100A81A2A /* ViewModels */, - ); - path = Library; - sourceTree = ""; - }; - 6213388C265F777100A81A2A /* ViewModels */ = { - isa = PBXGroup; - children = ( - 6213388D265F777C00A81A2A /* LibraryViewModel.swift */, - 62133894266096EF00A81A2A /* LibraryListViewModel.swift */, - ); - path = ViewModels; - sourceTree = ""; - }; 621338912660106C00A81A2A /* Extensions */ = { isa = PBXGroup; children = ( + 5389277B263CC3DB0035E14B /* BlurHashDecode.swift */, + 53E4E648263F725B00F67C6B /* MultiSelector.swift */, + 53892771263C8C6F0035E14B /* LoadingView.swift */, + 621338B22660A07800A81A2A /* LazyView.swift */, 621338922660107500A81A2A /* String++.swift */, ); path = Extensions; sourceTree = ""; }; - 621338B12660A06F00A81A2A /* SwiftUI */ = { - isa = PBXGroup; - children = ( - 621338B22660A07800A81A2A /* LazyView.swift */, - ); - path = SwiftUI; - sourceTree = ""; - }; 6273DD46265F419B009C1D0B /* APIs */ = { isa = PBXGroup; children = ( + 53892776263CBB000035E14B /* JellyApiTypings.swift */, 6273DD47265F41B3009C1D0B /* JellyfinAPI.swift */, ); path = APIs; sourceTree = ""; }; - 6273DD49265F478E009C1D0B /* Search */ = { - isa = PBXGroup; - children = ( - 6273DD4B265F479B009C1D0B /* ViewModels */, - ); - path = Search; - sourceTree = ""; - }; - 6273DD4A265F4794009C1D0B /* Domains */ = { - isa = PBXGroup; - children = ( - 6213388B265F776B00A81A2A /* Library */, - 6273DD49265F478E009C1D0B /* Search */, - ); - path = Domains; - sourceTree = ""; - }; - 6273DD4B265F479B009C1D0B /* ViewModels */ = { - isa = PBXGroup; - children = ( - 6273DD4D265F47B2009C1D0B /* LibrarySearchViewModel.swift */, - ); - path = ViewModels; - sourceTree = ""; - }; AE8C3150265D5FE1008AA076 /* Views */ = { isa = PBXGroup; children = ( @@ -305,6 +253,9 @@ AE8C3152265D607B008AA076 /* ViewModels */ = { isa = PBXGroup; children = ( + 6273DD4D265F47B2009C1D0B /* LibrarySearchViewModel.swift */, + 6213388D265F777C00A81A2A /* LibraryViewModel.swift */, + 62133894266096EF00A81A2A /* LibraryListViewModel.swift */, AE8C3155265D616A008AA076 /* SettingsViewModel.swift */, ); path = ViewModels; @@ -313,6 +264,7 @@ AE8C3157265D6F5E008AA076 /* Resources */ = { isa = PBXGroup; children = ( + 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */, AE8C3158265D6F90008AA076 /* bitrates.json */, ); path = Resources; diff --git a/JellyfinPlayer/JellyApiTypings.swift b/JellyfinPlayer/APIs/JellyApiTypings.swift similarity index 100% rename from JellyfinPlayer/JellyApiTypings.swift rename to JellyfinPlayer/APIs/JellyApiTypings.swift diff --git a/JellyfinPlayer/BlurHashDecode.swift b/JellyfinPlayer/Extensions/BlurHashDecode.swift similarity index 100% rename from JellyfinPlayer/BlurHashDecode.swift rename to JellyfinPlayer/Extensions/BlurHashDecode.swift diff --git a/JellyfinPlayer/SwiftUI/LazyView.swift b/JellyfinPlayer/Extensions/LazyView.swift similarity index 100% rename from JellyfinPlayer/SwiftUI/LazyView.swift rename to JellyfinPlayer/Extensions/LazyView.swift diff --git a/JellyfinPlayer/LoadingView.swift b/JellyfinPlayer/Extensions/LoadingView.swift similarity index 100% rename from JellyfinPlayer/LoadingView.swift rename to JellyfinPlayer/Extensions/LoadingView.swift diff --git a/JellyfinPlayer/MultiSelector.swift b/JellyfinPlayer/Extensions/MultiSelector.swift similarity index 100% rename from JellyfinPlayer/MultiSelector.swift rename to JellyfinPlayer/Extensions/MultiSelector.swift diff --git a/JellyfinPlayer/LibraryView.swift b/JellyfinPlayer/LibraryView.swift index 15c85dcb..46cc99b3 100644 --- a/JellyfinPlayer/LibraryView.swift +++ b/JellyfinPlayer/LibraryView.swift @@ -7,8 +7,6 @@ import SDWebImageSwiftUI import SwiftUI -import SwiftyJSON -import SwiftyRequest struct LibraryView: View { @Environment(\.managedObjectContext) @@ -68,6 +66,20 @@ struct LibraryView: View { } } } + HStack() { + Spacer() + Button { + viewModel.requestPreviousPage() + } label: { + Image(systemName: "chevron.left") + }.disabled(viewModel.isHiddenPreviousButton) + Button { + viewModel.requestNextPage() + } label: { + Image(systemName: "chevron.right") + }.disabled(viewModel.isHiddenNextButton) + Spacer() + } Spacer().frame(height: 16) } .onChange(of: isPortrait) { _ in @@ -79,7 +91,6 @@ struct LibraryView: View { Text("Empty Response") } } -// .overrideViewPreference(.unspecified) .onAppear(perform: onAppear) .navigationTitle(title) .toolbar { diff --git a/JellyfinPlayer/Model.xcdatamodeld/.xccurrentversion b/JellyfinPlayer/Resources/Model.xcdatamodeld/.xccurrentversion similarity index 100% rename from JellyfinPlayer/Model.xcdatamodeld/.xccurrentversion rename to JellyfinPlayer/Resources/Model.xcdatamodeld/.xccurrentversion diff --git a/JellyfinPlayer/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents b/JellyfinPlayer/Resources/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents similarity index 100% rename from JellyfinPlayer/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents rename to JellyfinPlayer/Resources/Model.xcdatamodeld/JellyfinPlayer.xcdatamodel/contents diff --git a/JellyfinPlayer/Domains/Library/ViewModels/LibraryListViewModel.swift b/JellyfinPlayer/ViewModels/LibraryListViewModel.swift similarity index 92% rename from JellyfinPlayer/Domains/Library/ViewModels/LibraryListViewModel.swift rename to JellyfinPlayer/ViewModels/LibraryListViewModel.swift index 2103abe9..875c2125 100644 --- a/JellyfinPlayer/Domains/Library/ViewModels/LibraryListViewModel.swift +++ b/JellyfinPlayer/ViewModels/LibraryListViewModel.swift @@ -13,7 +13,7 @@ import SwiftyJSON final class LibraryListViewModel: ObservableObject { fileprivate var provider = - MoyaProvider(plugins: [NetworkLoggerPlugin()]) + MoyaProvider() @Published var libraryIDs = [String]() diff --git a/JellyfinPlayer/Domains/Search/ViewModels/LibrarySearchViewModel.swift b/JellyfinPlayer/ViewModels/LibrarySearchViewModel.swift similarity index 97% rename from JellyfinPlayer/Domains/Search/ViewModels/LibrarySearchViewModel.swift rename to JellyfinPlayer/ViewModels/LibrarySearchViewModel.swift index c1ee031b..ecfe6016 100644 --- a/JellyfinPlayer/Domains/Search/ViewModels/LibrarySearchViewModel.swift +++ b/JellyfinPlayer/ViewModels/LibrarySearchViewModel.swift @@ -12,7 +12,7 @@ import Moya import SwiftyJSON final class LibrarySearchViewModel: ObservableObject { - fileprivate var provider = MoyaProvider(plugins: [NetworkLoggerPlugin()]) + fileprivate var provider = MoyaProvider() var filter: Filter diff --git a/JellyfinPlayer/Domains/Library/ViewModels/LibraryViewModel.swift b/JellyfinPlayer/ViewModels/LibraryViewModel.swift similarity index 96% rename from JellyfinPlayer/Domains/Library/ViewModels/LibraryViewModel.swift rename to JellyfinPlayer/ViewModels/LibraryViewModel.swift index 70a970e5..d83935e3 100644 --- a/JellyfinPlayer/Domains/Library/ViewModels/LibraryViewModel.swift +++ b/JellyfinPlayer/ViewModels/LibraryViewModel.swift @@ -13,7 +13,7 @@ import SwiftyJSON final class LibraryViewModel: ObservableObject { fileprivate var provider = - MoyaProvider(plugins: [NetworkLoggerPlugin()]) + MoyaProvider() @Published var filter: Filter @@ -67,12 +67,8 @@ final class LibraryViewModel: ObservableObject { } fileprivate func requestItems(_ filter: Filter) { - print("ASDASDA") - print(globalData.authHeader) isLoading = true provider.requestPublisher(.items(globalData: globalData, filter: filter, page: page)) - // .map(ResumeItem.self) TO DO - .print() .receive(on: DispatchQueue.main) .map { response -> ([ResumeItem], Int) in let body = response.data