More search UI improvements across all the platforms

This commit is contained in:
Arkadiusz Fal
2021-09-26 19:40:25 +02:00
parent 4e0d7b60f7
commit f9396985c9
16 changed files with 241 additions and 197 deletions

View File

@@ -225,12 +225,12 @@ final class InvidiousAPI: Service, ObservableObject {
.withParam("q", searchQuery(query.query))
.withParam("sort_by", query.sortBy.parameter)
if let date = query.date?.rawValue {
resource = resource.withParam("date", date)
if let date = query.date, date != .any {
resource = resource.withParam("date", date.rawValue)
}
if let duration = query.duration?.rawValue {
resource = resource.withParam("duration", duration)
if let duration = query.duration, duration != .any {
resource = resource.withParam("duration", duration.rawValue)
}
return resource

View File

@@ -116,7 +116,7 @@ final class PlayerModel: ObservableObject {
self.saveTime()
self.player?.replaceCurrentItem(with: self.playerItemWithMetadata(for: stream))
self.playback.stream = stream
if self.timeObserver == nil {
if self.timeObserver.isNil {
self.addTimeObserver()
}
self.player?.play()
@@ -201,7 +201,7 @@ final class PlayerModel: ObservableObject {
}
fileprivate func composition(for stream: Stream) -> AVMutableComposition {
if compositions[stream] == nil {
if compositions[stream].isNil {
compositions[stream] = AVMutableComposition()
}

View File

@@ -29,7 +29,9 @@ final class RecentsModel: ObservableObject {
}
func addQuery(_ query: String) {
open(.init(from: query))
if !query.isEmpty {
open(.init(from: query))
}
}
var presentedChannel: Channel? {

View File

@@ -5,7 +5,7 @@ import SwiftUI
final class SearchModel: ObservableObject {
@Published var store = Store<[Video]>()
@Published var api: InvidiousAPI!
@Published var api = InvidiousAPI()
@Published var query = SearchQuery()
@Published var queryText = ""
@Published var querySuggestions = Store<[String]>()
@@ -30,10 +30,13 @@ final class SearchModel: ObservableObject {
resource = newResource
resource.addObserver(store)
loadResourceIfNeededAndReplaceStore()
if !query.isEmpty {
loadResourceIfNeededAndReplaceStore()
}
}
func resetQuery(_ query: SearchQuery) {
func resetQuery(_ query: SearchQuery = SearchQuery()) {
self.query = query
let newResource = api.search(query)
@@ -48,7 +51,10 @@ final class SearchModel: ObservableObject {
resource = newResource
resource.addObserver(store)
loadResourceIfNeededAndReplaceStore()
if !query.isEmpty {
loadResourceIfNeededAndReplaceStore()
}
}
func loadResourceIfNeededAndReplaceStore() {

View File

@@ -3,7 +3,7 @@ import Foundation
final class SearchQuery: ObservableObject {
enum Date: String, CaseIterable, Identifiable, DefaultsSerializable {
case hour, today, week, month, year
case any, hour, today, week, month, year
var id: SearchQuery.Date.RawValue {
rawValue
@@ -15,7 +15,7 @@ final class SearchQuery: ObservableObject {
}
enum Duration: String, CaseIterable, Identifiable, DefaultsSerializable {
case short, long
case any, short, long
var id: SearchQuery.Duration.RawValue {
rawValue