//
//  TimeInterval+Extension.swift
//  Lanu
//
//  Created by OneeChan on 2025/11/20.
//

import Foundation


extension TimeInterval {
    // 辅助方法：格式化 "时:分"（补零，如 09:05）
    func formattedTime() -> String {
        Date(timeIntervalSince1970: self).formattedTime()
    }
    
    // 辅助方法：格式化 "星期一"
    func formattedWeek() -> String {
        Date(timeIntervalSince1970: self).formattedWeek()
    }
    
    // 辅助方法：格式化 "星期 时:分"（如 星期一 09:30）
    func formattedWeekWithTime() -> String {
        Date(timeIntervalSince1970: self).formattedWeekWithTime()
    }
    
    // 辅助方法：格式化 "月/日"（如 10/23）
    func formattedDate(_ separator: String = "/") -> String {
        Date(timeIntervalSince1970: self).formattedDate(separator)
    }
    
    // 辅助方法：格式化 "月/日 时:分"（如 10/23 14:30）
    func formattedDateWithTime(_ separator: String = "/") -> String {
        Date(timeIntervalSince1970: self).formattedDateWithTime(separator)
    }
    
    // 辅助方法：格式化 "年/月/日"（如 2025/10/23）
    func formattedFullDate(_ separator: String = "/", normal: Bool = false) -> String {
        Date(timeIntervalSince1970: self).formattedFullDate(separator, normal: normal)
    }
    
    // 辅助方法：格式化 "年/月/日 时:分"（如 2025/10/23 14:30）
    func formattedFullDateWithTime(_ separator: String = "/") -> String {
        Date(timeIntervalSince1970: self).formattedFullDateWithTime(separator)
    }
}

extension TimeInterval {
    var tencentIMTimeDesc: String {
        Date(timeIntervalSince1970: self).tencentIMTimeDesc
    }
    
    var relativeTimeText: String {
        guard curTime > self else { return .init(key: "A00352") }
        
        let diff = Int(curTime - self)
        if diff < 60 {
            return .init(key: "A00352")
        }
        
        let minute = diff / 60
        if minute < 60 {
            return minute == 1 ? .init(key: "A00353", minute) : .init(key: "A00354", minute)
        }
        
        let hour = minute / 60
        if hour < 24 {
            return hour == 1 ? .init(key: "A00355", hour) : .init(key: "A00356", hour)
        }
        
        let day = hour / 24
        return day == 1 ? .init(key: "A00357", day) : .init(key: "A00358", day)
    }
}

extension TimeInterval {
    var inMinutes: Bool {
        curTime - self < 60
    }
    
    var inHour: Bool {
        curTime - self < 3600
    }
    
    var inDay: Bool {
        curTime - self < 3600 * 24
    }
    
    var isSameDay: Bool {
        Calendar.current.isDate(Date(), inSameDayAs: Date(timeIntervalSince1970: self))
    }
}
