-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathTracks+ShareExtension.swift
74 lines (59 loc) · 2.75 KB
/
Tracks+ShareExtension.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
import Foundation
/// This extension implements helper tracking methods, meant for Share Extension Usage.
///
extension Tracks {
// MARK: - Public Methods
public func trackExtensionLaunched(_ wpcomAvailable: Bool) {
let properties = ["is_configured_dotcom": wpcomAvailable]
trackExtensionEvent(.launched, properties: properties as [String: AnyObject])
}
public func trackExtensionPosted(_ status: String) {
let properties = ["post_status": status]
trackExtensionEvent(.posted, properties: properties as [String: AnyObject])
}
public func trackExtensionError(_ error: NSError) {
let properties = ["error_code": String(error.code), "error_domain": error.domain, "error_description": error.description]
trackExtensionEvent(.error, properties: properties as [String: AnyObject])
}
public func trackExtensionCancelled() {
trackExtensionEvent(.canceled)
}
public func trackExtensionTagsOpened() {
trackExtensionEvent(.tagsOpened)
}
public func trackExtensionTagsSelected(_ tags: String) {
let properties = ["selected_tags": tags]
trackExtensionEvent(.tagsSelected, properties: properties as [String: AnyObject])
}
public func trackExtensionCategoriesOpened() {
trackExtensionEvent(.categoriesOpened)
}
public func trackExtensionCategoriesSelected(_ categories: String) {
let properties = ["categories_tags": categories]
trackExtensionEvent(.categoriesSelected, properties: properties as [String: AnyObject])
}
public func trackExtensionPostTypeOpened() {
trackExtensionEvent(.postTypeOpened)
}
public func trackExtensionPostTypeSelected(_ postType: String) {
let properties = ["post_type": postType]
trackExtensionEvent(.postTypeSelected, properties: properties as [String: AnyObject])
}
// MARK: - Private Helpers
fileprivate func trackExtensionEvent(_ event: ExtensionEvents, properties: [String: AnyObject]? = nil) {
track(event.rawValue, properties: properties)
}
// MARK: - Private Enums
fileprivate enum ExtensionEvents: String {
case launched = "share_extension_launched"
case posted = "share_extension_posted"
case tagsOpened = "share_extension_tags_opened"
case tagsSelected = "share_extension_tags_selected"
case canceled = "share_extension_canceled"
case error = "share_extension_error"
case categoriesOpened = "share_extension_categories_opened"
case categoriesSelected = "share_extension_categories_selected"
case postTypeOpened = "share_extension_post_type_opened"
case postTypeSelected = "share_extension_post_type_selected"
}
}