ios: notification actions for calls and contact requests with NSE (#829)

* ios: notification actions for calls and contact requests with NSE

* update contact request if already in the list
This commit is contained in:
Evgeny Poberezkin
2022-07-22 08:10:37 +01:00
committed by GitHub
parent e538a9e057
commit 8469f921b7
6 changed files with 68 additions and 22 deletions
+16 -7
View File
@@ -669,11 +669,16 @@ func processReceivedMsg(_ res: ChatResponse) async {
m.updateContact(contact)
m.removeChat(contact.activeConn.id)
case let .receivedContactRequest(contactRequest):
m.addChat(Chat(
chatInfo: ChatInfo.contactRequest(contactRequest: contactRequest),
chatItems: []
))
NtfManager.shared.notifyContactRequest(contactRequest)
let cInfo = ChatInfo.contactRequest(contactRequest: contactRequest)
if m.hasChat(contactRequest.id) {
m.updateChatInfo(cInfo)
} else {
m.addChat(Chat(
chatInfo: cInfo,
chatItems: []
))
NtfManager.shared.notifyContactRequest(contactRequest)
}
case let .contactUpdated(toContact):
let cInfo = ChatInfo.direct(contact: toContact)
if m.hasChat(toContact.id) {
@@ -850,8 +855,12 @@ func refreshCallInvitations() throws {
let m = ChatModel.shared
let callInvitations = try apiGetCallInvitations()
m.callInvitations = callInvitations.reduce(into: [ChatId: RcvCallInvitation]()) { result, inv in result[inv.contact.id] = inv }
if let inv = callInvitations.last {
activateCall(inv)
if let (chatId, ntfAction) = m.ntfCallInvitationAction,
let invitation = m.callInvitations.removeValue(forKey: chatId) {
m.ntfCallInvitationAction = nil
CallController.shared.callAction(invitation: invitation, action: ntfAction)
} else if let invitation = callInvitations.last {
activateCall(invitation)
}
}