TSAIChatHistoryVM.swift 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // TSAIChatHistoryVM.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/2/12.
  6. //
  7. class TSAIChatHistoryVM {
  8. lazy var historyDBChatList: [TSDBAIChatList] = {
  9. let list = TSDBAIChatList.getAll()
  10. return list
  11. }()
  12. lazy var historyModelChatList: [TSAIChatHistoryModel] = {
  13. return categorizeDates()
  14. }()
  15. func categorizeDates() -> [TSAIChatHistoryModel] {
  16. let calendar = Calendar.current
  17. let now = Date()
  18. let todayStart = calendar.startOfDay(for: now)
  19. let yesterdayStart = calendar.date(byAdding: .day, value: -1, to: todayStart)!
  20. let oneWeekAgo = calendar.date(byAdding: .day, value: -7, to: todayStart)!
  21. let thirtyDaysAgo = calendar.date(byAdding: .day, value: -30, to: todayStart)!
  22. var todayDates: [TSDBAIChatList] = []
  23. var yesterdayDates: [TSDBAIChatList] = []
  24. var withinWeekDates: [TSDBAIChatList] = []
  25. var within30DaysDates: [TSDBAIChatList] = []
  26. for model in historyDBChatList {
  27. let date = Date(timeIntervalSince1970: TimeInterval(model.creatTimestampInt))
  28. let dateStart = calendar.startOfDay(for: date)
  29. if dateStart == todayStart {
  30. todayDates.append(model)
  31. } else if dateStart == yesterdayStart {
  32. yesterdayDates.append(model)
  33. } else if dateStart > oneWeekAgo {
  34. withinWeekDates.append(model)
  35. } else if dateStart > thirtyDaysAgo {
  36. within30DaysDates.append(model)
  37. }
  38. }
  39. todayDates = todayDates.sorted { $0.creatTimestampInt > $1.creatTimestampInt}
  40. yesterdayDates = yesterdayDates.sorted { $0.creatTimestampInt > $1.creatTimestampInt }
  41. withinWeekDates = withinWeekDates.sorted { $0.creatTimestampInt > $1.creatTimestampInt }
  42. within30DaysDates = within30DaysDates.sorted { $0.creatTimestampInt > $1.creatTimestampInt }
  43. var result = [TSAIChatHistoryModel]()
  44. if todayDates.count > 0 {
  45. result.append(TSAIChatHistoryModel(title: "Today".localized, chatList: todayDates))
  46. }
  47. if yesterdayDates.count > 0 {
  48. result.append(TSAIChatHistoryModel(title: "1 Day".localized, chatList: yesterdayDates))
  49. }
  50. if withinWeekDates.count > 0 {
  51. result.append(TSAIChatHistoryModel(title: "7 Days".localized, chatList: withinWeekDates))
  52. }
  53. if within30DaysDates.count > 0 {
  54. result.append(TSAIChatHistoryModel(title: "30 Days".localized, chatList: within30DaysDates))
  55. }
  56. return result
  57. }
  58. func deleteAll() {
  59. TSDBAIChatList.deleteAll()
  60. }
  61. }