TF-2384 Handle NSE to get plain notification in iOS
Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit 364f32a14b9888f73a3a103b8b5e1bc9b31e148e)
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user