Files
workavia-mail-front/ios/TwakeMailNSE/Utils/PayloadParser.swift
T
dab246 a1f86d502a TF-2384 Handle NSE to get plain notification in iOS
Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 364f32a14b9888f73a3a103b8b5e1bc9b31e148e)
2024-01-08 14:25:26 +01:00

38 lines
1.4 KiB
Swift

import Foundation
class PayloadParser {
static let shared: PayloadParser = PayloadParser()
private let prefixState: String = ":"
private func validatePushNotificationStateChange(state: String) -> Bool {
return state.contains(prefixState) &&
(state.contains(TypeName.mailbox.rawValue) ||
state.contains(TypeName.email.rawValue) ||
state.contains(TypeName.EmailDelivery.rawValue))
}
func parsingPayloadNotification(payloadData: [String: Any]) -> [String: [TypeName: String]]{
var mapStateChanges = [String: [TypeName: String]]()
payloadData.keys.forEach { key in
if validatePushNotificationStateChange(state: key),
let accountId = key.components(separatedBy: prefixState).first,
let typeName = TypeName(rawValue: key.components(separatedBy: prefixState).last ?? ""),
let stateValue = payloadData[key] as? String {
if (mapStateChanges.keys.contains(accountId)) {
var mapTypes = mapStateChanges[accountId]!
mapTypes[typeName] = stateValue
mapStateChanges[accountId] = mapTypes
} else {
var mapTypes = [TypeName: String]()
mapTypes[typeName] = stateValue
mapStateChanges[accountId] = mapTypes
}
}
}
return mapStateChanges
}
}