RES-32 Ajouter la possibilité désactiver des traqueurs spécifiques
Some checks failed
gitea-openium/resgen.swift/pipeline/pr-master There was a failure building this commit

This commit is contained in:
2025-02-12 10:49:06 +01:00
parent 821af9ee08
commit ae69a63a6a
6 changed files with 205 additions and 59 deletions

View File

@@ -89,44 +89,74 @@ enum AnalyticsGenerator {
) -> String {
"""
// Generated by ResgenSwift.\(Analytics.toolName) \(ResgenSwiftVersion)
\(getImport(targets: targets))
\(getAnalyticsProtocol(targets: targets))
\(Self.getImport())
\(Self.getAnalyticsProtocol())
\(Self.getTrackerTypeEnum())
// MARK: - Manager
class AnalyticsManager {
static var shared = AnalyticsManager()
// MARK: - Properties
var managers: [AnalyticsManagerProtocol] = []
\(getEnabledContent())
\(getAnalyticsProperties(targets: targets))
\(getPrivateLogFunction())
var managers: [TrackerType: AnalyticsManagerProtocol] = [:]
\(Self.getEnabledContent())
\(Self.getAnalyticsProperties())
\(Self.getPrivateLogFunction())
"""
}
private static func getTrackerTypeEnum() -> String {
var result: [String] = []
TrackerType.allCases.forEach { type in
result.append(" case \(type)")
}
return """
// MARK: - Traker Type
enum TrackerType: CaseIterable {
\(result.joined(separator: "\n"))
}
"""
}
private static func getEnabledContent() -> String {
"""
private var isEnabled: Bool {
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
false
} else {
_isEnabled
if ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1" {
false
} else {
true
}
}
}
private var _isEnabled: Bool = true
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) {
_isEnabled = enable
private func setAnalytics(enable: Bool, _ analytics: [TrackerType]) {
managers.forEach { (key, value) in
if analytics.contains(where: { type in
type == key
}) {
value.setEnable(enable)
}
}
}
func enableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
setAnalytics(enable: true, analytics)
}
func disableAnalytics(_ analytics: [TrackerType] = TrackerType.allCases) {
setAnalytics(enable: false, analytics)
}
"""
}
@@ -152,8 +182,8 @@ enum AnalyticsGenerator {
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
managers.values.forEach { manager in
manager.logScreen(
name: name,
path: path,
@@ -169,8 +199,8 @@ enum AnalyticsGenerator {
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
managers.values.forEach { manager in
manager.logEvent(
name: name,
action: action,
@@ -195,16 +225,14 @@ enum AnalyticsGenerator {
if targets.contains(TrackerType.matomo) {
content.append("""
managers.append(
MatomoAnalyticsManager(
siteId: siteId,
url: url
)
managers[TrackerType.matomo] = MatomoAnalyticsManager(
siteId: siteId,
url: url
)
""")
}
if targets.contains(TrackerType.firebase) {
content.append(" managers.append(FirebaseAnalyticsManager())")
content.append(" managers[TrackerType.firebase] = FirebaseAnalyticsManager()")
}
return [
@@ -225,12 +253,15 @@ enum AnalyticsGenerator {
path: String,
params: [String: Any]?
)
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
)
func setEnable(_ enable: Bool)
}
"""

View File

@@ -13,10 +13,11 @@ enum FirebaseGenerator {
static var service: String {
[
Self.header,
Self.logScreen,
Self.logEvent,
Self.footer
FirebaseGenerator.header,
FirebaseGenerator.logScreen,
FirebaseGenerator.logEvent,
FirebaseGenerator.enable,
FirebaseGenerator.footer
]
.joined(separator: "\n")
}
@@ -106,7 +107,15 @@ enum FirebaseGenerator {
}
"""
}
private static var enable: String {
"""
func setEnable(_ enable: Bool) {
Analytics.setAnalyticsCollectionEnabled(enable)
}
"""
}
private static var footer: String {
"""
}

View File

@@ -11,11 +11,12 @@ enum MatomoGenerator {
static var service: String {
[
Self.header,
Self.setup,
Self.logScreen,
Self.logEvent,
Self.footer
MatomoGenerator.header,
MatomoGenerator.setup,
MatomoGenerator.logScreen,
MatomoGenerator.logEvent,
MatomoGenerator.enable,
MatomoGenerator.footer
]
.joined(separator: "\n")
}
@@ -71,7 +72,6 @@ enum MatomoGenerator {
path: String,
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
@@ -92,8 +92,6 @@ enum MatomoGenerator {
category: String,
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: category,
action: action,
@@ -102,6 +100,15 @@ enum MatomoGenerator {
url: nil
)
}
"""
}
private static var enable: String {
"""
func setEnable(_ enable: Bool) {
tracker.isOptedOut = !enable
}
"""
}