I believe I have taken my refactoring to the furthest possible
struct RestaurantDetailsView: View {
@ObservedObject var vm = RestaurantDetailsViewModel()
let restaurant: Restaurants
@State var rating: Double = 5.0
@State var starSize = 18.0
@State var updateOnTouch = false
var body: some View{
ScrollView {
// separate view
HeaderContainerView(restaurant: restaurant)
// separate view
RestaurantInfoView(restaurantsDetails: vm.restaurantsDetails?.description ?? "" )
// divider view
HStack {
Text("Popular dishes")
.font(.system(size: 16, weight: .bold))
Spacer()
}.padding(.horizontal)
// separate view
if let dishes = vm.restaurantsDetails?.popularDishes {
// pass the dishes array
DishCell(dishes: dishes)
}
// divider view
HStack{
Text("Customer Reviews")
.font(.system(size: 16, weight: .bold))
Spacer()
}.padding(.all)
// separate view
if let reviews = vm.restaurantsDetails?.reviews {
ReviewCell(reviews: reviews, rating: $rating, starSize: $starSize, updateOnTouch: $updateOnTouch)
}
}.navigationBarTitle("\(restaurant.name) Details", displayMode: .inline)
}
}