Some checks failed
gitea-openium/resgen.swift/pipeline/pr-master There was a failure building this commit
115 lines
3.2 KiB
Swift
115 lines
3.2 KiB
Swift
//
|
|
// FirebaseGenerator.swift
|
|
//
|
|
//
|
|
// Created by Loris Perret on 05/12/2023.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
enum FirebaseGenerator {
|
|
|
|
static var service: String {
|
|
[
|
|
FirebaseGenerator.header,
|
|
FirebaseGenerator.logScreen,
|
|
FirebaseGenerator.logEvent,
|
|
FirebaseGenerator.footer
|
|
]
|
|
.joined(separator: "\n")
|
|
}
|
|
|
|
// MARK: - Private vars
|
|
|
|
private static var header: String {
|
|
"""
|
|
// MARK: - Firebase
|
|
|
|
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
|
"""
|
|
}
|
|
|
|
private static var logScreen: String {
|
|
"""
|
|
func logScreen(
|
|
name: String,
|
|
path: String,
|
|
params: [String: Any]?
|
|
) {
|
|
var parameters = [
|
|
AnalyticsParameterScreenName: name as NSObject
|
|
]
|
|
|
|
if path.isEmpty == false {
|
|
parameters["path"] = path + "/iOS" as NSObject
|
|
}
|
|
|
|
if let supplementaryParameters = params {
|
|
for (newKey, newValue) in supplementaryParameters {
|
|
if parameters.contains(where: { (key: String, value: NSObject) in
|
|
key == newKey
|
|
}) {
|
|
continue
|
|
}
|
|
|
|
parameters[newKey] = newValue as? NSObject
|
|
}
|
|
}
|
|
|
|
Analytics.logEvent(
|
|
AnalyticsEventScreenView,
|
|
parameters: parameters
|
|
)
|
|
}
|
|
|
|
"""
|
|
}
|
|
|
|
private static var logEvent: String {
|
|
"""
|
|
func logEvent(
|
|
name: String,
|
|
action: String,
|
|
category: String,
|
|
params: [String: Any]?
|
|
) {
|
|
var parameters: [String:NSObject] = [
|
|
AnalyticsParameterItemName: name.replacingOccurrences(of: " ", with: "_") as NSObject
|
|
]
|
|
|
|
if category.isEmpty == false {
|
|
parameters["AnalyticsParameterItemCategory"] = category as NSObject
|
|
}
|
|
|
|
if action.isEmpty == false {
|
|
parameters["action"] = action as NSObject
|
|
}
|
|
|
|
if let supplementaryParameters = params {
|
|
for (newKey, newValue) in supplementaryParameters {
|
|
if parameters.contains(where: { (key: String, value: NSObject) in
|
|
key == newKey
|
|
}) {
|
|
continue
|
|
}
|
|
|
|
parameters[newKey] = newValue as? NSObject
|
|
}
|
|
}
|
|
|
|
Analytics.logEvent(
|
|
AnalyticsEventSelectContent,
|
|
parameters: parameters
|
|
)
|
|
}
|
|
"""
|
|
}
|
|
|
|
private static var footer: String {
|
|
"""
|
|
}
|
|
|
|
"""
|
|
}
|
|
}
|