Skip to content

Commit 668abe7

Browse files
authored
Merge pull request #6 from ChaosCoder/feature/triggersAndActionSets
Add methods for action sets and triggers
2 parents 6860f19 + c428e5f commit 668abe7

File tree

5 files changed

+138
-4
lines changed

5 files changed

+138
-4
lines changed

PMKHomeKit.xcodeproj/project.pbxproj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
/* Begin PBXBuildFile section */
1010
63C7FFF71D5C020D003BAE60 /* PMKHomeKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 63C7FFA71D5BEE09003BAE60 /* PMKHomeKit.framework */; };
11+
7D619865235E333E001E0F2E /* HMActionSet+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D619864235E333E001E0F2E /* HMActionSet+Promise.swift */; };
12+
7D619867235E33AC001E0F2E /* HMTrigger+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D619866235E33AC001E0F2E /* HMTrigger+Promise.swift */; };
13+
7D619869235E3401001E0F2E /* HMEventTrigger+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D619868235E3401001E0F2E /* HMEventTrigger+Promise.swift */; };
1114
8312EA1521096DF000A47DDF /* HMAccessoryBrowserTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312EA1421096DF000A47DDF /* HMAccessoryBrowserTests.swift */; };
1215
8312EA19210974F600A47DDF /* UtilsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8312EA18210974F600A47DDF /* UtilsTests.swift */; };
1316
838C29D32103FB9700CE5309 /* HMAcessoryBrowser+Promise.swift in Sources */ = {isa = PBXBuildFile; fileRef = 838C29CE2103FB9600CE5309 /* HMAcessoryBrowser+Promise.swift */; };
@@ -33,6 +36,9 @@
3336
63C7FFF21D5C020D003BAE60 /* PMKHKTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PMKHKTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
3437
63CCF8121D5C0C4E00503216 /* Cartfile */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cartfile; sourceTree = "<group>"; };
3538
63CCF8171D5C11B500503216 /* Carthage.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Carthage.xcconfig; sourceTree = "<group>"; };
39+
7D619864235E333E001E0F2E /* HMActionSet+Promise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HMActionSet+Promise.swift"; sourceTree = "<group>"; };
40+
7D619866235E33AC001E0F2E /* HMTrigger+Promise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HMTrigger+Promise.swift"; sourceTree = "<group>"; };
41+
7D619868235E3401001E0F2E /* HMEventTrigger+Promise.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "HMEventTrigger+Promise.swift"; sourceTree = "<group>"; };
3642
8312EA1421096DF000A47DDF /* HMAccessoryBrowserTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMAccessoryBrowserTests.swift; sourceTree = "<group>"; };
3743
8312EA18210974F600A47DDF /* UtilsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilsTests.swift; sourceTree = "<group>"; };
3844
838C29CE2103FB9600CE5309 /* HMAcessoryBrowser+Promise.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "HMAcessoryBrowser+Promise.swift"; sourceTree = "<group>"; };
@@ -87,8 +93,11 @@
8793
children = (
8894
838C29D02103FB9700CE5309 /* HMCharacteristic+Promise.swift */,
8995
838C29CE2103FB9600CE5309 /* HMAcessoryBrowser+Promise.swift */,
96+
7D619864235E333E001E0F2E /* HMActionSet+Promise.swift */,
97+
7D619868235E3401001E0F2E /* HMEventTrigger+Promise.swift */,
9098
838C29CF2103FB9700CE5309 /* HMHome+Promise.swift */,
9199
838C29D12103FB9700CE5309 /* HMHomeManager+Promise.swift */,
100+
7D619866235E33AC001E0F2E /* HMTrigger+Promise.swift */,
92101
838C29D22103FB9700CE5309 /* Utils.swift */,
93102
);
94103
path = Sources;
@@ -216,8 +225,11 @@
216225
buildActionMask = 2147483647;
217226
files = (
218227
838C29D62103FB9700CE5309 /* HMHomeManager+Promise.swift in Sources */,
228+
7D619865235E333E001E0F2E /* HMActionSet+Promise.swift in Sources */,
219229
838C29D52103FB9700CE5309 /* HMCharacteristic+Promise.swift in Sources */,
220230
838C29D42103FB9700CE5309 /* HMHome+Promise.swift in Sources */,
231+
7D619869235E3401001E0F2E /* HMEventTrigger+Promise.swift in Sources */,
232+
7D619867235E33AC001E0F2E /* HMTrigger+Promise.swift in Sources */,
221233
838C29D32103FB9700CE5309 /* HMAcessoryBrowser+Promise.swift in Sources */,
222234
838C29D72103FB9700CE5309 /* Utils.swift in Sources */,
223235
);

Sources/HMActionSet+Promise.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import Foundation
2+
import HomeKit
3+
#if !PMKCocoaPods
4+
import PromiseKit
5+
#endif
6+
7+
#if !os(tvOS) && !os(watchOS)
8+
9+
extension HMActionSet {
10+
11+
@available(iOS 8.0, *)
12+
public func addAction(_ action: HMAction) -> Promise<Void> {
13+
return Promise { seal in
14+
self.addAction(action, completionHandler: seal.resolve)
15+
}
16+
}
17+
18+
@available(iOS 8.0, *)
19+
public func updateName(_ name: String) -> Promise<Void> {
20+
return Promise { seal in
21+
self.updateName(name, completionHandler: seal.resolve)
22+
}
23+
}
24+
}
25+
26+
#endif

Sources/HMEventTrigger+Promise.swift

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import Foundation
2+
import HomeKit
3+
#if !PMKCocoaPods
4+
import PromiseKit
5+
#endif
6+
7+
#if !os(tvOS) && !os(watchOS)
8+
9+
@available(iOS 9.0, *)
10+
extension HMEventTrigger {
11+
12+
@available(iOS 11.0, *)
13+
public func updateExecuteOnce(_ executeOnce: Bool) -> Promise<Void> {
14+
return Promise { seal in
15+
self.updateExecuteOnce(executeOnce, completionHandler: seal.resolve)
16+
}
17+
}
18+
19+
}
20+
21+
#endif

Sources/HMHome+Promise.swift

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ extension HMHome {
1414
self.updateName(name, completionHandler: seal.resolve)
1515
}
1616
}
17-
17+
18+
// MARK: Accessories
19+
1820
/// Add and setup a new HMAccessory. Displays it's own UI
1921
@available(iOS 11.3, *)
2022
public func addAndSetupAccessories(with payload: HMAccessorySetupPayload) -> Promise<[HMAccessory]> {
@@ -62,9 +64,8 @@ extension HMHome {
6264
}
6365
}
6466

65-
/**
66-
Rooms
67-
*/
67+
// MARK: Rooms
68+
6869
@available(iOS 8.0, *)
6970
public func addRoom(withName name: String) -> Promise<HMRoom> {
7071
return Promise { seal in
@@ -78,5 +79,38 @@ extension HMHome {
7879
self.removeRoom(room, completionHandler: seal.resolve)
7980
}
8081
}
82+
83+
// MARK: Action Sets
84+
85+
@available(iOS 8.0, *)
86+
public func addActionSet(withName name: String) -> Promise<HMActionSet> {
87+
return Promise { seal in
88+
self.addActionSet(withName: name, completionHandler: seal.resolve)
89+
}
90+
}
91+
92+
@available(iOS 8.0, *)
93+
public func removeActionSet(_ actionSet: HMActionSet) -> Promise<Void> {
94+
return Promise { seal in
95+
self.removeActionSet(actionSet, completionHandler: seal.resolve)
96+
}
97+
}
98+
99+
// MARK: Triggers
100+
101+
@available(iOS 8.0, *)
102+
public func addTrigger(_ trigger: HMTrigger) -> Promise<Void> {
103+
return Promise { seal in
104+
self.addTrigger(trigger, completionHandler: seal.resolve)
105+
}
106+
}
107+
108+
@available(iOS 8.0, *)
109+
public func removeTrigger(_ trigger: HMTrigger) -> Promise<Void> {
110+
return Promise { seal in
111+
self.removeTrigger(trigger, completionHandler: seal.resolve)
112+
}
113+
}
81114
}
115+
82116
#endif

Sources/HMTrigger+Promise.swift

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import Foundation
2+
import HomeKit
3+
#if !PMKCocoaPods
4+
import PromiseKit
5+
#endif
6+
7+
#if !os(tvOS) && !os(watchOS)
8+
9+
extension HMTrigger {
10+
11+
@available(iOS 8.0, *)
12+
public func updateName(_ name: String) -> Promise<Void> {
13+
return Promise { seal in
14+
self.updateName(name, completionHandler: seal.resolve)
15+
}
16+
}
17+
18+
@available(iOS 8.0, *)
19+
public func enable(_ enabled: Bool) -> Promise<Void> {
20+
return Promise { seal in
21+
self.enable(enabled, completionHandler: seal.resolve)
22+
}
23+
}
24+
25+
@available(iOS 8.0, *)
26+
public func addActionSet(_ actionSet: HMActionSet) -> Promise<Void> {
27+
return Promise { seal in
28+
self.addActionSet(actionSet, completionHandler: seal.resolve)
29+
}
30+
}
31+
32+
@available(iOS 8.0, *)
33+
public func removeActionSet(_ actionSet: HMActionSet) -> Promise<Void> {
34+
return Promise { seal in
35+
self.removeActionSet(actionSet, completionHandler: seal.resolve)
36+
}
37+
}
38+
39+
}
40+
41+
#endif

0 commit comments

Comments
 (0)