Improves error message when Dropbox prevents downloading games due to copyright

This commit is contained in:
Riley Testut 2019-09-18 12:39:36 -07:00
parent adffbc03a2
commit 08c61ad66b
2 changed files with 29 additions and 11 deletions

View File

@ -138,14 +138,30 @@ private extension SyncResultViewController
switch error
{
case .filesFailed(_, let errors):
var messages = [String]()
for error in errors
let isRestricted = errors.contains(where: { (error) -> Bool in
switch error
{
case .restricted: return true
default: return false
}
})
if isRestricted
{
messages.append(error.localizedDescription)
errorMessage = NSLocalizedString("Dropbox has flagged this game as copyrighted material, so it cannot be downloaded. Please re-import this game to continue syncing.", comment: "")
}
else
{
var messages = [String]()
errorMessage = messages.joined(separator: "\n")
for error in errors
{
messages.append(error.localizedDescription)
}
errorMessage = messages.joined(separator: "\n")
}
case .other(_, let error as NSError): errorMessage = error.localizedFailureReason ?? error.localizedDescription
default: errorMessage = error.failureReason
@ -213,6 +229,8 @@ private extension SyncResultViewController
case let error as RecordError:
guard let recordType = SyncManager.RecordType(rawValue: error.record.recordID.type) else { continue }
let metadata = error.record.localMetadata ?? error.record.remoteMetadata
switch recordType
{
case .game: group = .game(error.record.recordID)
@ -221,19 +239,19 @@ private extension SyncResultViewController
case .gameControllerInputMapping: group = .gameControllerInputMapping
case .gameSave:
guard let gameID = error.record.metadata?[.gameID] else { continue }
guard let gameID = metadata?[.gameID] else { continue }
let recordID = RecordID(type: SyncManager.RecordType.game.rawValue, identifier: gameID)
group = .game(recordID)
case .saveState:
guard let gameID = error.record.metadata?[.gameID] else { continue }
guard let gameID = metadata?[.gameID] else { continue }
let recordID = RecordID(type: SyncManager.RecordType.game.rawValue, identifier: gameID)
group = .saveState(gameID: recordID)
case .cheat:
guard let gameID = error.record.metadata?[.gameID] else { continue }
guard let gameID = metadata?[.gameID] else { continue }
let recordID = RecordID(type: SyncManager.RecordType.game.rawValue, identifier: gameID)
group = .cheat(gameID: recordID)
@ -338,7 +356,7 @@ extension SyncResultViewController
case .saveState(let gameID):
guard let error = section.errors.first as? RecordError else { return nil }
if let gameName = self.gameNamesByRecordID[gameID] ?? error.record.metadata?[.gameName]
if let gameName = self.gameNamesByRecordID[gameID] ?? error.record.localMetadata?[.gameName] ?? error.record.remoteMetadata?[.gameName]
{
return gameName + " - " + NSLocalizedString("Save States", comment: "")
}
@ -350,7 +368,7 @@ extension SyncResultViewController
case .cheat(let gameID):
guard let error = section.errors.first as? RecordError else { return nil }
if let gameName = self.gameNamesByRecordID[gameID] ?? error.record.metadata?[.gameName]
if let gameName = self.gameNamesByRecordID[gameID] ?? error.record.localMetadata?[.gameName] ?? error.record.remoteMetadata?[.gameName]
{
return gameName + " - " + NSLocalizedString("Cheats", comment: "")
}

2
External/Harmony vendored

@ -1 +1 @@
Subproject commit d9f157385a809ba7281bf26a2287a7afa36004b1
Subproject commit 7f365faac01e3a2d562d747875fbd062be4acb5e