blob: 45b970c187fd62314ca797e13aad0d0ea185c396 (
plain) (
tree)
|
|
//
// PenguinItemPresenter.swift
// foray
//
// Created by Nicholas Tay on 24/3/2022.
//
import Foundation
class PenguinItemPresenter {
private struct Constants {
static let apiEndpoint = "https://users.windblume.net/~nick/upload/dummy.json"
}
let fetcher = ForayFetcher()
func fetch() async -> [PenguinItemViewModel] {
guard let endpoint = URL(string: Constants.apiEndpoint),
let apiItems: [PenguinItemModel] = try? await fetcher.fetch(url: endpoint) else { return [] }
return transform(models: apiItems)
}
func transform(models: [PenguinItemModel]) -> [PenguinItemViewModel] {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
return models
.sorted { $0.releaseDate < $1.releaseDate }
.map {
PenguinItemViewModel(type: $0.type,
releaseDateFormatted: dateFormatter.string(from: $0.releaseDate),
year: Calendar.current.component(.year, from: $0.releaseDate),
id: $0.id, name: $0.name)
}
}
}
|