91 lines
2.2 KiB
Swift
Raw Normal View History

//
// FeedItem.swift
// ReviewsFeed
//
// Created by Javier Cicchelli on 19/03/2024.
// Copyright © 2024 Röck+Cöde. All rights reserved.
//
import SwiftUI
struct FeedItem: View {
// MARK: Constants
private let item: Review
// MARK: Initialisers
init(_ item: Review) {
self.item = item
}
// MARK: Body
var body: some View {
VStack(
alignment: .leading,
spacing: 16
) {
HStack(
alignment: .bottom,
spacing: 8
) {
Image(systemName: "person.crop.circle")
Text(item.author)
.font(.subheadline)
}
VStack(spacing: 8) {
Text(item.title)
.font(.headline)
.lineLimit(2)
.fullWidth()
Text(item.comment)
.font(.body)
.lineLimit(4)
.fullWidth()
}
.multilineTextAlignment(.leading)
HStack(alignment: .bottom) {
ForEach(1...5, id: \.self) { index in
if #available(iOS 15.0, *) {
Image(systemName: "star")
.symbolVariant(index <= item.rating.stars ? .fill : .none)
} else {
Image(systemName: index <= item.rating.stars ? "star.fill" : "star")
}
}
Spacer()
HStack(
alignment: .bottom,
spacing: 4
) {
Text(item.rating.appVersion)
Image(systemName: "iphone.gen3.circle")
}
}
.font(.subheadline)
}
.padding(.vertical, 8)
}
}
// MARK: - Previews
#Preview("Feed Item") {
FeedItem(.init(
author: "Some author name here...",
comment: "Some review comment here...",
id: 0,
rating: .init(
stars: 1,
appVersion: "v1.2.3"
),
title: "Some review title here..."
))
}