// // APIService+FollowRequest.swift // Mastodon // // Created by sxiaojian on 2021/4/27. // import Foundation import UIKit import Combine import CoreData import CoreDataStack import CommonOSLog import MastodonSDK extension APIService { // func acceptFollowRequest( // mastodonUserID: MastodonUser.ID, // mastodonAuthenticationBox: MastodonAuthenticationBox // ) -> AnyPublisher, Error> { // let domain = mastodonAuthenticationBox.domain // let authorization = mastodonAuthenticationBox.userAuthorization // let requestMastodonUserID = mastodonAuthenticationBox.userID // // return Mastodon.API.Account.acceptFollowRequest( // session: session, // domain: domain, // userID: mastodonUserID, // authorization: authorization) // .flatMap { response -> AnyPublisher, Error> in // let managedObjectContext = self.backgroundManagedObjectContext // return managedObjectContext.performChanges { // let requestMastodonUserRequest = MastodonUser.sortedFetchRequest // requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) // requestMastodonUserRequest.fetchLimit = 1 // guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } // // let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest // lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) // lookUpMastodonUserRequest.fetchLimit = 1 // let lookUpMastodonuser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first // // if let lookUpMastodonuser = lookUpMastodonuser { // let entity = response.value // APIService.CoreData.update(user: lookUpMastodonuser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) // } // } // .tryMap { result -> Mastodon.Response.Content in // switch result { // case .success: // return response // case .failure(let error): // throw error // } // } // .eraseToAnyPublisher() // } // .eraseToAnyPublisher() // } // func rejectFollowRequest( // mastodonUserID: MastodonUser.ID, // mastodonAuthenticationBox: MastodonAuthenticationBox // ) -> AnyPublisher, Error> { // let domain = mastodonAuthenticationBox.domain // let authorization = mastodonAuthenticationBox.userAuthorization // let requestMastodonUserID = mastodonAuthenticationBox.userID // // return Mastodon.API.Account.rejectFollowRequest( // session: session, // domain: domain, // userID: mastodonUserID, // authorization: authorization) // .flatMap { response -> AnyPublisher, Error> in // let managedObjectContext = self.backgroundManagedObjectContext // return managedObjectContext.performChanges { // let requestMastodonUserRequest = MastodonUser.sortedFetchRequest // requestMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: requestMastodonUserID) // requestMastodonUserRequest.fetchLimit = 1 // guard let requestMastodonUser = managedObjectContext.safeFetch(requestMastodonUserRequest).first else { return } // // let lookUpMastodonUserRequest = MastodonUser.sortedFetchRequest // lookUpMastodonUserRequest.predicate = MastodonUser.predicate(domain: domain, id: mastodonUserID) // lookUpMastodonUserRequest.fetchLimit = 1 // let lookUpMastodonuser = managedObjectContext.safeFetch(lookUpMastodonUserRequest).first // // if let lookUpMastodonuser = lookUpMastodonuser { // let entity = response.value // APIService.CoreData.update(user: lookUpMastodonuser, entity: entity, requestMastodonUser: requestMastodonUser, domain: domain, networkDate: response.networkDate) // } // } // .tryMap { result -> Mastodon.Response.Content in // switch result { // case .success: // return response // case .failure(let error): // throw error // } // } // .eraseToAnyPublisher() // } // .eraseToAnyPublisher() // } }