Cleaned up various things, mostly removed unnecessary selfs, comments and bad formatting

This commit is contained in:
Stefan Ceriu
2022-09-26 18:21:34 +03:00
committed by Stefan Ceriu
parent c073dfd95d
commit eac1401cc1
39 changed files with 141 additions and 350 deletions

View File

@@ -21,91 +21,63 @@ typealias UserSessionsOverviewViewModelType = StateStoreViewModel<UserSessionsOv
UserSessionsOverviewViewAction>
class UserSessionsOverviewViewModel: UserSessionsOverviewViewModelType, UserSessionsOverviewViewModelProtocol {
// MARK: - Properties
// MARK: Private
private let userSessionsOverviewService: UserSessionsOverviewServiceProtocol
// MARK: Public
var completion: ((UserSessionsOverviewViewModelResult) -> Void)?
// MARK: - Setup
init(userSessionsOverviewService: UserSessionsOverviewServiceProtocol) {
self.userSessionsOverviewService = userSessionsOverviewService
let initialViewState = UserSessionsOverviewViewState(unverifiedSessionsViewData: [], inactiveSessionsViewData: [], currentSessionViewData: nil, otherSessionsViewData: [])
super.init(initialViewState: .init())
super.init(initialViewState: initialViewState)
self.updateViewState(with: userSessionsOverviewService.lastOverviewData)
updateViewState(with: userSessionsOverviewService.lastOverviewData)
}
// MARK: - Public
override func process(viewAction: UserSessionsOverviewViewAction) {
switch viewAction {
case .viewAppeared:
self.loadData()
loadData()
case .verifyCurrentSession:
self.completion?(.verifyCurrentSession)
completion?(.verifyCurrentSession)
case .viewCurrentSessionDetails:
guard let currentSessionInfo = userSessionsOverviewService.lastOverviewData.currentSessionInfo else {
assertionFailure("currentSessionInfo should be present")
return
return
}
self.completion?(.showCurrentSessionOverview(sessionInfo: currentSessionInfo))
completion?(.showCurrentSessionOverview(sessionInfo: currentSessionInfo))
case .viewAllUnverifiedSessions:
self.completion?(.showAllUnverifiedSessions)
completion?(.showAllUnverifiedSessions)
case .viewAllInactiveSessions:
self.completion?(.showAllInactiveSessions)
completion?(.showAllInactiveSessions)
case .viewAllOtherSessions:
self.completion?(.showAllOtherSessions)
completion?(.showAllOtherSessions)
case .tapUserSession(let sessionId):
guard let sessionInfo = userSessionsOverviewService.getOtherSession(sessionId: sessionId) else {
assertionFailure("missing session info")
return
}
self.completion?(.showUserSessionOverview(sessionInfo: sessionInfo))
completion?(.showUserSessionOverview(sessionInfo: sessionInfo))
}
}
// MARK: - Private
private func updateViewState(with userSessionsViewData: UserSessionsOverviewData) {
let unverifiedSessionsViewData = self.userSessionListItemViewDataList(from: userSessionsViewData.unverifiedSessionsInfo)
let inactiveSessionsViewData = self.userSessionListItemViewDataList(from: userSessionsViewData.inactiveSessionsInfo)
var currentSessionViewData: UserSessionCardViewData?
let otherSessionsViewData = self.userSessionListItemViewDataList(from: userSessionsViewData.otherSessionsInfo)
state.unverifiedSessionsViewData = userSessionsViewData.unverifiedSessionsInfo.asViewData()
state.inactiveSessionsViewData = userSessionsViewData.inactiveSessionsInfo.asViewData()
state.otherSessionsViewData = userSessionsViewData.otherSessionsInfo.asViewData()
if let currentSessionInfo = userSessionsViewData.currentSessionInfo {
currentSessionViewData = UserSessionCardViewData(userSessionInfo: currentSessionInfo, isCurrentSessionDisplayMode: true)
}
self.state.unverifiedSessionsViewData = unverifiedSessionsViewData
self.state.inactiveSessionsViewData = inactiveSessionsViewData
self.state.currentSessionViewData = currentSessionViewData
self.state.otherSessionsViewData = otherSessionsViewData
}
private func userSessionListItemViewDataList(from userSessionInfoList: [UserSessionInfo]) -> [UserSessionListItemViewData] {
return userSessionInfoList.map {
return UserSessionListItemViewData(userSessionInfo: $0)
state.currentSessionViewData = UserSessionCardViewData(userSessionInfo: currentSessionInfo, isCurrentSessionDisplayMode: true)
}
}
private func loadData() {
state.showLoadingIndicator = true
self.state.showLoadingIndicator = true
self.userSessionsOverviewService.fetchUserSessionsOverviewData { [weak self] result in
userSessionsOverviewService.fetchUserSessionsOverviewData { [weak self] result in
guard let self = self else {
return
}
@@ -122,3 +94,9 @@ class UserSessionsOverviewViewModel: UserSessionsOverviewViewModelType, UserSess
}
}
}
private extension Collection where Element == UserSessionInfo {
func asViewData() -> [UserSessionListItemViewData] {
map { UserSessionListItemViewData(userSessionInfo: $0) }
}
}