mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-31 21:41:33 +00:00

- Rewrote the trainer view using SwiftUI, to be native instead of a web view. - Added a Feed class and other data enhancements to support this.
67 lines
1.6 KiB
Swift
67 lines
1.6 KiB
Swift
//
|
|
// TrainerCapsule.swift
|
|
// NewsBlur
|
|
//
|
|
// Created by David Sinclair on 2024-04-02.
|
|
// Copyright © 2024 NewsBlur. All rights reserved.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
struct TrainerCapsule: View {
|
|
var score: Feed.Score
|
|
|
|
var header: String
|
|
|
|
var image: UIImage?
|
|
|
|
var value: String
|
|
|
|
var count: Int = 0
|
|
|
|
var body: some View {
|
|
HStack {
|
|
HStack {
|
|
Image(systemName: score.imageName)
|
|
.foregroundColor(.white)
|
|
|
|
content
|
|
}
|
|
.padding([.top, .bottom], 5)
|
|
.padding([.leading, .trailing], 10)
|
|
.background(score == .like ? Color(red: 0, green: 0.5, blue: 0.0) : score == .dislike ? Color.red : Color(white: ThemeManager.shared.isSystemDark ? 0.35 : 0.6))
|
|
.clipShape(Capsule())
|
|
|
|
if count > 0 {
|
|
Text("x \(count)")
|
|
.colored(.gray)
|
|
.padding([.trailing], 10)
|
|
}
|
|
}
|
|
}
|
|
|
|
var content: Text {
|
|
Text("\(Text("\(header):").colored(.init(white: 0.85))) \(imageText)\(value)")
|
|
.colored(.white)
|
|
}
|
|
|
|
var imageText: Text {
|
|
if let image {
|
|
Text(Image(uiImage: image)).baselineOffset(-3) + Text(" ")
|
|
} else {
|
|
Text("")
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
TrainerCapsule(score: .none, header: "Tag", value: "None Example")
|
|
}
|
|
|
|
#Preview {
|
|
TrainerCapsule(score: .like, header: "Tag", value: "Liked Example")
|
|
}
|
|
|
|
#Preview {
|
|
TrainerCapsule(score: .dislike, header: "Tag", value: "Disliked Example")
|
|
}
|