Mercurial > public > lazybear
changeset 201:5c7a662c2d4e
Add languages settings
author | Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com> |
---|---|
date | Fri, 26 Feb 2021 20:01:03 +0000 |
parents | 6055ff3d400c |
children | addb06622ec8 |
files | LazyBear/Local data/newsLanguages.json LazyBear/Models/NewsLanguageModel.swift LazyBear/UI/NewsLanguagePicker.swift |
diffstat | 3 files changed, 94 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /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": "🇷🇺" + } +]
--- /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 +}
--- /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") + } +}