79 lines
2.5 KiB
Swift
79 lines
2.5 KiB
Swift
//
|
|
// ListState.swift
|
|
// TUIRoomKit
|
|
//
|
|
// Created by CY zhao on 2024/6/6.
|
|
//
|
|
|
|
import Foundation
|
|
import RTCRoomEngine
|
|
|
|
struct ConferenceListState {
|
|
var scheduledConferences: [ConferenceInfo] = []
|
|
var fetchScheduledConferencesCursor = ""
|
|
}
|
|
|
|
struct ConferenceInfo {
|
|
var scheduleStartTime: UInt = 0
|
|
var scheduleEndTime: UInt = 0
|
|
var status: TUIConferenceStatus = []
|
|
var timeZone: TimeZone = .current
|
|
var attendeeListResult = AttendeeListResult()
|
|
var durationTime: UInt = 0
|
|
var reminderSecondsBeforeStart = 0
|
|
// MARK: basic info
|
|
var basicInfo = RoomInfo()
|
|
|
|
init() {}
|
|
|
|
init(with conferenceInfo: TUIConferenceInfo) {
|
|
self.scheduleStartTime = conferenceInfo.scheduleStartTime
|
|
self.scheduleEndTime = conferenceInfo.scheduleEndTime
|
|
self.durationTime = self.scheduleEndTime - self.scheduleStartTime
|
|
self.status = conferenceInfo.status
|
|
self.reminderSecondsBeforeStart = conferenceInfo.reminderSecondsBeforeStart
|
|
self.basicInfo = RoomInfo(with: conferenceInfo.basicRoomInfo)
|
|
}
|
|
}
|
|
|
|
extension ConferenceInfo: Hashable {
|
|
static func ==(lhs: ConferenceInfo, rhs: ConferenceInfo) -> Bool {
|
|
return lhs.basicInfo.roomId == rhs.basicInfo.roomId &&
|
|
lhs.basicInfo.name == rhs.basicInfo.name &&
|
|
lhs.scheduleStartTime == rhs.scheduleStartTime &&
|
|
lhs.scheduleEndTime == rhs.scheduleEndTime &&
|
|
lhs.status == rhs.status
|
|
}
|
|
|
|
func hash(into hasher: inout Hasher) {
|
|
hasher.combine(basicInfo.roomId)
|
|
hasher.combine(basicInfo.name)
|
|
hasher.combine(scheduleStartTime)
|
|
hasher.combine(scheduleEndTime)
|
|
hasher.combine(status)
|
|
}
|
|
}
|
|
|
|
struct AttendeeListResult: Hashable {
|
|
var attendeeList: [UserInfo] = []
|
|
var fetchCursor: String = ""
|
|
var totalCount: UInt = 0
|
|
}
|
|
|
|
extension TUIConferenceInfo {
|
|
convenience init(conferenceInfo: ConferenceInfo) {
|
|
self.init()
|
|
self.scheduleStartTime = UInt(conferenceInfo.scheduleStartTime)
|
|
self.scheduleEndTime = self.scheduleStartTime + conferenceInfo.durationTime
|
|
self.scheduleAttendees = conferenceInfo.attendeeListResult.attendeeList.map { $0.userId }
|
|
self.basicRoomInfo = TUIRoomInfo(roomInfo: conferenceInfo.basicInfo)
|
|
self.reminderSecondsBeforeStart = conferenceInfo.reminderSecondsBeforeStart
|
|
}
|
|
}
|
|
|
|
extension TUIConferenceStatus: Hashable {
|
|
public func hash(into hasher: inout Hasher) {
|
|
hasher.combine(self.rawValue)
|
|
}
|
|
}
|