FederationInvitation.swift 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
  3. // SPDX-License-Identifier: GPL-3.0-or-later
  4. //
  5. import Foundation
  6. @objcMembers public class FederationInvitation: NSObject {
  7. public enum FederationInvitationState: Int {
  8. case pending = 0
  9. case accepted = 1
  10. }
  11. public var accountId: String = ""
  12. public var invitationId: Int = 0
  13. public var invitationState: FederationInvitationState = .pending
  14. public var inviterDisplayName: String?
  15. public var remoteServer: String?
  16. public var remoteConversationName: String?
  17. init(notification: NCNotification, for accountId: String) {
  18. super.init()
  19. self.accountId = accountId
  20. self.invitationId = Int(notification.objectId) ?? 0
  21. guard let richParameters = notification.subjectRichParameters as? [String: AnyObject]
  22. else { return }
  23. if let roomNameObj = richParameters["roomName"] as? [String: AnyObject],
  24. let roomName = roomNameObj["name"] as? String {
  25. remoteConversationName = roomName
  26. }
  27. if let serverObj = richParameters["remoteServer"] as? [String: AnyObject],
  28. let server = serverObj["name"] as? String {
  29. remoteServer = server
  30. }
  31. }
  32. init(dictionary: [String: Any], for accountId: String) {
  33. super.init()
  34. self.accountId = accountId
  35. self.invitationId = dictionary["id"] as? Int ?? 0
  36. self.inviterDisplayName = dictionary["inviterDisplayName"] as? String
  37. self.remoteServer = dictionary["remoteServerUrl"] as? String
  38. self.remoteConversationName = dictionary["roomName"] as? String
  39. if let stateRaw = dictionary["state"] as? Int,
  40. let state = FederationInvitationState(rawValue: stateRaw) {
  41. self.invitationState = state
  42. }
  43. }
  44. }