diff --git a/Linphone/UI/Main/Meetings/Models/MeetingsListItemModel.swift b/Linphone/UI/Main/Meetings/Models/MeetingsListItemModel.swift index c73e4574a..38ca8c90f 100644 --- a/Linphone/UI/Main/Meetings/Models/MeetingsListItemModel.swift +++ b/Linphone/UI/Main/Meetings/Models/MeetingsListItemModel.swift @@ -20,6 +20,9 @@ class MeetingsListItemModel { let model: MeetingModel? // if NIL, consider that we are using the fake TodayModel var monthStr: String = "" var weekStr: String = "" + var weekDayStr: String = "" + var dayStr: String = "" + var isToday = true init(meetingModel: MeetingModel?) { @@ -27,15 +30,21 @@ class MeetingsListItemModel { if let mod = meetingModel { monthStr = createMonthString(date: mod.meetingDate) weekStr = createWeekString(date: mod.meetingDate) + weekDayStr = createWeekDayString(date: mod.meetingDate) + dayStr = createDayString(date: mod.meetingDate) + Log.info("debugtrace -- create new item model : \(monthStr) - \(weekStr) - \(weekDayStr) - \(dayStr)") isToday = false } else { + Log.info("debugtrace -- create new item model : TODAY") monthStr = createMonthString(date: Date.now) weekStr = createWeekString(date: Date.now) + weekDayStr = createWeekDayString(date: Date.now) + dayStr = createDayString(date: Date.now) } } func createMonthString(date: Date) -> String { - return "\(date.formatted(Date.FormatStyle().month(.wide))) \(date.formatted(Date.FormatStyle().year()))" + return "\(date.formatted(Date.FormatStyle().month(.wide))) \(date.formatted(Date.FormatStyle().year()))".capitalized } func createWeekString(date: Date) -> String { @@ -57,4 +66,12 @@ class MeetingsListItemModel { return "\(weekFirstDay) - \(weekEndDay) \(firstMonth)" } } + + func createWeekDayString(date: Date) -> String { + return date.formatted(Date.FormatStyle().weekday(.abbreviated)).capitalized + } + + func createDayString(date: Date) -> String { + return date.formatted(Date.FormatStyle().day(.twoDigits)) + } } diff --git a/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift b/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift index cbf295431..92ddd1067 100644 --- a/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift +++ b/Linphone/UI/Main/Meetings/ViewModel/MeetingsListViewModel.swift @@ -28,7 +28,6 @@ class MeetingsListViewModel: ObservableObject { private var mCoreSuscriptions = Set() var selectedMeeting: ConversationModel? - @Published var sortedMeetingsList: [String: [String: [MeetingsListItemModel]]] = [:] @Published var meetingsList: [MeetingsListItemModel] = [] @Published var currentFilter = "" @@ -57,8 +56,8 @@ class MeetingsListViewModel: ObservableObject { var meetingsListTmp: [MeetingsListItemModel] = [] var previousModel: MeetingModel? - // var meetingForTodayFound = false - + var meetingForTodayFound = false + Log.info("debugtrace -- computeMeetingsList, \(confInfoList.count) conferences found") for confInfo in confInfoList { if confInfo.duration == 0 { continue }// This isn't a scheduled conference, don't display it var add = true @@ -73,62 +72,26 @@ class MeetingsListViewModel: ObservableObject { if add { let model = MeetingModel(conferenceInfo: confInfo) - let firstMeetingOfTheDay = (previousModel != nil) ? previousModel?.day != model.day || previousModel?.dayNumber != model.dayNumber : true - model.firstMeetingOfTheDay = firstMeetingOfTheDay - // Insert "Today" fake model before the first one of today - /* - if firstMeetingOfTheDay && model.isToday { - meetingsListTmp.append(MeetingsListItemModel(meetingModel: nil)) - meetingForTodayFound = true - } - */ - - // If no meeting was found for today, insert "Today" fake model before the next meeting to come - /* - if !meetingForTodayFound && model.isAfterToday { - meetingsListTmp.append(MeetingsListItemModel(meetingModel: nil)) - meetingForTodayFound = true - } - */ + if !meetingForTodayFound { + if model.isToday { + meetingForTodayFound = true + } else if model.isAfterToday { + // If no meeting was found for today, insert "Today" fake model before the next meeting to come + meetingsListTmp.append(MeetingsListItemModel(meetingModel: nil)) + meetingForTodayFound = true + } + } meetingsListTmp.append(MeetingsListItemModel(meetingModel: model)) previousModel = model } } - // If no meeting was found after today, insert "Today" fake model at the end - /* - if !meetingForTodayFound { - meetingsListTmp.append(MeetingsListItemModel(meetingModel: nil)) - } - */ - + Log.info("debugtrace -- computeMeetingsList, previous count = \(self.meetingsList.count), new count = \(meetingsListTmp.count)") DispatchQueue.main.sync { self.meetingsList = meetingsListTmp - self.sortMeetingsListByWeek() } } } - - func sortMeetingsListByWeek() { - var sortedList: [String: [String: [MeetingsListItemModel]]] = [:] - - var currentMonthString = "" - var currentWeekString = "" - for meeting in self.meetingsList { - - if currentMonthString != meeting.monthStr { - sortedList[currentMonthString] = [:] - currentMonthString = meeting.monthStr - } - - if currentWeekString != meeting.weekStr { - sortedList[currentMonthString]?[currentWeekString] = [] - currentWeekString = meeting.weekStr - } - sortedList[currentMonthString]?[currentWeekString]?.append(meeting) - } - self.sortedMeetingsList = sortedList - } }