2020-06-03 21:45:44 -04:00
|
|
|
import Foundation
|
|
|
|
|
2020-06-03 21:52:38 -04:00
|
|
|
enum PostType: String, Decodable {
|
2020-06-04 06:03:09 -04:00
|
|
|
case text, picture
|
2020-06-03 21:52:38 -04:00
|
|
|
}
|
|
|
|
|
2020-06-03 21:56:33 -04:00
|
|
|
struct Media: Decodable, Identifiable {
|
|
|
|
let id: Int
|
|
|
|
|
|
|
|
let url: String
|
|
|
|
}
|
|
|
|
|
2020-06-03 22:28:36 -04:00
|
|
|
struct OriginalPost: Decodable, Identifiable {
|
|
|
|
let id: Int
|
|
|
|
|
|
|
|
let title: String?
|
2020-06-04 06:07:18 -04:00
|
|
|
let content: String
|
2020-06-03 22:28:36 -04:00
|
|
|
}
|
|
|
|
|
2020-06-03 21:45:44 -04:00
|
|
|
struct Post: Decodable, Identifiable {
|
|
|
|
let id: Int
|
2020-06-03 21:52:38 -04:00
|
|
|
|
|
|
|
let title: String?
|
|
|
|
let content: String
|
|
|
|
|
|
|
|
let postType: PostType
|
2020-06-03 21:56:33 -04:00
|
|
|
|
|
|
|
let media: [Media]
|
2020-06-03 22:28:36 -04:00
|
|
|
|
|
|
|
let username: String
|
|
|
|
let originalUsername: String?
|
|
|
|
|
|
|
|
let originalPost: OriginalPost?
|
2020-06-03 23:17:23 -04:00
|
|
|
let avatarUrl: String
|
2020-06-03 22:28:36 -04:00
|
|
|
|
|
|
|
func isReblogged() -> Bool {
|
|
|
|
return originalUsername != nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func getTitle() -> String? {
|
|
|
|
if isReblogged() {
|
|
|
|
return originalPost?.title
|
|
|
|
} else {
|
|
|
|
return title
|
|
|
|
}
|
|
|
|
}
|
2020-06-04 06:07:18 -04:00
|
|
|
|
|
|
|
func getContent() -> String {
|
|
|
|
if isReblogged() {
|
|
|
|
return originalPost!.content
|
|
|
|
} else {
|
|
|
|
return content
|
|
|
|
}
|
|
|
|
}
|
2020-06-03 21:45:44 -04:00
|
|
|
}
|
2020-06-03 22:42:37 -04:00
|
|
|
|
2020-06-04 08:00:35 -04:00
|
|
|
struct ParsedPostContainer {
|
|
|
|
let post: Post
|
2020-06-04 09:42:42 -04:00
|
|
|
let contentAttributed: NSMutableAttributedString
|
2020-06-04 08:00:35 -04:00
|
|
|
}
|
|
|
|
|
2020-06-03 23:17:23 -04:00
|
|
|
let mediaURL = "https://homepages.cae.wisc.edu/~ece533/images/airplane.png"
|
|
|
|
|
2020-06-03 22:42:37 -04:00
|
|
|
let testMedia = Media(id: 0,
|
2020-06-03 23:17:23 -04:00
|
|
|
url: mediaURL)
|
2020-06-03 22:42:37 -04:00
|
|
|
|
|
|
|
let fooPost = Post(id: 0,
|
|
|
|
title: "Foo",
|
|
|
|
content: "",
|
|
|
|
postType: .picture,
|
|
|
|
media: [testMedia],
|
|
|
|
username: "foobar",
|
|
|
|
originalUsername: nil,
|
2020-06-03 23:17:23 -04:00
|
|
|
originalPost: nil,
|
|
|
|
avatarUrl: mediaURL)
|
2020-06-03 22:42:37 -04:00
|
|
|
|
|
|
|
let fooPostReblog = Post(id: 1,
|
|
|
|
title: nil,
|
|
|
|
content: "",
|
|
|
|
postType: .picture,
|
|
|
|
media: [testMedia],
|
|
|
|
username: "foobar",
|
|
|
|
originalUsername: "foobar2",
|
2020-06-03 23:17:23 -04:00
|
|
|
originalPost: nil,
|
|
|
|
avatarUrl: mediaURL)
|