mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-22 01:22:46 +02:00
Improve error handling
This commit is contained in:
@@ -22,7 +22,7 @@ final class PollHistoryService: PollHistoryServiceProtocol {
|
||||
private let room: MXRoom
|
||||
private let chunkSizeInDays: UInt
|
||||
private let pollsSubject: PassthroughSubject<TimelinePollDetails, Never> = .init()
|
||||
private let errorSubject: PassthroughSubject<Error, Never> = .init()
|
||||
private let errorSubject: PassthroughSubject<PollHistoryError, Never> = .init()
|
||||
private let isFetchingSubject: PassthroughSubject<Bool, Never> = .init()
|
||||
|
||||
private var listner: Any?
|
||||
@@ -35,7 +35,7 @@ final class PollHistoryService: PollHistoryServiceProtocol {
|
||||
pollsSubject.eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
var error: AnyPublisher<Error, Never> {
|
||||
var error: AnyPublisher<PollHistoryError, Never> {
|
||||
errorSubject.eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ final class PollHistoryService: PollHistoryServiceProtocol {
|
||||
let self = self,
|
||||
let timeline = timeline
|
||||
else {
|
||||
#warning("Handle error")
|
||||
self?.errorSubject.send(.timelineUnavailable)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ private extension PollHistoryService {
|
||||
self.isFetchingSubject.send(false)
|
||||
}
|
||||
case .failure(let error):
|
||||
#warning("Handle error")
|
||||
self.errorSubject.send(.paginationFailed(error))
|
||||
self.isFetchingSubject.send(false)
|
||||
}
|
||||
}
|
||||
@@ -155,7 +155,7 @@ extension PollHistoryService: PollAggregatorDelegate {
|
||||
}
|
||||
|
||||
func pollAggregator(_ aggregator: PollAggregator, didFailWithError: Error) {
|
||||
#warning("Handle error")
|
||||
errorSubject.send(.pollAggregationFailed(didFailWithError))
|
||||
}
|
||||
|
||||
func pollAggregatorDidUpdateData(_ aggregator: PollAggregator) {
|
||||
|
||||
@@ -23,7 +23,7 @@ final class MockPollHistoryService: PollHistoryServiceProtocol {
|
||||
polls.eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
var error: AnyPublisher<Error, Never> {
|
||||
var error: AnyPublisher<PollHistoryError, Never> {
|
||||
Empty().eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
|
||||
@@ -22,12 +22,18 @@ protocol PollHistoryServiceProtocol {
|
||||
var pollHistory: AnyPublisher<TimelinePollDetails, Never> { get }
|
||||
|
||||
/// Publishes whatever errors produced during the sync.
|
||||
var error: AnyPublisher<Error, Never> { get }
|
||||
var error: AnyPublisher<PollHistoryError, Never> { get }
|
||||
|
||||
/// Ask to fetch the next batch of polls.
|
||||
/// Concrete implementations can decide what a batch is.
|
||||
func next()
|
||||
|
||||
/// Inform the whenever a new batch of polls starts or ends.
|
||||
/// Inform whenever the fetch of a new batch of polls starts or ends.
|
||||
var isFetching: AnyPublisher<Bool, Never> { get }
|
||||
}
|
||||
|
||||
enum PollHistoryError: Error {
|
||||
case paginationFailed(Error)
|
||||
case timelineUnavailable
|
||||
case pollAggregationFailed(Error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user