2023-02-27 05:39:07 +00:00
|
|
|
import Combine
|
2022-12-19 11:28:55 +00:00
|
|
|
import Models
|
2023-01-17 10:36:01 +00:00
|
|
|
import SwiftUI
|
2022-12-19 11:28:55 +00:00
|
|
|
|
|
|
|
public enum StatusesState {
|
|
|
|
public enum PagingState {
|
2022-12-21 07:35:26 +00:00
|
|
|
case hasNextPage, loadingNextPage, none
|
2022-12-19 11:28:55 +00:00
|
|
|
}
|
2023-01-17 10:36:01 +00:00
|
|
|
|
2022-12-19 11:28:55 +00:00
|
|
|
case loading
|
|
|
|
case display(statuses: [Status], nextPageState: StatusesState.PagingState)
|
|
|
|
case error(error: Error)
|
|
|
|
}
|
|
|
|
|
|
|
|
@MainActor
|
|
|
|
public protocol StatusesFetcher: ObservableObject {
|
|
|
|
var statusesState: StatusesState { get }
|
2023-02-25 09:10:27 +00:00
|
|
|
func fetchNewestStatuses() async
|
2022-12-19 11:28:55 +00:00
|
|
|
func fetchNextPage() async
|
2023-01-31 07:04:35 +00:00
|
|
|
func statusDidAppear(status: Status)
|
2023-01-31 11:17:35 +00:00
|
|
|
func statusDidDisappear(status: Status)
|
2022-12-19 11:28:55 +00:00
|
|
|
}
|