Remember last used trending category and country

This commit is contained in:
Arkadiusz Fal 2021-09-27 00:19:50 +02:00
parent c4674c06a4
commit 994f1f9215
5 changed files with 14 additions and 8 deletions

View File

@ -1,6 +1,7 @@
// swiftlint:disable switch_case_on_newline
import Defaults
enum Country: String, CaseIterable, Identifiable, Hashable {
enum Country: String, CaseIterable, Identifiable, Hashable, Defaults.Serializable {
var id: String {
rawValue
}

View File

@ -1,4 +1,6 @@
enum TrendingCategory: String, CaseIterable, Identifiable {
import Defaults
enum TrendingCategory: String, CaseIterable, Identifiable, Defaults.Serializable {
case `default`, music, gaming, movies
var id: TrendingCategory.RawValue {

View File

@ -9,6 +9,9 @@ extension Defaults.Keys {
static let accounts = Key<[Instance.Account]>("accounts", default: [])
static let defaultAccountID = Key<String?>("defaultAccountID")
static let trendingCategory = Key<TrendingCategory>("trendingCategory", default: .default)
static let trendingCountry = Key<Country>("trendingCountry", default: .us)
static let selectedPlaylistID = Key<String?>("selectedPlaylistID")
static let showingAddToPlaylist = Key<Bool>("showingAddToPlaylist", default: false)
static let videoIDToAddToPlaylist = Key<String?>("videoIDToAddToPlaylist")

View File

@ -2,7 +2,7 @@ import SwiftUI
struct TrendingCountry: View {
static let prompt = "Country Name or Code"
@Binding var selectedCountry: Country?
@Binding var selectedCountry: Country
@StateObject private var store = Store(Country.allCases)
@ -87,9 +87,7 @@ struct TrendingCountry: View {
}
func selectCountryAndDismiss(_ country: Country? = nil) {
let selected = country ?? selection
if selected != nil {
if let selected = country ?? selection {
selectedCountry = selected
}

View File

@ -1,11 +1,13 @@
import Defaults
import Siesta
import SwiftUI
struct TrendingView: View {
@StateObject private var store = Store<[Video]>()
@State private var category: TrendingCategory = .default
@State private var country: Country! = .pl
@Default(.trendingCategory) private var category
@Default(.trendingCountry) private var country
@State private var presentingCountrySelection = false
@EnvironmentObject<InvidiousAPI> private var api