Untitled
unknown
plain_text
a year ago
1.6 kB
11
Indexable
import Foundation
// AnnotationType Enum
enum AnnotationType: String, Codable {
case draw = "draw"
case pin = "pin"
case text = "text"
}
// Comment Model
struct Comment: Codable {
var id: String?
var chatType: Int
var messageType: String
var payload: String
var mentionedUserIds: [String]?
var annotation: Annotation?
var parent: String?
var document: String
var caseId: String
var user: String
var replies: [Comment]?
var createdAt: Date?
var updatedAt: Date?
// Nested Annotation Struct
struct Annotation: Codable {
var annotationType: AnnotationType?
var parentId: String?
var galleryId: String?
var meta: Meta?
// Nested Meta Struct
struct Meta: Codable {
var thumbId: String?
var name: String?
var pins: [Pin]?
var shapes: [[[[String]]]]?
// Nested Pin Struct
struct Pin: Codable {
var position: [Double]
}
}
}
}
// Example JSON Encoding and Decoding
extension Comment {
static func fromJSON(_ jsonData: Data) throws -> Comment {
let decoder = JSONDecoder()
decoder.dateDecodingStrategy = .iso8601
return try decoder.decode(Comment.self, from: jsonData)
}
func toJSON() throws -> Data {
let encoder = JSONEncoder()
encoder.dateEncodingStrategy = .iso8601
return try encoder.encode(self)
}
}
Editor is loading...
Leave a Comment