view LazyBear/Views/Company/Helpers/NewsRow.swift @ 399:5c99883c7964

Implementing networking in CompanyView
author Dennis Concepción Martín <66180929+denniscm190@users.noreply.github.com>
date Sat, 15 May 2021 12:31:40 +0200
parents
children fd8df65927e9
line wrap: on
line source

//
//  NewsRow.swift
//  LazyBear
//
//  Created by Dennis Concepción Martín on 15/5/21.
//

import SwiftUI

struct NewsRow: View {
    var new: LatestNewsModel
    
    var body: some View {
        VStack(alignment: .leading) {
            Text(new.source.uppercased())
                .font(.caption)
                .opacity(0.5)
            
            Text(new.headline)
                .font(.headline)
            
            Text(new.summary)
                .opacity(0.5)
                .font(.subheadline)
                .lineLimit(1)
                .padding(.bottom, 5)
            
            let humanDate = convertDate()
            Text("\(humanDate) ago")
                .font(.caption2)
                .opacity(0.5)
            
            Divider()
        }
    }
    
    /*
     Convert Epoch time to human readable
     */
    private func convertDate() -> String {
        let now = Date() // Current date
        // Time when the article was published. Divide new.datetime by 1,000 because
        // TimeInterval() function must be in seconds, not in miliseconds
        let articlePublished = Date(timeIntervalSince1970: TimeInterval(new.datetime)/1000)
        let formatter = DateComponentsFormatter()
        formatter.unitsStyle = .full
        let humanDate = formatter.string(from: articlePublished, to: now)!
        
        return humanDate
    }
}

struct NewsRow_Previews: PreviewProvider {
    static var previews: some View {
        NewsRow(new: LatestNewsModel(
                datetime: 1621037430000,
                headline: "Chaos Monkeys' author calls Apple's statement on his departure defamatory",
                image: "https://cloud.iexapis.com/v1/news/image/99abeb99-6d9e-47c8-ae7b-53404eacccec",
                source: "Investing.com",
                summary: "https://www.investing.com/news/stock-market-news",
                url: "https://cloud.iexapis.com/v1/news/article/99abeb99-6d9e-47c8-ae7b-53404eacccec"))
    }
}