From 6aef8bc2dee5ecb2f92be4ea94fc5aa85634e508 Mon Sep 17 00:00:00 2001 From: Loris Perret Date: Wed, 6 Dec 2023 11:23:26 +0100 Subject: [PATCH] Add FirebaseManager --- .../Tags/Generated/Tags+GenAllScript.swift | 25 +++++++--- .../Tags/Generator/FirebaseGenerator.swift | 48 ++++++++++++++----- .../Tags/Generator/TagsGenerator.swift | 33 +++++++------ .../Tags/Model/TagDefinition.swift | 8 ++-- 4 files changed, 73 insertions(+), 41 deletions(-) diff --git a/SampleFiles/Tags/Generated/Tags+GenAllScript.swift b/SampleFiles/Tags/Generated/Tags+GenAllScript.swift index ebed455..e906ace 100644 --- a/SampleFiles/Tags/Generated/Tags+GenAllScript.swift +++ b/SampleFiles/Tags/Generated/Tags+GenAllScript.swift @@ -66,11 +66,15 @@ class MatomoAnalyticsManager: AnalyticsManagerProtocol { class FirebaseAnalyticsManager: AnalyticsManagerProtocol { func logScreen(name: String, path: String) { - + Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name]) } func logEvent(name: String) { - + var parameters = [ + AnalyticsParameterValue: name + ] + + Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters) } } @@ -83,20 +87,27 @@ class AnalyticsManager { var managers: [AnalyticsManagerProtocol] = [] + private var isEnabled: Bool = true + + // MARK: - Methods + + func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable } + func configure(sideId: String, url: String) { managers.append(MatomoAnalyticsManager(siteId: sideId, url: url)) managers.append(FirebaseAnalyticsManager()) - FirebaseApp.configure() } private func logScreen(name: String, path: String) { + guard isEnabled else { return } managers.forEach { manager in manager.logScreen(name: name, path: path) } } private func logEvent(name: String) { + guard isEnabled else { return } managers.forEach { manager in manager.logEvent(name: name) } @@ -104,11 +115,11 @@ class AnalyticsManager { // MARK: - ScreenTag - func logScreenEcranUn(name: String, path: String) { - logScreen(name: name, path: path) + func logScreenEcranUn() { + logScreen(name: "Ecran un", path: "ecran_un/") } - func logEventEcranDeux(name: String) { - logEvent(name: name) + func logEventEcranDeux() { + logEvent(name: "Ecran deux") } } diff --git a/Sources/ResgenSwift/Tags/Generator/FirebaseGenerator.swift b/Sources/ResgenSwift/Tags/Generator/FirebaseGenerator.swift index 4226c55..5f2b690 100644 --- a/Sources/ResgenSwift/Tags/Generator/FirebaseGenerator.swift +++ b/Sources/ResgenSwift/Tags/Generator/FirebaseGenerator.swift @@ -8,7 +8,19 @@ import Foundation enum FirebaseGenerator { - var header: String { + case service + + var content: String { + [ + FirebaseGenerator.service.header, + FirebaseGenerator.service.logScreen, + FirebaseGenerator.service.logEvent, + FirebaseGenerator.service.footer + ] + .joined(separator: "\n") + } + + private var header: String { """ // MARK: - Firebase @@ -16,21 +28,31 @@ enum FirebaseGenerator { """ } - var footer: String { + private var logScreen: String { + """ + func logScreen(name: String, path: String) { + Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name]) + } + + """ + } + + private var logEvent: String { + """ + func logEvent(name: String) { + var parameters = [ + AnalyticsParameterValue: name + ] + + Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters) + } + """ + } + + private var footer: String { """ } """ } - - var logScreen: String { - """ - """ - } - - var logEvent: String { - """ - """ - } - } diff --git a/Sources/ResgenSwift/Tags/Generator/TagsGenerator.swift b/Sources/ResgenSwift/Tags/Generator/TagsGenerator.swift index 48f2e67..f5f7fce 100644 --- a/Sources/ResgenSwift/Tags/Generator/TagsGenerator.swift +++ b/Sources/ResgenSwift/Tags/Generator/TagsGenerator.swift @@ -62,7 +62,6 @@ class TagsGenerator { \(Self.getImport()) \(Self.getAnalytics()) - // MARK: - Manager class AnalyticsManager { @@ -72,12 +71,24 @@ class TagsGenerator { var managers: [AnalyticsManagerProtocol] = [] + \(Self.getEnabledContent()) + \(Self.getAnalyticsProperties()) \(Self.getPrivateLogFunction()) """ } + private static func getEnabledContent() -> String { + """ + private var isEnabled: Bool = true + + // MARK: - Methods + + func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable } + """ + } + private static func getImport() -> String { var result: [String] = [] @@ -94,12 +105,14 @@ class TagsGenerator { private static func getPrivateLogFunction() -> String { """ private func logScreen(name: String, path: String) { + guard isEnabled else { return } managers.forEach { manager in manager.logScreen(name: name, path: path) } } private func logEvent(name: String) { + guard isEnabled else { return } managers.forEach { manager in manager.logEvent(name: name) } @@ -108,7 +121,7 @@ class TagsGenerator { } private static func getAnalyticsProperties() -> String { - var header = " // MARK: - Methods\n" + var header = "" var content: [String] = [] let footer = " }" @@ -144,20 +157,6 @@ class TagsGenerator { """ - let firebase = """ - // MARK: - Firebase - - class FirebaseAnalyticsManager: AnalyticsManagerProtocol { - func logScreen(name: String, path: String) { - - } - - func logEvent(name: String) { - - } - } - """ - var result: [String] = [proto] if targets.contains(Tags.TargetType.matomo) { @@ -165,7 +164,7 @@ class TagsGenerator { } if targets.contains(Tags.TargetType.firebase) { - result.append(firebase) + result.append(FirebaseGenerator.service.content) } return result.joined(separator: "\n") diff --git a/Sources/ResgenSwift/Tags/Model/TagDefinition.swift b/Sources/ResgenSwift/Tags/Model/TagDefinition.swift index 97736c2..806ec8b 100644 --- a/Sources/ResgenSwift/Tags/Model/TagDefinition.swift +++ b/Sources/ResgenSwift/Tags/Model/TagDefinition.swift @@ -96,9 +96,9 @@ class TagDefinition { private func getlogFunction() -> String { if type == TagType.screen.value { - "logScreen(name: name, path: path)" + "logScreen(name: \"\(name)\", path: \"\(path)\")" } else { - "logEvent(name: name)" + "logEvent(name: \"\(name)\")" } } @@ -106,7 +106,7 @@ class TagDefinition { func getProperty() -> String { """ - func \(getFuncName())(name: String\(type == TagType.screen.value ? ", path: String" : "")) { + func \(getFuncName())() { \(getlogFunction()) } """ @@ -114,7 +114,7 @@ class TagDefinition { func getStaticProperty() -> String { """ - static func \(getFuncName())(name: name\(type == TagType.screen.value ? ", path: String" : "")) { + static func \(getFuncName())() { \(getlogFunction()) } """