/
UserDefaultHelper.swift
124 lines (105 loc) · 3.84 KB
/
UserDefaultHelper.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//
// UserDefaultHelper.swift
// FlashSpeak
//
// Created by Anastasia Losikova on 16.04.2023.
//
// swiftlint:disable line_length
import Foundation
private enum UserDefaultsKeys: String {
case nativeLanguage = "nativeLanguageKey"
case targetLenguage = "targetLanguageKey"
case learnModeSetting
case learnModeTimerSetting
case learnWordSetting
case learnImageSetting
case learnSoundSetting
case learnAnswerSetting
case learnLanguageSetting
var asString: String {
return self.rawValue
}
}
struct UserDefaultsHelper {
static var nativeLanguage: String {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.nativeLanguage.asString) as? String ?? "" }
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.nativeLanguage.asString) }
}
static func source() -> Language? {
Language.language(by: self.nativeLanguage)
}
static var targetLanguage: String {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.targetLenguage.asString) as? String ?? "" }
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.targetLenguage.asString)
}
}
static func target() -> Language? {
Language.language(by: self.targetLanguage)
}
// MARK: - Learn Settings
// MARK: Mode Settings
static var learnModeSetting: Int {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.learnModeSetting.asString) as? Int ?? .zero
}
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.learnModeSetting.asString)
}
}
static var learnModeTimerSetting: Int {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.learnModeTimerSetting.asString) as? Int ?? 60 // initial 60 seconds
}
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.learnModeTimerSetting.asString)
}
}
// MARK: Question Settings
static var learnWordSetting: Bool {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.learnWordSetting.asString) as? Bool ?? true
}
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.learnWordSetting.asString)
}
}
static var learnImageSetting: Bool {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.learnImageSetting.asString) as? Bool ?? true
}
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.learnImageSetting.asString)
}
}
static var learnSoundSetting: Bool {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.learnSoundSetting.asString) as? Bool ?? true
}
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.learnSoundSetting.asString)
}
}
// MARK: Answer Settings
static var learnAnswerSetting: Int {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.learnAnswerSetting.asString) as? Int ?? LearnAnswer.Answer.test.rawValue
}
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.learnAnswerSetting.asString)
}
}
// MARK: Language Learn Settings
static var learnLanguageSetting: Int {
get { UserDefaults.standard
.object(forKey: UserDefaultsKeys.learnLanguageSetting.asString) as? Int ?? LearnLanguage.Language.target.rawValue
}
set { UserDefaults.standard
.set(newValue, forKey: UserDefaultsKeys.learnLanguageSetting.asString)
}
}
}
// swiftlint:enable line_length