summaryrefslogtreecommitdiff
path: root/Sora/Views/Post/PostView.swift
blob: 335f88eac42f118274093d00e6e124efd09ebcdb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import SwiftUI

struct PostView: View {
    @EnvironmentObject var settings: Settings
    let post: MoebooruPost
    @ObservedObject var manager: MoebooruManager
    private var thumbnailURL: URL? {
        switch settings.thumbnailType {
        case .preview:
            return post.previewURL
        case .sample:
            return post.sampleURL
        case .original:
            return post.fileURL
        case .compressed:
            return post.jpegURL
        }
    }

    var body: some View {
        VStack {
            AsyncImage(url: thumbnailURL) { image in
                image
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .onScrollVisibilityChange { visible in
                        if post == manager.posts.last && !manager.endOfData && visible {
                            Task {
                                manager.loadNextPage()
                            }
                        }
                    }
                    .blur(radius: settings.blurUnsafeThumbnails ? post.rating != "s" ? 10 : 0 : 0)
            } placeholder: {
                ProgressView()
                    .padding()
            }
        }
    }
}