mirror of
https://github.com/metabolist/metatext
synced 2024-12-11 08:55:54 +01:00
28 lines
877 B
Swift
28 lines
877 B
Swift
// Copyright © 2020 Metabolist. All rights reserved.
|
|
|
|
import Foundation
|
|
import Combine
|
|
|
|
struct StatusService {
|
|
let status: Status
|
|
private let networkClient: MastodonClient
|
|
private let contentDatabase: ContentDatabase
|
|
|
|
init(status: Status, networkClient: MastodonClient, contentDatabase: ContentDatabase) {
|
|
self.status = status
|
|
self.networkClient = networkClient
|
|
self.contentDatabase = contentDatabase
|
|
}
|
|
}
|
|
|
|
extension StatusService {
|
|
func toggleFavorited() -> AnyPublisher<Void, Error> {
|
|
networkClient.request(status.favourited
|
|
? StatusEndpoint.unfavourite(id: status.id)
|
|
: StatusEndpoint.favourite(id: status.id))
|
|
.map { ([$0], nil) }
|
|
.flatMap(contentDatabase.insert(statuses:collection:))
|
|
.eraseToAnyPublisher()
|
|
}
|
|
}
|