Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
signalapp
GitHub Repository: signalapp/Signal-iOS
Path: blob/main/Signal/src/views/MediaTileDateFormatter.swift
1 views
//
// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//

import Foundation
import SignalServiceKit

class MediaTileDateFormatter {
    private static var todayTimeFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.locale = .current
        formatter.dateStyle = .none
        formatter.timeStyle = .short
        return formatter
    }()

    private static var thisYearDateFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.locale = .current
        formatter.setLocalizedDateFormatFromTemplate("MMMMd")
        return formatter
    }()

    private static var longDateFormatter: DateFormatter = {
        let formatter = DateFormatter()
        formatter.locale = .current
        formatter.dateStyle = .long
        formatter.timeStyle = .none
        return formatter
    }()

    static func formattedDateString(for date: Date?) -> String? {
        guard let date else { return nil }

        let dateIsThisYear = DateUtil.dateIsThisYear(date)
        let dateIsToday = DateUtil.dateIsToday(date)

        if dateIsToday {
            return todayTimeFormatter.string(from: date)
        }

        if dateIsThisYear {
            return thisYearDateFormatter.string(from: date)
        }

        return longDateFormatter.string(from: date)
    }
}