|  |  |  | import SessionUtilitiesKit | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public extension VisibleMessage { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @objc(SNOpenGroupInvitation) | 
					
						
							|  |  |  |     class OpenGroupInvitation : NSObject, NSCoding { | 
					
						
							|  |  |  |         public var name: String? | 
					
						
							|  |  |  |         public var url: String? | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         @objc | 
					
						
							|  |  |  |         public init(name: String, url: String) { | 
					
						
							|  |  |  |             self.name = name | 
					
						
							|  |  |  |             self.url = url | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public required init?(coder: NSCoder) { | 
					
						
							|  |  |  |             if let name = coder.decodeObject(forKey: "name") as! String? { self.name = name } | 
					
						
							|  |  |  |             if let url = coder.decodeObject(forKey: "url") as! String? { self.url = url } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public func encode(with coder: NSCoder) { | 
					
						
							|  |  |  |             coder.encode(name, forKey: "name") | 
					
						
							|  |  |  |             coder.encode(url, forKey: "url") | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public static func fromProto(_ proto: SNProtoDataMessageOpenGroupInvitation) -> OpenGroupInvitation? { | 
					
						
							|  |  |  |             let url = proto.url | 
					
						
							|  |  |  |             let name = proto.name | 
					
						
							|  |  |  |             return OpenGroupInvitation(name: name, url: url) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         public func toProto() -> SNProtoDataMessageOpenGroupInvitation? { | 
					
						
							|  |  |  |             guard let url = url, let name = name else { | 
					
						
							|  |  |  |                 SNLog("Couldn't construct open group invitation proto from: \(self).") | 
					
						
							|  |  |  |                 return nil | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |             let openGroupInvitationProto = SNProtoDataMessageOpenGroupInvitation.builder(url: url, name: name) | 
					
						
							|  |  |  |             do { | 
					
						
							|  |  |  |                 return try openGroupInvitationProto.build() | 
					
						
							|  |  |  |             } catch { | 
					
						
							|  |  |  |                 SNLog("Couldn't construct open group invitation proto from: \(self).") | 
					
						
							|  |  |  |                 return nil | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         // MARK: Description | 
					
						
							|  |  |  |         public override var description: String { | 
					
						
							|  |  |  |             """
 | 
					
						
							|  |  |  |             OpenGroupInvitation( | 
					
						
							|  |  |  |                 name: \(name ?? "null"), | 
					
						
							|  |  |  |                 url: \(url ?? "null") | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |             """
 | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |