view LazyBear/UI/LanguagePicker.swift @ 275:62f2c675b666

Interactive LineChart implemented
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Thu, 18 Mar 2021 17:23:21 +0100
parents 68be81b7d02e
children 22eba376075e
line wrap: on
line source

//
//  NewsLanguagePicker.swift
//  LazyBear
//
//  Created by Dennis Concepción Martín on 26/2/21.
//

import SwiftUI

struct LanguagePicker: View {
    @Environment(\.managedObjectContext) private var moc
    @State var language: String
    let haptics = Haptics()
    
    var body: some View {
        Picker("News language", selection: $language) {
            ForEach(newsLanguages, id: \.code) { language in
                Text("\(language.flag) \(language.name)")
                    .tag(language.code)
            }
        }
        .onChange(of: language, perform: { language in
            save(change: language)
        })
    }
    
    private func save(change: Any) {
        let userSettings = UserSettings(context: moc)
        userSettings.changedAt = Date()
        userSettings.newsLanguage = change as? String
        do {
            try moc.save()
            haptics.simpleSuccess()
            print("Settings saved")
        } catch {
            print(error.localizedDescription)
        }
    }
}

struct NewsLanguagePicker_Previews: PreviewProvider {
    static var previews: some View {
        LanguagePicker(language: "en")
    }
}