fix requested changes

This commit is contained in:
PangMo5 2021-06-19 08:51:35 +09:00
parent 60414101ad
commit dd480def5c
11 changed files with 55 additions and 59 deletions

View File

@ -83,7 +83,7 @@
}
},
{
"package": "swift-protobuf",
"package": "SwiftProtobuf",
"repositoryURL": "https://github.com/apple/swift-protobuf.git",
"state": {
"branch": null,

View File

@ -28,31 +28,31 @@ struct LibraryFilterView: View {
Form {
if viewModel.enabledFilterType.contains(.genre) {
MultiSelector(label: "Genres",
options: viewModel.allGenres,
options: viewModel.possibleGenres,
optionToString: { $0.name ?? "" },
selected: $viewModel.modifyedFilters.withGenres)
}
if viewModel.enabledFilterType.contains(.filter) {
MultiSelector(label: "Filters",
options: viewModel.allItemFilters,
options: viewModel.possibleItemFilters,
optionToString: { $0.localized },
selected: $viewModel.modifyedFilters.filters)
}
if viewModel.enabledFilterType.contains(.tag) {
MultiSelector(label: "Tags",
options: viewModel.allTags,
options: viewModel.possibleTags,
optionToString: { $0 },
selected: $viewModel.modifyedFilters.tags)
}
if viewModel.enabledFilterType.contains(.sortBy) {
MultiSelector(label: "Sort by",
options: viewModel.allSortBys,
options: viewModel.possibleSortBys,
optionToString: { $0.localized },
selected: $viewModel.modifyedFilters.sortBy)
}
if viewModel.enabledFilterType.contains(.sortOrder) {
MultiSelector(label: "Sort Order",
options: viewModel.allSortOrders,
options: viewModel.possibleSortOrders,
optionToString: { $0.localized },
selected: $viewModel.modifyedFilters.sortOrder)
}

View File

@ -64,7 +64,7 @@ struct LibraryView: View {
}.onRotate { _ in
recalcTracks()
}
if viewModel.isCanNextPaging || viewModel.isCanPreviousPaging {
if viewModel.hasNextPage || viewModel.hasPreviousPage {
HStack {
Spacer()
HStack {
@ -73,7 +73,7 @@ struct LibraryView: View {
} label: {
Image(systemName: "chevron.left")
.font(.system(size: 25))
}.disabled(viewModel.isCanPreviousPaging)
}.disabled(viewModel.hasPreviousPage)
Text("Page \(String(viewModel.currentPage + 1)) of \(String(viewModel.totalPages))")
.font(.headline)
.fontWeight(.semibold)
@ -82,7 +82,7 @@ struct LibraryView: View {
} label: {
Image(systemName: "chevron.right")
.font(.system(size: 25))
}.disabled(viewModel.isCanNextPaging)
}.disabled(viewModel.hasNextPage)
}
Spacer()
}
@ -97,14 +97,14 @@ struct LibraryView: View {
.navigationBarTitle(title, displayMode: .inline)
.toolbar {
ToolbarItemGroup(placement: .navigationBarTrailing) {
if viewModel.isCanPreviousPaging {
if viewModel.hasPreviousPage {
Button {
viewModel.requestPreviousPage()
} label: {
Image(systemName: "chevron.left")
}
}
if viewModel.isCanNextPaging {
if viewModel.hasNextPage {
Button {
viewModel.requestNextPage()
} label: {

View File

@ -28,38 +28,36 @@ extension SortBy {
var localized: String {
switch self {
case .productionYear:
return "Production year"
return "Release Year"
case .premiereDate:
return "Premiere date"
case .name:
return "Name"
return "Title"
case .dateAdded:
return "Date created"
return "Date added"
}
}
}
extension ItemFilter {
static var supportedTypes: [ItemFilter] {
[.isUnplayed, isPlayed, .isFavorite, .likes, .isFavoriteOrLikes]
}
var localized: String {
switch self {
case .isFolder:
return "Is folder"
case .isNotFolder:
return "Is not folder"
case .isUnplayed:
return "Is unplayed"
return "Unplayed"
case .isPlayed:
return "Is played"
return "Played"
case .isFavorite:
return "Is favorite"
case .isResumable:
return "Is resumable"
return "Favorites"
case .likes:
return "Likes"
case .dislikes:
return "Dislikes"
return "Liked"
case .isFavoriteOrLikes:
return "Is favorite or likes"
return "Favorites or Liked"
default:
return ""
}
}
}

View File

@ -28,9 +28,8 @@ class DetailItemViewModel: ViewModel {
}
func updateWatchState() {
guard let id = item.id else { return }
if isWatched {
PlaystateAPI.markUnplayedItem(userId: SessionManager.current.user.user_id!, itemId: id)
PlaystateAPI.markUnplayedItem(userId: SessionManager.current.user.user_id!, itemId: item.id!)
.trackActivity(loading)
.sink(receiveCompletion: { [weak self] completion in
self?.handleAPIRequestCompletion(completion: completion)
@ -39,7 +38,7 @@ class DetailItemViewModel: ViewModel {
})
.store(in: &cancellables)
} else {
PlaystateAPI.markPlayedItem(userId: SessionManager.current.user.user_id!, itemId: id)
PlaystateAPI.markPlayedItem(userId: SessionManager.current.user.user_id!, itemId: item.id!)
.trackActivity(loading)
.sink(receiveCompletion: { [weak self] completion in
self?.handleAPIRequestCompletion(completion: completion)
@ -51,9 +50,8 @@ class DetailItemViewModel: ViewModel {
}
func updateFavoriteState() {
guard let id = item.id else { return }
if isFavorited {
UserLibraryAPI.unmarkFavoriteItem(userId: SessionManager.current.user.user_id!, itemId: id)
UserLibraryAPI.unmarkFavoriteItem(userId: SessionManager.current.user.user_id!, itemId: item.id!)
.trackActivity(loading)
.sink(receiveCompletion: { [weak self] completion in
self?.handleAPIRequestCompletion(completion: completion)
@ -62,7 +60,7 @@ class DetailItemViewModel: ViewModel {
})
.store(in: &cancellables)
} else {
UserLibraryAPI.markFavoriteItem(userId: SessionManager.current.user.user_id!, itemId: id)
UserLibraryAPI.markFavoriteItem(userId: SessionManager.current.user.user_id!, itemId: item.id!)
.trackActivity(loading)
.sink(receiveCompletion: { [weak self] completion in
self?.handleAPIRequestCompletion(completion: completion)

View File

@ -21,10 +21,10 @@ final class LatestMediaViewModel: ViewModel {
self.libraryID = libraryID
super.init()
refresh()
requestLatestMedia()
}
func refresh() {
func requestLatestMedia() {
UserLibraryAPI.getLatestMedia(userId: SessionManager.current.user.user_id!, parentId: libraryID,
fields: [
.primaryImageAspectRatio,

View File

@ -24,15 +24,15 @@ final class LibraryFilterViewModel: ViewModel {
var modifyedFilters = LibraryFilters()
@Published
var allGenres = [NameGuidPair]()
var possibleGenres = [NameGuidPair]()
@Published
var allTags = [String]()
var possibleTags = [String]()
@Published
var allSortOrders = APISortOrder.allCases
var possibleSortOrders = APISortOrder.allCases
@Published
var allSortBys = SortBy.allCases
var possibleSortBys = SortBy.allCases
@Published
var allItemFilters = ItemFilter.allCases
var possibleItemFilters = ItemFilter.supportedTypes
@Published
var enabledFilterType: [FilterType]
@ -43,18 +43,18 @@ final class LibraryFilterViewModel: ViewModel {
if let filters = filters {
self.modifyedFilters = filters
}
refresh()
requestQueryFilters()
}
func refresh() {
func requestQueryFilters() {
FilterAPI.getQueryFilters(userId: SessionManager.current.user.user_id!)
.trackActivity(loading)
.sink(receiveCompletion: { [weak self] completion in
self?.handleAPIRequestCompletion(completion: completion)
}, receiveValue: { [weak self] quertFilters in
}, receiveValue: { [weak self] queryFilters in
guard let self = self else { return }
self.allGenres = quertFilters.genres ?? []
self.allTags = quertFilters.tags ?? []
self.possibleGenres = queryFilters.genres ?? []
self.possibleTags = queryFilters.tags ?? []
})
.store(in: &cancellables)
}

View File

@ -22,10 +22,10 @@ final class LibraryListViewModel: ViewModel {
libraries.append(.init(name: "Favorites", id: "favorites"))
libraries.append(.init(name: "Genres", id: "genres"))
refresh()
requsetLibraries()
}
func refresh() {
func requsetLibraries() {
UserViewsAPI.getUserViews(userId: SessionManager.current.user.user_id!)
.trackActivity(loading)
.sink(receiveCompletion: { completion in

View File

@ -25,9 +25,9 @@ final class LibraryViewModel: ViewModel {
@Published
var currentPage = 0
@Published
var isCanNextPaging = false
var hasNextPage = false
@Published
var isCanPreviousPaging = false
var hasPreviousPage = false
// temp
@Published
@ -55,11 +55,11 @@ final class LibraryViewModel: ViewModel {
super.init()
$filters
.sink(receiveValue: refresh(with:))
.sink(receiveValue: requestItems(with:))
.store(in: &cancellables)
}
func refresh(with filters: LibraryFilters) {
func requestItems(with filters: LibraryFilters) {
let personIDs: [String] = [person].compactMap(\.?.id)
let studioIDs: [String] = [studio].compactMap(\.?.id)
let genreIDs: [String]
@ -82,8 +82,8 @@ final class LibraryViewModel: ViewModel {
guard let self = self else { return }
let totalPages = ceil(Double(response.totalRecordCount ?? 0) / 100.0)
self.totalPages = Int(totalPages)
self.isCanPreviousPaging = self.currentPage > 0
self.isCanNextPaging = self.currentPage < self.totalPages - 1
self.hasPreviousPage = self.currentPage > 0
self.hasNextPage = self.currentPage < self.totalPages - 1
self.items = response.items ?? []
})
.store(in: &cancellables)
@ -91,11 +91,11 @@ final class LibraryViewModel: ViewModel {
func requestNextPage() {
currentPage += 1
refresh(with: filters)
requestItems(with: filters)
}
func requestPreviousPage() {
currentPage -= 1
refresh(with: filters)
requestItems(with: filters)
}
}

View File

@ -22,10 +22,10 @@ final class SeasonItemViewModel: ViewModel {
self.item = item
super.init()
refresh()
requestEpisodes()
}
func refresh() {
func requestEpisodes() {
TvShowsAPI.getEpisodes(seriesId: item.seriesId ?? "", userId: SessionManager.current.user.user_id!,
fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people],
seasonId: item.id ?? "")

View File

@ -22,10 +22,10 @@ final class SeriesItemViewModel: ViewModel {
self.item = item
super.init()
refresh()
requestSeasons()
}
func refresh() {
func requestSeasons() {
TvShowsAPI.getSeasons(seriesId: item.id ?? "", fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people])
.trackActivity(loading)
.sink(receiveCompletion: { [weak self] completion in