Add description view to macOS
This commit is contained in:
parent
f920e3aa9e
commit
145f635768
3 changed files with 48 additions and 66 deletions
|
@ -75,76 +75,52 @@ struct ProfileView: View {
|
|||
.navigationBarItems(trailing: NavigationLink(destination: DescriptionView(username: username)) {
|
||||
Text("Sidebar")
|
||||
})
|
||||
.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? NSMutableAttributedString(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()
|
||||
}
|
||||
.onAppear(perform: load)
|
||||
}
|
||||
#else
|
||||
var body: some View {
|
||||
List(posts, id: \.post.id) { post in
|
||||
PostView(post: post)
|
||||
}
|
||||
.onAppear {
|
||||
let url = URL(string: "https://www.pillowfort.social/" + self.username + "/json")!
|
||||
HStack {
|
||||
List(posts, id: \.post.id) { post in
|
||||
PostView(post: post)
|
||||
}
|
||||
.onAppear(perform: load)
|
||||
|
||||
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? NSMutableAttributedString(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()
|
||||
DescriptionView(username: username)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
private func load() {
|
||||
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? NSMutableAttributedString(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 {
|
||||
|
|
|
@ -8,7 +8,7 @@ struct MainView: View {
|
|||
VStack {
|
||||
TextField("Username", text: $username)
|
||||
.disableAutocorrection(true)
|
||||
//.autocapitalization(.none)
|
||||
.autocapitalization(.none)
|
||||
NavigationLink(destination: ProfileView(username: username)) {
|
||||
Text("Show Feed")
|
||||
}
|
||||
|
|
|
@ -4,8 +4,14 @@ struct MainView: View {
|
|||
@State private var username: String = ""
|
||||
|
||||
var body: some View {
|
||||
VStack {
|
||||
ProfileView(username: "redstrate")
|
||||
NavigationView {
|
||||
VStack {
|
||||
TextField("Username", text: $username)
|
||||
.disableAutocorrection(true)
|
||||
NavigationLink(destination: ProfileView(username: username)) {
|
||||
Text("Show Feed")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue