Skip to content

Commit

Permalink
✨FEAT: AppDetail currentReleaseDate localizedString 제공 #18
Browse files Browse the repository at this point in the history
- AppDetail의 cuurentReleaseDate의 타입 String -> Date로 변경
- iTunesAPIService entity의 ISO Date Format의 의존성 분리하기 위해 AppDetail로 변환시 Date타입으로 리턴
- ViewModel에서 Date -> String으로 변환시 localizedString으로 제공
  • Loading branch information
yeahg-dev committed Feb 24, 2023
1 parent 2a7b4fc commit 4151725
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 17 deletions.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ struct AppDetail {
let minimumOSVersion: String?
let providerURL: String?
let version: String?
let currentVersionReleaseDate: String?
let currentVersionReleaseDate: Date?
let releaseDescription: String?
let supportedDevices: [String]?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,16 @@ extension App {
minimumOSVersion: self.minimumOSVersion,
providerURL: self.sellerURL,
version: self.version,
currentVersionReleaseDate: self.currentVersionReleaseDate,
currentVersionReleaseDate: date(self.currentVersionReleaseDate),
releaseDescription: self.releaseNotes,
supportedDevices: self.supportedDevices)
}

private func date(_ string: String?) -> Date? {
guard let string else {
return nil
}
return iTunesAPIService.dateFormatter.date(from: string)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,16 @@ extension AppSummary: Decodable {
minimumOSVersion: self.minimumOSVersion,
providerURL: self.sellerURL,
version: self.version,
currentVersionReleaseDate: self.currentVersionReleaseDate,
currentVersionReleaseDate: date(self.currentVersionReleaseDate),
releaseDescription: self.releaseNotes,
supportedDevices: self.supportedDevices)
}

private func date(_ string: String?) -> Date? {
guard let string else {
return nil
}
return iTunesAPIService.dateFormatter.date(from: string)
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,6 @@ extension iTunesAPIService {
return URLSession(configuration: defaultConfiguration)
}()

static let dateFormatter = ISO8601DateFormatter()

}
Original file line number Diff line number Diff line change
Expand Up @@ -238,12 +238,6 @@ struct AppDetailViewModel {
}

extension AppDetailViewModel {
static let dateFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none
return dateFormatter
}()

enum Item: Hashable {
case signBoard(AppSignBoard)
Expand Down Expand Up @@ -287,12 +281,12 @@ extension AppDetailViewModel {
struct ReleaseNote: Hashable {

private let versionValue: String?
private let currentVersionReleaseDateValue: String?
private let currentVersionReleaseDateValue: Date?

var description: String?
var isTrucated: Bool = true

init(version: String?, currentVersionReleaseDate: String?, description: String?,
init(version: String?, currentVersionReleaseDate: Date?, description: String?,
isTruncated: Bool) {
self.versionValue = version
self.currentVersionReleaseDateValue = currentVersionReleaseDate
Expand All @@ -308,20 +302,21 @@ extension AppDetailViewModel {
}

var currentVersionReleaseDate: String? {
return releaseDateRepresentation(currentVersionReleaseDateValue)
return releaseDateString(currentVersionReleaseDateValue)
}

var buttonTitle: String? {
return isTrucated ? Texts.more_details : Texts.shortly
}

private func releaseDateRepresentation(_ string: String?) -> String? {
guard let string = string,
let releaseDate = ISO8601DateFormatter().date(from: string) else {
private func releaseDateString(_ date: Date?) -> String? {
guard let date else {
return nil
}

return AppDetailViewModel.dateFormatter.string(from: releaseDate)
return DateFormatter.localizedString(
from: date,
dateStyle: .medium,
timeStyle: .none)
}

}
Expand Down

0 comments on commit 4151725

Please sign in to comment.