Skip to content

Commit a896897

Browse files
committed
Working as expected
1 parent 42608b1 commit a896897

File tree

5 files changed

+56
-9
lines changed

5 files changed

+56
-9
lines changed

SwiftDataWidget.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
810F5EE52C3C85FD001AD056 /* ThingWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 810F5ED12C3C85FC001AD056 /* ThingWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
2424
813D16DF2C3C9181005E58A1 /* Thing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810F5EC92C3C78C3001AD056 /* Thing.swift */; };
2525
813D16E02C3C92F6005E58A1 /* DataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 810F5ECB2C3C8371001AD056 /* DataModel.swift */; };
26+
81FE4B232C3CDBD80085360E /* MinusIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FE4B222C3CDBD80085360E /* MinusIntent.swift */; };
27+
81FE4B242C3CDBD80085360E /* MinusIntent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FE4B222C3CDBD80085360E /* MinusIntent.swift */; };
2628
/* End PBXBuildFile section */
2729

2830
/* Begin PBXContainerItemProxy section */
@@ -68,6 +70,7 @@
6870
810F5EE22C3C85FD001AD056 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
6971
810F5EEA2C3C862E001AD056 /* SwiftDataWidget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SwiftDataWidget.entitlements; sourceTree = "<group>"; };
7072
810F5EEB2C3C864E001AD056 /* ThingWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ThingWidgetExtension.entitlements; sourceTree = SOURCE_ROOT; };
73+
81FE4B222C3CDBD80085360E /* MinusIntent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinusIntent.swift; sourceTree = "<group>"; };
7174
/* End PBXFileReference section */
7275

7376
/* Begin PBXFrameworksBuildPhase section */
@@ -148,6 +151,7 @@
148151
810F5EDA2C3C85FC001AD056 /* ThingWidgetControl.swift */,
149152
810F5EDC2C3C85FC001AD056 /* ThingWidget.swift */,
150153
810F5EDE2C3C85FC001AD056 /* CountIntent.swift */,
154+
81FE4B222C3CDBD80085360E /* MinusIntent.swift */,
151155
810F5EE02C3C85FD001AD056 /* Assets.xcassets */,
152156
810F5EE22C3C85FD001AD056 /* Info.plist */,
153157
);
@@ -259,13 +263,15 @@
259263
810F5ECC2C3C8371001AD056 /* DataModel.swift in Sources */,
260264
810F5ECA2C3C78C3001AD056 /* Thing.swift in Sources */,
261265
810F5EBC2C3C4F8C001AD056 /* SwiftDataWidgetApp.swift in Sources */,
266+
81FE4B242C3CDBD80085360E /* MinusIntent.swift in Sources */,
262267
);
263268
runOnlyForDeploymentPostprocessing = 0;
264269
};
265270
810F5ECD2C3C85FC001AD056 /* Sources */ = {
266271
isa = PBXSourcesBuildPhase;
267272
buildActionMask = 2147483647;
268273
files = (
274+
81FE4B232C3CDBD80085360E /* MinusIntent.swift in Sources */,
269275
810F5EDB2C3C85FC001AD056 /* ThingWidgetControl.swift in Sources */,
270276
810F5EDF2C3C85FC001AD056 /* CountIntent.swift in Sources */,
271277
810F5ED92C3C85FC001AD056 /* ThingWidgetBundle.swift in Sources */,

ThingWidget/CountIntent.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import SwiftData
1010

1111
struct CountIntent: AppIntent {
1212
static var title: LocalizedStringResource {
13-
return "Thing"
13+
LocalizedStringResource("Count Intent")
1414
}
1515

1616
@Parameter(title: "Thing Count")

ThingWidget/MinusIntent.swift

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
//
2+
// AppIntent.swift
3+
// ThingWidget
4+
//
5+
// Created by Tyler Plesetz on 7/8/24.
6+
//
7+
8+
import AppIntents
9+
import SwiftData
10+
11+
struct MinusIntent: AppIntent {
12+
static var title: LocalizedStringResource {
13+
LocalizedStringResource("Minus")
14+
}
15+
16+
@Parameter(title: "Thing Count")
17+
var count: Int
18+
19+
init(count: Int) {
20+
self.count = count
21+
}
22+
23+
init() {
24+
}
25+
26+
func perform() async throws -> some IntentResult {
27+
let modelContext = ModelContext(DataModel.shared.modelContainer)
28+
modelContext.author = DataModel.TransactionAuthor.widget //"widget"
29+
30+
let fetchDescripor = FetchDescriptor(predicate: #Predicate<Thing> {
31+
($0.count == count)
32+
})
33+
guard let thing = try? modelContext.fetch(fetchDescripor).first
34+
else {
35+
return .result()
36+
}
37+
do {
38+
if thing.count > 0 {
39+
thing.count -= 1
40+
}
41+
try modelContext.save()
42+
} catch {
43+
print("Failed to save model context: \(error)")
44+
}
45+
return .result()
46+
}
47+
}

ThingWidget/ThingWidget.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,12 @@ struct ThingWidgetEntryView : View {
8484
var body: some View {
8585
HStack {
8686
// Minus Button
87-
Button(action: {
88-
withAnimation {
89-
if entry.count >= 1 {
90-
91-
}
92-
}
93-
}, label: {
87+
Button(intent: MinusIntent(count: entry.count)) {
9488
Image(systemName: "minus")
9589
.font(.title.bold())
9690
.frame(width: 15, height: 15)
9791
.foregroundStyle(Color.pink)
98-
})
92+
}
9993
.buttonRepeatBehavior(.enabled)
10094

10195
Text("\(entry.count)")

0 commit comments

Comments
 (0)