# HG changeset patch # User Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> # Date 1614369663 0 # Node ID 5c7a662c2d4ecb64bb8640a0b58ae55ee156bd95 # Parent 6055ff3d400c157ec7550b85fcd849f2ebe862b0 Add languages settings diff -r 6055ff3d400c -r 5c7a662c2d4e LazyBear/Local data/newsLanguages.json --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Local data/newsLanguages.json Fri Feb 26 20:01:03 2021 +0000 @@ -0,0 +1,37 @@ +[ + { + "name": "English", + "code": "en", + "flag": "🇺🇸" + }, + { + "name": "Spanish", + "code": "es", + "flag": "🇪🇸" + }, + { + "name": "Italian", + "code": "it", + "flag": "🇮🇹" + }, + { + "name": "French", + "code": "fr", + "flag": "🇫🇷" + }, + { + "name": "German", + "code": "de", + "flag": "🇩🇪" + }, + { + "name": "Portuguese", + "code": "pt", + "flag": "🇵🇹" + }, + { + "name": "Russian", + "code": "ru", + "flag": "🇷🇺" + } +] diff -r 6055ff3d400c -r 5c7a662c2d4e LazyBear/Models/NewsLanguageModel.swift --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/Models/NewsLanguageModel.swift Fri Feb 26 20:01:03 2021 +0000 @@ -0,0 +1,14 @@ +// +// NewsLanguageModel.swift +// LazyBear +// +// Created by Dennis Concepción Martín on 26/2/21. +// + +import SwiftUI + +struct NewsLanguageModel: Codable, Hashable { + var name: String + var code: String + var flag: String +} diff -r 6055ff3d400c -r 5c7a662c2d4e LazyBear/UI/NewsLanguagePicker.swift --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LazyBear/UI/NewsLanguagePicker.swift Fri Feb 26 20:01:03 2021 +0000 @@ -0,0 +1,43 @@ +// +// NewsLanguagePicker.swift +// LazyBear +// +// Created by Dennis Concepción Martín on 26/2/21. +// + +import SwiftUI + +struct NewsLanguagePicker: View { + @Environment(\.managedObjectContext) private var moc + @State var language: String + + var body: some View { + Picker("News language", selection: $language) { + ForEach(newsLanguages, id: \.self) { 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() + print("Settings saved") + } catch { + print(error.localizedDescription) + } + } +} + +struct NewsLanguagePicker_Previews: PreviewProvider { + static var previews: some View { + NewsLanguagePicker(language: "en") + } +}