Improves error message when Dropbox prevents downloading games due to copyright
This commit is contained in:
parent
adffbc03a2
commit
08c61ad66b
@ -138,14 +138,30 @@ private extension SyncResultViewController
|
|||||||
switch error
|
switch error
|
||||||
{
|
{
|
||||||
case .filesFailed(_, let errors):
|
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
|
case .other(_, let error as NSError): errorMessage = error.localizedFailureReason ?? error.localizedDescription
|
||||||
default: errorMessage = error.failureReason
|
default: errorMessage = error.failureReason
|
||||||
@ -213,6 +229,8 @@ private extension SyncResultViewController
|
|||||||
case let error as RecordError:
|
case let error as RecordError:
|
||||||
guard let recordType = SyncManager.RecordType(rawValue: error.record.recordID.type) else { continue }
|
guard let recordType = SyncManager.RecordType(rawValue: error.record.recordID.type) else { continue }
|
||||||
|
|
||||||
|
let metadata = error.record.localMetadata ?? error.record.remoteMetadata
|
||||||
|
|
||||||
switch recordType
|
switch recordType
|
||||||
{
|
{
|
||||||
case .game: group = .game(error.record.recordID)
|
case .game: group = .game(error.record.recordID)
|
||||||
@ -221,19 +239,19 @@ private extension SyncResultViewController
|
|||||||
case .gameControllerInputMapping: group = .gameControllerInputMapping
|
case .gameControllerInputMapping: group = .gameControllerInputMapping
|
||||||
|
|
||||||
case .gameSave:
|
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)
|
let recordID = RecordID(type: SyncManager.RecordType.game.rawValue, identifier: gameID)
|
||||||
group = .game(recordID)
|
group = .game(recordID)
|
||||||
|
|
||||||
case .saveState:
|
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)
|
let recordID = RecordID(type: SyncManager.RecordType.game.rawValue, identifier: gameID)
|
||||||
group = .saveState(gameID: recordID)
|
group = .saveState(gameID: recordID)
|
||||||
|
|
||||||
case .cheat:
|
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)
|
let recordID = RecordID(type: SyncManager.RecordType.game.rawValue, identifier: gameID)
|
||||||
group = .cheat(gameID: recordID)
|
group = .cheat(gameID: recordID)
|
||||||
@ -338,7 +356,7 @@ extension SyncResultViewController
|
|||||||
case .saveState(let gameID):
|
case .saveState(let gameID):
|
||||||
guard let error = section.errors.first as? RecordError else { return nil }
|
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: "")
|
return gameName + " - " + NSLocalizedString("Save States", comment: "")
|
||||||
}
|
}
|
||||||
@ -350,7 +368,7 @@ extension SyncResultViewController
|
|||||||
case .cheat(let gameID):
|
case .cheat(let gameID):
|
||||||
guard let error = section.errors.first as? RecordError else { return nil }
|
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: "")
|
return gameName + " - " + NSLocalizedString("Cheats", comment: "")
|
||||||
}
|
}
|
||||||
|
|||||||
2
External/Harmony
vendored
2
External/Harmony
vendored
@ -1 +1 @@
|
|||||||
Subproject commit d9f157385a809ba7281bf26a2287a7afa36004b1
|
Subproject commit 7f365faac01e3a2d562d747875fbd062be4acb5e
|
||||||
Loading…
Reference in New Issue
Block a user