1
Fork 0
This repository has been archived on 2025-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
mobilefort/MobileFort/MobileFort/ProfileView.swift

52 lines
1.9 KiB
Swift

import SwiftUI
struct ProfileView: View {
let username: String
@State var posts: [ParsedPostContainer] = []
var body: some View {
VStack {
List(posts, id: \.post.id) { post in
PostView(post: post)
}
}.navigationBarTitle(username + "'s Feed").onAppear {
let url = URL(string: "https://www.pillowfort.social/" + self.username + "/json")!
URLSession.shared.dataTask(with: url) { (data, response, error) in
do {
if let jsonData = data {
struct Posts : Decodable {
let posts: [Post]
}
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let decodedPosts = try decoder.decode(Posts.self, from: jsonData)
var postArray = [ParsedPostContainer]()
for post in decodedPosts.posts {
let container = ParsedPostContainer(post: post, contentAttributed: (try? NSAttributedString(data: post.getContent().data(using: .utf8)!, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil))!)
postArray.append(container)
}
DispatchQueue.main.sync {
self.posts = postArray
}
}
} catch {
print("\(error)")
}
}.resume()
}
}
}
struct ProfileView_Previews: PreviewProvider {
static var previews: some View {
//return ProfileView(username: "foobar", posts: [fooPost, fooPostReblog])
Text("hello, world!")
}
}