Skip to content

Commit eb21380

Browse files
author
Josh Spicer
committed
refactor to store wordlist locally
1 parent 037e2c5 commit eb21380

14 files changed

+1438
-53
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
**/Secrets.swift*
22

3+
output.txt
4+
words.txt
5+
36
# Xcode
47
#
58
# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore

DailyItalianWord.xcodeproj/project.pbxproj

+44-12
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
0843024A253A467F000DC6DD /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08430249253A467F000DC6DD /* Secrets.swift */; };
11+
0843024B253A467F000DC6DD /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08430249253A467F000DC6DD /* Secrets.swift */; };
12+
08684A74253E30E000AACF77 /* SupportedLanguages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A73253E30E000AACF77 /* SupportedLanguages.swift */; };
13+
08684A75253E30E000AACF77 /* SupportedLanguages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A73253E30E000AACF77 /* SupportedLanguages.swift */; };
14+
08684A7A253E46B400AACF77 /* Italian.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A79253E46B400AACF77 /* Italian.swift */; };
15+
08684A7B253E46B400AACF77 /* Italian.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A79253E46B400AACF77 /* Italian.swift */; };
16+
08684A7F253E46D300AACF77 /* LanguageFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A7E253E46D300AACF77 /* LanguageFactory.swift */; };
17+
08684A80253E46D300AACF77 /* LanguageFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A7E253E46D300AACF77 /* LanguageFactory.swift */; };
18+
08684A8D253E61BF00AACF77 /* French.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A8C253E61BF00AACF77 /* French.swift */; };
19+
08684A8E253E61BF00AACF77 /* French.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A8C253E61BF00AACF77 /* French.swift */; };
20+
08684A92253E621800AACF77 /* NoLang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A91253E621800AACF77 /* NoLang.swift */; };
21+
08684A93253E621800AACF77 /* NoLang.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08684A91253E621800AACF77 /* NoLang.swift */; };
1022
08AE64B62531EC5E00AB157E /* DailyItalianWordApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AE64B52531EC5E00AB157E /* DailyItalianWordApp.swift */; };
1123
08AE64B82531EC5E00AB157E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AE64B72531EC5E00AB157E /* ContentView.swift */; };
1224
08AE64BA2531EC6100AB157E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 08AE64B92531EC6100AB157E /* Assets.xcassets */; };
@@ -21,12 +33,8 @@
2133
08AE64E22531EF2F00AB157E /* Word.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AE64E12531EF2F00AB157E /* Word.swift */; };
2234
08AE64E52531EFA200AB157E /* Word.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AE64E12531EF2F00AB157E /* Word.swift */; };
2335
08AE64E82531F4B600AB157E /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AE64B72531EC5E00AB157E /* ContentView.swift */; };
24-
08AE64F72531F82000AB157E /* WordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AE64F62531F82000AB157E /* WordView.swift */; };
25-
08AE64FA2531F8D900AB157E /* WordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AE64F62531F82000AB157E /* WordView.swift */; };
2636
08BD88CA2535169B00D05E77 /* QueryAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08BD88C92535169B00D05E77 /* QueryAPI.swift */; };
2737
08BD88CB2535169B00D05E77 /* QueryAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08BD88C92535169B00D05E77 /* QueryAPI.swift */; };
28-
08BD88CF2535216900D05E77 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08BD88CE2535216900D05E77 /* Secrets.swift */; };
29-
08BD88D02535216900D05E77 /* Secrets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08BD88CE2535216900D05E77 /* Secrets.swift */; };
3038
/* End PBXBuildFile section */
3139

3240
/* Begin PBXContainerItemProxy section */
@@ -54,6 +62,12 @@
5462
/* End PBXCopyFilesBuildPhase section */
5563

5664
/* Begin PBXFileReference section */
65+
08430249253A467F000DC6DD /* Secrets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Secrets.swift; sourceTree = "<group>"; };
66+
08684A73253E30E000AACF77 /* SupportedLanguages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportedLanguages.swift; sourceTree = "<group>"; };
67+
08684A79253E46B400AACF77 /* Italian.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Italian.swift; sourceTree = "<group>"; };
68+
08684A7E253E46D300AACF77 /* LanguageFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageFactory.swift; sourceTree = "<group>"; };
69+
08684A8C253E61BF00AACF77 /* French.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = French.swift; sourceTree = "<group>"; };
70+
08684A91253E621800AACF77 /* NoLang.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoLang.swift; sourceTree = "<group>"; };
5771
08AE64B22531EC5E00AB157E /* DailyItalianWord.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DailyItalianWord.app; sourceTree = BUILT_PRODUCTS_DIR; };
5872
08AE64B52531EC5E00AB157E /* DailyItalianWordApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DailyItalianWordApp.swift; sourceTree = "<group>"; };
5973
08AE64B72531EC5E00AB157E /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
@@ -70,9 +84,7 @@
7084
08AE64E12531EF2F00AB157E /* Word.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Word.swift; sourceTree = "<group>"; };
7185
08AE64EE2531F4CB00AB157E /* DailyItalianWord.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DailyItalianWord.entitlements; sourceTree = "<group>"; };
7286
08AE64F12531F60200AB157E /* DailyWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DailyWidgetExtension.entitlements; sourceTree = "<group>"; };
73-
08AE64F62531F82000AB157E /* WordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WordView.swift; sourceTree = "<group>"; };
7487
08BD88C92535169B00D05E77 /* QueryAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryAPI.swift; sourceTree = "<group>"; };
75-
08BD88CE2535216900D05E77 /* Secrets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Secrets.swift; sourceTree = "<group>"; };
7688
/* End PBXFileReference section */
7789

7890
/* Begin PBXFrameworksBuildPhase section */
@@ -95,6 +107,17 @@
95107
/* End PBXFrameworksBuildPhase section */
96108

97109
/* Begin PBXGroup section */
110+
08684A78253E361A00AACF77 /* Languages */ = {
111+
isa = PBXGroup;
112+
children = (
113+
08684A79253E46B400AACF77 /* Italian.swift */,
114+
08684A7E253E46D300AACF77 /* LanguageFactory.swift */,
115+
08684A8C253E61BF00AACF77 /* French.swift */,
116+
08684A91253E621800AACF77 /* NoLang.swift */,
117+
);
118+
path = Languages;
119+
sourceTree = "<group>";
120+
};
98121
08AE64A92531EC5E00AB157E = {
99122
isa = PBXGroup;
100123
children = (
@@ -118,16 +141,17 @@
118141
08AE64B42531EC5E00AB157E /* DailyItalianWord */ = {
119142
isa = PBXGroup;
120143
children = (
144+
08684A78253E361A00AACF77 /* Languages */,
121145
08AE64EE2531F4CB00AB157E /* DailyItalianWord.entitlements */,
122146
08AE64B52531EC5E00AB157E /* DailyItalianWordApp.swift */,
123147
08AE64B72531EC5E00AB157E /* ContentView.swift */,
124148
08AE64B92531EC6100AB157E /* Assets.xcassets */,
125149
08AE64BE2531EC6100AB157E /* Info.plist */,
126150
08AE64BB2531EC6100AB157E /* Preview Content */,
127151
08AE64E12531EF2F00AB157E /* Word.swift */,
128-
08AE64F62531F82000AB157E /* WordView.swift */,
129152
08BD88C92535169B00D05E77 /* QueryAPI.swift */,
130-
08BD88CE2535216900D05E77 /* Secrets.swift */,
153+
08430249253A467F000DC6DD /* Secrets.swift */,
154+
08684A73253E30E000AACF77 /* SupportedLanguages.swift */,
131155
);
132156
path = DailyItalianWord;
133157
sourceTree = "<group>";
@@ -261,10 +285,14 @@
261285
buildActionMask = 2147483647;
262286
files = (
263287
08AE64B82531EC5E00AB157E /* ContentView.swift in Sources */,
264-
08BD88CF2535216900D05E77 /* Secrets.swift in Sources */,
265-
08AE64F72531F82000AB157E /* WordView.swift in Sources */,
288+
08684A8D253E61BF00AACF77 /* French.swift in Sources */,
289+
0843024A253A467F000DC6DD /* Secrets.swift in Sources */,
290+
08684A7A253E46B400AACF77 /* Italian.swift in Sources */,
291+
08684A92253E621800AACF77 /* NoLang.swift in Sources */,
266292
08AE64E22531EF2F00AB157E /* Word.swift in Sources */,
293+
08684A74253E30E000AACF77 /* SupportedLanguages.swift in Sources */,
267294
08AE64D72531EC7700AB157E /* DailyWidget.intentdefinition in Sources */,
295+
08684A7F253E46D300AACF77 /* LanguageFactory.swift in Sources */,
268296
08AE64B62531EC5E00AB157E /* DailyItalianWordApp.swift in Sources */,
269297
08BD88CA2535169B00D05E77 /* QueryAPI.swift in Sources */,
270298
);
@@ -275,10 +303,14 @@
275303
buildActionMask = 2147483647;
276304
files = (
277305
08AE64D62531EC7700AB157E /* DailyWidget.intentdefinition in Sources */,
278-
08BD88D02535216900D05E77 /* Secrets.swift in Sources */,
279-
08AE64FA2531F8D900AB157E /* WordView.swift in Sources */,
306+
08684A8E253E61BF00AACF77 /* French.swift in Sources */,
307+
0843024B253A467F000DC6DD /* Secrets.swift in Sources */,
308+
08684A7B253E46B400AACF77 /* Italian.swift in Sources */,
309+
08684A93253E621800AACF77 /* NoLang.swift in Sources */,
280310
08AE64D12531EC7500AB157E /* DailyWidget.swift in Sources */,
311+
08684A75253E30E000AACF77 /* SupportedLanguages.swift in Sources */,
281312
08AE64E82531F4B600AB157E /* ContentView.swift in Sources */,
313+
08684A80253E46D300AACF77 /* LanguageFactory.swift in Sources */,
282314
08AE64E52531EFA200AB157E /* Word.swift in Sources */,
283315
08BD88CB2535169B00D05E77 /* QueryAPI.swift in Sources */,
284316
);

DailyItalianWord/ContentView.swift

+24-2
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,38 @@ import WidgetKit
1111

1212
struct ContentView: View {
1313

14-
// @AppStorage("word", store: UserDefaults(suiteName: "group.com.joshspicer.DailyItalianWord"))
14+
@State private var selection = SupportedLanguages.Italian
1515

16+
@AppStorage("language", store: UserDefaults(suiteName: "group.com.joshspicer.DailyItalianWord"))
17+
var language: SupportedLanguages = SupportedLanguages.Italian
1618

1719
var body: some View {
20+
1821
VStack {
22+
Text("Daily Word")
23+
.font(.largeTitle)
24+
.padding()
25+
Text("Language: \(language.rawValue)")
26+
.font(.subheadline)
27+
28+
Picker(selection: $selection, label: Text("Choose Language"), content: /*@START_MENU_TOKEN@*/{
29+
30+
ForEach(SupportedLanguages.allCases) { lang in
31+
Text(lang.rawValue)
32+
}
33+
}/*@END_MENU_TOKEN@*/)
34+
.onChange(of: $selection.wrappedValue, perform: { value in
35+
language = selection
36+
WidgetCenter.shared.reloadAllTimelines()
37+
print("updated language var!")
38+
})
39+
1940
Button(action: {
2041
WidgetCenter.shared.reloadAllTimelines()
42+
print("clicked update button")
2143
}) {
2244
HStack {
23-
Text("New Word!")
45+
Text("Refresh Word")
2446
.fontWeight(.semibold)
2547
.font(.title)
2648
}
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//
2+
// French.swift
3+
// DailyItalianWord
4+
//
5+
// Created by Josh Spicer on 10/19/20.
6+
//
7+
8+
import Foundation
9+
10+
class French : LanguageBase {
11+
12+
let words: [Word] = [
13+
Word(native: "first", foreign: "first!"),
14+
Word(native: "second", foreign: "second!")
15+
]
16+
17+
func getRandom() -> Word {
18+
let number = Int.random(in: 0..<words.count)
19+
return words[number]
20+
}
21+
22+
func getAll() -> [Word] {
23+
return words
24+
}
25+
26+
func getFlag() -> String {
27+
return "🇫🇷"
28+
}
29+
}

0 commit comments

Comments
 (0)