Update move API, update savedAt when moving
This commit is contained in:
@ -10992,7 +10992,7 @@ extension Selection where TypeLock == Never, Type == Never {
|
||||
extension Objects {
|
||||
struct MoveToFolderSuccess {
|
||||
let __typename: TypeName = .moveToFolderSuccess
|
||||
let articleSavingRequest: [String: Objects.ArticleSavingRequest]
|
||||
let success: [String: Bool]
|
||||
|
||||
enum TypeName: String, Codable {
|
||||
case moveToFolderSuccess = "MoveToFolderSuccess"
|
||||
@ -11012,8 +11012,8 @@ extension Objects.MoveToFolderSuccess: Decodable {
|
||||
let field = GraphQLField.getFieldNameFromAlias(alias)
|
||||
|
||||
switch field {
|
||||
case "articleSavingRequest":
|
||||
if let value = try container.decode(Objects.ArticleSavingRequest?.self, forKey: codingKey) {
|
||||
case "success":
|
||||
if let value = try container.decode(Bool?.self, forKey: codingKey) {
|
||||
map.set(key: field, hash: alias, value: value as Any)
|
||||
}
|
||||
default:
|
||||
@ -11026,27 +11026,26 @@ extension Objects.MoveToFolderSuccess: Decodable {
|
||||
}
|
||||
}
|
||||
|
||||
articleSavingRequest = map["articleSavingRequest"]
|
||||
success = map["success"]
|
||||
}
|
||||
}
|
||||
|
||||
extension Fields where TypeLock == Objects.MoveToFolderSuccess {
|
||||
func articleSavingRequest<Type>(selection: Selection<Type, Objects.ArticleSavingRequest>) throws -> Type {
|
||||
let field = GraphQLField.composite(
|
||||
name: "articleSavingRequest",
|
||||
arguments: [],
|
||||
selection: selection.selection
|
||||
func success() throws -> Bool {
|
||||
let field = GraphQLField.leaf(
|
||||
name: "success",
|
||||
arguments: []
|
||||
)
|
||||
select(field)
|
||||
|
||||
switch response {
|
||||
case let .decoding(data):
|
||||
if let data = data.articleSavingRequest[field.alias!] {
|
||||
return try selection.decode(data: data)
|
||||
if let data = data.success[field.alias!] {
|
||||
return data
|
||||
}
|
||||
throw HttpError.badpayload
|
||||
case .mocking:
|
||||
return selection.mock()
|
||||
return Bool.mockValue
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -29053,8 +29052,8 @@ extension Selection where TypeLock == Never, Type == Never {
|
||||
extension Unions {
|
||||
struct MoveToFolderResult {
|
||||
let __typename: TypeName
|
||||
let articleSavingRequest: [String: Objects.ArticleSavingRequest]
|
||||
let errorCodes: [String: [Enums.MoveToFolderErrorCode]]
|
||||
let success: [String: Bool]
|
||||
|
||||
enum TypeName: String, Codable {
|
||||
case moveToFolderError = "MoveToFolderError"
|
||||
@ -29075,14 +29074,14 @@ extension Unions.MoveToFolderResult: Decodable {
|
||||
let field = GraphQLField.getFieldNameFromAlias(alias)
|
||||
|
||||
switch field {
|
||||
case "articleSavingRequest":
|
||||
if let value = try container.decode(Objects.ArticleSavingRequest?.self, forKey: codingKey) {
|
||||
map.set(key: field, hash: alias, value: value as Any)
|
||||
}
|
||||
case "errorCodes":
|
||||
if let value = try container.decode([Enums.MoveToFolderErrorCode]?.self, forKey: codingKey) {
|
||||
map.set(key: field, hash: alias, value: value as Any)
|
||||
}
|
||||
case "success":
|
||||
if let value = try container.decode(Bool?.self, forKey: codingKey) {
|
||||
map.set(key: field, hash: alias, value: value as Any)
|
||||
}
|
||||
default:
|
||||
throw DecodingError.dataCorrupted(
|
||||
DecodingError.Context(
|
||||
@ -29095,8 +29094,8 @@ extension Unions.MoveToFolderResult: Decodable {
|
||||
|
||||
__typename = try container.decode(TypeName.self, forKey: DynamicCodingKeys(stringValue: "__typename")!)
|
||||
|
||||
articleSavingRequest = map["articleSavingRequest"]
|
||||
errorCodes = map["errorCodes"]
|
||||
success = map["success"]
|
||||
}
|
||||
}
|
||||
|
||||
@ -29111,7 +29110,7 @@ extension Fields where TypeLock == Unions.MoveToFolderResult {
|
||||
let data = Objects.MoveToFolderError(errorCodes: data.errorCodes)
|
||||
return try moveToFolderError.decode(data: data)
|
||||
case .moveToFolderSuccess:
|
||||
let data = Objects.MoveToFolderSuccess(articleSavingRequest: data.articleSavingRequest)
|
||||
let data = Objects.MoveToFolderSuccess(success: data.success)
|
||||
return try moveToFolderSuccess.decode(data: data)
|
||||
}
|
||||
case .mocking:
|
||||
|
||||
@ -8,6 +8,7 @@ public extension DataService {
|
||||
backgroundContext.performAndWait {
|
||||
if let linkedItem = Models.LibraryItem.lookup(byID: itemID, inContext: backgroundContext) {
|
||||
linkedItem.folder = folder
|
||||
linkedItem.savedAt = Date()
|
||||
linkedItem.serverSyncStatus = Int64(ServerSyncStatus.needsUpdate.rawValue)
|
||||
}
|
||||
do {
|
||||
@ -24,19 +25,15 @@ public extension DataService {
|
||||
|
||||
func syncMoveToFolder(itemID: String, folder: String) async throws {
|
||||
enum MutationResult {
|
||||
case result(itemID: String)
|
||||
case result(success: Bool)
|
||||
case error(errorMessage: String)
|
||||
}
|
||||
|
||||
let articleSavingRequestSelection = Selection.ArticleSavingRequest {
|
||||
try $0.id()
|
||||
}
|
||||
|
||||
let selection = Selection<MutationResult, Unions.MoveToFolderResult> {
|
||||
try $0.on(
|
||||
moveToFolderError: .init { .error(errorMessage: try $0.errorCodes().first?.rawValue ?? "Unknown Error") },
|
||||
moveToFolderSuccess: .init {
|
||||
.result(itemID: try $0.articleSavingRequest(selection: articleSavingRequestSelection))
|
||||
.result(success: try $0.success())
|
||||
}
|
||||
)
|
||||
}
|
||||
@ -60,8 +57,12 @@ public extension DataService {
|
||||
}
|
||||
|
||||
switch payload.data {
|
||||
case let .result(itemID: _):
|
||||
continuation.resume()
|
||||
case let .result(success: success):
|
||||
if success {
|
||||
continuation.resume()
|
||||
} else {
|
||||
continuation.resume(throwing: BasicError.message(messageText: "operation failed"))
|
||||
}
|
||||
case let .error(errorMessage: errorMessage):
|
||||
continuation.resume(throwing: BasicError.message(messageText: errorMessage))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user