Feature/3608 matomo new

This commit is contained in:
Frank Rotermund
2022-09-21 08:54:22 +00:00
parent 087b4e1715
commit c20a0a7bdb
17 changed files with 310 additions and 52 deletions
@@ -0,0 +1,63 @@
//
/*
* Copyright (c) 2022 BWI GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import Foundation
@objc class BWIAnalyticsAccountDataService: NSObject {
private struct AccountAnalytics: Codable {
enum CodingKeys: String, CodingKey {
case analyticsEnabled = "enabled"
}
let analyticsEnabled: Bool
}
private enum AccountDataTypes {
static let analytics = "de.bwi.analytics"
}
let session: MXSession
private lazy var serializationService: SerializationServiceType = SerializationService()
init(mxSession: MXSession) {
self.session = mxSession
}
func isEnabled() -> Bool {
guard let analyticsDict = session.accountData.accountData(forEventType: AccountDataTypes.analytics) as? [String: Any] else {
return false
}
do {
let analytics: AccountAnalytics = try serializationService.deserialize(analyticsDict)
return analytics.analyticsEnabled
} catch {
}
return false
}
func setEnabled(_ enabled: Bool) {
var analyticsDict = session.accountData.accountData(forEventType: AccountDataTypes.analytics) ?? [:]
analyticsDict[AccountAnalytics.CodingKeys.analyticsEnabled.rawValue] = enabled
session.setAccountData(analyticsDict, forType: AccountDataTypes.analytics, success: nil, failure: nil)
}
}